@aws-cdk/service-spec-types 0.0.196 → 0.0.198
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/lib/types/diff.d.ts +1 -0
- package/lib/types/diff.js +1 -1
- package/lib/types/resource.d.ts +27 -0
- package/lib/types/resource.js +1 -1
- package/package.json +1 -1
package/lib/types/diff.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export interface UpdatedResource {
|
|
|
37
37
|
readonly tagInformation?: ScalarDiff<Resource['tagInformation']>;
|
|
38
38
|
readonly scrutinizable?: ScalarDiff<Resource['scrutinizable']>;
|
|
39
39
|
readonly vendedLogs?: ScalarDiff<Resource['vendedLogs']>;
|
|
40
|
+
readonly vendedLogsConfig?: ScalarDiff<Resource['vendedLogsConfig']>;
|
|
40
41
|
readonly typeDefinitionDiff?: MapDiff<TypeDefinition, UpdatedTypeDefinition>;
|
|
41
42
|
readonly primaryIdentifier?: ListDiff<string, void>;
|
|
42
43
|
readonly metrics?: MapDiff<Metric, ChangedMetric>;
|
package/lib/types/diff.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudCwgRXZlbnRUeXBlRGVmaW5pdGlvbiwgRXZlbnRQcm9wZXJ0eSB9IGZyb20gJy4vZXZlbnQnO1xuaW1wb3J0IHsgTWV0cmljIH0gZnJvbSAnLi9tZXRyaWNzJztcbmltcG9ydCB7IEF0dHJpYnV0ZSwgUHJvcGVydHksIFJlc291cmNlLCBTZXJ2aWNlLCBUeXBlRGVmaW5pdGlvbiB9IGZyb20gJy4vcmVzb3VyY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwZWNEYXRhYmFzZURpZmYge1xuICBzZXJ2aWNlczogTWFwRGlmZjxTZXJ2aWNlLCBVcGRhdGVkU2VydmljZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdERpZmY8RSwgRUQ+IHtcbiAgcmVhZG9ubHkgYWRkZWQ/OiBFW107XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBFW107XG4gIHJlYWRvbmx5IHVwZGF0ZWQ/OiBFRFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcERpZmY8RSwgRUQ+IHtcbiAgcmVhZG9ubHkgYWRkZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgcmVtb3ZlZD86IFJlY29yZDxzdHJpbmcsIEU+O1xuICByZWFkb25seSB1cGRhdGVkPzogUmVjb3JkPHN0cmluZywgRUQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgbmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnbmFtZSddPjtcbiAgcmVhZG9ubHkgc2hvcnROYW1lPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydzaG9ydE5hbWUnXT47XG4gIHJlYWRvbmx5IGNhcGl0YWxpemVkPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjYXBpdGFsaXplZCddPjtcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25OYW1lc3BhY2U/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ2Nsb3VkRm9ybWF0aW9uTmFtZXNwYWNlJ10+O1xuICByZWFkb25seSByZXNvdXJjZURpZmY/OiBNYXBEaWZmPFJlc291cmNlLCBVcGRhdGVkUmVzb3VyY2U+O1xuICByZWFkb25seSBtZXRyaWNzPzogTWFwRGlmZjxNZXRyaWMsIENoYW5nZWRNZXRyaWM+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZWRNZXRyaWMge1xuICByZWFkb25seSBzdGF0aXN0aWM/OiBTY2FsYXJEaWZmPHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZFJlc291cmNlIHtcbiAgcmVhZG9ubHkgbmFtZT86IFNjYWxhckRpZmY8c3RyaW5nPjtcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblRyYW5zZm9ybT86IFNjYWxhckRpZmY8c3RyaW5nPjtcbiAgcmVhZG9ubHkgZG9jdW1lbnRhdGlvbj86IFNjYWxhckRpZmY8c3RyaW5nPjtcbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IE1hcERpZmY8UHJvcGVydHksIFVwZGF0ZWRQcm9wZXJ0eT47XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM/OiBNYXBEaWZmPEF0dHJpYnV0ZSwgVXBkYXRlZEF0dHJpYnV0ZT47XG4gIHJlYWRvbmx5IGFyblRlbXBsYXRlPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBpc1N0YXRlZnVsPzogU2NhbGFyRGlmZjxib29sZWFuPjtcbiAgcmVhZG9ubHkgdGFnSW5mb3JtYXRpb24/OiBTY2FsYXJEaWZmPFJlc291cmNlWyd0YWdJbmZvcm1hdGlvbiddPjtcbiAgcmVhZG9ubHkgc2NydXRpbml6YWJsZT86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3NjcnV0aW5pemFibGUnXT47XG4gIHJlYWRvbmx5IHZlbmRlZExvZ3M/OiBTY2FsYXJEaWZmPFJlc291cmNlWyd2ZW5kZWRMb2dzJ10+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudCwgRXZlbnRUeXBlRGVmaW5pdGlvbiwgRXZlbnRQcm9wZXJ0eSB9IGZyb20gJy4vZXZlbnQnO1xuaW1wb3J0IHsgTWV0cmljIH0gZnJvbSAnLi9tZXRyaWNzJztcbmltcG9ydCB7IEF0dHJpYnV0ZSwgUHJvcGVydHksIFJlc291cmNlLCBTZXJ2aWNlLCBUeXBlRGVmaW5pdGlvbiB9IGZyb20gJy4vcmVzb3VyY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwZWNEYXRhYmFzZURpZmYge1xuICBzZXJ2aWNlczogTWFwRGlmZjxTZXJ2aWNlLCBVcGRhdGVkU2VydmljZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdERpZmY8RSwgRUQ+IHtcbiAgcmVhZG9ubHkgYWRkZWQ/OiBFW107XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBFW107XG4gIHJlYWRvbmx5IHVwZGF0ZWQ/OiBFRFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hcERpZmY8RSwgRUQ+IHtcbiAgcmVhZG9ubHkgYWRkZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgcmVtb3ZlZD86IFJlY29yZDxzdHJpbmcsIEU+O1xuICByZWFkb25seSB1cGRhdGVkPzogUmVjb3JkPHN0cmluZywgRUQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgbmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnbmFtZSddPjtcbiAgcmVhZG9ubHkgc2hvcnROYW1lPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydzaG9ydE5hbWUnXT47XG4gIHJlYWRvbmx5IGNhcGl0YWxpemVkPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjYXBpdGFsaXplZCddPjtcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25OYW1lc3BhY2U/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ2Nsb3VkRm9ybWF0aW9uTmFtZXNwYWNlJ10+O1xuICByZWFkb25seSByZXNvdXJjZURpZmY/OiBNYXBEaWZmPFJlc291cmNlLCBVcGRhdGVkUmVzb3VyY2U+O1xuICByZWFkb25seSBtZXRyaWNzPzogTWFwRGlmZjxNZXRyaWMsIENoYW5nZWRNZXRyaWM+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZWRNZXRyaWMge1xuICByZWFkb25seSBzdGF0aXN0aWM/OiBTY2FsYXJEaWZmPHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZFJlc291cmNlIHtcbiAgcmVhZG9ubHkgbmFtZT86IFNjYWxhckRpZmY8c3RyaW5nPjtcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblRyYW5zZm9ybT86IFNjYWxhckRpZmY8c3RyaW5nPjtcbiAgcmVhZG9ubHkgZG9jdW1lbnRhdGlvbj86IFNjYWxhckRpZmY8c3RyaW5nPjtcbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IE1hcERpZmY8UHJvcGVydHksIFVwZGF0ZWRQcm9wZXJ0eT47XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM/OiBNYXBEaWZmPEF0dHJpYnV0ZSwgVXBkYXRlZEF0dHJpYnV0ZT47XG4gIHJlYWRvbmx5IGFyblRlbXBsYXRlPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBpc1N0YXRlZnVsPzogU2NhbGFyRGlmZjxib29sZWFuPjtcbiAgcmVhZG9ubHkgdGFnSW5mb3JtYXRpb24/OiBTY2FsYXJEaWZmPFJlc291cmNlWyd0YWdJbmZvcm1hdGlvbiddPjtcbiAgcmVhZG9ubHkgc2NydXRpbml6YWJsZT86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3NjcnV0aW5pemFibGUnXT47XG4gIHJlYWRvbmx5IHZlbmRlZExvZ3M/OiBTY2FsYXJEaWZmPFJlc291cmNlWyd2ZW5kZWRMb2dzJ10+O1xuICByZWFkb25seSB2ZW5kZWRMb2dzQ29uZmlnPzogU2NhbGFyRGlmZjxSZXNvdXJjZVsndmVuZGVkTG9nc0NvbmZpZyddPjtcbiAgcmVhZG9ubHkgdHlwZURlZmluaXRpb25EaWZmPzogTWFwRGlmZjxUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZFR5cGVEZWZpbml0aW9uPjtcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBMaXN0RGlmZjxzdHJpbmcsIHZvaWQ+O1xuICByZWFkb25seSBtZXRyaWNzPzogTWFwRGlmZjxNZXRyaWMsIENoYW5nZWRNZXRyaWM+O1xuICByZWFkb25seSBldmVudHM/OiBNYXBEaWZmPEV2ZW50LCBVcGRhdGVkRXZlbnQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IG9sZDogUHJvcGVydHk7XG4gIHJlYWRvbmx5IG5ldzogUHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZEF0dHJpYnV0ZSB7XG4gIHJlYWRvbmx5IG9sZDogQXR0cmlidXRlO1xuICByZWFkb25seSBuZXc6IEF0dHJpYnV0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkVHlwZURlZmluaXRpb24ge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogU2NhbGFyRGlmZjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkRXZlbnQge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IFNjYWxhckRpZmY8c3RyaW5nPjtcbiAgcmVhZG9ubHkgc291cmNlPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkZXRhaWxUeXBlPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSByZXNvdXJjZXNGaWVsZD86IFNjYWxhckRpZmY8RXZlbnRbJ3Jlc291cmNlc0ZpZWxkJ10+O1xuICByZWFkb25seSByb290UHJvcGVydHk/OiBTY2FsYXJEaWZmPEV2ZW50Wydyb290UHJvcGVydHknXT47XG4gIHJlYWRvbmx5IHR5cGVEZWZpbml0aW9uRGlmZj86IE1hcERpZmY8RXZlbnRUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZEV2ZW50VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRFdmVudFR5cGVEZWZpbml0aW9uIHtcbiAgcmVhZG9ubHkgbmFtZT86IFNjYWxhckRpZmY8c3RyaW5nPjtcbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IE1hcERpZmY8RXZlbnRQcm9wZXJ0eSwgVXBkYXRlZEV2ZW50UHJvcGVydHk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRFdmVudFByb3BlcnR5IHtcbiAgcmVhZG9ubHkgb2xkOiBFdmVudFByb3BlcnR5O1xuICByZWFkb25seSBuZXc6IEV2ZW50UHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NhbGFyRGlmZjxBPiB7XG4gIHJlYWRvbmx5IG9sZD86IEE7XG4gIHJlYWRvbmx5IG5ldz86IEE7XG59XG4iXX0=
|
package/lib/types/resource.d.ts
CHANGED
|
@@ -63,6 +63,7 @@ export interface Resource extends Entity {
|
|
|
63
63
|
arnTemplate?: string;
|
|
64
64
|
isStateful?: boolean;
|
|
65
65
|
vendedLogs?: VendedLog;
|
|
66
|
+
vendedLogsConfig?: VendedLogs[];
|
|
66
67
|
/**
|
|
67
68
|
* Information about the taggability of this resource
|
|
68
69
|
*
|
|
@@ -336,6 +337,32 @@ export interface VendedLog {
|
|
|
336
337
|
*/
|
|
337
338
|
readonly destinations: DestinationService[];
|
|
338
339
|
}
|
|
340
|
+
/**
|
|
341
|
+
* Represents a delivery destination that a Cloudformation resource can send logs to
|
|
342
|
+
*/
|
|
343
|
+
export interface DeliveryDestination {
|
|
344
|
+
/**
|
|
345
|
+
* The type of service that is ingesting the logs, can be S3 | FH | CWL | XRAY
|
|
346
|
+
*/
|
|
347
|
+
readonly destinationType: string;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Represents a type of log that a Cloudformation Resource can produce and what destinations can consume them
|
|
351
|
+
*/
|
|
352
|
+
export interface VendedLogs {
|
|
353
|
+
/**
|
|
354
|
+
* What version of permissions the destination supports V1 | V2
|
|
355
|
+
*/
|
|
356
|
+
readonly permissionsVersion: string;
|
|
357
|
+
/**
|
|
358
|
+
* Type of log a Cloudformation resource can produce
|
|
359
|
+
*/
|
|
360
|
+
readonly logType: string;
|
|
361
|
+
/**
|
|
362
|
+
* List of the destinations the can consume those logs
|
|
363
|
+
*/
|
|
364
|
+
readonly destinations: DeliveryDestination[];
|
|
365
|
+
}
|
|
339
366
|
export declare class RichPropertyType {
|
|
340
367
|
private readonly type;
|
|
341
368
|
constructor(type: PropertyType);
|
package/lib/types/resource.js
CHANGED
|
@@ -317,4 +317,4 @@ class RichPropertyType {
|
|
|
317
317
|
}
|
|
318
318
|
}
|
|
319
319
|
exports.RichPropertyType = RichPropertyType;
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsNkNBQW9EO0FBNktwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsSUFBa0I7UUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1Qyw2R0FBNkc7UUFDN0csd0dBQXdHO1FBQ3hHLDhHQUE4RztRQUM5RyxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsMkNBQTJDO1lBQzNDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCwrRkFBK0Y7UUFDL0Ysa0dBQWtHO1FBQ2xHLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsRUFBRTtZQUM5RSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsdUdBQXVHO1FB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SSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqSCxLQUFLLE9BQU87Z0JBQ1YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUEsMkJBQWlCLEVBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztDQUNGO0FBdEpELDRDQXNKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBBcnJheVR5cGUsIE1hcFR5cGUsIEdlbmVyaWNQcm9wZXJ0eVR5cGUsIEdlbmVyaWNEZWZpbml0aW9uUmVmZXJlbmNlIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgU3BlY0RhdGFiYXNlIH0gZnJvbSAnLi9kYXRhYmFzZSc7XG5pbXBvcnQgeyBzb3J0S2V5Q29tcGFyYXRvciB9IGZyb20gJy4uL3V0aWwvc29ydGluZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFydGl0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEhhc1JlZ2lvbiA9IFJlbGF0aW9uc2hpcDxQYXJ0aXRpb24sIFJlZ2lvbiwgeyBpc1ByaW1hcnk/OiBib29sZWFuIH0+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2UgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogVGhlIGZ1bGwgbmFtZSBvZiB0aGUgc2VydmljZSBpbmNsdWRpbmcgdGhlIGdyb3VwIHByZWZpeCwgbG93ZXJjYXNlZCBhbmQgaHlwaGVuYXRlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGF3cy1keW5hbW9kYmBcbiAgICpcbiAgICogQGV4YW1wbGUgYXdzLWR5bmFtb2RiXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPbmx5IHRoZSBzZXJ2aWNlIHBhcnQgb2YgdGhlIG5hbWUsIGxvd2VyY2FzZWQuXG4gICAqXG4gICAqIEUuZy4gYEFXUzo6RHluYW1vREJgIC0+IGBkeW5hbW9kYmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IHNob3J0TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNob3J0bmFtZSBvZiB0aGUgc2VydmljZSBpbiBjYXBpdGFsaXplZCBmb3JtXG4gICAqXG4gICAqIEUuZy4gYEFXUzo6RHluYW1vREJgIC0+IGBEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNhcGl0YWxpemVkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29tcGxldGUgY2xvdWRmb3JtYXRpb24gc3R5bGUgbmFtZXNwYWNlIG9mIHRoZSBzZXJ2aWNlXG4gICAqXG4gICAqIEUuZy4gYEFXUzo6RHluYW1vREJgXG4gICAqXG4gICAqIEBleGFtcGxlIGR5bmFtb2RiXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lvbiBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRhdGlvbiBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG1hcmtkb3duOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2UgZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogSWYgc2V0LCB0aGlzIENsb3VkRm9ybWF0aW9uIFRyYW5zZm9ybSBpcyByZXF1aXJlZCBieSB0aGUgcmVzb3VyY2VcbiAgICovXG4gIGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICBwcmltYXJ5SWRlbnRpZmllcj86IHN0cmluZ1tdO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIEF0dHJpYnV0ZT47XG4gIHJlYWRvbmx5IHZhbGlkYXRpb25zPzogdW5rbm93bjtcbiAgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIGlzU3RhdGVmdWw/OiBib29sZWFuO1xuICB2ZW5kZWRMb2dzPzogVmVuZGVkTG9nO1xuXG4gIC8qKlxuICAgKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFnZ2FiaWxpdHkgb2YgdGhpcyByZXNvdXJjZVxuICAgKlxuICAgKiBVbmRlZmluZWQgaWYgdGhlIHJlc291cmNlIGlzIG5vdCB0YWdnYWJsZS5cbiAgICovXG4gIHRhZ0luZm9ybWF0aW9uPzogVGFnSW5mb3JtYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHJlc291cmNlIG5lZWQgdG8gYmUgc2NydXRpbml6ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgUmVzb3VyY2VTY3J1dGlueVR5cGUuTk9ORVxuICAgKi9cbiAgc2NydXRpbml6YWJsZT86IFJlc291cmNlU2NydXRpbnlUeXBlO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHBhdGhzIHRvIHByb3BlcnRpZXMgdGhhdCBhbHNvIGNhdXNlIHJlcGxhY2VtZW50LlxuICAgKlxuICAgKiBUaGlzIGlzIHRvIGluZGljYXRlIHRoYXQgY2VydGFpbiBwcm9wZXJ0eSBwYXRocyBpbnRvIHRoaXMgcmVzb3VyY2VcbiAgICogd2lsbCBjYXVzZSByZXBsYWNlbWVudDsgb25seSByZXBsYWNlbWVudHMgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWRcbiAgICogYnkgdGFnZ2luZyB0aGUgcHJvcGVydHkgaW4gYSB0eXBlIGRlZmluaXRpb24gd2lsbCBiZSBpbmNsdWRlZCBoZXJlXG4gICAqIChmb3IgZXhhbXBsZSwgYmVjYXVzZSB0aGUgdGFnZ2VkIHByb3BlcnR5IHdvdWxkIGJlIGluIGEgcHJlZGVmaW5lZFxuICAgKiB0eXBlIGxpa2UgYHRhZ2ApLlxuICAgKlxuICAgKiBBbGwgcHJvcGVydGllcyBpbiB0aGlzIGxpc3Qgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYGNhdXNlc1JlcGxhY2VtZW50OiAneWVzJ2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IC1cbiAgICovXG4gIGFkZGl0aW9uYWxSZXBsYWNlbWVudFByb3BlcnRpZXM/OiBzdHJpbmdbXVtdO1xufVxuXG5leHBvcnQgdHlwZSBSZXNvdXJjZVByb3BlcnRpZXMgPSBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURlZmluaXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcmVuZGVyIHRoaXMgdHlwZSBldmVuIGlmIGl0IGlzIHVudXNlZC5cbiAgICovXG4gIG11c3RSZW5kZXJGb3JCd0NvbXBhdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcGVydHkge1xuICAvKipcbiAgICogRGVzY3JpcHRpb24gb2YgdGhlIHByb3BlcnR5XG4gICAqL1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJcyB0aGlzIHByb3BlcnR5IHJlcXVpcmVkXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHR5cGUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKi9cbiAgdHlwZTogUHJvcGVydHlUeXBlO1xuXG4gIC8qKlxuICAgKiBBbiBvcmRlcmVkIGxpc3Qgb2YgcHJldmlvdXMgdHlwZXMgb2YgdGhpcyBwcm9wZXJ0eSBpbiBhc2NlbmRpbmcgb3JkZXJcbiAgICpcbiAgICogRG9lcyBub3QgaW5jbHVkZSB0aGUgY3VycmVudCB0eXBlLCB1c2UgYHR5cGVgIGZvciB0aGlzLlxuICAgKi9cbiAgcHJldmlvdXNUeXBlcz86IFByb3BlcnR5VHlwZVtdO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRhdGlvbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5XG4gICAqXG4gICAqIFRoaXMgdmFsdWUgaXMgbm90IGRpcmVjdGx5IGZ1bmN0aW9uYWw7IGl0IGRlc2NyaWJlcyBob3cgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2VcbiAgICogd2lsbCBiZWhhdmUgaWYgdGhlIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCB1bmtub3duXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IGRlcHJlY2F0ZWRcbiAgICovXG4gIGRlcHJlY2F0ZWQ/OiBEZXByZWNhdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciBjaGFuZ2VzIHRvIHRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgc2NydXRpbml6ZWQgc3BlY2lhbGx5XG4gICAqXG4gICAqIEBkZWZhdWx0IFByb3BlcnR5U2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBQcm9wZXJ0eVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29udGFpbmluZyByZXNvdXJjZSB3aWxsIGJlIHJlcGxhY2VkIGlmIHRoaXMgcHJvcGVydHkgaXMgY2hhbmdlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbm8nXG4gICAqL1xuICBjYXVzZXNSZXBsYWNlbWVudD86ICd5ZXMnIHwgJ25vJyB8ICdtYXliZSc7XG5cbiAgLyoqXG4gICAqIFJlbGF0aW9uc2hpcCByZWZlcmVuY2VzIHRvIG90aGVyIENsb3VkRm9ybWF0aW9uIHJlc291cmNlc1xuICAgKi9cbiAgcmVsYXRpb25zaGlwUmVmcz86IFJlbGF0aW9uc2hpcFJlZltdO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICpcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0eXBlIHdhcyB1cGRhdGVkLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVR5cGUodHlwZTogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmljaFR5cGUgPSBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIC8vIE9ubHkgYWRkIHRoaXMgdHlwZSBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgaXQuIFdlIGFyZSBvbmx5IGRvaW5nIGNvbXBhcmlzb25zIHdoZXJlICdpbnRlZ2VyJyBhbmQgJ251bWJlcidcbiAgICAvLyBhcmUgdHJlYXRlZCB0aGUgc2FtZSwgZm9yIGFsbCBvdGhlciB0eXBlcyB3ZSBuZWVkIHN0cmljdCBlcXVhbGl0eS4gV2UgdXNlZCB0byB1c2UgJ2Fzc2lnbmFibGVUbycgYXMgYVxuICAgIC8vIGNvbmRpdGlvbiwgYnV0IHRoZXNlIHR5cGVzIHdpbGwgYmUgcmVuZGVyZWQgaW4gYm90aCBjby0gYW5kIGNvbnRyYXZhcmlhbnQgcG9zaXRpb25zLCBhbmQgc28gd2UgcmVhbGx5IGNhbid0XG4gICAgLy8gZG8gbXVjaCBiZXR0ZXIgdGhhbiBmdWxsIGVxdWFsaXR5LlxuICAgIGlmICh0aGlzLnR5cGVzKCkuc29tZSgodCkgPT4gcmljaFR5cGUuZXF1YWxzKHQpKSkge1xuICAgICAgLy8gTm90aGluZyB0byBkbywgdHlwZSBpcyBhbHJlYWR5IGluIHRoZXJlLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNwZWNpYWwgY2FzZTogaWYgdGhlIG5ldyB0eXBlIGlzIGBzdHJpbmdgIGFuZCB0aGUgb2xkIHR5cGUgaXMgYGRhdGUtdGltZWAsIHdlIGFzc3VtZSB0aGlzIGlzXG4gICAgLy8gdGhlIHNhbWUgdHlwZSBidXQgd2UgZHJvcHBlZCBzb21lIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24uIE5vIG5lZWQgdG8gbWFrZSB0aGlzIGEgc2VwYXJhdGUgdHlwZS5cbiAgICBpZiAodHlwZS50eXBlID09PSAnc3RyaW5nJyAmJiB0aGlzLnR5cGVzKCkuc29tZSgodCkgPT4gdC50eXBlID09PSAnZGF0ZS10aW1lJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBqc29uYCwgd2UgYXNzdW1lIHRoaXMgaXMgYSBjb3JyZWN0aW9uXG4gICAgLy8gb2YgYSBidWc7IHRoZSBvbGQgdHlwZSB3YXMgaW5jb3JyZWN0bHkgdHlwZWQgYXMgSnNvbiwgYW5kIHdlJ3JlIG5vdyBjb3JyZWN0aW5nIHRoaXMuIFNpbmNlIHRoaXMgd2FzIGFcbiAgICAvLyBidWcsIHdlIGRvbid0IG5lZWQgdG8ga2VlcCB0aGUgb2xkIHR5cGU6IGl0IHdhcyBuZXZlciBhY2N1cmF0ZS5cbiAgICAvL1xuICAgIC8vIFdlIGNvdWxkIGJlIG1vcmUgYnJvYWQsIGFuZCBvbmx5IG1haW50YWluIHR5cGUgaGlzdG9yeSBpZiB3ZSBnbyBmcm9tXG4gICAgLy8gYGpzb25gIC0+IGBuYW1lZCB0eXBlYCwgb3IgYG5hbWVkIHR5cGVgIC0+IGBuYW1lZCB0eXBlYC4gIEZvciBub3cgSSdtXG4gICAgLy8gd2FyeSBvZiBkZXN0cm95aW5nIHRvbyBtdWNoIGluZm9ybWF0aW9uOyB3ZSdsbCBqdXN0IGRvIHRoZSBmaXggc3BlY2lmaWNhbGx5XG4gICAgLy8gZm9yIGBqc29uYCAtPiBgc3RyaW5nYC5cbiAgICBpZiAodHlwZS50eXBlID09PSAnc3RyaW5nJyAmJiB0aGlzLmZpZWxkLnR5cGUudHlwZSA9PT0gJ2pzb24nKSB7XG4gICAgICB0aGlzLmZpZWxkLnR5cGUgPSB0eXBlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbGxlY3Rpb25UeXBlKHg6IFByb3BlcnR5VHlwZSk6IHggaXMgQXJyYXlUeXBlPGFueT4gfCBNYXBUeXBlPGFueT4ge1xuICByZXR1cm4geC50eXBlID09PSAnYXJyYXknIHx8IHgudHlwZSA9PT0gJ21hcCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnSW5mb3JtYXRpb24ge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcHJvcGVydHkgdGhhdCBob2xkcyB0aGUgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFnUHJvcGVydHlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gaW5zdHJ1Y3QgY2RrLlRhZ01hbmFnZXIgaG93IHRvIGhhbmRsZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB2YXJpYW50OiBUYWdWYXJpYW50O1xufVxuXG5leHBvcnQgdHlwZSBUYWdWYXJpYW50ID0gJ3N0YW5kYXJkJyB8ICdhc2cnIHwgJ21hcCc7XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcmVsYXRpb25zaGlwIHJlZmVyZW5jZSB0byBhbm90aGVyIENsb3VkRm9ybWF0aW9uIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVsYXRpb25zaGlwUmVmIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIHRoaXMgcHJvcGVydHkgcmVmZXJlbmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSBuYW1lIHdpdGhpbiB0aGUgcmVmZXJlbmNlZCByZXNvdXJjZSAoZS5nLiwgXCJJZFwiKVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydHlOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERlc3RpbmF0aW9uU2VydmljZSA9ICdTMycgfCAnQ1dMJyB8ICdGSCcgfCAnWFJBWSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgdHlwZXMgb2YgbG9ncyBhIENsb3VkZm9ybWF0aW9uIFJlc291cmNlIGNhbiBwcm9kdWNlIGFuZCB3aGF0IGRlc3RpbmF0aW9ucyBjYW4gY29uc3VtZSB0aGVtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVuZGVkTG9nIHtcbiAgLyoqXG4gICAqIFdoYXQgdmVyc2lvbiBvZiBwZXJtaXNzaW9ucyB0aGUgZGVzdGluYXRpb24gc3VwcG9ydHMgVjEgfCBWMlxuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbnNWZXJzaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHRoZSB0eXBlcyBvZiBsb2dzIGEgQ2xvdWRmb3JtYXRpb24gcmVzb3VyY2UgY2FuIHByb2R1Y2VcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1R5cGVzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdGhlIGRlc3RpbmF0aW9ucyB0aGUgY2FuIGNvbnN1bWUgdGhvc2UgbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVzdGluYXRpb25zOiBEZXN0aW5hdGlvblNlcnZpY2VbXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9IEdlbmVyaWNQcm9wZXJ0eVR5cGU8VHlwZURlZmluaXRpb24+O1xuZXhwb3J0IHR5cGUgRGVmaW5pdGlvblJlZmVyZW5jZSA9IEdlbmVyaWNEZWZpbml0aW9uUmVmZXJlbmNlPFR5cGVEZWZpbml0aW9uPjtcbiJdfQ==
|
|
320
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsNkNBQW9EO0FBOEtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLO1FBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxVQUFVLENBQUMsSUFBa0I7UUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1Qyw2R0FBNkc7UUFDN0csd0dBQXdHO1FBQ3hHLDhHQUE4RztRQUM5RyxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsMkNBQTJDO1lBQzNDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCwrRkFBK0Y7UUFDL0Ysa0dBQWtHO1FBQ2xHLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsRUFBRTtZQUM5RSxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsdUdBQXVHO1FB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SSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqSCxLQUFLLE9BQU87Z0JBQ1YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNqRixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUEsMkJBQWlCLEVBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztDQUNGO0FBdEpELDRDQXNKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBBcnJheVR5cGUsIE1hcFR5cGUsIEdlbmVyaWNQcm9wZXJ0eVR5cGUsIEdlbmVyaWNEZWZpbml0aW9uUmVmZXJlbmNlIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgU3BlY0RhdGFiYXNlIH0gZnJvbSAnLi9kYXRhYmFzZSc7XG5pbXBvcnQgeyBzb3J0S2V5Q29tcGFyYXRvciB9IGZyb20gJy4uL3V0aWwvc29ydGluZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFydGl0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgcGFydGl0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEhhc1JlZ2lvbiA9IFJlbGF0aW9uc2hpcDxQYXJ0aXRpb24sIFJlZ2lvbiwgeyBpc1ByaW1hcnk/OiBib29sZWFuIH0+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZpY2UgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogVGhlIGZ1bGwgbmFtZSBvZiB0aGUgc2VydmljZSBpbmNsdWRpbmcgdGhlIGdyb3VwIHByZWZpeCwgbG93ZXJjYXNlZCBhbmQgaHlwaGVuYXRlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGF3cy1keW5hbW9kYmBcbiAgICpcbiAgICogQGV4YW1wbGUgYXdzLWR5bmFtb2RiXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPbmx5IHRoZSBzZXJ2aWNlIHBhcnQgb2YgdGhlIG5hbWUsIGxvd2VyY2FzZWQuXG4gICAqXG4gICAqIEUuZy4gYEFXUzo6RHluYW1vREJgIC0+IGBkeW5hbW9kYmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IHNob3J0TmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNob3J0bmFtZSBvZiB0aGUgc2VydmljZSBpbiBjYXBpdGFsaXplZCBmb3JtXG4gICAqXG4gICAqIEUuZy4gYEFXUzo6RHluYW1vREJgIC0+IGBEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNhcGl0YWxpemVkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgY29tcGxldGUgY2xvdWRmb3JtYXRpb24gc3R5bGUgbmFtZXNwYWNlIG9mIHRoZSBzZXJ2aWNlXG4gICAqXG4gICAqIEUuZy4gYEFXUzo6RHluYW1vREJgXG4gICAqXG4gICAqIEBleGFtcGxlIGR5bmFtb2RiXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lvbiBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRhdGlvbiBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG1hcmtkb3duOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2UgZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHlwZTogc3RyaW5nO1xuICAvKipcbiAgICogSWYgc2V0LCB0aGlzIENsb3VkRm9ybWF0aW9uIFRyYW5zZm9ybSBpcyByZXF1aXJlZCBieSB0aGUgcmVzb3VyY2VcbiAgICovXG4gIGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICBwcmltYXJ5SWRlbnRpZmllcj86IHN0cmluZ1tdO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIEF0dHJpYnV0ZT47XG4gIHJlYWRvbmx5IHZhbGlkYXRpb25zPzogdW5rbm93bjtcbiAgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIGlzU3RhdGVmdWw/OiBib29sZWFuO1xuICB2ZW5kZWRMb2dzPzogVmVuZGVkTG9nO1xuICB2ZW5kZWRMb2dzQ29uZmlnPzogVmVuZGVkTG9nc1tdO1xuXG4gIC8qKlxuICAgKiBJbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFnZ2FiaWxpdHkgb2YgdGhpcyByZXNvdXJjZVxuICAgKlxuICAgKiBVbmRlZmluZWQgaWYgdGhlIHJlc291cmNlIGlzIG5vdCB0YWdnYWJsZS5cbiAgICovXG4gIHRhZ0luZm9ybWF0aW9uPzogVGFnSW5mb3JtYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHJlc291cmNlIG5lZWQgdG8gYmUgc2NydXRpbml6ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgUmVzb3VyY2VTY3J1dGlueVR5cGUuTk9ORVxuICAgKi9cbiAgc2NydXRpbml6YWJsZT86IFJlc291cmNlU2NydXRpbnlUeXBlO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHBhdGhzIHRvIHByb3BlcnRpZXMgdGhhdCBhbHNvIGNhdXNlIHJlcGxhY2VtZW50LlxuICAgKlxuICAgKiBUaGlzIGlzIHRvIGluZGljYXRlIHRoYXQgY2VydGFpbiBwcm9wZXJ0eSBwYXRocyBpbnRvIHRoaXMgcmVzb3VyY2VcbiAgICogd2lsbCBjYXVzZSByZXBsYWNlbWVudDsgb25seSByZXBsYWNlbWVudHMgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWRcbiAgICogYnkgdGFnZ2luZyB0aGUgcHJvcGVydHkgaW4gYSB0eXBlIGRlZmluaXRpb24gd2lsbCBiZSBpbmNsdWRlZCBoZXJlXG4gICAqIChmb3IgZXhhbXBsZSwgYmVjYXVzZSB0aGUgdGFnZ2VkIHByb3BlcnR5IHdvdWxkIGJlIGluIGEgcHJlZGVmaW5lZFxuICAgKiB0eXBlIGxpa2UgYHRhZ2ApLlxuICAgKlxuICAgKiBBbGwgcHJvcGVydGllcyBpbiB0aGlzIGxpc3Qgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgYGNhdXNlc1JlcGxhY2VtZW50OiAneWVzJ2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IC1cbiAgICovXG4gIGFkZGl0aW9uYWxSZXBsYWNlbWVudFByb3BlcnRpZXM/OiBzdHJpbmdbXVtdO1xufVxuXG5leHBvcnQgdHlwZSBSZXNvdXJjZVByb3BlcnRpZXMgPSBSZWNvcmQ8c3RyaW5nLCBQcm9wZXJ0eT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHlwZURlZmluaXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgcmVuZGVyIHRoaXMgdHlwZSBldmVuIGlmIGl0IGlzIHVudXNlZC5cbiAgICovXG4gIG11c3RSZW5kZXJGb3JCd0NvbXBhdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvcGVydHkge1xuICAvKipcbiAgICogRGVzY3JpcHRpb24gb2YgdGhlIHByb3BlcnR5XG4gICAqL1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJcyB0aGlzIHByb3BlcnR5IHJlcXVpcmVkXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHR5cGUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKi9cbiAgdHlwZTogUHJvcGVydHlUeXBlO1xuXG4gIC8qKlxuICAgKiBBbiBvcmRlcmVkIGxpc3Qgb2YgcHJldmlvdXMgdHlwZXMgb2YgdGhpcyBwcm9wZXJ0eSBpbiBhc2NlbmRpbmcgb3JkZXJcbiAgICpcbiAgICogRG9lcyBub3QgaW5jbHVkZSB0aGUgY3VycmVudCB0eXBlLCB1c2UgYHR5cGVgIGZvciB0aGlzLlxuICAgKi9cbiAgcHJldmlvdXNUeXBlcz86IFByb3BlcnR5VHlwZVtdO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyByZXByZXNlbnRhdGlvbiB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5XG4gICAqXG4gICAqIFRoaXMgdmFsdWUgaXMgbm90IGRpcmVjdGx5IGZ1bmN0aW9uYWw7IGl0IGRlc2NyaWJlcyBob3cgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2VcbiAgICogd2lsbCBiZWhhdmUgaWYgdGhlIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCB1bmtub3duXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IGRlcHJlY2F0ZWRcbiAgICovXG4gIGRlcHJlY2F0ZWQ/OiBEZXByZWNhdGlvbjtcblxuICAvKipcbiAgICogV2hldGhlciBjaGFuZ2VzIHRvIHRoaXMgcHJvcGVydHkgbmVlZHMgdG8gYmUgc2NydXRpbml6ZWQgc3BlY2lhbGx5XG4gICAqXG4gICAqIEBkZWZhdWx0IFByb3BlcnR5U2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBQcm9wZXJ0eVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY29udGFpbmluZyByZXNvdXJjZSB3aWxsIGJlIHJlcGxhY2VkIGlmIHRoaXMgcHJvcGVydHkgaXMgY2hhbmdlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbm8nXG4gICAqL1xuICBjYXVzZXNSZXBsYWNlbWVudD86ICd5ZXMnIHwgJ25vJyB8ICdtYXliZSc7XG5cbiAgLyoqXG4gICAqIFJlbGF0aW9uc2hpcCByZWZlcmVuY2VzIHRvIG90aGVyIENsb3VkRm9ybWF0aW9uIHJlc291cmNlc1xuICAgKi9cbiAgcmVsYXRpb25zaGlwUmVmcz86IFJlbGF0aW9uc2hpcFJlZltdO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICpcbiAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0eXBlIHdhcyB1cGRhdGVkLlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZVR5cGUodHlwZTogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmljaFR5cGUgPSBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIC8vIE9ubHkgYWRkIHRoaXMgdHlwZSBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgaXQuIFdlIGFyZSBvbmx5IGRvaW5nIGNvbXBhcmlzb25zIHdoZXJlICdpbnRlZ2VyJyBhbmQgJ251bWJlcidcbiAgICAvLyBhcmUgdHJlYXRlZCB0aGUgc2FtZSwgZm9yIGFsbCBvdGhlciB0eXBlcyB3ZSBuZWVkIHN0cmljdCBlcXVhbGl0eS4gV2UgdXNlZCB0byB1c2UgJ2Fzc2lnbmFibGVUbycgYXMgYVxuICAgIC8vIGNvbmRpdGlvbiwgYnV0IHRoZXNlIHR5cGVzIHdpbGwgYmUgcmVuZGVyZWQgaW4gYm90aCBjby0gYW5kIGNvbnRyYXZhcmlhbnQgcG9zaXRpb25zLCBhbmQgc28gd2UgcmVhbGx5IGNhbid0XG4gICAgLy8gZG8gbXVjaCBiZXR0ZXIgdGhhbiBmdWxsIGVxdWFsaXR5LlxuICAgIGlmICh0aGlzLnR5cGVzKCkuc29tZSgodCkgPT4gcmljaFR5cGUuZXF1YWxzKHQpKSkge1xuICAgICAgLy8gTm90aGluZyB0byBkbywgdHlwZSBpcyBhbHJlYWR5IGluIHRoZXJlLlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNwZWNpYWwgY2FzZTogaWYgdGhlIG5ldyB0eXBlIGlzIGBzdHJpbmdgIGFuZCB0aGUgb2xkIHR5cGUgaXMgYGRhdGUtdGltZWAsIHdlIGFzc3VtZSB0aGlzIGlzXG4gICAgLy8gdGhlIHNhbWUgdHlwZSBidXQgd2UgZHJvcHBlZCBzb21lIGZvcm1hdHRpbmcgaW5mb3JtYXRpb24uIE5vIG5lZWQgdG8gbWFrZSB0aGlzIGEgc2VwYXJhdGUgdHlwZS5cbiAgICBpZiAodHlwZS50eXBlID09PSAnc3RyaW5nJyAmJiB0aGlzLnR5cGVzKCkuc29tZSgodCkgPT4gdC50eXBlID09PSAnZGF0ZS10aW1lJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBqc29uYCwgd2UgYXNzdW1lIHRoaXMgaXMgYSBjb3JyZWN0aW9uXG4gICAgLy8gb2YgYSBidWc7IHRoZSBvbGQgdHlwZSB3YXMgaW5jb3JyZWN0bHkgdHlwZWQgYXMgSnNvbiwgYW5kIHdlJ3JlIG5vdyBjb3JyZWN0aW5nIHRoaXMuIFNpbmNlIHRoaXMgd2FzIGFcbiAgICAvLyBidWcsIHdlIGRvbid0IG5lZWQgdG8ga2VlcCB0aGUgb2xkIHR5cGU6IGl0IHdhcyBuZXZlciBhY2N1cmF0ZS5cbiAgICAvL1xuICAgIC8vIFdlIGNvdWxkIGJlIG1vcmUgYnJvYWQsIGFuZCBvbmx5IG1haW50YWluIHR5cGUgaGlzdG9yeSBpZiB3ZSBnbyBmcm9tXG4gICAgLy8gYGpzb25gIC0+IGBuYW1lZCB0eXBlYCwgb3IgYG5hbWVkIHR5cGVgIC0+IGBuYW1lZCB0eXBlYC4gIEZvciBub3cgSSdtXG4gICAgLy8gd2FyeSBvZiBkZXN0cm95aW5nIHRvbyBtdWNoIGluZm9ybWF0aW9uOyB3ZSdsbCBqdXN0IGRvIHRoZSBmaXggc3BlY2lmaWNhbGx5XG4gICAgLy8gZm9yIGBqc29uYCAtPiBgc3RyaW5nYC5cbiAgICBpZiAodHlwZS50eXBlID09PSAnc3RyaW5nJyAmJiB0aGlzLmZpZWxkLnR5cGUudHlwZSA9PT0gJ2pzb24nKSB7XG4gICAgICB0aGlzLmZpZWxkLnR5cGUgPSB0eXBlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbGxlY3Rpb25UeXBlKHg6IFByb3BlcnR5VHlwZSk6IHggaXMgQXJyYXlUeXBlPGFueT4gfCBNYXBUeXBlPGFueT4ge1xuICByZXR1cm4geC50eXBlID09PSAnYXJyYXknIHx8IHgudHlwZSA9PT0gJ21hcCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFnSW5mb3JtYXRpb24ge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgcHJvcGVydHkgdGhhdCBob2xkcyB0aGUgdGFnc1xuICAgKi9cbiAgcmVhZG9ubHkgdGFnUHJvcGVydHlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gaW5zdHJ1Y3QgY2RrLlRhZ01hbmFnZXIgaG93IHRvIGhhbmRsZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB2YXJpYW50OiBUYWdWYXJpYW50O1xufVxuXG5leHBvcnQgdHlwZSBUYWdWYXJpYW50ID0gJ3N0YW5kYXJkJyB8ICdhc2cnIHwgJ21hcCc7XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgcmVsYXRpb25zaGlwIHJlZmVyZW5jZSB0byBhbm90aGVyIENsb3VkRm9ybWF0aW9uIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVsYXRpb25zaGlwUmVmIHtcbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlIHRoaXMgcHJvcGVydHkgcmVmZXJlbmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSBuYW1lIHdpdGhpbiB0aGUgcmVmZXJlbmNlZCByZXNvdXJjZSAoZS5nLiwgXCJJZFwiKVxuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydHlOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERlc3RpbmF0aW9uU2VydmljZSA9ICdTMycgfCAnQ1dMJyB8ICdGSCcgfCAnWFJBWSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgdHlwZXMgb2YgbG9ncyBhIENsb3VkZm9ybWF0aW9uIFJlc291cmNlIGNhbiBwcm9kdWNlIGFuZCB3aGF0IGRlc3RpbmF0aW9ucyBjYW4gY29uc3VtZSB0aGVtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVuZGVkTG9nIHtcbiAgLyoqXG4gICAqIFdoYXQgdmVyc2lvbiBvZiBwZXJtaXNzaW9ucyB0aGUgZGVzdGluYXRpb24gc3VwcG9ydHMgVjEgfCBWMlxuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbnNWZXJzaW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHRoZSB0eXBlcyBvZiBsb2dzIGEgQ2xvdWRmb3JtYXRpb24gcmVzb3VyY2UgY2FuIHByb2R1Y2VcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1R5cGVzOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdGhlIGRlc3RpbmF0aW9ucyB0aGUgY2FuIGNvbnN1bWUgdGhvc2UgbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVzdGluYXRpb25zOiBEZXN0aW5hdGlvblNlcnZpY2VbXTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZGVsaXZlcnkgZGVzdGluYXRpb24gdGhhdCBhIENsb3VkZm9ybWF0aW9uIHJlc291cmNlIGNhbiBzZW5kIGxvZ3MgdG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxpdmVyeURlc3RpbmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHNlcnZpY2UgdGhhdCBpcyBpbmdlc3RpbmcgdGhlIGxvZ3MsIGNhbiBiZSBTMyB8IEZIIHwgQ1dMIHwgWFJBWVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzdGluYXRpb25UeXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHR5cGUgb2YgbG9nIHRoYXQgYSBDbG91ZGZvcm1hdGlvbiBSZXNvdXJjZSBjYW4gcHJvZHVjZSBhbmQgd2hhdCBkZXN0aW5hdGlvbnMgY2FuIGNvbnN1bWUgdGhlbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZlbmRlZExvZ3Mge1xuICAvKipcbiAgICogV2hhdCB2ZXJzaW9uIG9mIHBlcm1pc3Npb25zIHRoZSBkZXN0aW5hdGlvbiBzdXBwb3J0cyBWMSB8IFYyXG4gICAqL1xuICByZWFkb25seSBwZXJtaXNzaW9uc1ZlcnNpb246IHN0cmluZztcbiAgLyoqXG4gICAqIFR5cGUgb2YgbG9nIGEgQ2xvdWRmb3JtYXRpb24gcmVzb3VyY2UgY2FuIHByb2R1Y2VcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1R5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIExpc3Qgb2YgdGhlIGRlc3RpbmF0aW9ucyB0aGUgY2FuIGNvbnN1bWUgdGhvc2UgbG9nc1xuICAgKi9cbiAgcmVhZG9ubHkgZGVzdGluYXRpb25zOiBEZWxpdmVyeURlc3RpbmF0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoUHJvcGVydHlUeXBlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB0eXBlOiBQcm9wZXJ0eVR5cGUpIHt9XG5cbiAgcHVibGljIGVxdWFscyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdkYXRlLXRpbWUnOlxuICAgICAgY2FzZSAnanNvbic6XG4gICAgICBjYXNlICdudWxsJzpcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZTtcbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gdGhpcy50eXBlLnR5cGUgJiYgbmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLmVxdWFscyhyaHMuZWxlbWVudCk7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09ICdyZWYnICYmIHRoaXMudHlwZS5yZWZlcmVuY2UuJHJlZiA9PT0gcmhzLnJlZmVyZW5jZS4kcmVmO1xuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICBjb25zdCBsaHNLZXkgPSB0aGlzLnNvcnRLZXkoKTtcbiAgICAgICAgY29uc3QgcmhzS2V5ID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUocmhzKS5zb3J0S2V5KCk7XG4gICAgICAgIHJldHVybiBsaHNLZXkubGVuZ3RoID09PSByaHNLZXkubGVuZ3RoICYmIGxoc0tleS5ldmVyeSgobCwgaSkgPT4gbCA9PT0gcmhzS2V5W2ldKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIEphdmFTY3JpcHQtZXF1YWwgdG8gdGhlIFJIUyB0eXBlXG4gICAqXG4gICAqIFNhbWUgYXMgbm9ybWFsIGVxdWFsaXR5LCBidXQgY29uc2lkZXIgYGludGVnZXJgIGFuZCBgbnVtYmVyYCB0aGUgc2FtZSB0eXBlcy5cbiAgICovXG4gIHB1YmxpYyBqYXZhc2NyaXB0RXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAvLyBXaWRlbmluZ1xuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09ICdpbnRlZ2VyJyB8fCByaHMudHlwZSA9PT0gJ251bWJlcic7XG5cbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gdGhpcy50eXBlLnR5cGUgJiYgbmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLmphdmFzY3JpcHRFcXVhbHMocmhzLmVsZW1lbnQpO1xuXG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGlmIChyaHMudHlwZSAhPT0gJ3VuaW9uJykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBFdmVyeSB0eXBlIGluIHRoaXMgdW5pb24gbmVlZHMgdG8gYmUgZXF1YWwgb25lIHR5cGUgaW4gUkhTXG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUudHlwZXMuZXZlcnkoKHQxKSA9PiByaHMudHlwZXMuc29tZSgodDIpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQxKS5qYXZhc2NyaXB0RXF1YWxzKHQyKSkpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBGb3IgYW55dGhpbmcgZWxzZSwgbmVlZCBzdHJpY3QgZXF1YWxpdHlcbiAgICAgICAgcmV0dXJuIHRoaXMuZXF1YWxzKHJocyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGN1cnJlbnQgdHlwZSBpcyBhc3NpZ25hYmxlIHRvIHRoZSBSSFMgdHlwZS5cbiAgICpcbiAgICogVGhpcyBpcyBtZWFucyBldmVyeSB0eXBlIG1lbWJlciBvZiB0aGUgTEhTIG11c3QgYmUgcHJlc2VudCBpbiB0aGUgUkhTIHR5cGVcbiAgICovXG4gIHB1YmxpYyBhc3NpZ25hYmxlVG8ocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHRyYWN0TWVtYmVycyA9ICh0eXBlOiBQcm9wZXJ0eVR5cGUpOiBQcm9wZXJ0eVR5cGVbXSA9PiAodHlwZS50eXBlID09ICd1bmlvbicgPyB0eXBlLnR5cGVzIDogW3R5cGVdKTtcbiAgICBjb25zdCBhc1JpY2hUeXBlID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFJpY2hQcm9wZXJ0eVR5cGUgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICBjb25zdCByaHNNZW1iZXJzID0gZXh0cmFjdE1lbWJlcnMocmhzKTtcbiAgICBmb3IgKGNvbnN0IGxoc01lbWJlciBvZiBleHRyYWN0TWVtYmVycyh0aGlzLnR5cGUpLm1hcChhc1JpY2hUeXBlKSkge1xuICAgICAgaWYgKCFyaHNNZW1iZXJzLnNvbWUoKHR5cGUpID0+IGxoc01lbWJlci5lcXVhbHModHlwZSkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSB2ZXJzaW9uIG9mIHRoaXMgdHlwZSwgYnV0IHdpdGggYWxsIHR5cGUgdW5pb25zIGluIGEgcmVndWxhcml6ZWQgb3JkZXJcbiAgICovXG4gIHB1YmxpYyBub3JtYWxpemUoZGI6IFNwZWNEYXRhYmFzZSk6IFJpY2hQcm9wZXJ0eVR5cGUge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiBuZXcgUmljaFByb3BlcnR5VHlwZSh7XG4gICAgICAgICAgdHlwZTogdGhpcy50eXBlLnR5cGUsXG4gICAgICAgICAgZWxlbWVudDogbmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLm5vcm1hbGl6ZShkYikudHlwZSxcbiAgICAgICAgfSk7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IHR5cGVzID0gdGhpcy50eXBlLnR5cGVzXG4gICAgICAgICAgLm1hcCgodCkgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodCkubm9ybWFsaXplKGRiKSlcbiAgICAgICAgICAubWFwKCh0KSA9PiBbdCwgdC5zb3J0S2V5KGRiKV0gYXMgY29uc3QpO1xuICAgICAgICB0eXBlcy5zb3J0KHNvcnRLZXlDb21wYXJhdG9yKChbXywgc29ydEtleV0pID0+IHNvcnRLZXkpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiAndW5pb24nLFxuICAgICAgICAgIHR5cGVzOiB0eXBlcy5tYXAoKFt0LCBfXSkgPT4gdC50eXBlKSxcbiAgICAgICAgfSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RyaW5naWZ5KGRiOiBTcGVjRGF0YWJhc2UsIHdpdGhJZCA9IHRydWUpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdkYXRlLXRpbWUnOlxuICAgICAgY2FzZSAnanNvbic6XG4gICAgICBjYXNlICdudWxsJzpcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICByZXR1cm4gYEFycmF5PCR7bmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLnN0cmluZ2lmeShkYiwgd2l0aElkKX0+YDtcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiBgTWFwPHN0cmluZywgJHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAncmVmJzpcbiAgICAgICAgY29uc3QgdHlwZSA9IGRiLmdldCgndHlwZURlZmluaXRpb24nLCB0aGlzLnR5cGUucmVmZXJlbmNlKTtcbiAgICAgICAgcmV0dXJuIHdpdGhJZCA/IGAke3R5cGUubmFtZX0oJHt0aGlzLnR5cGUucmVmZXJlbmNlLiRyZWZ9KWAgOiB0eXBlLm5hbWU7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCkpLmpvaW4oJyB8ICcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzb3J0YWJsZSBrZXkgYmFzZWQgb24gdGhpcyB0eXBlXG4gICAqXG4gICAqIElmIGEgZGF0YWJhc2UgaXMgZ2l2ZW4sIHR5cGUgZGVmaW5pdGlvbnMgd2lsbCBiZSBzb3J0ZWQgYmFzZWQgb24gdHlwZSBuYW1lLFxuICAgKiBvdGhlcndpc2Ugb24gaWRlbnRpZmllclxuICAgKi9cbiAgcHVibGljIHNvcnRLZXkoZGI/OiBTcGVjRGF0YWJhc2UpOiBzdHJpbmdbXSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gWycwJywgdGhpcy50eXBlLnR5cGVdO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIFsnMScsIHRoaXMudHlwZS50eXBlLCAuLi5uZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc29ydEtleShkYildO1xuICAgICAgY2FzZSAncmVmJzpcbiAgICAgICAgcmV0dXJuIFsnMicsIHRoaXMudHlwZS50eXBlLCBkYj8uZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpPy5uYW1lID8/IHRoaXMudHlwZS5yZWZlcmVuY2UuJHJlZl07XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IHR5cGVLZXlzID0gdGhpcy50eXBlLnR5cGVzLm1hcCgodCkgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodCkuc29ydEtleShkYikpO1xuICAgICAgICB0eXBlS2V5cy5zb3J0KHNvcnRLZXlDb21wYXJhdG9yKCh4KSA9PiB4KSk7XG4gICAgICAgIHJldHVybiBbJzMnLCB0aGlzLnR5cGUudHlwZSwgLi4udHlwZUtleXMuZmxhdE1hcCgoeCkgPT4geCldO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSBQcm9wZXJ0eVR5cGUgPSBHZW5lcmljUHJvcGVydHlUeXBlPFR5cGVEZWZpbml0aW9uPjtcbmV4cG9ydCB0eXBlIERlZmluaXRpb25SZWZlcmVuY2UgPSBHZW5lcmljRGVmaW5pdGlvblJlZmVyZW5jZTxUeXBlRGVmaW5pdGlvbj47XG4iXX0=
|