@horietakehiro/aws-cdk-utul 0.35.6 → 0.40.1
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/README.md +28 -0
- package/lib/assertions.d.ts +219 -12
- package/lib/assertions.js +228 -66
- package/lib/typed-resource.d.ts +1 -1
- package/lib/typed-resource.js +1 -1
- package/lib/types/cfn-resource-types/aws-accessanalyzer-analyzer.d.ts +33 -1
- package/lib/types/cfn-resource-types/aws-accessanalyzer-analyzer.js +1 -1
- package/lib/types/cfn-resource-types/aws-connect-evaluationform.d.ts +113 -103
- package/lib/types/cfn-resource-types/aws-connect-evaluationform.js +1 -1
- package/lib/types/cfn-resource-types/aws-customerprofiles-segmentdefinition.d.ts +20 -0
- package/lib/types/cfn-resource-types/aws-customerprofiles-segmentdefinition.js +1 -1
- package/lib/types/cfn-resource-types/aws-datazone-projectprofile.d.ts +28 -0
- package/lib/types/cfn-resource-types/aws-datazone-projectprofile.js +1 -1
- package/lib/types/cfn-resource-types/aws-kendra-datasource.d.ts +7 -1
- package/lib/types/cfn-resource-types/aws-kendra-datasource.js +1 -1
- package/package.json +1 -1
package/lib/assertions.js
CHANGED
|
@@ -199,7 +199,7 @@ exports.TypedTemplate = TypedTemplate;
|
|
|
199
199
|
/**
|
|
200
200
|
* provides some syntax sugars for `Match` class at `aws-cdk-lib/assertions`
|
|
201
201
|
*/
|
|
202
|
-
class ExtraMatch
|
|
202
|
+
class ExtraMatch {
|
|
203
203
|
/**
|
|
204
204
|
* same function as `Match.objectEquals({ Ref: logicalId })`
|
|
205
205
|
* @param logicalId
|
|
@@ -225,24 +225,6 @@ class ExtraMatch extends assertions_1.Match {
|
|
|
225
225
|
static getAttArn(logicalId) {
|
|
226
226
|
return this.getAtt(logicalId, "Arn");
|
|
227
227
|
}
|
|
228
|
-
static arrayWith(pattern) {
|
|
229
|
-
return assertions_1.Match.arrayWith(pattern);
|
|
230
|
-
}
|
|
231
|
-
static arrayEquals(pattern) {
|
|
232
|
-
return assertions_1.Match.arrayEquals(pattern);
|
|
233
|
-
}
|
|
234
|
-
static objectLike(pattern) {
|
|
235
|
-
return assertions_1.Match.objectLike(pattern);
|
|
236
|
-
}
|
|
237
|
-
static objectEquals(pattern) {
|
|
238
|
-
return assertions_1.Match.objectEquals(pattern);
|
|
239
|
-
}
|
|
240
|
-
static not(pattern) {
|
|
241
|
-
return assertions_1.Match.not(pattern);
|
|
242
|
-
}
|
|
243
|
-
static exact(pattern) {
|
|
244
|
-
return assertions_1.Match.exact(pattern);
|
|
245
|
-
}
|
|
246
228
|
/**
|
|
247
229
|
* same function as below:
|
|
248
230
|
*
|
|
@@ -259,55 +241,235 @@ class ExtraMatch extends assertions_1.Match {
|
|
|
259
241
|
"Fn::Join": [props.delimiter ?? "", assertions_1.Match.arrayWith(props.arrayWith)],
|
|
260
242
|
});
|
|
261
243
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
// });
|
|
283
|
-
// }
|
|
284
|
-
// /**
|
|
285
|
-
// * returns Match instance that matches global resource ARN like : `arn:aws:iam::123456789012:role/role-name`
|
|
286
|
-
// * @param elems
|
|
287
|
-
// * @returns
|
|
288
|
-
// */
|
|
289
|
-
// static globalArn(
|
|
290
|
-
// elems: Omit<ArnElements, "region">,
|
|
291
|
-
// delimiter: string = ""
|
|
292
|
-
// ): Matcher {
|
|
293
|
-
// return Match.objectEquals({
|
|
294
|
-
// "Fn::Join": Match.arrayEquals([
|
|
295
|
-
// delimiter,
|
|
296
|
-
// Match.arrayWith([
|
|
297
|
-
// "arn:",
|
|
298
|
-
// elems.partition ?? { Ref: "AWS::Partition" },
|
|
299
|
-
// Match.stringLikeRegexp(`:${elems.service ?? "*"}::`),
|
|
300
|
-
// elems.account ?? { Ref: "AWS::AccountId" },
|
|
301
|
-
// ...(elems.rest instanceof Matcher
|
|
302
|
-
// ? [elems.rest]
|
|
303
|
-
// : (elems.rest ?? [])),
|
|
304
|
-
// ]),
|
|
305
|
-
// ]),
|
|
306
|
-
// });
|
|
307
|
-
// }
|
|
244
|
+
/**
|
|
245
|
+
You can define Matcher for IAM Policy Document with type hints.
|
|
246
|
+
```js
|
|
247
|
+
template.hasResource(
|
|
248
|
+
AWS_IAM_ROLE({
|
|
249
|
+
Properties: {
|
|
250
|
+
AssumeRolePolicyDocument: ExtraMatch.iamPolicyLike({
|
|
251
|
+
Statement: [
|
|
252
|
+
{
|
|
253
|
+
Principal: { Service: "ec2.amazonaws.com" },
|
|
254
|
+
},
|
|
255
|
+
],
|
|
256
|
+
}),
|
|
257
|
+
},
|
|
258
|
+
})
|
|
259
|
+
);
|
|
260
|
+
```
|
|
261
|
+
* @param doc
|
|
262
|
+
* @returns
|
|
263
|
+
*/
|
|
308
264
|
static iamPolicyLike(doc) {
|
|
309
265
|
return assertions_1.Match.objectLike(doc);
|
|
310
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
Same method as `Match.arrayWith` but provides type hints and validate type match
|
|
269
|
+
```js
|
|
270
|
+
// this is a right code
|
|
271
|
+
template.hasResource(
|
|
272
|
+
AWS_EC2_EIP({
|
|
273
|
+
Properties: {
|
|
274
|
+
Tags: ExtraMatch.arrayWith<Tag[]>([
|
|
275
|
+
{
|
|
276
|
+
Key: "key2",
|
|
277
|
+
Value: "val2",
|
|
278
|
+
},
|
|
279
|
+
]),
|
|
280
|
+
},
|
|
281
|
+
})
|
|
282
|
+
);
|
|
283
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
284
|
+
template.hasResource(
|
|
285
|
+
AWS_EC2_EIP({
|
|
286
|
+
Properties: {
|
|
287
|
+
Tags: ExtraMatch.arrayWith<string[]>([
|
|
288
|
+
"hoge", "fuga"
|
|
289
|
+
]),
|
|
290
|
+
},
|
|
291
|
+
})
|
|
292
|
+
);
|
|
293
|
+
```
|
|
294
|
+
* @param pattern
|
|
295
|
+
* @returns
|
|
296
|
+
*/
|
|
297
|
+
static arrayWith(pattern) {
|
|
298
|
+
return assertions_1.Match.arrayWith(pattern);
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Same method as `Match.arrayEquals` but provides type hints and validate type match
|
|
302
|
+
```js
|
|
303
|
+
// this is a right code
|
|
304
|
+
template.hasResource(
|
|
305
|
+
AWS_EC2_EIP({
|
|
306
|
+
Properties: {
|
|
307
|
+
Tags: ExtraMatch.arrayEquals<Tag[]>([
|
|
308
|
+
{
|
|
309
|
+
Key: "key1",
|
|
310
|
+
Value: "val1",
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
Key: "key2",
|
|
314
|
+
Value: "val2",
|
|
315
|
+
},
|
|
316
|
+
]),
|
|
317
|
+
},
|
|
318
|
+
})
|
|
319
|
+
);
|
|
320
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
321
|
+
template.hasResource(
|
|
322
|
+
AWS_EC2_EIP({
|
|
323
|
+
Properties: {
|
|
324
|
+
Tags: ExtraMatch.arrayEquals<Tag[]>([
|
|
325
|
+
{
|
|
326
|
+
Key: "key1",
|
|
327
|
+
Value: "val1",
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
Key: 100,
|
|
331
|
+
Value: 200,
|
|
332
|
+
},
|
|
333
|
+
]),
|
|
334
|
+
},
|
|
335
|
+
})
|
|
336
|
+
);
|
|
337
|
+
```
|
|
338
|
+
* @param pattern
|
|
339
|
+
* @returns
|
|
340
|
+
*/
|
|
341
|
+
static arrayEquals(pattern) {
|
|
342
|
+
return assertions_1.Match.arrayEquals(pattern);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Same method as `Match.objectLike` but provides type hints and validate type match
|
|
346
|
+
```js
|
|
347
|
+
// this is a right code
|
|
348
|
+
template.hasResource(
|
|
349
|
+
AWS_EC2_INSTANCE({
|
|
350
|
+
Properties: {
|
|
351
|
+
BlockDeviceMappings: [
|
|
352
|
+
{
|
|
353
|
+
DeviceName: "test",
|
|
354
|
+
Ebs: ExtraMatch.objectLike<Ebs>({
|
|
355
|
+
VolumeSize: 10,
|
|
356
|
+
}),
|
|
357
|
+
},
|
|
358
|
+
],
|
|
359
|
+
},
|
|
360
|
+
})
|
|
361
|
+
);
|
|
362
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
363
|
+
template.hasResource(
|
|
364
|
+
AWS_EC2_INSTANCE({
|
|
365
|
+
Properties: {
|
|
366
|
+
BlockDeviceMappings: [
|
|
367
|
+
{
|
|
368
|
+
DeviceName: "test",
|
|
369
|
+
Ebs: ExtraMatch.objectLike<Ebs>({
|
|
370
|
+
VolumeSize: "10",
|
|
371
|
+
}),
|
|
372
|
+
},
|
|
373
|
+
],
|
|
374
|
+
},
|
|
375
|
+
})
|
|
376
|
+
);
|
|
377
|
+
* @param pattern
|
|
378
|
+
* @returns
|
|
379
|
+
*/
|
|
380
|
+
static objectLike(pattern) {
|
|
381
|
+
return assertions_1.Match.objectLike(pattern);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Same method as `Match.objectEquals` but provides type hints and validate type match
|
|
385
|
+
```js
|
|
386
|
+
// this is a right code
|
|
387
|
+
template.hasResource(
|
|
388
|
+
AWS_EC2_EIP({
|
|
389
|
+
Properties: {
|
|
390
|
+
// You can nest TypedMatcher(use TypedMatcher inside TypedMatcher)
|
|
391
|
+
Tags: ExtraMatch.arrayWith<Tag[]>([
|
|
392
|
+
ExtraMatch.objectEquals<Tag>({
|
|
393
|
+
Key: "key1",
|
|
394
|
+
Value: "val1",
|
|
395
|
+
}),
|
|
396
|
+
]),
|
|
397
|
+
},
|
|
398
|
+
})
|
|
399
|
+
);
|
|
400
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
401
|
+
template.hasResource(
|
|
402
|
+
AWS_EC2_EIP({
|
|
403
|
+
Properties: {
|
|
404
|
+
Tags: ExtraMatch.arrayWith<Tag[]>([
|
|
405
|
+
ExtraMatch.objectEquals<Tag>({
|
|
406
|
+
Key: "key1",
|
|
407
|
+
Value: 100,
|
|
408
|
+
}),
|
|
409
|
+
]),
|
|
410
|
+
},
|
|
411
|
+
})
|
|
412
|
+
);
|
|
413
|
+
* @param pattern
|
|
414
|
+
* @returns
|
|
415
|
+
*/
|
|
416
|
+
static objectEquals(pattern) {
|
|
417
|
+
return assertions_1.Match.objectEquals(pattern);
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Same method as `Match.not` but provides type hints and validate type match
|
|
421
|
+
```js
|
|
422
|
+
// this is a right code
|
|
423
|
+
template.hasResource(
|
|
424
|
+
AWS_EC2_INSTANCE({
|
|
425
|
+
Properties: {
|
|
426
|
+
ImageId: ExtraMatch.not("ami-12345"),
|
|
427
|
+
},
|
|
428
|
+
})
|
|
429
|
+
);
|
|
430
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
431
|
+
template.hasResource(
|
|
432
|
+
AWS_EC2_INSTANCE({
|
|
433
|
+
Properties: {
|
|
434
|
+
ImageId: ExtraMatch.not(100),
|
|
435
|
+
},
|
|
436
|
+
})
|
|
437
|
+
);
|
|
438
|
+
```
|
|
439
|
+
* Same method as `Match.not` but provides type hints and validate type match
|
|
440
|
+
* @param pattern
|
|
441
|
+
* @returns
|
|
442
|
+
*/
|
|
443
|
+
// TODO: why this expression `T extends never ? never : T` is required but this is required
|
|
444
|
+
static not(pattern) {
|
|
445
|
+
return assertions_1.Match.not(pattern);
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Same method as `Match.exact` but provides type hints and validate type match
|
|
449
|
+
```js
|
|
450
|
+
// this is a right code
|
|
451
|
+
template.hasResource(
|
|
452
|
+
AWS_EC2_INSTANCE({
|
|
453
|
+
Properties: {
|
|
454
|
+
InstanceType: ExtraMatch.exact("t2.micro"),
|
|
455
|
+
},
|
|
456
|
+
})
|
|
457
|
+
);
|
|
458
|
+
// this is a wrong code(type mismatch will be detected and ts-error will be raised)
|
|
459
|
+
template.hasResource(
|
|
460
|
+
AWS_EC2_INSTANCE({
|
|
461
|
+
Properties: {
|
|
462
|
+
InstanceType: ExtraMatch.exact(false),
|
|
463
|
+
},
|
|
464
|
+
})
|
|
465
|
+
);
|
|
466
|
+
```
|
|
467
|
+
* @param pattern
|
|
468
|
+
* @returns
|
|
469
|
+
*/
|
|
470
|
+
static exact(pattern) {
|
|
471
|
+
return assertions_1.Match.exact(pattern);
|
|
472
|
+
}
|
|
311
473
|
}
|
|
312
474
|
exports.ExtraMatch = ExtraMatch;
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWtFO0FBaUJsRTs7R0FFRztBQUNILE1BQWEsYUFBYTtJQUV4QixZQUFvQixRQUFrQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU8sR0FBRyxDQUFJLElBQVksRUFBRSxHQUFRLEVBQUUsS0FBVTtRQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLGdDQUFnQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sS0FBSyxDQUNULFlBQVksSUFBSSw0QkFBNEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxHQUFHLElBQTJDO1FBRTlDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLElBQTBDO1FBRTdDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixHQUFHLElBQTRDO1FBRS9DLE9BQU8s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K0dBQStHO0lBQy9HLGtCQUFrQjtJQUNsQixjQUFjO0lBQ2QsTUFBTTtJQUNOLG9CQUFvQjtJQUNwQix3Q0FBd0M7SUFDeEMsMkJBQTJCO0lBQzNCLGVBQWU7SUFDZixnQ0FBZ0M7SUFDaEMsc0NBQXNDO0lBQ3RDLG1CQUFtQjtJQUNuQiwwQkFBMEI7SUFDMUIsa0JBQWtCO0lBQ2xCLHdEQUF3RDtJQUN4RCxnRUFBZ0U7SUFDaEUsc0RBQXNEO0lBQ3RELDRDQUE0QztJQUM1QywyQkFBMkI7SUFDM0IsbUNBQW1DO0lBQ25DLFlBQVk7SUFDWixVQUFVO0lBQ1YsUUFBUTtJQUNSLElBQUk7SUFFSixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQW1DO1FBQ3RELE9BQU8sa0JBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBeEhELGdDQXdIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlLCBNYXRjaCwgTWF0Y2hlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCI7XG5pbXBvcnQge1xuICBDb25kaXRpb24sXG4gIElucHV0UmVzb3VyY2UsXG4gIE1hcHBpbmcsXG4gIE91dHB1dFJlc291cmNlLFxuICBJbnB1dFBhcmFtdGVyLFxuICBPdXRwdXRQYXJhbWV0ZXIsXG4gIFJldHVyblZhbHVlLFxuICBJbnB1dE91dHB1dCxcbiAgT3V0cHV0T3V0cHV0LFxuICBJbnB1dFJlc291cmNlV2l0aG91dFR5cGUsXG4gIElBTVBvbGljeURvY3VtZW50LFxuICBBbHNvTWF0Y2hlcixcbiAgVHlwZWRNYXRjaGVyLFxufSBmcm9tIFwiLi90eXBlZC1yZXNvdXJjZVwiO1xuXG4vKipcbiAqIGFsbW9zdCBzYW1lIGNsYXNzIGFzIGBUZW1wbGF0ZWAgY2xhc3MgYXQgXCJhd3MtY2RrLWxpYi9hc3NlcnRpb25zXCIsIGJ1dCB5b3UgY2FuIHVzZSB0aGlzIHdpdGggcHJvcGVyIHR5cGUgZGVmaW5pdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVkVGVtcGxhdGUge1xuICB0ZW1wbGF0ZTogVGVtcGxhdGU7XG4gIHByaXZhdGUgY29uc3RydWN0b3IodGVtcGxhdGU6IFRlbXBsYXRlKSB7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQ8VD4odHlwZTogc3RyaW5nLCBkZWY6IGFueSwgYXJyYXk6IFRbXSk6IFQge1xuICAgIGlmIChhcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IEVycm9yKGAke3R5cGV9IG5vdCBmb3VuZCB3aXRoIGRlZmluaXRpb24gOiAke0pTT04uc3RyaW5naWZ5KGRlZil9YCk7XG4gICAgfVxuICAgIGlmIChhcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYG11bHRpcGxlICR7dHlwZX0gZm91bmQgd2l0aCBkZWZpbml0aW9uIDogJHtKU09OLnN0cmluZ2lmeShkZWYpfWBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheVswXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tU3RhY2tgIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGZyb21TdGFjayhcbiAgICAuLi5hcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBUZW1wbGF0ZS5mcm9tU3RhY2s+XG4gICk6IFR5cGVkVGVtcGxhdGUge1xuICAgIHJldHVybiBuZXcgVHlwZWRUZW1wbGF0ZShUZW1wbGF0ZS5mcm9tU3RhY2soLi4uYXJncykpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tSlNPTmAgYnV0IHJldHVybnMgYFR5cGVkVGVtcGxhdGVgXG4gICAqIEBwYXJhbSBhcmdzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZnJvbUpTT04oXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbUpTT04+XG4gICk6IFR5cGVkVGVtcGxhdGUge1xuICAgIHJldHVybiBuZXcgVHlwZWRUZW1wbGF0ZShUZW1wbGF0ZS5mcm9tSlNPTiguLi5hcmdzKSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZyb21TdHJpbmdgIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmcoXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbVN0cmluZz5cbiAgKTogVHlwZWRUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBUeXBlZFRlbXBsYXRlKFRlbXBsYXRlLmZyb21TdHJpbmcoLi4uYXJncykpO1xuICB9XG5cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLnJlc291cmNlQ291bnRJc2BcbiAgICpcbiAgICogdXNlIHRoaXMgbWV0aG9kIGxpa2UgYmVsb3c6XG4gICAqXG4gICAqIGBgYGpzXG4gICAqIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcyhBV1NfRUMyX1NVQk5FVCwgMylcbiAgICogYGBgXG4gICAqIEBwYXJhbSB0eXBlXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcmVzb3VyY2VDb3VudElzPFQ+KFxuICAgIHR5cGU6IChyZXNvdXJjZT86IElucHV0UmVzb3VyY2VXaXRob3V0VHlwZTxUPikgPT4gSW5wdXRSZXNvdXJjZTxUPixcbiAgICBjb3VudDogbnVtYmVyXG4gICk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUucmVzb3VyY2VDb3VudElzKHR5cGUoKS5UeXBlLCBjb3VudCk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLnJlc291cmNlUHJvcGVydGllc0NvdW50SXNgXG4gICAqIEBwYXJhbSByXG4gICAqIEBwYXJhbSBjb3VudFxuICAgKi9cbiAgcmVzb3VyY2VQcm9wZXJ0aWVzQ291bnRJczxUPihyOiBJbnB1dFJlc291cmNlPFQ+LCBjb3VudDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5yZXNvdXJjZVByb3BlcnRpZXNDb3VudElzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzLCBjb3VudCk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGhhc1Jlc291cmNlUHJvcGVydGllczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoci5UeXBlLCByLlByb3BlcnRpZXMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNSZXNvdXJjZWBcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGhhc1Jlc291cmNlPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc1Jlc291cmNlKHIuVHlwZSwgcik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZpbmRSZXNvdXJjZXNgXG4gICAqIEBwYXJhbSByXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kUmVzb3VyY2VzPFQ+KHI6IElucHV0UmVzb3VyY2U8VD4pOiBSZXR1cm5WYWx1ZTxPdXRwdXRSZXNvdXJjZTxUPj5bXSB7XG4gICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy50ZW1wbGF0ZS5maW5kUmVzb3VyY2VzKHIuVHlwZSwgcikgYXMge1xuICAgICAgW2lkIGluIHN0cmluZ106IE91dHB1dFJlc291cmNlPFQ+O1xuICAgIH07XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc291cmNlcykubWFwKChbaWQsIHJlc291cmNlXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IHJlc291cmNlIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmFsbFJlc291cmNlc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGFsbFJlc291cmNlczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5hbGxSZXNvdXJjZXMoci5UeXBlLCByKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuYWxsUmVzb3VyY2VQcm9wZXJ0aWVzYFxuICAgKiBAcGFyYW0gclxuICAgKi9cbiAgYWxsUmVzb3VyY2VzUHJvcGVydGllczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5hbGxSZXNvdXJjZXNQcm9wZXJ0aWVzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzUGFyYW1ldGVyYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzUGFyYW1ldGVyKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogSW5wdXRQYXJhbXRlcik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzUGFyYW1ldGVyKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kUGFyYW1ldGVyc2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRQYXJhbWV0ZXJzKFxuICAgIGxvZ2ljYWxJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW5wdXRQYXJhbXRlclxuICApOiBSZXR1cm5WYWx1ZTxPdXRwdXRQYXJhbWV0ZXI+W10ge1xuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB0aGlzLnRlbXBsYXRlLmZpbmRQYXJhbWV0ZXJzKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhwYXJhbWV0ZXJzKS5tYXAoKFtpZCwgcGFyYW1ldGVyXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IHBhcmFtZXRlciBhcyBPdXRwdXRQYXJhbWV0ZXIgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNPdXRwdXRgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqL1xuICBoYXNPdXRwdXQobG9naWNhbElkOiBzdHJpbmcsIHByb3BzOiBJbnB1dE91dHB1dCk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzT3V0cHV0KGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kT3V0cHV0c2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRPdXRwdXRzKFxuICAgIGxvZ2ljYWxJZDogc3RyaW5nLFxuICAgIHByb3BzPzogSW5wdXRPdXRwdXRcbiAgKTogUmV0dXJuVmFsdWU8T3V0cHV0T3V0cHV0PltdIHtcbiAgICBjb25zdCBvdXRwdXRzID0gdGhpcy50ZW1wbGF0ZS5maW5kT3V0cHV0cyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob3V0cHV0cykubWFwKChbaWQsIG91dHB1dF0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBvdXRwdXQgYXMgT3V0cHV0T3V0cHV0IH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc01hcHBpbmdgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqL1xuICBoYXNNYXBwaW5nKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogYW55KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNNYXBwaW5nKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kTWFwcGluZ3NgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kTWFwcGluZ3MobG9naWNhbElkOiBzdHJpbmcsIHByb3BzPzogYW55KTogUmV0dXJuVmFsdWU8TWFwcGluZz5bXSB7XG4gICAgY29uc3QgbWFwcGluZ3MgPSB0aGlzLnRlbXBsYXRlLmZpbmRNYXBwaW5ncyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMobWFwcGluZ3MpLm1hcCgoW2lkLCBtYXBwaW5nXSkgPT4ge1xuICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBkZWY6IG1hcHBpbmcgfTtcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzQ29uZGl0aW9uYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzQ29uZGl0aW9uKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogYW55KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNDb25kaXRpb24obG9naWNhbElkLCBwcm9wcyk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmZpbmRDb25kaXRpb25zYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZENvbmRpdGlvbnMobG9naWNhbElkOiBzdHJpbmcsIHByb3BzPzogYW55KTogUmV0dXJuVmFsdWU8Q29uZGl0aW9uPltdIHtcbiAgICBjb25zdCBjb25kaXRpb25zID0gdGhpcy50ZW1wbGF0ZS5maW5kQ29uZGl0aW9ucyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoY29uZGl0aW9ucykubWFwKChbaWQsIGNvbmRpdGlvbl0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBjb25kaXRpb24gfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gYSBzaW5nbGUgcmVzb3VyY2UgZm9yIHNwZWNpZmllZCB0eXBlIGFuZCBkZWZpbml0aW9uLlxuICAgKlxuICAgKiAtIGlmIG5vIHJlc291cmNlIG1hdGNoZWQgd2l0aCB0aGUgc3BlY2lmaWVkIHR5cGUgYW5kIGRlZmluaXRpb24sIHJhaXNlIEVycm9yLlxuICAgKiAtIGlmIG11bHRpcGxlIHJlc291cmNlcyBtYXRjaGVkLCByYWlzZSBFcnJvclxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZ2V0UmVzb3VyY2U8VD4oXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgdGhpcy5maW5kUmVzb3VyY2VzPFQ+PlxuICApOiBSZXR1cm5UeXBlPHR5cGVvZiB0aGlzLmZpbmRSZXNvdXJjZXM8VD4+IGV4dGVuZHMgKGluZmVyIFUpW10gPyBVIDogbmV2ZXIge1xuICAgIHJldHVybiB0aGlzLmdldChcInJlc291cmNlXCIsIGFyZ3NbMF0sIHRoaXMuZmluZFJlc291cmNlcyhhcmdzWzBdKSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBKb2luUHJvcHMge1xuICAvKipcbiAgICogQGRlZmF1bHQgXCJcIlxuICAgKi9cbiAgZGVsaW1pdGVyPzogc3RyaW5nO1xuICBhcnJheVdpdGg6IGFueVtdO1xufVxuLyoqXG4gKiBwcm92aWRlcyBzb21lIHN5bnRheCBzdWdhcnMgZm9yIGBNYXRjaGAgY2xhc3MgYXQgYGF3cy1jZGstbGliL2Fzc2VydGlvbnNgXG4gKi9cbmV4cG9ydCBjbGFzcyBFeHRyYU1hdGNoIGV4dGVuZHMgTWF0Y2gge1xuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHsgUmVmOiBsb2dpY2FsSWQgfSlgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyByZWYobG9naWNhbElkOiBzdHJpbmcpOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0RXF1YWxzKHsgUmVmOiBsb2dpY2FsSWQgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYE1hdGNoLm9iamVjdEVxdWFscyh7XCJGbjo6R2V0QXR0XCI6IFtsb2dpY2FsSWQsIGF0dHJpYnV0ZV19KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gYXR0cmlidXRlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZ2V0QXR0KGxvZ2ljYWxJZDogc3RyaW5nLCBhdHRyaWJ1dGU6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMoeyBcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgYXR0cmlidXRlXSB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHtcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgXCJBcm5cIl19KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGdldEF0dEFybihsb2dpY2FsSWQ6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiB0aGlzLmdldEF0dChsb2dpY2FsSWQsIFwiQXJuXCIpO1xuICB9XG5cbiAgc3RhdGljIGFycmF5V2l0aDxUIGV4dGVuZHMgYW55W10+KHBhdHRlcm46IEFsc29NYXRjaGVyPFQ+KTogVHlwZWRNYXRjaGVyPFQ+IHtcbiAgICByZXR1cm4gTWF0Y2guYXJyYXlXaXRoKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBhcnJheUVxdWFsczxUIGV4dGVuZHMgYW55W10+KFxuICAgIHBhdHRlcm46IEFsc29NYXRjaGVyPFQ+XG4gICk6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLmFycmF5RXF1YWxzKHBhdHRlcm4pO1xuICB9XG4gIHN0YXRpYyBvYmplY3RMaWtlPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RMaWtlKHBhdHRlcm4pIGFzIFR5cGVkTWF0Y2hlcjxUPjtcbiAgfVxuICBzdGF0aWMgb2JqZWN0RXF1YWxzPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMocGF0dGVybik7XG4gIH1cbiAgc3RhdGljIG5vdDxUPihwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPik6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLm5vdChwYXR0ZXJuKTtcbiAgfVxuICBzdGF0aWMgZXhhY3Q8VD4ocGF0dGVybjogQWxzb01hdGNoZXI8VD4pOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5leGFjdChwYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGJlbG93OlxuICAgKiBcbiAgICogYGBganNcbiAgICogTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAqICBcIkZuOjpKb2luXCI6IFtwcm9wcy5kZWxpbWl0ZXIgPz8gXCJcIiwgTWF0Y2guYXJyYXlXaXRoKHByb3BzLmFycmF5V2l0aCldLFxuICAgIH0pO1xuICAgKiBgYGBcbiAgICogQHBhcmFtIHByb3BzIFxuICAgKiBAcmV0dXJucyBcbiAgICovXG4gIHN0YXRpYyBqb2luTGlrZShwcm9wczogSm9pblByb3BzKTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIE1hdGNoLm9iamVjdExpa2Uoe1xuICAgICAgXCJGbjo6Sm9pblwiOiBbcHJvcHMuZGVsaW1pdGVyID8/IFwiXCIsIE1hdGNoLmFycmF5V2l0aChwcm9wcy5hcnJheVdpdGgpXSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiByZXR1cm5zIE1hdGNoIGluc3RhbmNlIHRoYXQgbWF0Y2hlcyByZWdpb25hbCByZXNvdXJjZSBBUk4gbGlrZSA6IGBhcm46YXdzOmxvZ3M6YXAtbm9ydGhlYXN0LTE6MTIzNDU2Nzg5MDEyOmxvZy1ncm91cDovbG9nLWdyb3VwLW5hbWU6bG9nLXN0cmVhbTpsb2ctc3RyZWFtLW5hbWVgXG4gIC8vICAqIEBwYXJhbSBlbGVtc1xuICAvLyAgKiBAcmV0dXJuc1xuICAvLyAgKi9cbiAgLy8gc3RhdGljIHJlZ2lvbmFsQXJuTGlrZShlbGVtczogQWxzb01hdGNoZXI8QXJuRWxlbWVudHM+KTogTWF0Y2hlciB7XG4gIC8vICAgcmV0dXJuIE1hdGNoLm9iamVjdEVxdWFscyh7XG4gIC8vICAgICBcIkZuOjpKb2luXCI6IE1hdGNoLmFycmF5V2l0aChbXG4gIC8vICAgICAgIFwiXCIsXG4gIC8vICAgICAgIE1hdGNoLmFycmF5V2l0aChbXG4gIC8vICAgICAgICAgXCJhcm46XCIsXG4gIC8vICAgICAgICAgZWxlbXMucGFydGl0aW9uID8/IHsgUmVmOiBcIkFXUzo6UGFydGl0aW9uXCIgfSxcbiAgLy8gICAgICAgICBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGA6JHtlbGVtcy5zZXJ2aWNlID8/IFwiKlwifTpgKSxcbiAgLy8gICAgICAgICBlbGVtcy5yZWdpb24gPz8geyBSZWY6IFwiQVdTOjpSZWdpb25cIiB9LFxuICAvLyAgICAgICAgIGVsZW1zLmFjY291bnQgPz8geyBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIiB9LFxuICAvLyAgICAgICAgIC4uLihlbGVtcy5yZXN0IGluc3RhbmNlb2YgTWF0Y2hlclxuICAvLyAgICAgICAgICAgPyBbZWxlbXMucmVzdF1cbiAgLy8gICAgICAgICAgIDogKGVsZW1zLnJlc3QgPz8gW10pKSxcbiAgLy8gICAgICAgXSksXG4gIC8vICAgICBdKSxcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIC8vIC8qKlxuICAvLyAgKiByZXR1cm5zIE1hdGNoIGluc3RhbmNlIHRoYXQgbWF0Y2hlcyBnbG9iYWwgcmVzb3VyY2UgQVJOIGxpa2UgOiBgYXJuOmF3czppYW06OjEyMzQ1Njc4OTAxMjpyb2xlL3JvbGUtbmFtZWBcbiAgLy8gICogQHBhcmFtIGVsZW1zXG4gIC8vICAqIEByZXR1cm5zXG4gIC8vICAqL1xuICAvLyBzdGF0aWMgZ2xvYmFsQXJuKFxuICAvLyAgIGVsZW1zOiBPbWl0PEFybkVsZW1lbnRzLCBcInJlZ2lvblwiPixcbiAgLy8gICBkZWxpbWl0ZXI6IHN0cmluZyA9IFwiXCJcbiAgLy8gKTogTWF0Y2hlciB7XG4gIC8vICAgcmV0dXJuIE1hdGNoLm9iamVjdEVxdWFscyh7XG4gIC8vICAgICBcIkZuOjpKb2luXCI6IE1hdGNoLmFycmF5RXF1YWxzKFtcbiAgLy8gICAgICAgZGVsaW1pdGVyLFxuICAvLyAgICAgICBNYXRjaC5hcnJheVdpdGgoW1xuICAvLyAgICAgICAgIFwiYXJuOlwiLFxuICAvLyAgICAgICAgIGVsZW1zLnBhcnRpdGlvbiA/PyB7IFJlZjogXCJBV1M6OlBhcnRpdGlvblwiIH0sXG4gIC8vICAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgOiR7ZWxlbXMuc2VydmljZSA/PyBcIipcIn06OmApLFxuICAvLyAgICAgICAgIGVsZW1zLmFjY291bnQgPz8geyBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIiB9LFxuICAvLyAgICAgICAgIC4uLihlbGVtcy5yZXN0IGluc3RhbmNlb2YgTWF0Y2hlclxuICAvLyAgICAgICAgICAgPyBbZWxlbXMucmVzdF1cbiAgLy8gICAgICAgICAgIDogKGVsZW1zLnJlc3QgPz8gW10pKSxcbiAgLy8gICAgICAgXSksXG4gIC8vICAgICBdKSxcbiAgLy8gICB9KTtcbiAgLy8gfVxuXG4gIHN0YXRpYyBpYW1Qb2xpY3lMaWtlKGRvYzogQWxzb01hdGNoZXI8SUFNUG9saWN5RG9jdW1lbnQ+KTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIE1hdGNoLm9iamVjdExpa2UoZG9jKTtcbiAgfVxufVxuIl19
|
|
475
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQWtFO0FBaUJsRTs7R0FFRztBQUNILE1BQWEsYUFBYTtJQUV4QixZQUFvQixRQUFrQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUMzQixDQUFDO0lBRU8sR0FBRyxDQUFJLElBQVksRUFBRSxHQUFRLEVBQUUsS0FBVTtRQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsTUFBTSxLQUFLLENBQUMsR0FBRyxJQUFJLGdDQUFnQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sS0FBSyxDQUNULFlBQVksSUFBSSw0QkFBNEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNsRSxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFNBQVMsQ0FDZCxHQUFHLElBQTJDO1FBRTlDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FDYixHQUFHLElBQTBDO1FBRTdDLE9BQU8sSUFBSSxhQUFhLENBQUMscUJBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixHQUFHLElBQTRDO1FBRS9DLE9BQU8s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TUFBTSxDQUFDLEtBQUssQ0FBSSxPQUFpRDtRQUMvRCxPQUFPLGtCQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQXRSRCxnQ0FzUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZSwgTWF0Y2gsIE1hdGNoZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiO1xuaW1wb3J0IHtcbiAgQ29uZGl0aW9uLFxuICBJbnB1dFJlc291cmNlLFxuICBNYXBwaW5nLFxuICBPdXRwdXRSZXNvdXJjZSxcbiAgSW5wdXRQYXJhbXRlcixcbiAgT3V0cHV0UGFyYW1ldGVyLFxuICBSZXR1cm5WYWx1ZSxcbiAgSW5wdXRPdXRwdXQsXG4gIE91dHB1dE91dHB1dCxcbiAgSW5wdXRSZXNvdXJjZVdpdGhvdXRUeXBlLFxuICBJQU1Qb2xpY3lEb2N1bWVudCxcbiAgQWxzb01hdGNoZXIsXG4gIFR5cGVkTWF0Y2hlcixcbn0gZnJvbSBcIi4vdHlwZWQtcmVzb3VyY2VcIjtcblxuLyoqXG4gKiBhbG1vc3Qgc2FtZSBjbGFzcyBhcyBgVGVtcGxhdGVgIGNsYXNzIGF0IFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiLCBidXQgeW91IGNhbiB1c2UgdGhpcyB3aXRoIHByb3BlciB0eXBlIGRlZmluaXRpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBUeXBlZFRlbXBsYXRlIHtcbiAgdGVtcGxhdGU6IFRlbXBsYXRlO1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKHRlbXBsYXRlOiBUZW1wbGF0ZSkge1xuICAgIHRoaXMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0PFQ+KHR5cGU6IHN0cmluZywgZGVmOiBhbnksIGFycmF5OiBUW10pOiBUIHtcbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcihgJHt0eXBlfSBub3QgZm91bmQgd2l0aCBkZWZpbml0aW9uIDogJHtKU09OLnN0cmluZ2lmeShkZWYpfWApO1xuICAgIH1cbiAgICBpZiAoYXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBtdWx0aXBsZSAke3R5cGV9IGZvdW5kIHdpdGggZGVmaW5pdGlvbiA6ICR7SlNPTi5zdHJpbmdpZnkoZGVmKX1gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXlbMF07XG4gIH1cblxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZnJvbVN0YWNrYCBidXQgcmV0dXJucyBgVHlwZWRUZW1wbGF0ZWBcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBmcm9tU3RhY2soXG4gICAgLi4uYXJnczogUGFyYW1ldGVyczx0eXBlb2YgVGVtcGxhdGUuZnJvbVN0YWNrPlxuICApOiBUeXBlZFRlbXBsYXRlIHtcbiAgICByZXR1cm4gbmV3IFR5cGVkVGVtcGxhdGUoVGVtcGxhdGUuZnJvbVN0YWNrKC4uLmFyZ3MpKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZnJvbUpTT05gIGJ1dCByZXR1cm5zIGBUeXBlZFRlbXBsYXRlYFxuICAgKiBAcGFyYW0gYXJnc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGZyb21KU09OKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIFRlbXBsYXRlLmZyb21KU09OPlxuICApOiBUeXBlZFRlbXBsYXRlIHtcbiAgICByZXR1cm4gbmV3IFR5cGVkVGVtcGxhdGUoVGVtcGxhdGUuZnJvbUpTT04oLi4uYXJncykpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5mcm9tU3RyaW5nYCBidXQgcmV0dXJucyBgVHlwZWRUZW1wbGF0ZWBcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBmcm9tU3RyaW5nKFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIFRlbXBsYXRlLmZyb21TdHJpbmc+XG4gICk6IFR5cGVkVGVtcGxhdGUge1xuICAgIHJldHVybiBuZXcgVHlwZWRUZW1wbGF0ZShUZW1wbGF0ZS5mcm9tU3RyaW5nKC4uLmFyZ3MpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXNgXG4gICAqXG4gICAqIHVzZSB0aGlzIG1ldGhvZCBsaWtlIGJlbG93OlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoQVdTX0VDMl9TVUJORVQsIDMpXG4gICAqIGBgYFxuICAgKiBAcGFyYW0gdHlwZVxuICAgKiBAcGFyYW0gY291bnRcbiAgICovXG4gIHJlc291cmNlQ291bnRJczxUPihcbiAgICB0eXBlOiAocmVzb3VyY2U/OiBJbnB1dFJlc291cmNlV2l0aG91dFR5cGU8VD4pID0+IElucHV0UmVzb3VyY2U8VD4sXG4gICAgY291bnQ6IG51bWJlclxuICApOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLnJlc291cmNlQ291bnRJcyh0eXBlKCkuVHlwZSwgY291bnQpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5yZXNvdXJjZVByb3BlcnRpZXNDb3VudElzYFxuICAgKiBAcGFyYW0gclxuICAgKiBAcGFyYW0gY291bnRcbiAgICovXG4gIHJlc291cmNlUHJvcGVydGllc0NvdW50SXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPiwgY291bnQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUucmVzb3VyY2VQcm9wZXJ0aWVzQ291bnRJcyhyLlR5cGUsIHIuUHJvcGVydGllcywgY291bnQpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXNgXG4gICAqIEBwYXJhbSByXG4gICAqL1xuICBoYXNSZXNvdXJjZVByb3BlcnRpZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKHIuVHlwZSwgci5Qcm9wZXJ0aWVzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzUmVzb3VyY2VgXG4gICAqIEBwYXJhbSByXG4gICAqL1xuICBoYXNSZXNvdXJjZTxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZS5oYXNSZXNvdXJjZShyLlR5cGUsIHIpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kUmVzb3VyY2VzYFxuICAgKiBAcGFyYW0gclxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZFJlc291cmNlczxUPihyOiBJbnB1dFJlc291cmNlPFQ+KTogUmV0dXJuVmFsdWU8T3V0cHV0UmVzb3VyY2U8VD4+W10ge1xuICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMudGVtcGxhdGUuZmluZFJlc291cmNlcyhyLlR5cGUsIHIpIGFzIHtcbiAgICAgIFtpZCBpbiBzdHJpbmddOiBPdXRwdXRSZXNvdXJjZTxUPjtcbiAgICB9O1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhyZXNvdXJjZXMpLm1hcCgoW2lkLCByZXNvdXJjZV0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiByZXNvdXJjZSB9O1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5hbGxSZXNvdXJjZXNgXG4gICAqIEBwYXJhbSByXG4gICAqL1xuICBhbGxSZXNvdXJjZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuYWxsUmVzb3VyY2VzKHIuVHlwZSwgcik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmFsbFJlc291cmNlUHJvcGVydGllc2BcbiAgICogQHBhcmFtIHJcbiAgICovXG4gIGFsbFJlc291cmNlc1Byb3BlcnRpZXM8VD4ocjogSW5wdXRSZXNvdXJjZTxUPik6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuYWxsUmVzb3VyY2VzUHJvcGVydGllcyhyLlR5cGUsIHIuUHJvcGVydGllcyk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc1BhcmFtZXRlcmBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICovXG4gIGhhc1BhcmFtZXRlcihsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IElucHV0UGFyYW10ZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc1BhcmFtZXRlcihsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZFBhcmFtZXRlcnNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kUGFyYW1ldGVycyhcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IElucHV0UGFyYW10ZXJcbiAgKTogUmV0dXJuVmFsdWU8T3V0cHV0UGFyYW1ldGVyPltdIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gdGhpcy50ZW1wbGF0ZS5maW5kUGFyYW1ldGVycyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocGFyYW1ldGVycykubWFwKChbaWQsIHBhcmFtZXRlcl0pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBwYXJhbWV0ZXIgYXMgT3V0cHV0UGFyYW1ldGVyIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuaGFzT3V0cHV0YFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzT3V0cHV0KGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wczogSW5wdXRPdXRwdXQpOiB2b2lkIHtcbiAgICB0aGlzLnRlbXBsYXRlLmhhc091dHB1dChsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZE91dHB1dHNgXG4gICAqIEBwYXJhbSBsb2dpY2FsSWRcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kT3V0cHV0cyhcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IElucHV0T3V0cHV0XG4gICk6IFJldHVyblZhbHVlPE91dHB1dE91dHB1dD5bXSB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMudGVtcGxhdGUuZmluZE91dHB1dHMobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG91dHB1dHMpLm1hcCgoW2lkLCBvdXRwdXRdKSA9PiB7XG4gICAgICByZXR1cm4geyBpZDogaWQsIGRlZjogb3V0cHV0IGFzIE91dHB1dE91dHB1dCB9O1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5oYXNNYXBwaW5nYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKi9cbiAgaGFzTWFwcGluZyhsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzTWFwcGluZyhsb2dpY2FsSWQsIHByb3BzKTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgVGVtcGxhdGUuZmluZE1hcHBpbmdzYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgZmluZE1hcHBpbmdzKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wcz86IGFueSk6IFJldHVyblZhbHVlPE1hcHBpbmc+W10ge1xuICAgIGNvbnN0IG1hcHBpbmdzID0gdGhpcy50ZW1wbGF0ZS5maW5kTWFwcGluZ3MobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG1hcHBpbmdzKS5tYXAoKFtpZCwgbWFwcGluZ10pID0+IHtcbiAgICAgIHJldHVybiB7IGlkOiBpZCwgZGVmOiBtYXBwaW5nIH07XG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYFRlbXBsYXRlLmhhc0NvbmRpdGlvbmBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICovXG4gIGhhc0NvbmRpdGlvbihsb2dpY2FsSWQ6IHN0cmluZywgcHJvcHM6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudGVtcGxhdGUuaGFzQ29uZGl0aW9uKGxvZ2ljYWxJZCwgcHJvcHMpO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBUZW1wbGF0ZS5maW5kQ29uZGl0aW9uc2BcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIGZpbmRDb25kaXRpb25zKGxvZ2ljYWxJZDogc3RyaW5nLCBwcm9wcz86IGFueSk6IFJldHVyblZhbHVlPENvbmRpdGlvbj5bXSB7XG4gICAgY29uc3QgY29uZGl0aW9ucyA9IHRoaXMudGVtcGxhdGUuZmluZENvbmRpdGlvbnMobG9naWNhbElkLCBwcm9wcyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbnMpLm1hcCgoW2lkLCBjb25kaXRpb25dKSA9PiB7XG4gICAgICByZXR1cm4geyBpZDogaWQsIGRlZjogY29uZGl0aW9uIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGEgc2luZ2xlIHJlc291cmNlIGZvciBzcGVjaWZpZWQgdHlwZSBhbmQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogLSBpZiBubyByZXNvdXJjZSBtYXRjaGVkIHdpdGggdGhlIHNwZWNpZmllZCB0eXBlIGFuZCBkZWZpbml0aW9uLCByYWlzZSBFcnJvci5cbiAgICogLSBpZiBtdWx0aXBsZSByZXNvdXJjZXMgbWF0Y2hlZCwgcmFpc2UgRXJyb3JcbiAgICogQHBhcmFtIGFyZ3NcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldFJlc291cmNlPFQ+KFxuICAgIC4uLmFyZ3M6IFBhcmFtZXRlcnM8dHlwZW9mIHRoaXMuZmluZFJlc291cmNlczxUPj5cbiAgKTogUmV0dXJuVHlwZTx0eXBlb2YgdGhpcy5maW5kUmVzb3VyY2VzPFQ+PiBleHRlbmRzIChpbmZlciBVKVtdID8gVSA6IG5ldmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoXCJyZXNvdXJjZVwiLCBhcmdzWzBdLCB0aGlzLmZpbmRSZXNvdXJjZXMoYXJnc1swXSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSm9pblByb3BzIHtcbiAgLyoqXG4gICAqIEBkZWZhdWx0IFwiXCJcbiAgICovXG4gIGRlbGltaXRlcj86IHN0cmluZztcbiAgYXJyYXlXaXRoOiBhbnlbXTtcbn1cbi8qKlxuICogcHJvdmlkZXMgc29tZSBzeW50YXggc3VnYXJzIGZvciBgTWF0Y2hgIGNsYXNzIGF0IGBhd3MtY2RrLWxpYi9hc3NlcnRpb25zYFxuICovXG5leHBvcnQgY2xhc3MgRXh0cmFNYXRjaCB7XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBNYXRjaC5vYmplY3RFcXVhbHMoeyBSZWY6IGxvZ2ljYWxJZCB9KWBcbiAgICogQHBhcmFtIGxvZ2ljYWxJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIHJlZihsb2dpY2FsSWQ6IHN0cmluZyk6IE1hdGNoZXIge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMoeyBSZWY6IGxvZ2ljYWxJZCB9KTtcbiAgfVxuICAvKipcbiAgICogc2FtZSBmdW5jdGlvbiBhcyBgTWF0Y2gub2JqZWN0RXF1YWxzKHtcIkZuOjpHZXRBdHRcIjogW2xvZ2ljYWxJZCwgYXR0cmlidXRlXX0pYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEBwYXJhbSBhdHRyaWJ1dGVcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBnZXRBdHQobG9naWNhbElkOiBzdHJpbmcsIGF0dHJpYnV0ZTogc3RyaW5nKTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIE1hdGNoLm9iamVjdEVxdWFscyh7IFwiRm46OkdldEF0dFwiOiBbbG9naWNhbElkLCBhdHRyaWJ1dGVdIH0pO1xuICB9XG4gIC8qKlxuICAgKiBzYW1lIGZ1bmN0aW9uIGFzIGBNYXRjaC5vYmplY3RFcXVhbHMoe1wiRm46OkdldEF0dFwiOiBbbG9naWNhbElkLCBcIkFyblwiXX0pYFxuICAgKiBAcGFyYW0gbG9naWNhbElkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgZ2V0QXR0QXJuKGxvZ2ljYWxJZDogc3RyaW5nKTogTWF0Y2hlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QXR0KGxvZ2ljYWxJZCwgXCJBcm5cIik7XG4gIH1cbiAgLyoqXG4gICAqIHNhbWUgZnVuY3Rpb24gYXMgYmVsb3c6XG4gICAqIFxuICAgKiBgYGBqc1xuICAgKiBNYXRjaC5vYmplY3RMaWtlKHtcbiAgICogIFwiRm46OkpvaW5cIjogW3Byb3BzLmRlbGltaXRlciA/PyBcIlwiLCBNYXRjaC5hcnJheVdpdGgocHJvcHMuYXJyYXlXaXRoKV0sXG4gICAgfSk7XG4gICAqIGBgYFxuICAgKiBAcGFyYW0gcHJvcHMgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGpvaW5MaWtlKHByb3BzOiBKb2luUHJvcHMpOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0TGlrZSh7XG4gICAgICBcIkZuOjpKb2luXCI6IFtwcm9wcy5kZWxpbWl0ZXIgPz8gXCJcIiwgTWF0Y2guYXJyYXlXaXRoKHByb3BzLmFycmF5V2l0aCldLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICBZb3UgY2FuIGRlZmluZSBNYXRjaGVyIGZvciBJQU0gUG9saWN5IERvY3VtZW50IHdpdGggdHlwZSBoaW50cy5cbiAgIGBgYGpzXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfSUFNX1JPTEUoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgQXNzdW1lUm9sZVBvbGljeURvY3VtZW50OiBFeHRyYU1hdGNoLmlhbVBvbGljeUxpa2Uoe1xuICAgICAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBQcmluY2lwYWw6IHsgU2VydmljZTogXCJlYzIuYW1hem9uYXdzLmNvbVwiIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgYGBgXG4gICAqIEBwYXJhbSBkb2MgXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGlhbVBvbGljeUxpa2UoZG9jOiBBbHNvTWF0Y2hlcjxJQU1Qb2xpY3lEb2N1bWVudD4pOiBNYXRjaGVyIHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0TGlrZShkb2MpO1xuICB9XG4gIC8qKlxuICAgU2FtZSBtZXRob2QgYXMgYE1hdGNoLmFycmF5V2l0aGAgYnV0IHByb3ZpZGVzIHR5cGUgaGludHMgYW5kIHZhbGlkYXRlIHR5cGUgbWF0Y2ggXG4gICBgYGBqc1xuICAgIC8vIHRoaXMgaXMgYSByaWdodCBjb2RlXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0VJUCh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUYWdzOiBFeHRyYU1hdGNoLmFycmF5V2l0aDxUYWdbXT4oW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBLZXk6IFwia2V5MlwiLFxuICAgICAgICAgICAgICBWYWx1ZTogXCJ2YWwyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIC8vIHRoaXMgaXMgYSB3cm9uZyBjb2RlKHR5cGUgbWlzbWF0Y2ggd2lsbCBiZSBkZXRlY3RlZCBhbmQgdHMtZXJyb3Igd2lsbCBiZSByYWlzZWQpXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0VJUCh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUYWdzOiBFeHRyYU1hdGNoLmFycmF5V2l0aDxzdHJpbmdbXT4oW1xuICAgICAgICAgICAgXCJob2dlXCIsIFwiZnVnYVwiXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICBgYGBcbiAgICogQHBhcmFtIHBhdHRlcm4gXG4gICAqIEByZXR1cm5zIFxuICAgKi9cbiAgc3RhdGljIGFycmF5V2l0aDxUIGV4dGVuZHMgYW55W10+KHBhdHRlcm46IEFsc29NYXRjaGVyPFQ+KTogVHlwZWRNYXRjaGVyPFQ+IHtcbiAgICByZXR1cm4gTWF0Y2guYXJyYXlXaXRoKHBhdHRlcm4pIGFzIHVua25vd24gYXMgVHlwZWRNYXRjaGVyPFQ+O1xuICB9XG4gIC8qKlxuICAgKiBTYW1lIG1ldGhvZCBhcyBgTWF0Y2guYXJyYXlFcXVhbHNgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgYGBganNcbiAgICAvLyB0aGlzIGlzIGEgcmlnaHQgY29kZVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9FSVAoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgVGFnczogRXh0cmFNYXRjaC5hcnJheUVxdWFsczxUYWdbXT4oW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBLZXk6IFwia2V5MVwiLFxuICAgICAgICAgICAgICBWYWx1ZTogXCJ2YWwxXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBLZXk6IFwia2V5MlwiLFxuICAgICAgICAgICAgICBWYWx1ZTogXCJ2YWwyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgIC8vIHRoaXMgaXMgYSB3cm9uZyBjb2RlKHR5cGUgbWlzbWF0Y2ggd2lsbCBiZSBkZXRlY3RlZCBhbmQgdHMtZXJyb3Igd2lsbCBiZSByYWlzZWQpXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0VJUCh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUYWdzOiBFeHRyYU1hdGNoLmFycmF5RXF1YWxzPFRhZ1tdPihbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEtleTogXCJrZXkxXCIsXG4gICAgICAgICAgICAgIFZhbHVlOiBcInZhbDFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEtleTogMTAwLFxuICAgICAgICAgICAgICBWYWx1ZTogMjAwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgIGBgYFxuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgYXJyYXlFcXVhbHM8VCBleHRlbmRzIGFueVtdPihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5hcnJheUVxdWFscyhwYXR0ZXJuKTtcbiAgfVxuICAvKipcbiAgICogU2FtZSBtZXRob2QgYXMgYE1hdGNoLm9iamVjdExpa2VgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgYGBganNcbiAgIC8vIHRoaXMgaXMgYSByaWdodCBjb2RlXG4gICAgdGVtcGxhdGUuaGFzUmVzb3VyY2UoXG4gICAgICBBV1NfRUMyX0lOU1RBTkNFKHtcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIEJsb2NrRGV2aWNlTWFwcGluZ3M6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgRGV2aWNlTmFtZTogXCJ0ZXN0XCIsXG4gICAgICAgICAgICAgIEViczogRXh0cmFNYXRjaC5vYmplY3RMaWtlPEVicz4oe1xuICAgICAgICAgICAgICAgIFZvbHVtZVNpemU6IDEwLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvLyB0aGlzIGlzIGEgd3JvbmcgY29kZSh0eXBlIG1pc21hdGNoIHdpbGwgYmUgZGV0ZWN0ZWQgYW5kIHRzLWVycm9yIHdpbGwgYmUgcmFpc2VkKVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9JTlNUQU5DRSh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBCbG9ja0RldmljZU1hcHBpbmdzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIERldmljZU5hbWU6IFwidGVzdFwiLFxuICAgICAgICAgICAgICBFYnM6IEV4dHJhTWF0Y2gub2JqZWN0TGlrZTxFYnM+KHtcbiAgICAgICAgICAgICAgICBWb2x1bWVTaXplOiBcIjEwXCIsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgb2JqZWN0TGlrZTxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgcGF0dGVybjogQWxzb01hdGNoZXI8VD5cbiAgKTogVHlwZWRNYXRjaGVyPFQ+IHtcbiAgICByZXR1cm4gTWF0Y2gub2JqZWN0TGlrZShwYXR0ZXJuKTtcbiAgfVxuICAvKipcbiAgICogU2FtZSBtZXRob2QgYXMgYE1hdGNoLm9iamVjdEVxdWFsc2AgYnV0IHByb3ZpZGVzIHR5cGUgaGludHMgYW5kIHZhbGlkYXRlIHR5cGUgbWF0Y2ggXG4gICBgYGBqc1xuICAgLy8gdGhpcyBpcyBhIHJpZ2h0IGNvZGVcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfRUlQKHtcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIC8vIFlvdSBjYW4gbmVzdCBUeXBlZE1hdGNoZXIodXNlIFR5cGVkTWF0Y2hlciBpbnNpZGUgVHlwZWRNYXRjaGVyKVxuICAgICAgICAgIFRhZ3M6IEV4dHJhTWF0Y2guYXJyYXlXaXRoPFRhZ1tdPihbXG4gICAgICAgICAgICBFeHRyYU1hdGNoLm9iamVjdEVxdWFsczxUYWc+KHtcbiAgICAgICAgICAgICAgS2V5OiBcImtleTFcIixcbiAgICAgICAgICAgICAgVmFsdWU6IFwidmFsMVwiLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgLy8gdGhpcyBpcyBhIHdyb25nIGNvZGUodHlwZSBtaXNtYXRjaCB3aWxsIGJlIGRldGVjdGVkIGFuZCB0cy1lcnJvciB3aWxsIGJlIHJhaXNlZClcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfRUlQKHtcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRhZ3M6IEV4dHJhTWF0Y2guYXJyYXlXaXRoPFRhZ1tdPihbXG4gICAgICAgICAgICBFeHRyYU1hdGNoLm9iamVjdEVxdWFsczxUYWc+KHtcbiAgICAgICAgICAgICAgS2V5OiBcImtleTFcIixcbiAgICAgICAgICAgICAgVmFsdWU6IDEwMCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0pLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgb2JqZWN0RXF1YWxzPFQgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBwYXR0ZXJuOiBBbHNvTWF0Y2hlcjxUPlxuICApOiBUeXBlZE1hdGNoZXI8VD4ge1xuICAgIHJldHVybiBNYXRjaC5vYmplY3RFcXVhbHMocGF0dGVybik7XG4gIH1cbiAgLyoqXG4gICAqIFNhbWUgbWV0aG9kIGFzIGBNYXRjaC5ub3RgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgYGBganNcbiAgICAvLyB0aGlzIGlzIGEgcmlnaHQgY29kZVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9JTlNUQU5DRSh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBJbWFnZUlkOiBFeHRyYU1hdGNoLm5vdChcImFtaS0xMjM0NVwiKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvLyB0aGlzIGlzIGEgd3JvbmcgY29kZSh0eXBlIG1pc21hdGNoIHdpbGwgYmUgZGV0ZWN0ZWQgYW5kIHRzLWVycm9yIHdpbGwgYmUgcmFpc2VkKVxuICAgIHRlbXBsYXRlLmhhc1Jlc291cmNlKFxuICAgICAgQVdTX0VDMl9JTlNUQU5DRSh7XG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBJbWFnZUlkOiBFeHRyYU1hdGNoLm5vdCgxMDApLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICApO1xuICAgYGBgXG4gICAqIFNhbWUgbWV0aG9kIGFzIGBNYXRjaC5ub3RgIGJ1dCBwcm92aWRlcyB0eXBlIGhpbnRzIGFuZCB2YWxpZGF0ZSB0eXBlIG1hdGNoIFxuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICAvLyBUT0RPOiB3aHkgdGhpcyBleHByZXNzaW9uIGBUIGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IFRgIGlzIHJlcXVpcmVkIGJ1dCB0aGlzIGlzIHJlcXVpcmVkXG4gIHN0YXRpYyBub3Q8VD4ocGF0dGVybjogQWxzb01hdGNoZXI8VCBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBUPik6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLm5vdChwYXR0ZXJuKTtcbiAgfVxuICAvKipcbiAgICogU2FtZSBtZXRob2QgYXMgYE1hdGNoLmV4YWN0YCBidXQgcHJvdmlkZXMgdHlwZSBoaW50cyBhbmQgdmFsaWRhdGUgdHlwZSBtYXRjaCBcbiAgIGBgYGpzXG4gICAgLy8gdGhpcyBpcyBhIHJpZ2h0IGNvZGVcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfSU5TVEFOQ0Uoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgSW5zdGFuY2VUeXBlOiBFeHRyYU1hdGNoLmV4YWN0KFwidDIubWljcm9cIiksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgLy8gdGhpcyBpcyBhIHdyb25nIGNvZGUodHlwZSBtaXNtYXRjaCB3aWxsIGJlIGRldGVjdGVkIGFuZCB0cy1lcnJvciB3aWxsIGJlIHJhaXNlZClcbiAgICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZShcbiAgICAgIEFXU19FQzJfSU5TVEFOQ0Uoe1xuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgSW5zdGFuY2VUeXBlOiBFeHRyYU1hdGNoLmV4YWN0KGZhbHNlKSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcbiAgIGBgYFxuICAgKiBAcGFyYW0gcGF0dGVybiBcbiAgICogQHJldHVybnMgXG4gICAqL1xuICBzdGF0aWMgZXhhY3Q8VD4ocGF0dGVybjogQWxzb01hdGNoZXI8VCBleHRlbmRzIG5ldmVyID8gbmV2ZXIgOiBUPik6IFR5cGVkTWF0Y2hlcjxUPiB7XG4gICAgcmV0dXJuIE1hdGNoLmV4YWN0KHBhdHRlcm4pO1xuICB9XG59XG4iXX0=
|
package/lib/typed-resource.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Matcher } from "aws-cdk-lib/assertions";
|
|
2
2
|
type Primitives = string | number | boolean | undefined | null | symbol | bigint | string[] | number[] | boolean[] | bigint[];
|
|
3
|
-
export type TypedMatcher<T> = Matcher;
|
|
3
|
+
export type TypedMatcher<T> = Matcher | T;
|
|
4
4
|
/**
|
|
5
5
|
* make properties of `T` asignable Matcher recirsively and other arbitrary json objects for primitive type fields
|
|
6
6
|
*/
|
package/lib/typed-resource.js
CHANGED
|
@@ -30,4 +30,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
30
30
|
// */
|
|
31
31
|
// rest?: string[];
|
|
32
32
|
// }
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZWQtcmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlZC1yZXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlKQSxNQUFNO0FBQ04sNENBQTRDO0FBQzVDLDBFQUEwRTtBQUMxRSxNQUFNO0FBQ04saUNBQWlDO0FBQ2pDLFFBQVE7QUFDUix3Q0FBd0M7QUFDeEMsUUFBUTtBQUNSLHdCQUF3QjtBQUN4QixRQUFRO0FBQ1IsNkRBQTZEO0FBQzdELE9BQU87QUFDUCxvQkFBb0I7QUFDcEIsUUFBUTtBQUNSLHNCQUFzQjtBQUN0QixRQUFRO0FBQ1IscUNBQXFDO0FBQ3JDLFFBQVE7QUFDUixxQkFBcUI7QUFDckIsUUFBUTtBQUNSLHdDQUF3QztBQUN4QyxRQUFRO0FBQ1Isc0JBQXNCO0FBQ3RCLFFBQVE7QUFDUiw2QkFBNkI7QUFDN0IsT0FBTztBQUNQLDZFQUE2RTtBQUM3RSxRQUFRO0FBQ1IscUJBQXFCO0FBQ3JCLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRjaGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2Fzc2VydGlvbnNcIjtcbmltcG9ydCB7IEJsb2NrRGV2aWNlTWFwcGluZyB9IGZyb20gXCIuL3R5cGVzL2Nmbi1yZXNvdXJjZS10eXBlcy9hd3MtYXV0b3NjYWxpbmctbGF1bmNoY29uZmlndXJhdGlvblwiO1xuXG50eXBlIFByaW1pdGl2ZXMgPVxuICB8IHN0cmluZ1xuICB8IG51bWJlclxuICB8IGJvb2xlYW5cbiAgfCB1bmRlZmluZWRcbiAgfCBudWxsXG4gIHwgc3ltYm9sXG4gIHwgYmlnaW50XG4gIHwgc3RyaW5nW11cbiAgfCBudW1iZXJbXVxuICB8IGJvb2xlYW5bXVxuICB8IGJpZ2ludFtdO1xuXG5leHBvcnQgdHlwZSBUeXBlZE1hdGNoZXI8VD4gPSBNYXRjaGVyIHwgVDtcblxuLyoqXG4gKiBtYWtlIHByb3BlcnRpZXMgb2YgYFRgIGFzaWduYWJsZSBNYXRjaGVyIHJlY2lyc2l2ZWx5IGFuZCBvdGhlciBhcmJpdHJhcnkganNvbiBvYmplY3RzIGZvciBwcmltaXRpdmUgdHlwZSBmaWVsZHNcbiAqL1xuZXhwb3J0IHR5cGUgQWxzb01hdGNoZXI8VD4gPSB7XG4gIFtwIGluIGtleW9mIFRdPzogVFtwXSBleHRlbmRzIFByaW1pdGl2ZXNcbiAgICA/IFRbcF0gfCBUeXBlZE1hdGNoZXI8VFtwXT5cbiAgICA6IEFsc29NYXRjaGVyPFRbcF0+IHwgVHlwZWRNYXRjaGVyPFRbcF0+O1xufTtcbi8qKlxuICogbWFrZSBwcm9wZXJ0aWVzIG9mIGBUYCBhc2lnbmFibGUgYXJiaXRyYXJ5IGpzb24gb2JqZWN0c1xuICovXG5leHBvcnQgdHlwZSBBbHNvQW55PFQ+ID0ge1xuICBbcCBpbiBrZXlvZiBUXTogVFtwXSBleHRlbmRzIFByaW1pdGl2ZXNcbiAgICA/IFRbcF0gfCB7IFtrZXkgaW4gc3RyaW5nXTogYW55IH1cbiAgICA6IEFsc29Bbnk8VFtwXT47XG59O1xuXG4vKipcbiAqIENsb3VkRm9ybWF0aW9uIFJlc291cmNlIGJhc2VkIG9uIHRoZSBkZWZpbml0aW9uIGF0IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9qYV9qcC9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9kdWN0LWF0dHJpYnV0ZS1yZWZlcmVuY2UuaHRtbFxuICovXG5pbnRlcmZhY2UgQmFzZVJlc291cmNlIHtcbiAgQ3JlYXRpb25Qb2xpY3k/OiBhbnk7XG4gIERlbGV0aW9uUG9saWN5PzogXCJEZWxldGVcIiB8IFwiUmV0YWluXCIgfCBcIlJldGFpbkV4Y2VwdE9uQ3JlYXRlXCIgfCBcIlNuYXBzaG90XCI7XG4gIERlcGVuZHNPbj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBNZXRhZGF0YT86IGFueTtcbiAgVXBkYXRlUG9saWN5PzogYW55O1xuICBVcGRhdGVSZXBsYWNlUG9saWN5PzogXCJEZWxldGVcIiB8IFwiUmV0YWluXCIgfCBcIlNuYXBzaG90XCI7XG4gIENvbmRpdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFJlc291cmNlPFQ+IGV4dGVuZHMgQWxzb01hdGNoZXI8QmFzZVJlc291cmNlPiB7XG4gIFByb3BlcnRpZXM/OiBBbHNvTWF0Y2hlcjxUPjtcbiAgVHlwZTogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBJbnB1dFJlc291cmNlV2l0aG91dFR5cGU8VD5cbiAgZXh0ZW5kcyBPbWl0PElucHV0UmVzb3VyY2U8VD4sIFwiVHlwZVwiPiB7fVxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRSZXNvdXJjZTxUPiBleHRlbmRzIEFsc29Bbnk8QmFzZVJlc291cmNlPiB7XG4gIFByb3BlcnRpZXM/OiBBbHNvQW55PFQ+O1xuICBUeXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogaW50ZXJmYWNlIG9mIHJldHVybiB2YWx1ZSBvZiBUeXBlZFRlbXBsYXRlJ3MgbWV0aG9kc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHVyblZhbHVlPFQ+IHtcbiAgLyoqXG4gICAqIGxvZ2ljYWwgaWQgb2YgY2xvdWRmb3JtYXRpb24gcmVzb3VyY2VzLCBwYXJhbWV0ZXJzLCBvdXRwdXRzLi4uXG4gICAqL1xuICBpZDogc3RyaW5nO1xuICAvKipcbiAgICogZGVmaW5pdGlvbiBvZiBjbG91ZGZvcm1hdGlvbiByZXNvdXJjZXMsIHBhcmFtZXRlcnMsIG91dHB1dHMuLi5cbiAgICovXG4gIGRlZjogVDtcbn1cblxuLyoqXG4gKiBpbnRlcmZhY2Ugb2YgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGUgb3V0cHV0XG4gKi9cbmludGVyZmFjZSBPdXRwdXQge1xuICBEZXNjcmlwdGlvbj86IGFueTtcbiAgVmFsdWU6IGFueTtcbiAgRXhwb3J0Pzoge1xuICAgIE5hbWU6IGFueTtcbiAgfTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXRPdXRwdXQgZXh0ZW5kcyBBbHNvTWF0Y2hlcjxPdXRwdXQ+IHt9XG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dE91dHB1dCBleHRlbmRzIEFsc29Bbnk8T3V0cHV0PiB7fVxuLyoqXG4gKiBpbnRlcmZhY2Ugb2YgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGUgcGFyYW1ldGVyXG4gKi9cbmludGVyZmFjZSBQYXJhbWV0ZXIge1xuICBBbGxvd2VkUGF0dGVybj86IHN0cmluZztcbiAgQWxsb3dlZFZhbHVlcz86IGFueVtdO1xuICBDb25zdHJhaW50RGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIERlZmF1bHQ/OiBhbnk7XG4gIERlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBNYXhMZW5ndGg/OiBudW1iZXI7XG4gIE1heFZhbHVlPzogbnVtYmVyO1xuICBNaW5MZW5ndGg/OiBudW1iZXI7XG4gIE1pblZhbHVlPzogbnVtYmVyO1xuICBOb0VjaG8/OiBib29sZWFuO1xuICBUeXBlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIElucHV0UGFyYW10ZXIgZXh0ZW5kcyBBbHNvTWF0Y2hlcjxQYXJhbWV0ZXI+IHt9XG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFBhcmFtZXRlciBleHRlbmRzIEFsc29Bbnk8UGFyYW1ldGVyPiB7fVxuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSB7XG4gIFtrZXkgaW4gc3RyaW5nXToge1xuICAgIFtrZXkgaW4gc3RyaW5nXTogYW55O1xuICB9O1xufTtcbmV4cG9ydCB0eXBlIE1hcHBpbmcgPSB7XG4gIFtrZXkgaW4gc3RyaW5nXToge1xuICAgIFtrZXkgaW4gc3RyaW5nXTogYW55O1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJQU1Qb2xpY3lEb2N1bWVudCB7XG4gIFZlcnNpb24/OiBzdHJpbmc7XG4gIElkPzogc3RyaW5nO1xuICBTdGF0ZW1lbnQ/OiBJQU1Qb2xpY3lTdGF0ZW1lbnRbXTtcbn1cblxuZXhwb3J0IHR5cGUgSUFNUG9saWN5UHJpbmNpcGFsID1cbiAgfCBcIipcIlxuICB8IHtcbiAgICAgIFtlbnRyeSBpbiBcIkFXU1wiIHwgXCJGZWRlcmF0ZWRcIiB8IFwiU2VydmljZVwiIHwgXCJDYW5vbmljYWxVc2VyXCJdPzpcbiAgICAgICAgfCBzdHJpbmdcbiAgICAgICAgfCBzdHJpbmdbXTtcbiAgICB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIElBTVBvbGljeVN0YXRlbWVudCB7XG4gIFNpZD86IHN0cmluZztcbiAgRWZmZWN0PzogXCJBbGxvd1wiIHwgXCJFZmZlY3RcIjtcbiAgUHJpbmNpcGFsPzogSUFNUG9saWN5UHJpbmNpcGFsO1xuICBOb3RQcmluY2lwYWw/OiBJQU1Qb2xpY3lQcmluY2lwYWw7XG4gIE5vdEFjdGlvbj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBBY3Rpb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgUmVzb3VyY2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgTm90UmVzb3VyY2U/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgQ29uZGl0aW9uPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuICBLZXk6IHN0cmluZztcbiAgVmFsdWU6IHN0cmluZztcbn1cbi8vIC8qKlxuLy8gICogZWxlbWVudHMgb2YgQVJOIC0gQW1hem9uIFJlc291cmNlIE5hbWVcbi8vICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2UtYXJucy5odG1sXG4vLyAgKi9cbi8vIGV4cG9ydCBpbnRlcmZhY2UgQXJuRWxlbWVudHMge1xuLy8gICAvKipcbi8vICAgICogQGRlZmF1bHQge1JlZjogXCJBV1M6OlBhcnRpdGlvblwifVxuLy8gICAgKi9cbi8vICAgcGFydGl0aW9uPzogc3RyaW5nO1xuLy8gICAvKipcbi8vICAgICogVGhlIHNlcnZpY2UgbmFtZXNwYWNlIHRoYXQgaWRlbnRpZmllcyB0aGUgQVdTIHByb2R1Y3Rcbi8vICAgICpcbi8vICAgICogQGV4YW1wbGUgZWMyXG4vLyAgICAqL1xuLy8gICBzZXJ2aWNlPzogc3RyaW5nO1xuLy8gICAvKipcbi8vICAgICogQGRlZmF1bHQge1JlZjogXCJBV1M6OlJlZ2lvblwifVxuLy8gICAgKi9cbi8vICAgcmVnaW9uPzogc3RyaW5nO1xuLy8gICAvKipcbi8vICAgICogQGRlZmF1bHQge1JlZjogXCJBV1M6OkFjY291bnRJZFwifVxuLy8gICAgKi9cbi8vICAgYWNjb3VudD86IHN0cmluZztcbi8vICAgLyoqXG4vLyAgICAqIHRoZSByZXN0IHBhcnRzIG9mIEFSTlxuLy8gICAgKlxuLy8gICAgKiBAZXhhbXBsZSBbXCJsb2ctZ3JvdXA6L2xvZy1ncm91cC1uYW1lOlwiLCBcImxvZy1zdHJlYW06bG9nLXN0cmVhbS1uYW1lXCJdXG4vLyAgICAqL1xuLy8gICByZXN0Pzogc3RyaW5nW107XG4vLyB9XG4iXX0=
|
|
@@ -22,7 +22,7 @@ export interface _AWS_ACCESSANALYZER_ANALYZER {
|
|
|
22
22
|
*/
|
|
23
23
|
Tags?: Tag[];
|
|
24
24
|
/**
|
|
25
|
-
* The type of the analyzer, must be one of ACCOUNT, ORGANIZATION, ACCOUNT_UNUSED_ACCESS
|
|
25
|
+
* The type of the analyzer, must be one of ACCOUNT, ORGANIZATION, ACCOUNT_INTERNAL_ACCESS, ORGANIZATION_INTERNAL_ACCESS, ACCOUNT_UNUSED_ACCESS and ORGANIZATION_UNUSED_ACCESS
|
|
26
26
|
*/
|
|
27
27
|
Type: string;
|
|
28
28
|
/**
|
|
@@ -30,6 +30,7 @@ export interface _AWS_ACCESSANALYZER_ANALYZER {
|
|
|
30
30
|
*/
|
|
31
31
|
AnalyzerConfiguration?: {
|
|
32
32
|
UnusedAccessConfiguration?: UnusedAccessConfiguration;
|
|
33
|
+
InternalAccessConfiguration?: InternalAccessConfiguration;
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
/**
|
|
@@ -100,3 +101,34 @@ export interface AnalysisRuleCriteria {
|
|
|
100
101
|
*/
|
|
101
102
|
ResourceTags?: Tags[];
|
|
102
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Specifies the configuration of an internal access analyzer for an AWS organization or account. This configuration determines how the analyzer evaluates internal access within your AWS environment.
|
|
106
|
+
*/
|
|
107
|
+
export interface InternalAccessConfiguration {
|
|
108
|
+
/**
|
|
109
|
+
* Contains information about analysis rules for the internal access analyzer. Analysis rules determine which entities will generate findings based on the criteria you define when you create the rule.
|
|
110
|
+
*/
|
|
111
|
+
InternalAccessAnalysisRule?: {
|
|
112
|
+
/**
|
|
113
|
+
* A list of rules for the internal access analyzer containing criteria to include in analysis. Only resources that meet the rule criteria will generate findings.
|
|
114
|
+
*/
|
|
115
|
+
Inclusions?: InternalAccessAnalysisRuleCriteria[];
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* The criteria for an analysis rule for an internal access analyzer.
|
|
120
|
+
*/
|
|
121
|
+
export interface InternalAccessAnalysisRuleCriteria {
|
|
122
|
+
/**
|
|
123
|
+
* A list of AWS account IDs to apply to the internal access analysis rule criteria. Account IDs can only be applied to the analysis rule criteria for organization-level analyzers and cannot include the organization owner account.
|
|
124
|
+
*/
|
|
125
|
+
AccountIds?: string[];
|
|
126
|
+
/**
|
|
127
|
+
* A list of resource ARNs to apply to the internal access analysis rule criteria. The analyzer will only generate findings for resources that match these ARNs.
|
|
128
|
+
*/
|
|
129
|
+
ResourceArns?: string[];
|
|
130
|
+
/**
|
|
131
|
+
* A list of resource types to apply to the internal access analysis rule criteria. The analyzer will only generate findings for resources of these types.
|
|
132
|
+
*/
|
|
133
|
+
ResourceTypes?: string[];
|
|
134
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBhcHBseSB0byB0aGlzIHJlc291cmNlLlxuICovXG5leHBvcnQgdHlwZSBUYWdzID0gVGFnW11cblxuLyoqXG4gKiBUaGUgQVdTOjpBY2Nlc3NBbmFseXplcjo6QW5hbHl6ZXIgdHlwZSBzcGVjaWZpZXMgYW4gYW5hbHl6ZXIgb2YgdGhlIHVzZXIncyBhY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19BQ0NFU1NBTkFMWVpFUl9BTkFMWVpFUiB7XG4vKipcbiAqIEFuYWx5emVyIG5hbWVcbiAqL1xuQW5hbHl6ZXJOYW1lPzogc3RyaW5nXG5BcmNoaXZlUnVsZXM/OiBBcmNoaXZlUnVsZVtdXG4vKipcbiAqIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBhbmFseXplclxuICovXG5Bcm4/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXdzLWFjY2Vzc2FuYWx5emVyLWFuYWx5emVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBhcHBseSB0byB0aGlzIHJlc291cmNlLlxuICovXG5leHBvcnQgdHlwZSBUYWdzID0gVGFnW11cblxuLyoqXG4gKiBUaGUgQVdTOjpBY2Nlc3NBbmFseXplcjo6QW5hbHl6ZXIgdHlwZSBzcGVjaWZpZXMgYW4gYW5hbHl6ZXIgb2YgdGhlIHVzZXIncyBhY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgX0FXU19BQ0NFU1NBTkFMWVpFUl9BTkFMWVpFUiB7XG4vKipcbiAqIEFuYWx5emVyIG5hbWVcbiAqL1xuQW5hbHl6ZXJOYW1lPzogc3RyaW5nXG5BcmNoaXZlUnVsZXM/OiBBcmNoaXZlUnVsZVtdXG4vKipcbiAqIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBhbmFseXplclxuICovXG5Bcm4/OiBzdHJpbmdcbi8qKlxuICogQW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHRvIGFwcGx5IHRvIHRoaXMgcmVzb3VyY2UuXG4gKiBcbiAqIEBtYXhJdGVtcyA1MFxuICovXG5UYWdzPzogVGFnW11cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIGFuYWx5emVyLCBtdXN0IGJlIG9uZSBvZiBBQ0NPVU5ULCBPUkdBTklaQVRJT04sIEFDQ09VTlRfSU5URVJOQUxfQUNDRVNTLCBPUkdBTklaQVRJT05fSU5URVJOQUxfQUNDRVNTLCBBQ0NPVU5UX1VOVVNFRF9BQ0NFU1MgYW5kIE9SR0FOSVpBVElPTl9VTlVTRURfQUNDRVNTXG4gKi9cblR5cGU6IHN0cmluZ1xuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFuYWx5emVyXG4gKi9cbkFuYWx5emVyQ29uZmlndXJhdGlvbj86IHtcblVudXNlZEFjY2Vzc0NvbmZpZ3VyYXRpb24/OiBVbnVzZWRBY2Nlc3NDb25maWd1cmF0aW9uXG5JbnRlcm5hbEFjY2Vzc0NvbmZpZ3VyYXRpb24/OiBJbnRlcm5hbEFjY2Vzc0NvbmZpZ3VyYXRpb25cbn1cbn1cbi8qKlxuICogQW4gQWNjZXNzIEFuYWx5emVyIGFyY2hpdmUgcnVsZS4gQXJjaGl2ZSBydWxlcyBhdXRvbWF0aWNhbGx5IGFyY2hpdmUgbmV3IGZpbmRpbmdzIHRoYXQgbWVldCB0aGUgY3JpdGVyaWEgeW91IGRlZmluZSB3aGVuIHlvdSBjcmVhdGUgdGhlIHJ1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJjaGl2ZVJ1bGUge1xuLyoqXG4gKiBAbWluSXRlbXMgMVxuICovXG5GaWx0ZXI6IEZpbHRlcltdXG4vKipcbiAqIFRoZSBhcmNoaXZlIHJ1bGUgbmFtZVxuICovXG5SdWxlTmFtZTogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlciB7XG5Db250YWlucz86IHN0cmluZ1tdXG5FcT86IHN0cmluZ1tdXG5FeGlzdHM/OiBib29sZWFuXG5Qcm9wZXJ0eTogc3RyaW5nXG5OZXE/OiBzdHJpbmdbXVxufVxuLyoqXG4gKiBBIGtleS12YWx1ZSBwYWlyIHRvIGFzc29jaWF0ZSB3aXRoIGEgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbi8qKlxuICogVGhlIGtleSBuYW1lIG9mIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAxMjcgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uIFxuICovXG5LZXk6IHN0cmluZ1xuLyoqXG4gKiBUaGUgdmFsdWUgZm9yIHRoZSB0YWcuIFlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMCB0byAyNTUgVW5pY29kZSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGJlIHByZWZpeGVkIHdpdGggYXdzOi4gWW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyczogdGhlIHNldCBvZiBVbmljb2RlIGxldHRlcnMsIGRpZ2l0cywgd2hpdGVzcGFjZSwgXywgLiwgLywgPSwgKywgYW5kIC0uIFxuICovXG5WYWx1ZT86IHN0cmluZ1xufVxuLyoqXG4gKiBUaGUgQ29uZmlndXJhdGlvbiBmb3IgVW51c2VkIEFjY2VzcyBBbmFseXplclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVudXNlZEFjY2Vzc0NvbmZpZ3VyYXRpb24ge1xuLyoqXG4gKiBUaGUgc3BlY2lmaWVkIGFjY2VzcyBhZ2UgaW4gZGF5cyBmb3Igd2hpY2ggdG8gZ2VuZXJhdGUgZmluZGluZ3MgZm9yIHVudXNlZCBhY2Nlc3MuIEZvciBleGFtcGxlLCBpZiB5b3Ugc3BlY2lmeSA5MCBkYXlzLCB0aGUgYW5hbHl6ZXIgd2lsbCBnZW5lcmF0ZSBmaW5kaW5ncyBmb3IgSUFNIGVudGl0aWVzIHdpdGhpbiB0aGUgYWNjb3VudHMgb2YgdGhlIHNlbGVjdGVkIG9yZ2FuaXphdGlvbiBmb3IgYW55IGFjY2VzcyB0aGF0IGhhc24ndCBiZWVuIHVzZWQgaW4gOTAgb3IgbW9yZSBkYXlzIHNpbmNlIHRoZSBhbmFseXplcidzIGxhc3Qgc2Nhbi4gWW91IGNhbiBjaG9vc2UgYSB2YWx1ZSBiZXR3ZWVuIDEgYW5kIDM2NSBkYXlzLlxuICovXG5VbnVzZWRBY2Nlc3NBZ2U/OiBudW1iZXJcbi8qKlxuICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgcnVsZXMgZm9yIHRoZSBhbmFseXplci5cbiAqL1xuQW5hbHlzaXNSdWxlPzoge1xuLyoqXG4gKiBBIGxpc3Qgb2YgcnVsZXMgZm9yIHRoZSBhbmFseXplciBjb250YWluaW5nIGNyaXRlcmlhIHRvIGV4Y2x1ZGUgZnJvbSBhbmFseXNpcy4gRW50aXRpZXMgdGhhdCBtZWV0IHRoZSBydWxlIGNyaXRlcmlhIHdpbGwgbm90IGdlbmVyYXRlIGZpbmRpbmdzLlxuICovXG5FeGNsdXNpb25zPzogQW5hbHlzaXNSdWxlQ3JpdGVyaWFbXVxufVxufVxuLyoqXG4gKiBUaGUgY3JpdGVyaWEgZm9yIGFuIGFuYWx5c2lzIHJ1bGUgZm9yIGFuIGFuYWx5emVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFuYWx5c2lzUnVsZUNyaXRlcmlhIHtcbi8qKlxuICogQSBsaXN0IG9mIEFXUyBhY2NvdW50IElEcyB0byBhcHBseSB0byB0aGUgYW5hbHlzaXMgcnVsZSBjcml0ZXJpYS4gVGhlIGFjY291bnRzIGNhbm5vdCBpbmNsdWRlIHRoZSBvcmdhbml6YXRpb24gYW5hbHl6ZXIgb3duZXIgYWNjb3VudC4gQWNjb3VudCBJRHMgY2FuIG9ubHkgYmUgYXBwbGllZCB0byB0aGUgYW5hbHlzaXMgcnVsZSBjcml0ZXJpYSBmb3Igb3JnYW5pemF0aW9uLWxldmVsIGFuYWx5emVycy5cbiAqL1xuQWNjb3VudElkcz86IHN0cmluZ1tdXG4vKipcbiAqIEFuIGFycmF5IG9mIGtleS12YWx1ZSBwYWlycyB0byBtYXRjaCBmb3IgeW91ciByZXNvdXJjZXMuIFlvdSBjYW4gdXNlIHRoZSBzZXQgb2YgVW5pY29kZSBsZXR0ZXJzLCBkaWdpdHMsIHdoaXRlc3BhY2UsIF8sIC4sIC8sID0sICssIGFuZCAtLlxuICogXG4gKiBGb3IgdGhlIHRhZyBrZXksIHlvdSBjYW4gc3BlY2lmeSBhIHZhbHVlIHRoYXQgaXMgMSB0byAxMjggY2hhcmFjdGVycyBpbiBsZW5ndGggYW5kIGNhbm5vdCBiZSBwcmVmaXhlZCB3aXRoIGF3czouXG4gKiBcbiAqIEZvciB0aGUgdGFnIHZhbHVlLCB5b3UgY2FuIHNwZWNpZnkgYSB2YWx1ZSB0aGF0IGlzIDAgdG8gMjU2IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLiBJZiB0aGUgc3BlY2lmaWVkIHRhZyB2YWx1ZSBpcyAwIGNoYXJhY3RlcnMsIHRoZSBydWxlIGlzIGFwcGxpZWQgdG8gYWxsIHByaW5jaXBhbHMgd2l0aCB0aGUgc3BlY2lmaWVkIHRhZyBrZXkuXG4gKi9cblJlc291cmNlVGFncz86IFRhZ3NbXVxufVxuLyoqXG4gKiBTcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gb2YgYW4gaW50ZXJuYWwgYWNjZXNzIGFuYWx5emVyIGZvciBhbiBBV1Mgb3JnYW5pemF0aW9uIG9yIGFjY291bnQuIFRoaXMgY29uZmlndXJhdGlvbiBkZXRlcm1pbmVzIGhvdyB0aGUgYW5hbHl6ZXIgZXZhbHVhdGVzIGludGVybmFsIGFjY2VzcyB3aXRoaW4geW91ciBBV1MgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuYWxBY2Nlc3NDb25maWd1cmF0aW9uIHtcbi8qKlxuICogQ29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgYW5hbHlzaXMgcnVsZXMgZm9yIHRoZSBpbnRlcm5hbCBhY2Nlc3MgYW5hbHl6ZXIuIEFuYWx5c2lzIHJ1bGVzIGRldGVybWluZSB3aGljaCBlbnRpdGllcyB3aWxsIGdlbmVyYXRlIGZpbmRpbmdzIGJhc2VkIG9uIHRoZSBjcml0ZXJpYSB5b3UgZGVmaW5lIHdoZW4geW91IGNyZWF0ZSB0aGUgcnVsZS5cbiAqL1xuSW50ZXJuYWxBY2Nlc3NBbmFseXNpc1J1bGU/OiB7XG4vKipcbiAqIEEgbGlzdCBvZiBydWxlcyBmb3IgdGhlIGludGVybmFsIGFjY2VzcyBhbmFseXplciBjb250YWluaW5nIGNyaXRlcmlhIHRvIGluY2x1ZGUgaW4gYW5hbHlzaXMuIE9ubHkgcmVzb3VyY2VzIHRoYXQgbWVldCB0aGUgcnVsZSBjcml0ZXJpYSB3aWxsIGdlbmVyYXRlIGZpbmRpbmdzLlxuICovXG5JbmNsdXNpb25zPzogSW50ZXJuYWxBY2Nlc3NBbmFseXNpc1J1bGVDcml0ZXJpYVtdXG59XG59XG4vKipcbiAqIFRoZSBjcml0ZXJpYSBmb3IgYW4gYW5hbHlzaXMgcnVsZSBmb3IgYW4gaW50ZXJuYWwgYWNjZXNzIGFuYWx5emVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmFsQWNjZXNzQW5hbHlzaXNSdWxlQ3JpdGVyaWEge1xuLyoqXG4gKiBBIGxpc3Qgb2YgQVdTIGFjY291bnQgSURzIHRvIGFwcGx5IHRvIHRoZSBpbnRlcm5hbCBhY2Nlc3MgYW5hbHlzaXMgcnVsZSBjcml0ZXJpYS4gQWNjb3VudCBJRHMgY2FuIG9ubHkgYmUgYXBwbGllZCB0byB0aGUgYW5hbHlzaXMgcnVsZSBjcml0ZXJpYSBmb3Igb3JnYW5pemF0aW9uLWxldmVsIGFuYWx5emVycyBhbmQgY2Fubm90IGluY2x1ZGUgdGhlIG9yZ2FuaXphdGlvbiBvd25lciBhY2NvdW50LlxuICovXG5BY2NvdW50SWRzPzogc3RyaW5nW11cbi8qKlxuICogQSBsaXN0IG9mIHJlc291cmNlIEFSTnMgdG8gYXBwbHkgdG8gdGhlIGludGVybmFsIGFjY2VzcyBhbmFseXNpcyBydWxlIGNyaXRlcmlhLiBUaGUgYW5hbHl6ZXIgd2lsbCBvbmx5IGdlbmVyYXRlIGZpbmRpbmdzIGZvciByZXNvdXJjZXMgdGhhdCBtYXRjaCB0aGVzZSBBUk5zLlxuICovXG5SZXNvdXJjZUFybnM/OiBzdHJpbmdbXVxuLyoqXG4gKiBBIGxpc3Qgb2YgcmVzb3VyY2UgdHlwZXMgdG8gYXBwbHkgdG8gdGhlIGludGVybmFsIGFjY2VzcyBhbmFseXNpcyBydWxlIGNyaXRlcmlhLiBUaGUgYW5hbHl6ZXIgd2lsbCBvbmx5IGdlbmVyYXRlIGZpbmRpbmdzIGZvciByZXNvdXJjZXMgb2YgdGhlc2UgdHlwZXMuXG4gKi9cblJlc291cmNlVHlwZXM/OiBzdHJpbmdbXVxufVxuIl19
|