cdk8s-aws-cdk 0.0.5
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/.gitattributes +21 -0
- package/.jsii +4392 -0
- package/API.md +2204 -0
- package/LICENSE +202 -0
- package/README.md +201 -0
- package/changelog.md +2 -0
- package/examples/rds-db-instance/README.md +0 -0
- package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.assets.json +19 -0
- package/examples/rds-db-instance/cdk.out/RdsDBInstanceStack.template.json +86 -0
- package/examples/rds-db-instance/cdk.out/cdk.out +1 -0
- package/examples/rds-db-instance/cdk.out/manifest.json +230 -0
- package/examples/rds-db-instance/cdk.out/tree.json +171 -0
- package/examples/rds-db-instance/main.ts +136 -0
- package/lib/adapter.d.ts +37 -0
- package/lib/adapter.d.ts.map +1 -0
- package/lib/adapter.js +196 -0
- package/lib/chart.d.ts +19 -0
- package/lib/chart.d.ts.map +1 -0
- package/lib/chart.js +63 -0
- package/lib/imports/cloudcontrol.services.k8s.aws.d.ts +106 -0
- package/lib/imports/cloudcontrol.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/cloudcontrol.services.k8s.aws.js +92 -0
- package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts +430 -0
- package/lib/imports/dynamotables-dynamodb.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/dynamotables-dynamodb.services.k8s.aws.js +314 -0
- package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts +173 -0
- package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/ec2securitygroups-ec2.services.k8s.aws.js +156 -0
- package/lib/imports/fieldexports-services.k8s.aws.d.ts +159 -0
- package/lib/imports/fieldexports-services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/fieldexports-services.k8s.aws.js +151 -0
- package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts +135 -0
- package/lib/imports/iampolicies-iam.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/iampolicies-iam.services.k8s.aws.js +109 -0
- package/lib/imports/iamroles-iam.services.k8s.aws.d.ts +143 -0
- package/lib/imports/iamroles-iam.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/iamroles-iam.services.k8s.aws.js +112 -0
- package/lib/imports/k8s.d.ts +18619 -0
- package/lib/imports/k8s.d.ts.map +1 -0
- package/lib/imports/k8s.js +14701 -0
- package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts +280 -0
- package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/lambdaeventsourcemappings-lambda.services.k8s.aws.js +183 -0
- package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts +343 -0
- package/lib/imports/lambdafunctions-lambda.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/lambdafunctions-lambda.services.k8s.aws.js +225 -0
- package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts +790 -0
- package/lib/imports/rdsdbinstances-rds.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/rdsdbinstances-rds.services.k8s.aws.js +217 -0
- package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts +114 -0
- package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/rdsdbsubnetgroups-rds.services.k8s.aws.js +108 -0
- package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts +2253 -0
- package/lib/imports/s3buckets-s3.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/s3buckets-s3.services.k8s.aws.js +1672 -0
- package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts +203 -0
- package/lib/imports/sfnmachines-sfn.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/sfnmachines-sfn.services.k8s.aws.js +174 -0
- package/lib/imports/snstopics-sns.services.k8s.aws.d.ts +106 -0
- package/lib/imports/snstopics-sns.services.k8s.aws.d.ts.map +1 -0
- package/lib/imports/snstopics-sns.services.k8s.aws.js +110 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -0
- package/lib/mappers/base.d.ts +23 -0
- package/lib/mappers/base.d.ts.map +1 -0
- package/lib/mappers/base.js +20 -0
- package/lib/mappers/ec2-security-group.d.ts +9 -0
- package/lib/mappers/ec2-security-group.d.ts.map +1 -0
- package/lib/mappers/ec2-security-group.js +33 -0
- package/lib/mappers/iam-policy.d.ts +9 -0
- package/lib/mappers/iam-policy.d.ts.map +1 -0
- package/lib/mappers/iam-policy.js +32 -0
- package/lib/mappers/iam-role.d.ts +9 -0
- package/lib/mappers/iam-role.d.ts.map +1 -0
- package/lib/mappers/iam-role.js +34 -0
- package/lib/mappers/index.d.ts +9 -0
- package/lib/mappers/index.d.ts.map +1 -0
- package/lib/mappers/index.js +21 -0
- package/lib/mappers/lambda-function.d.ts +9 -0
- package/lib/mappers/lambda-function.d.ts.map +1 -0
- package/lib/mappers/lambda-function.js +37 -0
- package/lib/mappers/rds-db-instance.d.ts +10 -0
- package/lib/mappers/rds-db-instance.d.ts.map +1 -0
- package/lib/mappers/rds-db-instance.js +65 -0
- package/lib/mappers/rds-db-subnet-group.d.ts +9 -0
- package/lib/mappers/rds-db-subnet-group.d.ts.map +1 -0
- package/lib/mappers/rds-db-subnet-group.js +34 -0
- package/lib/mappers/s3-bucket.d.ts +9 -0
- package/lib/mappers/s3-bucket.d.ts.map +1 -0
- package/lib/mappers/s3-bucket.js +53 -0
- package/package.json +129 -0
- package/releasetag.txt +1 -0
- package/version.txt +1 -0
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toJson_TableSpecLocalSecondaryIndexesProjection = exports.toJson_TableSpecLocalSecondaryIndexesKeySchema = exports.toJson_TableSpecGlobalSecondaryIndexesProvisionedThroughput = exports.toJson_TableSpecGlobalSecondaryIndexesProjection = exports.toJson_TableSpecGlobalSecondaryIndexesKeySchema = exports.toJson_TableSpecTags = exports.toJson_TableSpecStreamSpecification = exports.toJson_TableSpecSseSpecification = exports.toJson_TableSpecProvisionedThroughput = exports.toJson_TableSpecLocalSecondaryIndexes = exports.toJson_TableSpecKeySchema = exports.toJson_TableSpecGlobalSecondaryIndexes = exports.toJson_TableSpecAttributeDefinitions = exports.toJson_TableSpec = exports.toJson_TableProps = exports.Table = void 0;
|
|
4
|
+
// generated by cdk8s
|
|
5
|
+
const cdk8s_1 = require("cdk8s");
|
|
6
|
+
/**
|
|
7
|
+
* Table is the Schema for the Tables API
|
|
8
|
+
*
|
|
9
|
+
* @schema Table
|
|
10
|
+
*/
|
|
11
|
+
class Table extends cdk8s_1.ApiObject {
|
|
12
|
+
/**
|
|
13
|
+
* Defines a "Table" API object
|
|
14
|
+
* @param scope the scope in which to define this object
|
|
15
|
+
* @param id a scope-local name for the object
|
|
16
|
+
* @param props initialization props
|
|
17
|
+
*/
|
|
18
|
+
constructor(scope, id, props = {}) {
|
|
19
|
+
super(scope, id, {
|
|
20
|
+
...Table.GVK,
|
|
21
|
+
...props,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Renders a Kubernetes manifest for "Table".
|
|
26
|
+
*
|
|
27
|
+
* This can be used to inline resource manifests inside other objects (e.g. as templates).
|
|
28
|
+
*
|
|
29
|
+
* @param props initialization props
|
|
30
|
+
*/
|
|
31
|
+
static manifest(props = {}) {
|
|
32
|
+
return {
|
|
33
|
+
...Table.GVK,
|
|
34
|
+
...toJson_TableProps(props),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Renders the object to Kubernetes JSON.
|
|
39
|
+
*/
|
|
40
|
+
toJson() {
|
|
41
|
+
const resolved = super.toJson();
|
|
42
|
+
return {
|
|
43
|
+
...Table.GVK,
|
|
44
|
+
...toJson_TableProps(resolved),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.Table = Table;
|
|
49
|
+
/**
|
|
50
|
+
* Returns the apiVersion and kind for "Table"
|
|
51
|
+
*/
|
|
52
|
+
Table.GVK = {
|
|
53
|
+
apiVersion: 'dynamodb.services.k8s.aws/v1alpha1',
|
|
54
|
+
kind: 'Table',
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Converts an object of type 'TableProps' to JSON representation.
|
|
58
|
+
*/
|
|
59
|
+
/* eslint-disable max-len, quote-props */
|
|
60
|
+
function toJson_TableProps(obj) {
|
|
61
|
+
if (obj === undefined) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const result = {
|
|
65
|
+
'metadata': obj.metadata,
|
|
66
|
+
'spec': toJson_TableSpec(obj.spec),
|
|
67
|
+
};
|
|
68
|
+
// filter undefined values
|
|
69
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
70
|
+
}
|
|
71
|
+
exports.toJson_TableProps = toJson_TableProps;
|
|
72
|
+
/**
|
|
73
|
+
* Converts an object of type 'TableSpec' to JSON representation.
|
|
74
|
+
*/
|
|
75
|
+
/* eslint-disable max-len, quote-props */
|
|
76
|
+
function toJson_TableSpec(obj) {
|
|
77
|
+
var _a, _b, _c, _d, _e;
|
|
78
|
+
if (obj === undefined) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
const result = {
|
|
82
|
+
'attributeDefinitions': (_a = obj.attributeDefinitions) === null || _a === void 0 ? void 0 : _a.map(y => toJson_TableSpecAttributeDefinitions(y)),
|
|
83
|
+
'billingMode': obj.billingMode,
|
|
84
|
+
'globalSecondaryIndexes': (_b = obj.globalSecondaryIndexes) === null || _b === void 0 ? void 0 : _b.map(y => toJson_TableSpecGlobalSecondaryIndexes(y)),
|
|
85
|
+
'keySchema': (_c = obj.keySchema) === null || _c === void 0 ? void 0 : _c.map(y => toJson_TableSpecKeySchema(y)),
|
|
86
|
+
'localSecondaryIndexes': (_d = obj.localSecondaryIndexes) === null || _d === void 0 ? void 0 : _d.map(y => toJson_TableSpecLocalSecondaryIndexes(y)),
|
|
87
|
+
'provisionedThroughput': toJson_TableSpecProvisionedThroughput(obj.provisionedThroughput),
|
|
88
|
+
'sseSpecification': toJson_TableSpecSseSpecification(obj.sseSpecification),
|
|
89
|
+
'streamSpecification': toJson_TableSpecStreamSpecification(obj.streamSpecification),
|
|
90
|
+
'tableName': obj.tableName,
|
|
91
|
+
'tags': (_e = obj.tags) === null || _e === void 0 ? void 0 : _e.map(y => toJson_TableSpecTags(y)),
|
|
92
|
+
};
|
|
93
|
+
// filter undefined values
|
|
94
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
95
|
+
}
|
|
96
|
+
exports.toJson_TableSpec = toJson_TableSpec;
|
|
97
|
+
/**
|
|
98
|
+
* Converts an object of type 'TableSpecAttributeDefinitions' to JSON representation.
|
|
99
|
+
*/
|
|
100
|
+
/* eslint-disable max-len, quote-props */
|
|
101
|
+
function toJson_TableSpecAttributeDefinitions(obj) {
|
|
102
|
+
if (obj === undefined) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
const result = {
|
|
106
|
+
'attributeName': obj.attributeName,
|
|
107
|
+
'attributeType': obj.attributeType,
|
|
108
|
+
};
|
|
109
|
+
// filter undefined values
|
|
110
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
111
|
+
}
|
|
112
|
+
exports.toJson_TableSpecAttributeDefinitions = toJson_TableSpecAttributeDefinitions;
|
|
113
|
+
/**
|
|
114
|
+
* Converts an object of type 'TableSpecGlobalSecondaryIndexes' to JSON representation.
|
|
115
|
+
*/
|
|
116
|
+
/* eslint-disable max-len, quote-props */
|
|
117
|
+
function toJson_TableSpecGlobalSecondaryIndexes(obj) {
|
|
118
|
+
var _a;
|
|
119
|
+
if (obj === undefined) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
const result = {
|
|
123
|
+
'indexName': obj.indexName,
|
|
124
|
+
'keySchema': (_a = obj.keySchema) === null || _a === void 0 ? void 0 : _a.map(y => toJson_TableSpecGlobalSecondaryIndexesKeySchema(y)),
|
|
125
|
+
'projection': toJson_TableSpecGlobalSecondaryIndexesProjection(obj.projection),
|
|
126
|
+
'provisionedThroughput': toJson_TableSpecGlobalSecondaryIndexesProvisionedThroughput(obj.provisionedThroughput),
|
|
127
|
+
};
|
|
128
|
+
// filter undefined values
|
|
129
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
130
|
+
}
|
|
131
|
+
exports.toJson_TableSpecGlobalSecondaryIndexes = toJson_TableSpecGlobalSecondaryIndexes;
|
|
132
|
+
/**
|
|
133
|
+
* Converts an object of type 'TableSpecKeySchema' to JSON representation.
|
|
134
|
+
*/
|
|
135
|
+
/* eslint-disable max-len, quote-props */
|
|
136
|
+
function toJson_TableSpecKeySchema(obj) {
|
|
137
|
+
if (obj === undefined) {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
const result = {
|
|
141
|
+
'attributeName': obj.attributeName,
|
|
142
|
+
'keyType': obj.keyType,
|
|
143
|
+
};
|
|
144
|
+
// filter undefined values
|
|
145
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
146
|
+
}
|
|
147
|
+
exports.toJson_TableSpecKeySchema = toJson_TableSpecKeySchema;
|
|
148
|
+
/**
|
|
149
|
+
* Converts an object of type 'TableSpecLocalSecondaryIndexes' to JSON representation.
|
|
150
|
+
*/
|
|
151
|
+
/* eslint-disable max-len, quote-props */
|
|
152
|
+
function toJson_TableSpecLocalSecondaryIndexes(obj) {
|
|
153
|
+
var _a;
|
|
154
|
+
if (obj === undefined) {
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
const result = {
|
|
158
|
+
'indexName': obj.indexName,
|
|
159
|
+
'keySchema': (_a = obj.keySchema) === null || _a === void 0 ? void 0 : _a.map(y => toJson_TableSpecLocalSecondaryIndexesKeySchema(y)),
|
|
160
|
+
'projection': toJson_TableSpecLocalSecondaryIndexesProjection(obj.projection),
|
|
161
|
+
};
|
|
162
|
+
// filter undefined values
|
|
163
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
164
|
+
}
|
|
165
|
+
exports.toJson_TableSpecLocalSecondaryIndexes = toJson_TableSpecLocalSecondaryIndexes;
|
|
166
|
+
/**
|
|
167
|
+
* Converts an object of type 'TableSpecProvisionedThroughput' to JSON representation.
|
|
168
|
+
*/
|
|
169
|
+
/* eslint-disable max-len, quote-props */
|
|
170
|
+
function toJson_TableSpecProvisionedThroughput(obj) {
|
|
171
|
+
if (obj === undefined) {
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
const result = {
|
|
175
|
+
'readCapacityUnits': obj.readCapacityUnits,
|
|
176
|
+
'writeCapacityUnits': obj.writeCapacityUnits,
|
|
177
|
+
};
|
|
178
|
+
// filter undefined values
|
|
179
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
180
|
+
}
|
|
181
|
+
exports.toJson_TableSpecProvisionedThroughput = toJson_TableSpecProvisionedThroughput;
|
|
182
|
+
/**
|
|
183
|
+
* Converts an object of type 'TableSpecSseSpecification' to JSON representation.
|
|
184
|
+
*/
|
|
185
|
+
/* eslint-disable max-len, quote-props */
|
|
186
|
+
function toJson_TableSpecSseSpecification(obj) {
|
|
187
|
+
if (obj === undefined) {
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
const result = {
|
|
191
|
+
'enabled': obj.enabled,
|
|
192
|
+
'kmsMasterKeyID': obj.kmsMasterKeyId,
|
|
193
|
+
'sseType': obj.sseType,
|
|
194
|
+
};
|
|
195
|
+
// filter undefined values
|
|
196
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
197
|
+
}
|
|
198
|
+
exports.toJson_TableSpecSseSpecification = toJson_TableSpecSseSpecification;
|
|
199
|
+
/**
|
|
200
|
+
* Converts an object of type 'TableSpecStreamSpecification' to JSON representation.
|
|
201
|
+
*/
|
|
202
|
+
/* eslint-disable max-len, quote-props */
|
|
203
|
+
function toJson_TableSpecStreamSpecification(obj) {
|
|
204
|
+
if (obj === undefined) {
|
|
205
|
+
return undefined;
|
|
206
|
+
}
|
|
207
|
+
const result = {
|
|
208
|
+
'streamEnabled': obj.streamEnabled,
|
|
209
|
+
'streamViewType': obj.streamViewType,
|
|
210
|
+
};
|
|
211
|
+
// filter undefined values
|
|
212
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
213
|
+
}
|
|
214
|
+
exports.toJson_TableSpecStreamSpecification = toJson_TableSpecStreamSpecification;
|
|
215
|
+
/**
|
|
216
|
+
* Converts an object of type 'TableSpecTags' to JSON representation.
|
|
217
|
+
*/
|
|
218
|
+
/* eslint-disable max-len, quote-props */
|
|
219
|
+
function toJson_TableSpecTags(obj) {
|
|
220
|
+
if (obj === undefined) {
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
const result = {
|
|
224
|
+
'key': obj.key,
|
|
225
|
+
'value': obj.value,
|
|
226
|
+
};
|
|
227
|
+
// filter undefined values
|
|
228
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
229
|
+
}
|
|
230
|
+
exports.toJson_TableSpecTags = toJson_TableSpecTags;
|
|
231
|
+
/**
|
|
232
|
+
* Converts an object of type 'TableSpecGlobalSecondaryIndexesKeySchema' to JSON representation.
|
|
233
|
+
*/
|
|
234
|
+
/* eslint-disable max-len, quote-props */
|
|
235
|
+
function toJson_TableSpecGlobalSecondaryIndexesKeySchema(obj) {
|
|
236
|
+
if (obj === undefined) {
|
|
237
|
+
return undefined;
|
|
238
|
+
}
|
|
239
|
+
const result = {
|
|
240
|
+
'attributeName': obj.attributeName,
|
|
241
|
+
'keyType': obj.keyType,
|
|
242
|
+
};
|
|
243
|
+
// filter undefined values
|
|
244
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
245
|
+
}
|
|
246
|
+
exports.toJson_TableSpecGlobalSecondaryIndexesKeySchema = toJson_TableSpecGlobalSecondaryIndexesKeySchema;
|
|
247
|
+
/**
|
|
248
|
+
* Converts an object of type 'TableSpecGlobalSecondaryIndexesProjection' to JSON representation.
|
|
249
|
+
*/
|
|
250
|
+
/* eslint-disable max-len, quote-props */
|
|
251
|
+
function toJson_TableSpecGlobalSecondaryIndexesProjection(obj) {
|
|
252
|
+
var _a;
|
|
253
|
+
if (obj === undefined) {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
const result = {
|
|
257
|
+
'nonKeyAttributes': (_a = obj.nonKeyAttributes) === null || _a === void 0 ? void 0 : _a.map(y => y),
|
|
258
|
+
'projectionType': obj.projectionType,
|
|
259
|
+
};
|
|
260
|
+
// filter undefined values
|
|
261
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
262
|
+
}
|
|
263
|
+
exports.toJson_TableSpecGlobalSecondaryIndexesProjection = toJson_TableSpecGlobalSecondaryIndexesProjection;
|
|
264
|
+
/**
|
|
265
|
+
* Converts an object of type 'TableSpecGlobalSecondaryIndexesProvisionedThroughput' to JSON representation.
|
|
266
|
+
*/
|
|
267
|
+
/* eslint-disable max-len, quote-props */
|
|
268
|
+
function toJson_TableSpecGlobalSecondaryIndexesProvisionedThroughput(obj) {
|
|
269
|
+
if (obj === undefined) {
|
|
270
|
+
return undefined;
|
|
271
|
+
}
|
|
272
|
+
const result = {
|
|
273
|
+
'readCapacityUnits': obj.readCapacityUnits,
|
|
274
|
+
'writeCapacityUnits': obj.writeCapacityUnits,
|
|
275
|
+
};
|
|
276
|
+
// filter undefined values
|
|
277
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
278
|
+
}
|
|
279
|
+
exports.toJson_TableSpecGlobalSecondaryIndexesProvisionedThroughput = toJson_TableSpecGlobalSecondaryIndexesProvisionedThroughput;
|
|
280
|
+
/**
|
|
281
|
+
* Converts an object of type 'TableSpecLocalSecondaryIndexesKeySchema' to JSON representation.
|
|
282
|
+
*/
|
|
283
|
+
/* eslint-disable max-len, quote-props */
|
|
284
|
+
function toJson_TableSpecLocalSecondaryIndexesKeySchema(obj) {
|
|
285
|
+
if (obj === undefined) {
|
|
286
|
+
return undefined;
|
|
287
|
+
}
|
|
288
|
+
const result = {
|
|
289
|
+
'attributeName': obj.attributeName,
|
|
290
|
+
'keyType': obj.keyType,
|
|
291
|
+
};
|
|
292
|
+
// filter undefined values
|
|
293
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
294
|
+
}
|
|
295
|
+
exports.toJson_TableSpecLocalSecondaryIndexesKeySchema = toJson_TableSpecLocalSecondaryIndexesKeySchema;
|
|
296
|
+
/**
|
|
297
|
+
* Converts an object of type 'TableSpecLocalSecondaryIndexesProjection' to JSON representation.
|
|
298
|
+
*/
|
|
299
|
+
/* eslint-disable max-len, quote-props */
|
|
300
|
+
function toJson_TableSpecLocalSecondaryIndexesProjection(obj) {
|
|
301
|
+
var _a;
|
|
302
|
+
if (obj === undefined) {
|
|
303
|
+
return undefined;
|
|
304
|
+
}
|
|
305
|
+
const result = {
|
|
306
|
+
'nonKeyAttributes': (_a = obj.nonKeyAttributes) === null || _a === void 0 ? void 0 : _a.map(y => y),
|
|
307
|
+
'projectionType': obj.projectionType,
|
|
308
|
+
};
|
|
309
|
+
// filter undefined values
|
|
310
|
+
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
|
|
311
|
+
}
|
|
312
|
+
exports.toJson_TableSpecLocalSecondaryIndexesProjection = toJson_TableSpecLocalSecondaryIndexesProjection;
|
|
313
|
+
/* eslint-enable max-len, quote-props */
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1vdGFibGVzLWR5bmFtb2RiLnNlcnZpY2VzLms4cy5hd3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0cy9keW5hbW90YWJsZXMtZHluYW1vZGIuc2VydmljZXMuazhzLmF3cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsaUNBQXVFO0FBSXZFOzs7O0dBSUc7QUFDSCxNQUFhLEtBQU0sU0FBUSxpQkFBUztJQXVCbEM7Ozs7O09BS0c7SUFDSCxZQUFtQixLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFvQixFQUFFO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLLENBQUMsR0FBRztZQUNaLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUF6QkQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFvQixFQUFFO1FBQzNDLE9BQU87WUFDTCxHQUFHLEtBQUssQ0FBQyxHQUFHO1lBQ1osR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFlRDs7T0FFRztJQUNJLE1BQU07UUFDWCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFaEMsT0FBTztZQUNMLEdBQUcsS0FBSyxDQUFDLEdBQUc7WUFDWixHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztTQUMvQixDQUFDO0lBQ0osQ0FBQzs7QUE5Q0gsc0JBK0NDO0FBOUNDOztHQUVHO0FBQ29CLFNBQUcsR0FBcUI7SUFDN0MsVUFBVSxFQUFFLG9DQUFvQztJQUNoRCxJQUFJLEVBQUUsT0FBTztDQUNkLENBQUM7QUE4REo7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IsaUJBQWlCLENBQUMsR0FBMkI7SUFDM0QsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENB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LENBQUM7QUFSRCx3R0FRQztBQXFCRDs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQiwrQ0FBK0MsQ0FBQyxHQUF5RDs7SUFDdkgsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLGtCQUFrQixRQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsMENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxjQUFjO0tBQ3JDLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVJELDBHQVFDO0FBQ0Qsd0NBQXdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGJ5IGNkazhzXG5pbXBvcnQgeyBBcGlPYmplY3QsIEFwaU9iamVjdE1ldGFkYXRhLCBHcm91cFZlcnNpb25LaW5kIH0gZnJvbSAnY2RrOHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cblxuLyoqXG4gKiBUYWJsZSBpcyB0aGUgU2NoZW1hIGZvciB0aGUgVGFibGVzIEFQSVxuICpcbiAqIEBzY2hlbWEgVGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlIGV4dGVuZHMgQXBpT2JqZWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGFwaVZlcnNpb24gYW5kIGtpbmQgZm9yIFwiVGFibGVcIlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBHVks6IEdyb3VwVmVyc2lvbktpbmQgPSB7XG4gICAgYXBpVmVyc2lvbjogJ2R5bmFtb2RiLnNlcnZpY2VzLms4cy5hd3MvdjFhbHBoYTEnLFxuICAgIGtpbmQ6ICdUYWJsZScsXG4gIH07XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgYSBLdWJlcm5ldGVzIG1hbmlmZXN0IGZvciBcIlRhYmxlXCIuXG4gICAqXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gaW5saW5lIHJlc291cmNlIG1hbmlmZXN0cyBpbnNpZGUgb3RoZXIgb2JqZWN0cyAoZS5nLiBhcyB0ZW1wbGF0ZXMpLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgaW5pdGlhbGl6YXRpb24gcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFuaWZlc3QocHJvcHM6IFRhYmxlUHJvcHMgPSB7fSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLlRhYmxlLkdWSyxcbiAgICAgIC4uLnRvSnNvbl9UYWJsZVByb3BzKHByb3BzKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBcIlRhYmxlXCIgQVBJIG9iamVjdFxuICAgKiBAcGFyYW0gc2NvcGUgdGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIG9iamVjdFxuICAgKiBAcGFyYW0gaWQgYSBzY29wZS1sb2NhbCBuYW1lIGZvciB0aGUgb2JqZWN0XG4gICAqIEBwYXJhbSBwcm9wcyBpbml0aWFsaXphdGlvbiBwcm9wc1xuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBUYWJsZVByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLlRhYmxlLkdWSyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIG9iamVjdCB0byBLdWJlcm5ldGVzIEpTT04uXG4gICAqL1xuICBwdWJsaWMgdG9Kc29uKCk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWQgPSBzdXBlci50b0pzb24oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5UYWJsZS5HVkssXG4gICAgICAuLi50b0pzb25fVGFibGVQcm9wcyhyZXNvbHZlZCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFRhYmxlIGlzIHRoZSBTY2hlbWEgZm9yIHRoZSBUYWJsZXMgQVBJXG4gKlxuICogQHNjaGVtYSBUYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZSNtZXRhZGF0YVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE/OiBBcGlPYmplY3RNZXRhZGF0YTtcblxuICAvKipcbiAgICogVGFibGVTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgVGFibGUuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGUjc3BlY1xuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IFRhYmxlU3BlYztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVByb3BzKG9iajogVGFibGVQcm9wcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ21ldGFkYXRhJzogb2JqLm1ldGFkYXRhLFxuICAgICdzcGVjJzogdG9Kc29uX1RhYmxlU3BlYyhvYmouc3BlYyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVGFibGVTcGVjIGRlZmluZXMgdGhlIGRlc2lyZWQgc3RhdGUgb2YgVGFibGUuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWMge1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgYXR0cmlidXRlcyB0aGF0IGRlc2NyaWJlIHRoZSBrZXkgc2NoZW1hIGZvciB0aGUgdGFibGUgYW5kIGluZGV4ZXMuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI2F0dHJpYnV0ZURlZmluaXRpb25zXG4gICAqL1xuICByZWFkb25seSBhdHRyaWJ1dGVEZWZpbml0aW9uczogVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnNbXTtcblxuICAvKipcbiAgICogQ29udHJvbHMgaG93IHlvdSBhcmUgY2hhcmdlZCBmb3IgcmVhZCBhbmQgd3JpdGUgdGhyb3VnaHB1dCBhbmQgaG93IHlvdSBtYW5hZ2UgY2FwYWNpdHkuIFRoaXMgc2V0dGluZyBjYW4gYmUgY2hhbmdlZCBsYXRlci5cbiAgICogKiBQUk9WSVNJT05FRCAtIFdlIHJlY29tbWVuZCB1c2luZyBQUk9WSVNJT05FRCBmb3IgcHJlZGljdGFibGUgd29ya2xvYWRzLiAgICBQUk9WSVNJT05FRCBzZXRzIHRoZSBiaWxsaW5nIG1vZGUgdG8gUHJvdmlzaW9uZWQgTW9kZSAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Ib3dJdFdvcmtzLlJlYWRXcml0ZUNhcGFjaXR5TW9kZS5odG1sI0hvd0l0V29ya3MuUHJvdmlzaW9uZWRUaHJvdWdocHV0Lk1hbnVhbCkuXG4gICAqICogUEFZX1BFUl9SRVFVRVNUIC0gV2UgcmVjb21tZW5kIHVzaW5nIFBBWV9QRVJfUkVRVUVTVCBmb3IgdW5wcmVkaWN0YWJsZSAgICB3b3JrbG9hZHMuIFBBWV9QRVJfUkVRVUVTVCBzZXRzIHRoZSBiaWxsaW5nIG1vZGUgdG8gT24tRGVtYW5kIE1vZGUgKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hbWF6b25keW5hbW9kYi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvSG93SXRXb3Jrcy5SZWFkV3JpdGVDYXBhY2l0eU1vZGUuaHRtbCNIb3dJdFdvcmtzLk9uRGVtYW5kKS5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWMjYmlsbGluZ01vZGVcbiAgICovXG4gIHJlYWRvbmx5IGJpbGxpbmdNb2RlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4ZXMgKHRoZSBtYXhpbXVtIGlzIDIwKSB0byBiZSBjcmVhdGVkIG9uIHRoZSB0YWJsZS4gRWFjaCBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4IGluIHRoZSBhcnJheSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEluZGV4TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LiBNdXN0IGJlIHVuaXF1ZSBvbmx5ICAgIGZvciB0aGlzIHRhYmxlLlxuICAgKiAqIEtleVNjaGVtYSAtIFNwZWNpZmllcyB0aGUga2V5IHNjaGVtYSBmb3IgdGhlIGdsb2JhbCBzZWNvbmRhcnkgaW5kZXguXG4gICAqICogUHJvamVjdGlvbiAtIFNwZWNpZmllcyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSAgICB0YWJsZSBpbnRvIHRoZSBpbmRleC4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVzICAgIGFuZCBpbmRleCBrZXkgYXR0cmlidXRlcywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgcHJvamVjdGVkLiBFYWNoIGF0dHJpYnV0ZSAgICBzcGVjaWZpY2F0aW9uIGlzIGNvbXBvc2VkIG9mOiBQcm9qZWN0aW9uVHlwZSAtIE9uZSBvZiB0aGUgZm9sbG93aW5nOiBLRVlTX09OTFkgICAgLSBPbmx5IHRoZSBpbmRleCBhbmQgcHJpbWFyeSBrZXlzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguIElOQ0xVREUgICAgLSBPbmx5IHRoZSBzcGVjaWZpZWQgdGFibGUgYXR0cmlidXRlcyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LiBUaGUgICAgbGlzdCBvZiBwcm9qZWN0ZWQgYXR0cmlidXRlcyBpcyBpbiBOb25LZXlBdHRyaWJ1dGVzLiBBTEwgLSBBbGwgb2YgdGhlICAgIHRhYmxlIGF0dHJpYnV0ZXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC4gTm9uS2V5QXR0cmlidXRlcyAtIEEgbGlzdCAgICBvZiBvbmUgb3IgbW9yZSBub24ta2V5IGF0dHJpYnV0ZSBuYW1lcyB0aGF0IGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgc2Vjb25kYXJ5ICAgIGluZGV4LiBUaGUgdG90YWwgY291bnQgb2YgYXR0cmlidXRlcyBwcm92aWRlZCBpbiBOb25LZXlBdHRyaWJ1dGVzLCBzdW1tZWQgICAgYWNyb3NzIGFsbCBvZiB0aGUgc2Vjb25kYXJ5IGluZGV4ZXMsIG11c3Qgbm90IGV4Y2VlZCAxMDAuIElmIHlvdSBwcm9qZWN0ICAgIHRoZSBzYW1lIGF0dHJpYnV0ZSBpbnRvIHR3byBkaWZmZXJlbnQgaW5kZXhlcywgdGhpcyBjb3VudHMgYXMgdHdvIGRpc3RpbmN0ICAgIGF0dHJpYnV0ZXMgd2hlbiBkZXRlcm1pbmluZyB0aGUgdG90YWwuXG4gICAqICogUHJvdmlzaW9uZWRUaHJvdWdocHV0IC0gVGhlIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgc2V0dGluZ3MgZm9yIHRoZSAgICBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LCBjb25zaXN0aW5nIG9mIHJlYWQgYW5kIHdyaXRlIGNhcGFjaXR5IHVuaXRzLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyNnbG9iYWxTZWNvbmRhcnlJbmRleGVzXG4gICAqL1xuICByZWFkb25seSBnbG9iYWxTZWNvbmRhcnlJbmRleGVzPzogVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1tdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBtYWtlIHVwIHRoZSBwcmltYXJ5IGtleSBmb3IgYSB0YWJsZSBvciBhbiBpbmRleC4gVGhlIGF0dHJpYnV0ZXMgaW4gS2V5U2NoZW1hIG11c3QgYWxzbyBiZSBkZWZpbmVkIGluIHRoZSBBdHRyaWJ1dGVEZWZpbml0aW9ucyBhcnJheS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEYXRhIE1vZGVsIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL0RhdGFNb2RlbC5odG1sKSBpbiB0aGUgQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZS5cbiAgICogRWFjaCBLZXlTY2hlbWFFbGVtZW50IGluIHRoZSBhcnJheSBpcyBjb21wb3NlZCBvZjpcbiAgICogKiBBdHRyaWJ1dGVOYW1lIC0gVGhlIG5hbWUgb2YgdGhpcyBrZXkgYXR0cmlidXRlLlxuICAgKiAqIEtleVR5cGUgLSBUaGUgcm9sZSB0aGF0IHRoZSBrZXkgYXR0cmlidXRlIHdpbGwgYXNzdW1lOiBIQVNIIC0gcGFydGl0aW9uICAgIGtleSBSQU5HRSAtIHNvcnQga2V5XG4gICAqIFRoZSBwYXJ0aXRpb24ga2V5IG9mIGFuIGl0ZW0gaXMgYWxzbyBrbm93biBhcyBpdHMgaGFzaCBhdHRyaWJ1dGUuIFRoZSB0ZXJtIFwiaGFzaCBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gdGhlIER5bmFtb0RCIHVzYWdlIG9mIGFuIGludGVybmFsIGhhc2ggZnVuY3Rpb24gdG8gZXZlbmx5IGRpc3RyaWJ1dGUgZGF0YSBpdGVtcyBhY3Jvc3MgcGFydGl0aW9ucywgYmFzZWQgb24gdGhlaXIgcGFydGl0aW9uIGtleSB2YWx1ZXMuXG4gICAqIFRoZSBzb3J0IGtleSBvZiBhbiBpdGVtIGlzIGFsc28ga25vd24gYXMgaXRzIHJhbmdlIGF0dHJpYnV0ZS4gVGhlIHRlcm0gXCJyYW5nZSBhdHRyaWJ1dGVcIiBkZXJpdmVzIGZyb20gdGhlIHdheSBEeW5hbW9EQiBzdG9yZXMgaXRlbXMgd2l0aCB0aGUgc2FtZSBwYXJ0aXRpb24ga2V5IHBoeXNpY2FsbHkgY2xvc2UgdG9nZXRoZXIsIGluIHNvcnRlZCBvcmRlciBieSB0aGUgc29ydCBrZXkgdmFsdWUuXG4gICAqIEZvciBhIHNpbXBsZSBwcmltYXJ5IGtleSAocGFydGl0aW9uIGtleSksIHlvdSBtdXN0IHByb3ZpZGUgZXhhY3RseSBvbmUgZWxlbWVudCB3aXRoIGEgS2V5VHlwZSBvZiBIQVNILlxuICAgKiBGb3IgYSBjb21wb3NpdGUgcHJpbWFyeSBrZXkgKHBhcnRpdGlvbiBrZXkgYW5kIHNvcnQga2V5KSwgeW91IG11c3QgcHJvdmlkZSBleGFjdGx5IHR3byBlbGVtZW50cywgaW4gdGhpcyBvcmRlcjogVGhlIGZpcnN0IGVsZW1lbnQgbXVzdCBoYXZlIGEgS2V5VHlwZSBvZiBIQVNILCBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG11c3QgaGF2ZSBhIEtleVR5cGUgb2YgUkFOR0UuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgV29ya2luZyB3aXRoIFRhYmxlcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9Xb3JraW5nV2l0aFRhYmxlcy5odG1sI1dvcmtpbmdXaXRoVGFibGVzLnByaW1hcnkua2V5KSBpbiB0aGUgQW1hem9uIER5bmFtb0RCIERldmVsb3BlciBHdWlkZS5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWMja2V5U2NoZW1hXG4gICAqL1xuICByZWFkb25seSBrZXlTY2hlbWE6IFRhYmxlU3BlY0tleVNjaGVtYVtdO1xuXG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXhlcyAodGhlIG1heGltdW0gaXMgNSkgdG8gYmUgY3JlYXRlZCBvbiB0aGUgdGFibGUuIEVhY2ggaW5kZXggaXMgc2NvcGVkIHRvIGEgZ2l2ZW4gcGFydGl0aW9uIGtleSB2YWx1ZS4gVGhlcmUgaXMgYSAxMCBHQiBzaXplIGxpbWl0IHBlciBwYXJ0aXRpb24ga2V5IHZhbHVlOyBvdGhlcndpc2UsIHRoZSBzaXplIG9mIGEgbG9jYWwgc2Vjb25kYXJ5IGluZGV4IGlzIHVuY29uc3RyYWluZWQuXG4gICAqIEVhY2ggbG9jYWwgc2Vjb25kYXJ5IGluZGV4IGluIHRoZSBhcnJheSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nOlxuICAgKiAqIEluZGV4TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBsb2NhbCBzZWNvbmRhcnkgaW5kZXguIE11c3QgYmUgdW5pcXVlIG9ubHkgICAgZm9yIHRoaXMgdGFibGUuXG4gICAqICogS2V5U2NoZW1hIC0gU3BlY2lmaWVzIHRoZSBrZXkgc2NoZW1hIGZvciB0aGUgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LiAgICBUaGUga2V5IHNjaGVtYSBtdXN0IGJlZ2luIHdpdGggdGhlIHNhbWUgcGFydGl0aW9uIGtleSBhcyB0aGUgdGFibGUuXG4gICAqICogUHJvamVjdGlvbiAtIFNwZWNpZmllcyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSAgICB0YWJsZSBpbnRvIHRoZSBpbmRleC4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVzICAgIGFuZCBpbmRleCBrZXkgYXR0cmlidXRlcywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgcHJvamVjdGVkLiBFYWNoIGF0dHJpYnV0ZSAgICBzcGVjaWZpY2F0aW9uIGlzIGNvbXBvc2VkIG9mOiBQcm9qZWN0aW9uVHlwZSAtIE9uZSBvZiB0aGUgZm9sbG93aW5nOiBLRVlTX09OTFkgICAgLSBPbmx5IHRoZSBpbmRleCBhbmQgcHJpbWFyeSBrZXlzIGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgaW5kZXguIElOQ0xVREUgICAgLSBPbmx5IHRoZSBzcGVjaWZpZWQgdGFibGUgYXR0cmlidXRlcyBhcmUgcHJvamVjdGVkIGludG8gdGhlIGluZGV4LiBUaGUgICAgbGlzdCBvZiBwcm9qZWN0ZWQgYXR0cmlidXRlcyBpcyBpbiBOb25LZXlBdHRyaWJ1dGVzLiBBTEwgLSBBbGwgb2YgdGhlICAgIHRhYmxlIGF0dHJpYnV0ZXMgYXJlIHByb2plY3RlZCBpbnRvIHRoZSBpbmRleC4gTm9uS2V5QXR0cmlidXRlcyAtIEEgbGlzdCAgICBvZiBvbmUgb3IgbW9yZSBub24ta2V5IGF0dHJpYnV0ZSBuYW1lcyB0aGF0IGFyZSBwcm9qZWN0ZWQgaW50byB0aGUgc2Vjb25kYXJ5ICAgIGluZGV4LiBUaGUgdG90YWwgY291bnQgb2YgYXR0cmlidXRlcyBwcm92aWRlZCBpbiBOb25LZXlBdHRyaWJ1dGVzLCBzdW1tZWQgICAgYWNyb3NzIGFsbCBvZiB0aGUgc2Vjb25kYXJ5IGluZGV4ZXMsIG11c3Qgbm90IGV4Y2VlZCAxMDAuIElmIHlvdSBwcm9qZWN0ICAgIHRoZSBzYW1lIGF0dHJpYnV0ZSBpbnRvIHR3byBkaWZmZXJlbnQgaW5kZXhlcywgdGhpcyBjb3VudHMgYXMgdHdvIGRpc3RpbmN0ICAgIGF0dHJpYnV0ZXMgd2hlbiBkZXRlcm1pbmluZyB0aGUgdG90YWwuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI2xvY2FsU2Vjb25kYXJ5SW5kZXhlc1xuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWxTZWNvbmRhcnlJbmRleGVzPzogVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzW107XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGhlIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgc2V0dGluZ3MgZm9yIGEgc3BlY2lmaWVkIHRhYmxlIG9yIGluZGV4LiBUaGUgc2V0dGluZ3MgY2FuIGJlIG1vZGlmaWVkIHVzaW5nIHRoZSBVcGRhdGVUYWJsZSBvcGVyYXRpb24uXG4gICAqIElmIHlvdSBzZXQgQmlsbGluZ01vZGUgYXMgUFJPVklTSU9ORUQsIHlvdSBtdXN0IHNwZWNpZnkgdGhpcyBwcm9wZXJ0eS4gSWYgeW91IHNldCBCaWxsaW5nTW9kZSBhcyBQQVlfUEVSX1JFUVVFU1QsIHlvdSBjYW5ub3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LlxuICAgKiBGb3IgY3VycmVudCBtaW5pbXVtIGFuZCBtYXhpbXVtIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgdmFsdWVzLCBzZWUgU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3RhcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI3Byb3Zpc2lvbmVkVGhyb3VnaHB1dFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlzaW9uZWRUaHJvdWdocHV0PzogVGFibGVTcGVjUHJvdmlzaW9uZWRUaHJvdWdocHV0O1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBzZXR0aW5ncyB1c2VkIHRvIGVuYWJsZSBzZXJ2ZXItc2lkZSBlbmNyeXB0aW9uLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyNzc2VTcGVjaWZpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBzc2VTcGVjaWZpY2F0aW9uPzogVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIGZvciBEeW5hbW9EQiBTdHJlYW1zIG9uIHRoZSB0YWJsZS4gVGhlc2Ugc2V0dGluZ3MgY29uc2lzdCBvZjpcbiAgICogKiBTdHJlYW1FbmFibGVkIC0gSW5kaWNhdGVzIHdoZXRoZXIgRHluYW1vREIgU3RyZWFtcyBpcyB0byBiZSBlbmFibGVkICAgICh0cnVlKSBvciBkaXNhYmxlZCAoZmFsc2UpLlxuICAgKiAqIFN0cmVhbVZpZXdUeXBlIC0gV2hlbiBhbiBpdGVtIGluIHRoZSB0YWJsZSBpcyBtb2RpZmllZCwgU3RyZWFtVmlld1R5cGUgICAgZGV0ZXJtaW5lcyB3aGF0IGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gdG8gdGhlIHRhYmxlJ3Mgc3RyZWFtLiBWYWxpZCB2YWx1ZXMgICAgZm9yIFN0cmVhbVZpZXdUeXBlIGFyZTogS0VZU19PTkxZIC0gT25seSB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgdGhlIG1vZGlmaWVkICAgIGl0ZW0gYXJlIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gTkVXX0lNQUdFIC0gVGhlIGVudGlyZSBpdGVtLCBhcyBpdCBhcHBlYXJzICAgIGFmdGVyIGl0IHdhcyBtb2RpZmllZCwgaXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtLiBPTERfSU1BR0UgLSBUaGUgZW50aXJlICAgIGl0ZW0sIGFzIGl0IGFwcGVhcmVkIGJlZm9yZSBpdCB3YXMgbW9kaWZpZWQsIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gICAgTkVXX0FORF9PTERfSU1BR0VTIC0gQm90aCB0aGUgbmV3IGFuZCB0aGUgb2xkIGl0ZW0gaW1hZ2VzIG9mIHRoZSBpdGVtICAgIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjI3N0cmVhbVNwZWNpZmljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN0cmVhbVNwZWNpZmljYXRpb24/OiBUYWJsZVNwZWNTdHJlYW1TcGVjaWZpY2F0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFibGUgdG8gY3JlYXRlLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyN0YWJsZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGxhYmVsIHRoZSB0YWJsZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBUYWdnaW5nIGZvciBEeW5hbW9EQiAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9UYWdnaW5nLmh0bWwpLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlYyN0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogVGFibGVTcGVjVGFnc1tdO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlYycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjKG9iajogVGFibGVTcGVjIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXR0cmlidXRlRGVmaW5pdGlvbnMnOiBvYmouYXR0cmlidXRlRGVmaW5pdGlvbnM/Lm1hcCh5ID0+IHRvSnNvbl9UYWJsZVNwZWNBdHRyaWJ1dGVEZWZpbml0aW9ucyh5KSksXG4gICAgJ2JpbGxpbmdNb2RlJzogb2JqLmJpbGxpbmdNb2RlLFxuICAgICdnbG9iYWxTZWNvbmRhcnlJbmRleGVzJzogb2JqLmdsb2JhbFNlY29uZGFyeUluZGV4ZXM/Lm1hcCh5ID0+IHRvSnNvbl9UYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzKHkpKSxcbiAgICAna2V5U2NoZW1hJzogb2JqLmtleVNjaGVtYT8ubWFwKHkgPT4gdG9Kc29uX1RhYmxlU3BlY0tleVNjaGVtYSh5KSksXG4gICAgJ2xvY2FsU2Vjb25kYXJ5SW5kZXhlcyc6IG9iai5sb2NhbFNlY29uZGFyeUluZGV4ZXM/Lm1hcCh5ID0+IHRvSnNvbl9UYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXMoeSkpLFxuICAgICdwcm92aXNpb25lZFRocm91Z2hwdXQnOiB0b0pzb25fVGFibGVTcGVjUHJvdmlzaW9uZWRUaHJvdWdocHV0KG9iai5wcm92aXNpb25lZFRocm91Z2hwdXQpLFxuICAgICdzc2VTcGVjaWZpY2F0aW9uJzogdG9Kc29uX1RhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24ob2JqLnNzZVNwZWNpZmljYXRpb24pLFxuICAgICdzdHJlYW1TcGVjaWZpY2F0aW9uJzogdG9Kc29uX1RhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24ob2JqLnN0cmVhbVNwZWNpZmljYXRpb24pLFxuICAgICd0YWJsZU5hbWUnOiBvYmoudGFibGVOYW1lLFxuICAgICd0YWdzJzogb2JqLnRhZ3M/Lm1hcCh5ID0+IHRvSnNvbl9UYWJsZVNwZWNUYWdzKHkpKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGF0dHJpYnV0ZSBmb3IgZGVzY3JpYmluZyB0aGUga2V5IHNjaGVtYSBmb3IgdGhlIHRhYmxlIGFuZCBpbmRleGVzLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWNBdHRyaWJ1dGVEZWZpbml0aW9ucyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0F0dHJpYnV0ZURlZmluaXRpb25zI2F0dHJpYnV0ZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnMjYXR0cmlidXRlVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgYXR0cmlidXRlVHlwZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVNwZWNBdHRyaWJ1dGVEZWZpbml0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjQXR0cmlidXRlRGVmaW5pdGlvbnMob2JqOiBUYWJsZVNwZWNBdHRyaWJ1dGVEZWZpbml0aW9ucyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2F0dHJpYnV0ZU5hbWUnOiBvYmouYXR0cmlidXRlTmFtZSxcbiAgICAnYXR0cmlidXRlVHlwZSc6IG9iai5hdHRyaWJ1dGVUeXBlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHByb3BlcnRpZXMgb2YgYSBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4LlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzI2luZGV4TmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZXhOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMja2V5U2NoZW1hXG4gICAqL1xuICByZWFkb25seSBrZXlTY2hlbWE/OiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hW107XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYXR0cmlidXRlcyB0aGF0IGFyZSBjb3BpZWQgKHByb2plY3RlZCkgZnJvbSB0aGUgdGFibGUgaW50byBhbiBpbmRleC4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVzIGFuZCBpbmRleCBrZXkgYXR0cmlidXRlcywgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgcHJvamVjdGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMjcHJvamVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdGlvbj86IFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHNldHRpbmdzIGZvciBhIHNwZWNpZmllZCB0YWJsZSBvciBpbmRleC4gVGhlIHNldHRpbmdzIGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgVXBkYXRlVGFibGUgb3BlcmF0aW9uLlxuICAgKiBGb3IgY3VycmVudCBtaW5pbXVtIGFuZCBtYXhpbXVtIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgdmFsdWVzLCBzZWUgU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3RhcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gICAqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcyNwcm92aXNpb25lZFRocm91Z2hwdXRcbiAgICovXG4gIHJlYWRvbmx5IHByb3Zpc2lvbmVkVGhyb3VnaHB1dD86IFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQ7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlcyhvYmo6IFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpbmRleE5hbWUnOiBvYmouaW5kZXhOYW1lLFxuICAgICdrZXlTY2hlbWEnOiBvYmoua2V5U2NoZW1hPy5tYXAoeSA9PiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSh5KSksXG4gICAgJ3Byb2plY3Rpb24nOiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24ob2JqLnByb2plY3Rpb24pLFxuICAgICdwcm92aXNpb25lZFRocm91Z2hwdXQnOiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb3Zpc2lvbmVkVGhyb3VnaHB1dChvYmoucHJvdmlzaW9uZWRUaHJvdWdocHV0KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGVsZW1lbnQgb2YgYSBrZXkgc2NoZW1hLiBBIGtleSBzY2hlbWEgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgbWFrZSB1cCB0aGUgcHJpbWFyeSBrZXkgb2YgYSB0YWJsZSwgb3IgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIGFuIGluZGV4LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IHJlcHJlc2VudHMgZXhhY3RseSBvbmUgYXR0cmlidXRlIG9mIHRoZSBwcmltYXJ5IGtleS4gRm9yIGV4YW1wbGUsIGEgc2ltcGxlIHByaW1hcnkga2V5IHdvdWxkIGJlIHJlcHJlc2VudGVkIGJ5IG9uZSBLZXlTY2hlbWFFbGVtZW50IChmb3IgdGhlIHBhcnRpdGlvbiBrZXkpLiBBIGNvbXBvc2l0ZSBwcmltYXJ5IGtleSB3b3VsZCByZXF1aXJlIG9uZSBLZXlTY2hlbWFFbGVtZW50IGZvciB0aGUgcGFydGl0aW9uIGtleSwgYW5kIGFub3RoZXIgS2V5U2NoZW1hRWxlbWVudCBmb3IgdGhlIHNvcnQga2V5LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IG11c3QgYmUgYSBzY2FsYXIsIHRvcC1sZXZlbCBhdHRyaWJ1dGUgKG5vdCBhIG5lc3RlZCBhdHRyaWJ1dGUpLiBUaGUgZGF0YSB0eXBlIG11c3QgYmUgb25lIG9mIFN0cmluZywgTnVtYmVyLCBvciBCaW5hcnkuIFRoZSBhdHRyaWJ1dGUgY2Fubm90IGJlIG5lc3RlZCB3aXRoaW4gYSBMaXN0IG9yIGEgTWFwLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjS2V5U2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjS2V5U2NoZW1hIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjS2V5U2NoZW1hI2F0dHJpYnV0ZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjS2V5U2NoZW1hI2tleVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGtleVR5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjS2V5U2NoZW1hJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVNwZWNLZXlTY2hlbWEob2JqOiBUYWJsZVNwZWNLZXlTY2hlbWEgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhdHRyaWJ1dGVOYW1lJzogb2JqLmF0dHJpYnV0ZU5hbWUsXG4gICAgJ2tleVR5cGUnOiBvYmoua2V5VHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm9wZXJ0aWVzIG9mIGEgbG9jYWwgc2Vjb25kYXJ5IGluZGV4LlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzI2luZGV4TmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZXhOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlcyNrZXlTY2hlbWFcbiAgICovXG4gIHJlYWRvbmx5IGtleVNjaGVtYT86IFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYVtdO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGF0dHJpYnV0ZXMgdGhhdCBhcmUgY29waWVkIChwcm9qZWN0ZWQpIGZyb20gdGhlIHRhYmxlIGludG8gYW4gaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC5cbiAgICpcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXMjcHJvamVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdGlvbj86IFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb247XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXMob2JqOiBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdpbmRleE5hbWUnOiBvYmouaW5kZXhOYW1lLFxuICAgICdrZXlTY2hlbWEnOiBvYmoua2V5U2NoZW1hPy5tYXAoeSA9PiB0b0pzb25fVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hKHkpKSxcbiAgICAncHJvamVjdGlvbic6IHRvSnNvbl9UYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uKG9iai5wcm9qZWN0aW9uKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBwcm92aXNpb25lZCB0aHJvdWdocHV0IHNldHRpbmdzIGZvciBhIHNwZWNpZmllZCB0YWJsZSBvciBpbmRleC4gVGhlIHNldHRpbmdzIGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgVXBkYXRlVGFibGUgb3BlcmF0aW9uLlxuICogSWYgeW91IHNldCBCaWxsaW5nTW9kZSBhcyBQUk9WSVNJT05FRCwgeW91IG11c3Qgc3BlY2lmeSB0aGlzIHByb3BlcnR5LiBJZiB5b3Ugc2V0IEJpbGxpbmdNb2RlIGFzIFBBWV9QRVJfUkVRVUVTVCwgeW91IGNhbm5vdCBzcGVjaWZ5IHRoaXMgcHJvcGVydHkuXG4gKiBGb3IgY3VycmVudCBtaW5pbXVtIGFuZCBtYXhpbXVtIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgdmFsdWVzLCBzZWUgU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3RhcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXQge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXQjcmVhZENhcGFjaXR5VW5pdHNcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRDYXBhY2l0eVVuaXRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1Byb3Zpc2lvbmVkVGhyb3VnaHB1dCN3cml0ZUNhcGFjaXR5VW5pdHNcbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlQ2FwYWNpdHlVbml0cz86IG51bWJlcjtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVNwZWNQcm92aXNpb25lZFRocm91Z2hwdXQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY1Byb3Zpc2lvbmVkVGhyb3VnaHB1dChvYmo6IFRhYmxlU3BlY1Byb3Zpc2lvbmVkVGhyb3VnaHB1dCB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ3JlYWRDYXBhY2l0eVVuaXRzJzogb2JqLnJlYWRDYXBhY2l0eVVuaXRzLFxuICAgICd3cml0ZUNhcGFjaXR5VW5pdHMnOiBvYmoud3JpdGVDYXBhY2l0eVVuaXRzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHNldHRpbmdzIHVzZWQgdG8gZW5hYmxlIHNlcnZlci1zaWRlIGVuY3J5cHRpb24uXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNTc2VTcGVjaWZpY2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24jZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvbiNrbXNNYXN0ZXJLZXlJRFxuICAgKi9cbiAgcmVhZG9ubHkga21zTWFzdGVyS2V5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjU3NlU3BlY2lmaWNhdGlvbiNzc2VUeXBlXG4gICAqL1xuICByZWFkb25seSBzc2VUeXBlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24nIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY1NzZVNwZWNpZmljYXRpb24ob2JqOiBUYWJsZVNwZWNTc2VTcGVjaWZpY2F0aW9uIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnZW5hYmxlZCc6IG9iai5lbmFibGVkLFxuICAgICdrbXNNYXN0ZXJLZXlJRCc6IG9iai5rbXNNYXN0ZXJLZXlJZCxcbiAgICAnc3NlVHlwZSc6IG9iai5zc2VUeXBlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgRHluYW1vREIgU3RyZWFtcyBvbiB0aGUgdGFibGUuIFRoZXNlIHNldHRpbmdzIGNvbnNpc3Qgb2Y6XG4gKiAqIFN0cmVhbUVuYWJsZWQgLSBJbmRpY2F0ZXMgd2hldGhlciBEeW5hbW9EQiBTdHJlYW1zIGlzIHRvIGJlIGVuYWJsZWQgICAgKHRydWUpIG9yIGRpc2FibGVkIChmYWxzZSkuXG4gKiAqIFN0cmVhbVZpZXdUeXBlIC0gV2hlbiBhbiBpdGVtIGluIHRoZSB0YWJsZSBpcyBtb2RpZmllZCwgU3RyZWFtVmlld1R5cGUgICAgZGV0ZXJtaW5lcyB3aGF0IGluZm9ybWF0aW9uIGlzIHdyaXR0ZW4gdG8gdGhlIHRhYmxlJ3Mgc3RyZWFtLiBWYWxpZCB2YWx1ZXMgICAgZm9yIFN0cmVhbVZpZXdUeXBlIGFyZTogS0VZU19PTkxZIC0gT25seSB0aGUga2V5IGF0dHJpYnV0ZXMgb2YgdGhlIG1vZGlmaWVkICAgIGl0ZW0gYXJlIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gTkVXX0lNQUdFIC0gVGhlIGVudGlyZSBpdGVtLCBhcyBpdCBhcHBlYXJzICAgIGFmdGVyIGl0IHdhcyBtb2RpZmllZCwgaXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtLiBPTERfSU1BR0UgLSBUaGUgZW50aXJlICAgIGl0ZW0sIGFzIGl0IGFwcGVhcmVkIGJlZm9yZSBpdCB3YXMgbW9kaWZpZWQsIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbS4gICAgTkVXX0FORF9PTERfSU1BR0VTIC0gQm90aCB0aGUgbmV3IGFuZCB0aGUgb2xkIGl0ZW0gaW1hZ2VzIG9mIHRoZSBpdGVtICAgIGFyZSB3cml0dGVuIHRvIHRoZSBzdHJlYW0uXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNTdHJlYW1TcGVjaWZpY2F0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24jc3RyZWFtRW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3RyZWFtRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvbiNzdHJlYW1WaWV3VHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RyZWFtVmlld1R5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjU3RyZWFtU3BlY2lmaWNhdGlvbihvYmo6IFRhYmxlU3BlY1N0cmVhbVNwZWNpZmljYXRpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdzdHJlYW1FbmFibGVkJzogb2JqLnN0cmVhbUVuYWJsZWQsXG4gICAgJ3N0cmVhbVZpZXdUeXBlJzogb2JqLnN0cmVhbVZpZXdUeXBlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIERlc2NyaWJlcyBhIHRhZy4gQSB0YWcgaXMgYSBrZXktdmFsdWUgcGFpci4gWW91IGNhbiBhZGQgdXAgdG8gNTAgdGFncyB0byBhIHNpbmdsZSBEeW5hbW9EQiB0YWJsZS5cbiAqIEFXUy1hc3NpZ25lZCB0YWcgbmFtZXMgYW5kIHZhbHVlcyBhcmUgYXV0b21hdGljYWxseSBhc3NpZ25lZCB0aGUgYXdzOiBwcmVmaXgsIHdoaWNoIHRoZSB1c2VyIGNhbm5vdCBhc3NpZ24uIEFXUy1hc3NpZ25lZCB0YWcgbmFtZXMgZG8gbm90IGNvdW50IHRvd2FyZHMgdGhlIHRhZyBsaW1pdCBvZiA1MC4gVXNlci1hc3NpZ25lZCB0YWcgbmFtZXMgaGF2ZSB0aGUgcHJlZml4IHVzZXI6IGluIHRoZSBDb3N0IEFsbG9jYXRpb24gUmVwb3J0LiBZb3UgY2Fubm90IGJhY2tkYXRlIHRoZSBhcHBsaWNhdGlvbiBvZiBhIHRhZy5cbiAqIEZvciBhbiBvdmVydmlldyBvbiB0YWdnaW5nIER5bmFtb0RCIHJlc291cmNlcywgc2VlIFRhZ2dpbmcgZm9yIER5bmFtb0RCIChodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYW1hem9uZHluYW1vZGIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1RhZ2dpbmcuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNUYWdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjVGFncyB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY1RhZ3Mja2V5XG4gICAqL1xuICByZWFkb25seSBrZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjVGFncyN2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjVGFncycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjVGFncyhvYmo6IFRhYmxlU3BlY1RhZ3MgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdrZXknOiBvYmoua2V5LFxuICAgICd2YWx1ZSc6IG9iai52YWx1ZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGVsZW1lbnQgb2YgYSBrZXkgc2NoZW1hLiBBIGtleSBzY2hlbWEgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgbWFrZSB1cCB0aGUgcHJpbWFyeSBrZXkgb2YgYSB0YWJsZSwgb3IgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIGFuIGluZGV4LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IHJlcHJlc2VudHMgZXhhY3RseSBvbmUgYXR0cmlidXRlIG9mIHRoZSBwcmltYXJ5IGtleS4gRm9yIGV4YW1wbGUsIGEgc2ltcGxlIHByaW1hcnkga2V5IHdvdWxkIGJlIHJlcHJlc2VudGVkIGJ5IG9uZSBLZXlTY2hlbWFFbGVtZW50IChmb3IgdGhlIHBhcnRpdGlvbiBrZXkpLiBBIGNvbXBvc2l0ZSBwcmltYXJ5IGtleSB3b3VsZCByZXF1aXJlIG9uZSBLZXlTY2hlbWFFbGVtZW50IGZvciB0aGUgcGFydGl0aW9uIGtleSwgYW5kIGFub3RoZXIgS2V5U2NoZW1hRWxlbWVudCBmb3IgdGhlIHNvcnQga2V5LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IG11c3QgYmUgYSBzY2FsYXIsIHRvcC1sZXZlbCBhdHRyaWJ1dGUgKG5vdCBhIG5lc3RlZCBhdHRyaWJ1dGUpLiBUaGUgZGF0YSB0eXBlIG11c3QgYmUgb25lIG9mIFN0cmluZywgTnVtYmVyLCBvciBCaW5hcnkuIFRoZSBhdHRyaWJ1dGUgY2Fubm90IGJlIG5lc3RlZCB3aXRoaW4gYSBMaXN0IG9yIGEgTWFwLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEge1xuICAvKipcbiAgICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hI2F0dHJpYnV0ZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc0tleVNjaGVtYSNrZXlUeXBlXG4gICAqL1xuICByZWFkb25seSBrZXlUeXBlPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX1RhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEob2JqOiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnYXR0cmlidXRlTmFtZSc6IG9iai5hdHRyaWJ1dGVOYW1lLFxuICAgICdrZXlUeXBlJzogb2JqLmtleVR5cGUsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogUmVwcmVzZW50cyBhdHRyaWJ1dGVzIHRoYXQgYXJlIGNvcGllZCAocHJvamVjdGVkKSBmcm9tIHRoZSB0YWJsZSBpbnRvIGFuIGluZGV4LiBUaGVzZSBhcmUgaW4gYWRkaXRpb24gdG8gdGhlIHByaW1hcnkga2V5IGF0dHJpYnV0ZXMgYW5kIGluZGV4IGtleSBhdHRyaWJ1dGVzLCB3aGljaCBhcmUgYXV0b21hdGljYWxseSBwcm9qZWN0ZWQuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24jbm9uS2V5QXR0cmlidXRlc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9uS2V5QXR0cmlidXRlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uI3Byb2plY3Rpb25UeXBlXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0aW9uVHlwZT86IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24ob2JqOiBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbiB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ25vbktleUF0dHJpYnV0ZXMnOiBvYmoubm9uS2V5QXR0cmlidXRlcz8ubWFwKHkgPT4geSksXG4gICAgJ3Byb2plY3Rpb25UeXBlJzogb2JqLnByb2plY3Rpb25UeXBlLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgc2V0dGluZ3MgZm9yIGEgc3BlY2lmaWVkIHRhYmxlIG9yIGluZGV4LiBUaGUgc2V0dGluZ3MgY2FuIGJlIG1vZGlmaWVkIHVzaW5nIHRoZSBVcGRhdGVUYWJsZSBvcGVyYXRpb24uXG4gKiBGb3IgY3VycmVudCBtaW5pbXVtIGFuZCBtYXhpbXVtIHByb3Zpc2lvbmVkIHRocm91Z2hwdXQgdmFsdWVzLCBzZWUgU2VydmljZSwgQWNjb3VudCwgYW5kIFRhYmxlIFF1b3RhcyAoaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FtYXpvbmR5bmFtb2RiL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9MaW1pdHMuaHRtbCkgaW4gdGhlIEFtYXpvbiBEeW5hbW9EQiBEZXZlbG9wZXIgR3VpZGUuXG4gKlxuICogQHNjaGVtYSBUYWJsZVNwZWNHbG9iYWxTZWNvbmRhcnlJbmRleGVzUHJvdmlzaW9uZWRUaHJvdWdocHV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb3Zpc2lvbmVkVGhyb3VnaHB1dCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQjcmVhZENhcGFjaXR5VW5pdHNcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRDYXBhY2l0eVVuaXRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQjd3JpdGVDYXBhY2l0eVVuaXRzXG4gICAqL1xuICByZWFkb25seSB3cml0ZUNhcGFjaXR5VW5pdHM/OiBudW1iZXI7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb3Zpc2lvbmVkVGhyb3VnaHB1dCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjR2xvYmFsU2Vjb25kYXJ5SW5kZXhlc1Byb3Zpc2lvbmVkVGhyb3VnaHB1dChvYmo6IFRhYmxlU3BlY0dsb2JhbFNlY29uZGFyeUluZGV4ZXNQcm92aXNpb25lZFRocm91Z2hwdXQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdyZWFkQ2FwYWNpdHlVbml0cyc6IG9iai5yZWFkQ2FwYWNpdHlVbml0cyxcbiAgICAnd3JpdGVDYXBhY2l0eVVuaXRzJzogb2JqLndyaXRlQ2FwYWNpdHlVbml0cyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGVsZW1lbnQgb2YgYSBrZXkgc2NoZW1hLiBBIGtleSBzY2hlbWEgc3BlY2lmaWVzIHRoZSBhdHRyaWJ1dGVzIHRoYXQgbWFrZSB1cCB0aGUgcHJpbWFyeSBrZXkgb2YgYSB0YWJsZSwgb3IgdGhlIGtleSBhdHRyaWJ1dGVzIG9mIGFuIGluZGV4LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IHJlcHJlc2VudHMgZXhhY3RseSBvbmUgYXR0cmlidXRlIG9mIHRoZSBwcmltYXJ5IGtleS4gRm9yIGV4YW1wbGUsIGEgc2ltcGxlIHByaW1hcnkga2V5IHdvdWxkIGJlIHJlcHJlc2VudGVkIGJ5IG9uZSBLZXlTY2hlbWFFbGVtZW50IChmb3IgdGhlIHBhcnRpdGlvbiBrZXkpLiBBIGNvbXBvc2l0ZSBwcmltYXJ5IGtleSB3b3VsZCByZXF1aXJlIG9uZSBLZXlTY2hlbWFFbGVtZW50IGZvciB0aGUgcGFydGl0aW9uIGtleSwgYW5kIGFub3RoZXIgS2V5U2NoZW1hRWxlbWVudCBmb3IgdGhlIHNvcnQga2V5LlxuICogQSBLZXlTY2hlbWFFbGVtZW50IG11c3QgYmUgYSBzY2FsYXIsIHRvcC1sZXZlbCBhdHRyaWJ1dGUgKG5vdCBhIG5lc3RlZCBhdHRyaWJ1dGUpLiBUaGUgZGF0YSB0eXBlIG11c3QgYmUgb25lIG9mIFN0cmluZywgTnVtYmVyLCBvciBCaW5hcnkuIFRoZSBhdHRyaWJ1dGUgY2Fubm90IGJlIG5lc3RlZCB3aXRoaW4gYSBMaXN0IG9yIGEgTWFwLlxuICpcbiAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hI2F0dHJpYnV0ZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGF0dHJpYnV0ZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hI2tleVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGtleVR5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzS2V5U2NoZW1hJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9UYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEob2JqOiBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNLZXlTY2hlbWEgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhdHRyaWJ1dGVOYW1lJzogb2JqLmF0dHJpYnV0ZU5hbWUsXG4gICAgJ2tleVR5cGUnOiBvYmoua2V5VHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBSZXByZXNlbnRzIGF0dHJpYnV0ZXMgdGhhdCBhcmUgY29waWVkIChwcm9qZWN0ZWQpIGZyb20gdGhlIHRhYmxlIGludG8gYW4gaW5kZXguIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRlcyBhbmQgaW5kZXgga2V5IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSBhdXRvbWF0aWNhbGx5IHByb2plY3RlZC5cbiAqXG4gKiBAc2NoZW1hIFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZVNwZWNMb2NhbFNlY29uZGFyeUluZGV4ZXNQcm9qZWN0aW9uIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbiNub25LZXlBdHRyaWJ1dGVzXG4gICAqL1xuICByZWFkb25seSBub25LZXlBdHRyaWJ1dGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbiNwcm9qZWN0aW9uVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdGlvblR5cGU/OiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fVGFibGVTcGVjTG9jYWxTZWNvbmRhcnlJbmRleGVzUHJvamVjdGlvbihvYmo6IFRhYmxlU3BlY0xvY2FsU2Vjb25kYXJ5SW5kZXhlc1Byb2plY3Rpb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdub25LZXlBdHRyaWJ1dGVzJzogb2JqLm5vbktleUF0dHJpYnV0ZXM/Lm1hcCh5ID0+IHkpLFxuICAgICdwcm9qZWN0aW9uVHlwZSc6IG9iai5wcm9qZWN0aW9uVHlwZSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuIl19
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { ApiObject, ApiObjectMetadata, GroupVersionKind } from 'cdk8s';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
/**
|
|
4
|
+
* SecurityGroup is the Schema for the SecurityGroups API
|
|
5
|
+
*
|
|
6
|
+
* @schema SecurityGroup
|
|
7
|
+
*/
|
|
8
|
+
export declare class SecurityGroup extends ApiObject {
|
|
9
|
+
/**
|
|
10
|
+
* Returns the apiVersion and kind for "SecurityGroup"
|
|
11
|
+
*/
|
|
12
|
+
static readonly GVK: GroupVersionKind;
|
|
13
|
+
/**
|
|
14
|
+
* Renders a Kubernetes manifest for "SecurityGroup".
|
|
15
|
+
*
|
|
16
|
+
* This can be used to inline resource manifests inside other objects (e.g. as templates).
|
|
17
|
+
*
|
|
18
|
+
* @param props initialization props
|
|
19
|
+
*/
|
|
20
|
+
static manifest(props?: SecurityGroupProps): any;
|
|
21
|
+
/**
|
|
22
|
+
* Defines a "SecurityGroup" API object
|
|
23
|
+
* @param scope the scope in which to define this object
|
|
24
|
+
* @param id a scope-local name for the object
|
|
25
|
+
* @param props initialization props
|
|
26
|
+
*/
|
|
27
|
+
constructor(scope: Construct, id: string, props?: SecurityGroupProps);
|
|
28
|
+
/**
|
|
29
|
+
* Renders the object to Kubernetes JSON.
|
|
30
|
+
*/
|
|
31
|
+
toJson(): any;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* SecurityGroup is the Schema for the SecurityGroups API
|
|
35
|
+
*
|
|
36
|
+
* @schema SecurityGroup
|
|
37
|
+
*/
|
|
38
|
+
export interface SecurityGroupProps {
|
|
39
|
+
/**
|
|
40
|
+
* @schema SecurityGroup#metadata
|
|
41
|
+
*/
|
|
42
|
+
readonly metadata?: ApiObjectMetadata;
|
|
43
|
+
/**
|
|
44
|
+
* SecurityGroupSpec defines the desired state of SecurityGroup.
|
|
45
|
+
* Describes a security group.
|
|
46
|
+
*
|
|
47
|
+
* @schema SecurityGroup#spec
|
|
48
|
+
*/
|
|
49
|
+
readonly spec?: SecurityGroupSpec;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Converts an object of type 'SecurityGroupProps' to JSON representation.
|
|
53
|
+
*/
|
|
54
|
+
export declare function toJson_SecurityGroupProps(obj: SecurityGroupProps | undefined): Record<string, any> | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* SecurityGroupSpec defines the desired state of SecurityGroup.
|
|
57
|
+
* Describes a security group.
|
|
58
|
+
*
|
|
59
|
+
* @schema SecurityGroupSpec
|
|
60
|
+
*/
|
|
61
|
+
export interface SecurityGroupSpec {
|
|
62
|
+
/**
|
|
63
|
+
* A description for the security group. This is informational only.
|
|
64
|
+
* Constraints: Up to 255 characters in length
|
|
65
|
+
* Constraints for EC2-Classic: ASCII characters
|
|
66
|
+
* Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*
|
|
67
|
+
*
|
|
68
|
+
* @schema SecurityGroupSpec#description
|
|
69
|
+
*/
|
|
70
|
+
readonly description: string;
|
|
71
|
+
/**
|
|
72
|
+
* The name of the security group.
|
|
73
|
+
* Constraints: Up to 255 characters in length. Cannot start with sg-.
|
|
74
|
+
* Constraints for EC2-Classic: ASCII characters
|
|
75
|
+
* Constraints for EC2-VPC: a-z, A-Z, 0-9, spaces, and ._-:/()#,@[]+=&;{}!$*
|
|
76
|
+
*
|
|
77
|
+
* @schema SecurityGroupSpec#name
|
|
78
|
+
*/
|
|
79
|
+
readonly name: string;
|
|
80
|
+
/**
|
|
81
|
+
* The tags to assign to the security group.
|
|
82
|
+
*
|
|
83
|
+
* @schema SecurityGroupSpec#tagSpecifications
|
|
84
|
+
*/
|
|
85
|
+
readonly tagSpecifications?: SecurityGroupSpecTagSpecifications[];
|
|
86
|
+
/**
|
|
87
|
+
* [EC2-VPC] The ID of the VPC. Required for EC2-VPC.
|
|
88
|
+
*
|
|
89
|
+
* @schema SecurityGroupSpec#vpcID
|
|
90
|
+
*/
|
|
91
|
+
readonly vpcId?: string;
|
|
92
|
+
/**
|
|
93
|
+
* AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference type to provide more user friendly syntax for references using 'from' field Ex: APIIDRef: from: name: my-api
|
|
94
|
+
*
|
|
95
|
+
* @schema SecurityGroupSpec#vpcRef
|
|
96
|
+
*/
|
|
97
|
+
readonly vpcRef?: SecurityGroupSpecVpcRef;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Converts an object of type 'SecurityGroupSpec' to JSON representation.
|
|
101
|
+
*/
|
|
102
|
+
export declare function toJson_SecurityGroupSpec(obj: SecurityGroupSpec | undefined): Record<string, any> | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* The tags to apply to a resource when the resource is being created.
|
|
105
|
+
*
|
|
106
|
+
* @schema SecurityGroupSpecTagSpecifications
|
|
107
|
+
*/
|
|
108
|
+
export interface SecurityGroupSpecTagSpecifications {
|
|
109
|
+
/**
|
|
110
|
+
* @schema SecurityGroupSpecTagSpecifications#resourceType
|
|
111
|
+
*/
|
|
112
|
+
readonly resourceType?: string;
|
|
113
|
+
/**
|
|
114
|
+
* @schema SecurityGroupSpecTagSpecifications#tags
|
|
115
|
+
*/
|
|
116
|
+
readonly tags?: SecurityGroupSpecTagSpecificationsTags[];
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Converts an object of type 'SecurityGroupSpecTagSpecifications' to JSON representation.
|
|
120
|
+
*/
|
|
121
|
+
export declare function toJson_SecurityGroupSpecTagSpecifications(obj: SecurityGroupSpecTagSpecifications | undefined): Record<string, any> | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* AWSResourceReferenceWrapper provides a wrapper around *AWSResourceReference type to provide more user friendly syntax for references using 'from' field Ex: APIIDRef: from: name: my-api
|
|
124
|
+
*
|
|
125
|
+
* @schema SecurityGroupSpecVpcRef
|
|
126
|
+
*/
|
|
127
|
+
export interface SecurityGroupSpecVpcRef {
|
|
128
|
+
/**
|
|
129
|
+
* AWSResourceReference provides all the values necessary to reference another k8s resource for finding the identifier(Id/ARN/Name)
|
|
130
|
+
*
|
|
131
|
+
* @schema SecurityGroupSpecVpcRef#from
|
|
132
|
+
*/
|
|
133
|
+
readonly from?: SecurityGroupSpecVpcRefFrom;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Converts an object of type 'SecurityGroupSpecVpcRef' to JSON representation.
|
|
137
|
+
*/
|
|
138
|
+
export declare function toJson_SecurityGroupSpecVpcRef(obj: SecurityGroupSpecVpcRef | undefined): Record<string, any> | undefined;
|
|
139
|
+
/**
|
|
140
|
+
* Describes a tag.
|
|
141
|
+
*
|
|
142
|
+
* @schema SecurityGroupSpecTagSpecificationsTags
|
|
143
|
+
*/
|
|
144
|
+
export interface SecurityGroupSpecTagSpecificationsTags {
|
|
145
|
+
/**
|
|
146
|
+
* @schema SecurityGroupSpecTagSpecificationsTags#key
|
|
147
|
+
*/
|
|
148
|
+
readonly key?: string;
|
|
149
|
+
/**
|
|
150
|
+
* @schema SecurityGroupSpecTagSpecificationsTags#value
|
|
151
|
+
*/
|
|
152
|
+
readonly value?: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Converts an object of type 'SecurityGroupSpecTagSpecificationsTags' to JSON representation.
|
|
156
|
+
*/
|
|
157
|
+
export declare function toJson_SecurityGroupSpecTagSpecificationsTags(obj: SecurityGroupSpecTagSpecificationsTags | undefined): Record<string, any> | undefined;
|
|
158
|
+
/**
|
|
159
|
+
* AWSResourceReference provides all the values necessary to reference another k8s resource for finding the identifier(Id/ARN/Name)
|
|
160
|
+
*
|
|
161
|
+
* @schema SecurityGroupSpecVpcRefFrom
|
|
162
|
+
*/
|
|
163
|
+
export interface SecurityGroupSpecVpcRefFrom {
|
|
164
|
+
/**
|
|
165
|
+
* @schema SecurityGroupSpecVpcRefFrom#name
|
|
166
|
+
*/
|
|
167
|
+
readonly name?: string;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Converts an object of type 'SecurityGroupSpecVpcRefFrom' to JSON representation.
|
|
171
|
+
*/
|
|
172
|
+
export declare function toJson_SecurityGroupSpecVpcRefFrom(obj: SecurityGroupSpecVpcRefFrom | undefined): Record<string, any> | undefined;
|
|
173
|
+
//# sourceMappingURL=ec2securitygroups-ec2.services.k8s.aws.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ec2securitygroups-ec2.services.k8s.aws.d.ts","sourceRoot":"","sources":["../../src/imports/ec2securitygroups-ec2.services.k8s.aws.ts"],"names":[],"mappings":"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"}
|