tnx-shared 5.0.21 → 5.0.25
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/bundles/tnx-shared.umd.js +81 -362
- package/bundles/tnx-shared.umd.js.map +1 -1
- package/bundles/tnx-shared.umd.min.js +1 -1
- package/bundles/tnx-shared.umd.min.js.map +1 -1
- package/classes/base/data-form-base.d.ts.map +1 -1
- package/classes/base/data-list-base.d.ts +1 -0
- package/classes/base/data-list-base.d.ts.map +1 -1
- package/classes/form-schema.d.ts +0 -3
- package/classes/form-schema.d.ts.map +1 -1
- package/classes/public-function.d.ts +1 -1
- package/components/crud/crud-form/crud-form.component.d.ts +2 -2
- package/components/crud/crud-list/crud-list.component.d.ts +0 -10
- package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
- package/components/tn-app-notification/tn-app-notification.component.d.ts +2 -2
- package/components/tn-app-notification/tn-app-notification.component.d.ts.map +1 -1
- package/components/workflow/services/entity-workflow-setting.service.d.ts.map +1 -1
- package/esm2015/classes/base/data-form-base.js +2 -30
- package/esm2015/classes/base/data-list-base.js +6 -60
- package/esm2015/classes/form-schema.js +1 -3
- package/esm2015/components/crud/crud-list/crud-list.component.js +11 -160
- package/esm2015/components/tn-app-notification/tn-app-notification.component.js +2 -2
- package/esm2015/components/workflow/services/entity-workflow-history.service.js +4 -4
- package/esm2015/components/workflow/services/entity-workflow-setting.service.js +15 -10
- package/esm2015/services/crud.service.js +2 -2
- package/esm2015/tnx-shared.module.js +3 -1
- package/fesm2015/tnx-shared.js +72 -294
- package/fesm2015/tnx-shared.js.map +1 -1
- package/package.json +2 -2
- package/tnx-shared.metadata.json +1 -1
- package/tnx-shared.module.d.ts.map +1 -1
- package/tnx-shared.module.ngfactory.d.ts.map +1 -1
|
@@ -33,8 +33,6 @@ export class CrudListSetting {
|
|
|
33
33
|
this.reSelectLastItem = true; // Select lại item cuối cùng đã chọn của grid
|
|
34
34
|
this.fireEventWhenReSelect = false;
|
|
35
35
|
this.advanceData = {};
|
|
36
|
-
this.useWorkflowNew = false; // Sẽ bỏ đi trong tương lai khi thay thế hoàn toàn bằng workflow new
|
|
37
|
-
this.isWorkflowTree = false;
|
|
38
36
|
this.hasCustomHandleClickRow = false;
|
|
39
37
|
this.checkPermisionTrinhKy = false;
|
|
40
38
|
this.showEditLink = true;
|
|
@@ -1106,4 +1104,4 @@ export var ExportAllMode;
|
|
|
1106
1104
|
ExportAllMode[ExportAllMode["ManualGetData"] = 0] = "ManualGetData";
|
|
1107
1105
|
ExportAllMode[ExportAllMode["AutoGetData"] = 1] = "AutoGetData";
|
|
1108
1106
|
})(ExportAllMode || (ExportAllMode = {}));
|
|
1109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY2xhc3Nlcy9mb3JtLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBZ0JBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHakgsTUFBTSxPQUFPLFdBQVc7SUFNcEIsWUFBWSxJQUFrQjtRQUQ5QixhQUFRLEdBQWlGLFFBQVEsQ0FBQztRQUU5RixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFHakIsWUFBWSxJQUFlO1FBRjNCLG9HQUFvRztRQUNwRyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFFL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxlQUFlO0lBc0Z4QixZQUFZLElBQXNCO1FBcEZsQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFHakIsaUJBQVksR0FBbUIsRUFBRSxDQUFDO1FBQ2xDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBQy9CLGtCQUFhLEdBQW1CLElBQUksYUFBYSxFQUFFLENBQUM7UUFDcEQsZ0JBQVcsR0FBaUIsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM5QyxlQUFVLEdBQWdCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyx5REFBeUQ7UUFDdkcsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLDhCQUF5QixHQUFHLElBQUksQ0FBQztRQUNqQyw4QkFBeUIsR0FBbUMsOEJBQThCLENBQUMsUUFBUSxDQUFDO1FBQ3BHLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLHFCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDLDZDQUE2QztRQUN0RSwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFDOUIsZ0JBQVcsR0FBUyxFQUFFLENBQUM7UUFDdkIsbUJBQWMsR0FBYSxLQUFLLENBQUMsQ0FBQyxvRUFBb0U7UUFHdEcsbUJBQWMsR0FBYSxLQUFLLENBQUM7UUFHakMsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBRWhDLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU5QixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUVwQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0Qiw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDaEMsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLDZCQUF3QixHQUFHLElBQUksQ0FBQztRQUNoQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0Qiw2QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFDaEMsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO1FBSXJDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQWtCLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFDMUQsb0JBQWUsR0FBb0IsZUFBZSxDQUFDLFFBQVEsQ0FBQztRQUU1RCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsaUJBQVksR0FBNEIsRUFBRSxDQUFDO1FBQzNDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBR3BCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixxQkFBZ0IsR0FBc0IsRUFBRSxDQUFDO1FBRXpDLDBCQUFxQixHQUFxQixJQUFJLGVBQWUsRUFBRSxDQUFDO1FBRWhFLG9CQUFlLEdBQWMsRUFBRSxDQUFDO1FBR2hDLGFBQVEsR0FBMkIsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBRWhFLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBZSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBR3hDLHlCQUFvQixHQUFxQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzRCwwQkFBcUIsR0FBd0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQztRQUNyRSx3QkFBbUIsR0FBa0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBRzVDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8scUJBQXFCO0NBRWpDO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjtJQUsvQixZQUFZLElBQTZCO1FBSnpDLFlBQVk7UUFDWixxQkFBZ0IsR0FBeUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQztRQUNqRixpQkFBaUI7UUFDakIsNEJBQXVCLEdBQStFLENBQU8sSUFBSSxFQUFFLEVBQUUsZ0RBQUMsT0FBQSxJQUFJLENBQUEsR0FBQSxDQUFDO1FBRXZILEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQUt4QixZQUFZLElBQXNCO1FBSmxDLGtCQUFhLEdBQW1CLElBQUksYUFBYSxFQUFFLENBQUM7UUFDcEQsZ0JBQVcsR0FBaUIsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM5QyxxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIscUJBQWdCLEdBQXNCLEVBQUUsQ0FBQztRQUVyQyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFlBQWEsU0FBUSxRQUFRO0lBY3RDLFlBQVksSUFBbUI7UUFDM0IsS0FBSyxFQUFFLENBQUM7UUFkWixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBSTNCLFVBQUssR0FBRyxDQUFDLENBQUM7UUFFVixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUV0QixvQkFBZSxHQUFnQyxFQUFFLENBQUM7UUFJOUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx1QkFBdUI7SUFFaEMsWUFBWSxJQUE4QjtRQUQxQyxTQUFJLEdBQVMsRUFBRSxDQUFDO1FBRVosS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBSXZCLFlBQVksSUFBcUI7UUFIakMsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUVQLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUdwQixZQUFZLElBQWtCO1FBRjlCLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDVCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBRVYsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxhQUFhO0lBT3RCLFlBQVksSUFBb0I7UUFOaEMsVUFBSyxHQUFZLEVBQUUsQ0FBQztRQUVwQixZQUFPLEdBQW9CLENBQUMsQ0FBQyxDQUFDO1FBQzlCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsWUFBTyxHQUEyQixFQUFFLENBQUM7UUFHakMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxtQkFBbUI7Q0FPL0I7QUFFRCxNQUFNLE9BQU8sWUFBYSxTQUFRLFFBQVE7SUFPdEMsWUFBWSxJQUFtQjtRQUMzQixLQUFLLEVBQUUsQ0FBQztRQVBaLFNBQUksR0FBUyxFQUFFLENBQUM7UUFDaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQjs7V0FFRztRQUNILGNBQVMsR0FBZSxTQUFTLENBQUMsR0FBRyxDQUFDO1FBR2xDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sc0JBQXNCO0lBRy9CLFlBQVksSUFBNkI7UUFGekMsWUFBWTtRQUNaLDRCQUF1QixHQUF5QixDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBRWhFLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQWtCeEIsWUFBWSxJQUFzQjtRQWpCbEMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsV0FBTSxHQUFzQixFQUFFLENBQUM7UUFFL0Isa0JBQWEsR0FBdUIsRUFBRSxDQUFDO1FBQ3ZDLGdCQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUN6QyxrQkFBYSxHQUE4QyxFQUFFLENBQUM7UUFDOUQsb0JBQWUsR0FBMEMsRUFBRSxDQUFDO1FBSzVELDhCQUF5QixHQUFtQyw4QkFBOEIsQ0FBQyxRQUFRLENBQUM7UUFHcEcsYUFBUSxHQUE0QixJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFDakUseUJBQW9CLEdBQXFCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsWUFBWTtJQUUvQyxZQUFZLElBQXdCO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBRlosYUFBUSxHQUFTLEVBQUUsQ0FBQztRQUdoQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGVBQWU7SUFJckQsWUFBWSxJQUEyQjtRQUNuQyxLQUFLLEVBQUUsQ0FBQztRQUpaLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsMkJBQXNCLEdBQXVCLEVBQUUsQ0FBQztRQUNoRCw4QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFHN0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBS25CLFlBQVksSUFBaUI7UUFGN0IsU0FBSSxHQUEyRCxRQUFRLENBQUM7UUFHcEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxjQUFlLFNBQVEsVUFBVTtJQW1CMUMsWUFBWSxJQUFxQjtRQUM3QixLQUFLLEVBQUUsQ0FBQztRQWhCWixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWixZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBRVosVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLFVBQUssR0FBUyxFQUFFLENBQUM7UUFFakIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBRXJCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBR1osS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxlQUFnQixTQUFRLGNBQWM7SUFJL0MsWUFBWSxJQUFzQjtRQUM5QixLQUFLLEVBQUUsQ0FBQztRQUhaLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFJYixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGNBQWM7SUFtQ3pELFlBQVksSUFBZ0M7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFuQ1osc0dBQXNHO1FBQ3RHLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsY0FBUyxHQUFnQixFQUFFLENBQUM7UUFFNUIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXhCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixvQkFBZSxHQUFTLElBQUksQ0FBQyxDQUFDLGdEQUFnRDtRQUM5RSx3QkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FBQyx5REFBeUQ7UUFDckYsb0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyw2Q0FBNkM7UUFHdEUsVUFBSyxHQUFZLEVBQUUsQ0FBQztRQUNwQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsWUFBTyxHQUFZLENBQUMsQ0FBQztRQUNyQixjQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsdUVBQXVFO1FBTXZGLHFCQUFnQixHQUFHLE9BQU8sQ0FBQyxDQUFDLGtGQUFrRjtRQUs5RyxnQkFBVyxHQUFtQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDO1FBRzFGLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sV0FBWSxTQUFRLGNBQWM7SUFPM0MsWUFBWSxJQUFrQjtRQUMxQixLQUFLLEVBQUUsQ0FBQztRQVBaLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLFNBQUksR0FBRyxFQUFFLENBQUM7UUFJTixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFdBQVksU0FBUSxXQUFXO0lBR3hDLFlBQVksSUFBa0I7UUFDMUIsS0FBSyxFQUFFLENBQUM7UUFIWixVQUFLLEdBQUcsdUJBQXVCLENBQUM7UUFDaEMsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUdULEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxjQUFjO0lBVy9DLFlBQVksSUFBc0I7UUFDOUIsS0FBSyxFQUFFLENBQUM7UUFUWixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQy9CLGVBQVUsR0FBa0IsRUFBRSxDQUFDO1FBQy9CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFHdEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR3JCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsZUFBZTtJQXVDM0QsNENBQTRDO0lBRTVDLFlBQVksSUFBaUM7UUFDekMsS0FBSyxFQUFFLENBQUM7UUF6Q1osd0NBQXdDO1FBQ3hDLHNHQUFzRztRQUN0RyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGNBQVMsR0FBZ0IsRUFBRSxDQUFDO1FBRTVCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHckIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVmLG9CQUFlLEdBQVMsSUFBSSxDQUFDLENBQUMsZ0RBQWdEO1FBQzlFLHdCQUFtQixHQUFHLElBQUksQ0FBQyxDQUFDLHlEQUF5RDtRQUNyRixvQkFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDLDZDQUE2QztRQUd0RSxVQUFLLEdBQVksRUFBRSxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixZQUFPLEdBQVksQ0FBQyxDQUFDO1FBQ3JCLGNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyx1RUFBdUU7UUFRdkYscUJBQWdCLEdBQUcsT0FBTyxDQUFDLENBQUMsa0ZBQWtGO1FBRzlHLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUkxQixnQkFBVyxHQUFtQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDO1FBSzFGLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQW9CbEQsWUFBWSxJQUF3QjtRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQXBCWixrQkFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLDZCQUE2QjtRQUVwRCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQWtHLE1BQU0sQ0FBQztRQUVuSCxRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsUUFBRyxHQUFHLFFBQVEsQ0FBQztRQUlmLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFHckIsVUFBSyxHQUFZLEVBQUUsQ0FBQztRQUNwQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsWUFBTyxHQUFZLENBQUMsQ0FBQztRQUNyQixjQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsdUVBQXVFO1FBSW5GLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sNEJBQTZCLFNBQVEsMEJBQTBCO0lBS3hFLFlBQVksSUFBbUM7UUFDM0MsS0FBSyxFQUFFLENBQUM7UUFMWixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixlQUFVLEdBQXFGLE1BQU0sQ0FBQztRQUtsRyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGlCQUFpQjtJQU9wRCxZQUFZLElBQXdCO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBUFosYUFBUSxHQUF1QixLQUFLLENBQUM7UUFDckMsUUFBRyxHQUFHLENBQUMsQ0FBQztRQUNSLFFBQUcsR0FBRyxVQUFVLENBQUM7UUFDakIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFDWixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUdkLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsaUJBQWlCO0lBTzNELFlBQVksSUFBK0I7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFOWixRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsUUFBRyxHQUFHLFVBQVUsQ0FBQztRQUNqQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBR2QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxlQUFlO0lBV3RELFlBQVksSUFBNEI7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFYWixhQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLFdBQU0sR0FBMEIsU0FBUyxDQUFDO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ25CLFlBQU8sR0FBVSxJQUFJLENBQUM7UUFDdEIsWUFBTyxHQUFVLElBQUksQ0FBQztRQUlsQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1NBQ3hFO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHFCQUFxQjtJQUVqRSxZQUFZLElBQTRCO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRlosYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdiLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsMEJBQTBCO0lBOEJyRSxZQUFZLElBQWdDO1FBQ3hDLEtBQUssRUFBRSxDQUFDO1FBM0JaLHlCQUF5QjtRQUV6QixlQUFVLEdBQXdCLE9BQU8sQ0FBQztRQUUxQyxhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixVQUFLLEdBQUcsR0FBRyxDQUFDO1FBRVosb0JBQWUsR0FBYyxFQUFFLENBQUM7UUFDaEMsYUFBUSxHQUFTLEVBQUUsQ0FBQztRQUNwQix1QkFBa0IsR0FBUyxFQUFFLENBQUM7UUFVOUIsOERBQThEO1FBQzlELDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUVqQyxpRkFBaUY7UUFDakYsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBSTNCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEseUJBQXlCO0lBVTFFLFlBQVksSUFBc0M7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFUWixhQUFRLEdBQTJCLHFCQUFxQixDQUFDLElBQUksQ0FBQztRQUM5RCxhQUFRLEdBQUcsTUFBTSxDQUFDO1FBS2xCLGNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyw4R0FBOEc7UUFJN0gsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSwrQkFBK0I7SUFFeEUsWUFBWSxJQUE4QjtRQUN0QyxLQUFLLEVBQUUsQ0FBQztRQUZaLGFBQVEsR0FBMkIscUJBQXFCLENBQUMsSUFBSSxDQUFDO1FBRzFELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsZUFBZTtJQUVwRCxZQUFZLElBQTBCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBQ1IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxlQUFlO0lBRXpELFlBQVksSUFBK0I7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFGWixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUdqQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBR0QsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGVBQWU7SUFJbEQsWUFBWSxJQUF3QjtRQUNoQyxLQUFLLEVBQUUsQ0FBQztRQUhaLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBRW5ELFlBQVksSUFBeUI7UUFDakMsS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGVBQWU7SUFDdEQsWUFBWSxJQUE0QjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQUNSLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBZTtJQTZCekQsWUFBWSxJQUErQjtRQUN2QyxLQUFLLEVBQUUsQ0FBQztRQTdCWixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDeEIsa0NBQTZCLEdBQUcscUNBQXFDLENBQUM7UUFDdEUsaUNBQTRCLEdBQUcsMkJBQTJCLENBQUM7UUFDM0Qsa0NBQTZCLEdBQUcsa0NBQWtDLENBQUM7UUFDbkUsaUNBQTRCLEdBQUcsK0JBQStCLENBQUM7UUFDL0QsbUNBQThCLEdBQUcsOEJBQThCLENBQUM7UUFDaEUsa0NBQTZCLEdBQUcsa0JBQWtCLENBQUM7UUFDbkQsU0FBSSxHQUFzQyxlQUFlLENBQUMsUUFBUSxDQUFDO1FBQ25FLFdBQU0sR0FBb0IsY0FBYyxDQUFDLElBQUksQ0FBQztRQUM5QyxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBYWpCLGtEQUFrRDtRQUNsRCx1REFBdUQ7UUFDdkQsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFJbEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx3QkFBd0I7SUF5QmpFLFlBQVksSUFBOEI7UUFDdEMsS0FBSyxFQUFFLENBQUM7UUF6QlosU0FBSSxHQUFHLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2QyxZQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ1oscUJBQWdCLEdBQXNCLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUU3RCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUN0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBRXhCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixnQkFBVyxHQUFHLFNBQVMsQ0FBQyxDQUFDLFNBQVM7UUFDbEMsa0NBQTZCLEdBQUcscUNBQXFDLENBQUM7UUFDdEUsaUNBQTRCLEdBQUcsMkJBQTJCLENBQUM7UUFDM0Qsa0NBQTZCLEdBQUcsa0NBQWtDLENBQUM7UUFDbkUsaUNBQTRCLEdBQUcsK0JBQStCLENBQUM7UUFDL0QsbUNBQThCLEdBQUcsOEJBQThCLENBQUM7UUFDaEUsa0NBQTZCLEdBQUcsa0JBQWtCLENBQUM7UUFLL0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUNELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBQ3BELFlBQVksSUFBMEI7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGVBQWU7SUFHdEQsWUFBWSxJQUE0QjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQUhaLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGdCQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsaUdBQWlHO1FBR2xILEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsY0FBYztJQU1uRCxZQUFZLElBQTBCO1FBQ2xDLEtBQUssRUFBRSxDQUFDO1FBTlosY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixZQUFPLEdBQUcsZUFBZSxDQUFDO1FBRTFCLFlBQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUl4QixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGNBQWM7SUFFckQsWUFBWSxJQUE0QjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQUNSLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsZUFBZTtJQUV0RCxZQUFZLElBQTRCO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRlosU0FBSSxHQUFHLENBQUMsQ0FBQztRQUdMLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsZUFBZTtJQWtCeEQsWUFBWSxJQUE4QjtRQUN0QyxLQUFLLEVBQUUsQ0FBQztRQWxCWixhQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLDBDQUEwQztRQUN0RCxVQUFLLEdBQUcsaUJBQWlCLENBQUM7UUFFMUIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFFckIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxhQUFhLENBQUM7UUFDN0IsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLGVBQVUsR0FBd0IsT0FBTyxDQUFDO1FBRzFDLGdCQUFXLEdBQW1DLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUM7UUFHMUYsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxlQUFlO0lBYy9ELFlBQVksSUFBOEI7UUFDdEMsS0FBSyxFQUFFLENBQUM7UUFkWixhQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsVUFBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLHVDQUF1QztRQUNuRCxVQUFLLEdBQUcsYUFBYSxDQUFDO1FBRXRCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUlmLGdCQUFXLEdBQW1DLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUM7UUFHMUYsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxlQUFlO0lBT2hFLFlBQVksSUFBc0M7UUFDOUMsS0FBSyxFQUFFLENBQUM7UUFQWixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUdoQixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR2IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxlQUFlO0lBVXpELFlBQVksSUFBK0I7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFWWixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUdoQixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQixpQkFBWSxHQUFZLElBQUksQ0FBQztRQUM3QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBSXBELFlBQVksSUFBMEI7UUFDbEMsS0FBSyxFQUFFLENBQUM7UUFKWixTQUFJLEdBQTRDLE9BQU8sQ0FBQztRQUN4RCxXQUFNLEdBQUcsR0FBRyxDQUFDO1FBSVQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSwwQkFBMEI7SUFLbkUsWUFBWSxJQUE4QjtRQUN0QyxLQUFLLEVBQUUsQ0FBQztRQUxaLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZUFBVSxHQUF3QixPQUFPLENBQUM7UUFJdEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx1QkFBdUI7SUF1QzlELFlBQVksSUFBNEI7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUF2Q1osYUFBUSxHQUFHLE1BQU0sQ0FBQztRQUNsQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLHVCQUFrQixHQUFHLGlCQUFpQixDQUFDO1FBQ3ZDLHlCQUFvQixHQUFHLGdCQUFnQixDQUFDO1FBQ3hDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsc0JBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLGNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQyw2R0FBNkc7UUFHaEksYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixhQUFRLEdBQVMsRUFBRSxDQUFDO1FBQ3BCLGNBQVMsR0FBZSxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFbkUsdUJBQWtCLEdBQUcsSUFBSSxDQUFDO1FBRTFCLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLG9DQUErQixHQUFHLEtBQUssQ0FBQztRQUV4QyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGdDQUEyQixHQUFHLEtBQUssQ0FBQztRQUVwQyx1QkFBa0IsR0FBRyxJQUFJLENBQUM7UUFLdEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBbUJyRCxZQUFZLElBQTJCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBbkJaLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNwQixxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDWixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBR2QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxlQUFlO0lBSTFELFlBQVksSUFBZ0M7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFKWixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBR1gsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTywyQkFBNEIsU0FBUSxlQUFlO0lBTTVELFlBQVksSUFBa0M7UUFDMUMsS0FBSyxFQUFFLENBQUM7UUFOWixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBSWIsVUFBSyxHQUFTLEVBQUUsQ0FBQztRQUdiLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsdUJBQXVCO0lBS2xFLFlBQVksSUFBZ0M7UUFDeEMsS0FBSyxFQUFFLENBQUM7UUFMWixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG9CQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLGFBQVEsR0FBWSxNQUFNLENBQUM7UUFHdkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSx1QkFBdUI7SUFTckUsWUFBWSxJQUFtQztRQUMzQyxLQUFLLEVBQUUsQ0FBQztRQVRaLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsV0FBTSxHQUErQixZQUFZLENBQUM7UUFDbEQsVUFBSyxHQUFpQyxNQUFNLENBQUM7UUFNekMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx1QkFBdUI7SUFPbEUsWUFBWSxJQUFnQztRQUN4QyxLQUFLLEVBQUUsQ0FBQztRQVBaLGtCQUFhLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLFdBQU0sR0FBK0IsWUFBWSxDQUFDO1FBQ2xELFVBQUssR0FBaUMsTUFBTSxDQUFDO1FBQzdDLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBSVYsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxXQUFZLFNBQVEsZUFBZTtJQWlDNUMsWUFBWSxJQUFrQjtRQUMxQixLQUFLLEVBQUUsQ0FBQztRQXpCWixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUV6QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxpQkFBWSxHQUFHLENBQUMsQ0FBQztRQUNqQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBV1QsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSx5QkFBeUI7SUE4QzNELFlBQVksSUFBdUI7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUE3Q1osaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsVUFBSyxHQUFHLEtBQUssQ0FBQztRQUNkLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixnQkFBVyxHQUFHLElBQUksQ0FBQztRQUduQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBR2pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBR3JCLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFHWixnQkFBVyxHQUFpQixXQUFXLENBQUMsT0FBTyxDQUFDO1FBR2hELG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBT3ZCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRXJCLFFBQUcsR0FBRyxDQUFDLENBQUM7UUFDUixRQUFHLEdBQUcsTUFBTSxDQUFDO1FBRWIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2pCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsU0FBSSxHQUFHLElBQUksQ0FBQztRQUNaLGVBQVUsR0FBUyxFQUFFLENBQUM7UUFHdEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR3JCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQWlCeEIsWUFBWSxJQUFzQjtRQWhCbEMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2Ysb0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyw2Q0FBNkM7UUFDdEUsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLENBQUMseURBQXlEO1FBQ3JGLFVBQUssR0FBWSxFQUFFLENBQUM7UUFDcEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLFlBQU8sR0FBWSxDQUFDLENBQUM7UUFDckIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUdmLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsY0FBUyxHQUFnQixFQUFFLENBQUM7UUFFNUIsZ0JBQVcsR0FBbUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUUxRixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBQ0QsTUFBTSxPQUFPLFFBQVE7SUF5QmpCLFlBQVksSUFBZTtRQXZCM0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUtmLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixvQkFBZSxHQUFTLElBQUksQ0FBQyxDQUFDLGdEQUFnRDtRQUM5RSx3QkFBbUIsR0FBRyxJQUFJLENBQUMsQ0FBQyx5REFBeUQ7UUFDckYsVUFBSyxHQUFZLEVBQUUsQ0FBQztRQUNwQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsWUFBTyxHQUFZLENBQUMsQ0FBQztRQU1yQixnQkFBVyxHQUFtQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDO1FBRTFGLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLGVBQWU7SUFrQ2pCLFlBQVksSUFBc0I7UUFoQ2xDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBT3hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUNqQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQUN0QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRWYsb0JBQWUsR0FBRyxLQUFLLENBQUMsQ0FBQyw2Q0FBNkM7UUFDdEUsb0JBQWUsR0FBUyxJQUFJLENBQUMsQ0FBQyxnREFBZ0Q7UUFDOUUsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLENBQUMseURBQXlEO1FBRXJGLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsZ0JBQVcsR0FBYyxFQUFFLENBQUM7UUFDNUIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLFVBQUssR0FBWSxFQUFFLENBQUM7UUFDcEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLFlBQU8sR0FBWSxDQUFDLENBQUM7UUFHckIscUJBQWdCLEdBQUcsT0FBTyxDQUFDLENBQUMsa0ZBQWtGO1FBRzlHLGdCQUFXLEdBQW1DLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUM7UUFHMUYsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxnQkFBZ0I7SUFhcEQsWUFBWSxJQUF5QjtRQUNqQyxLQUFLLEVBQUUsQ0FBQztRQVhaLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUdqQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsZ0JBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyw4RkFBOEY7UUFNL0csS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxlQUFlO0lBR2pELFlBQVksSUFBdUI7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFDUixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGNBQWM7SUFJdkIsWUFBWSxJQUFxQjtRQURqQyxvQ0FBK0IsR0FBRyxJQUFJLENBQUM7UUFFbkMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxjQUFjO0lBS3ZCLFlBQVksSUFBcUI7UUFKakMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLGlCQUFZLEdBQUcsbUJBQW1CLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxjQUFjLENBQUM7UUFFM0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxXQUFXO0lBS3BCLFlBQVksSUFBa0I7UUFKOUIsaUJBQVksR0FBYSxLQUFLLENBQUM7UUFDL0IsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUNyQixjQUFTLEdBQWUsSUFBSSxTQUFTLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUN6RCxTQUFJLEdBQVMsRUFBRSxDQUFDO1FBRVosS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxTQUFTO0lBSWxCLFlBQVksSUFBZ0I7UUFENUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUViLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sU0FBUztJQU9sQixZQUNJLElBT0M7UUFFRCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUM7SUFFNUMsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFBO0lBQ25DLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDO0lBQ3pDLENBQUM7Q0FDSjtBQUVELE1BQU0sQ0FBTixJQUFZLFFBU1g7QUFURCxXQUFZLFFBQVE7SUFDaEIseUJBQWEsQ0FBQTtJQUNiLGlDQUFxQixDQUFBO0lBQ3JCLHlCQUFhLENBQUE7SUFDYiw2QkFBaUIsQ0FBQTtJQUNqQix1QkFBVyxDQUFBO0lBQ1gsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIseUJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBVFcsUUFBUSxLQUFSLFFBQVEsUUFTbkI7QUFFRCxNQUFNLENBQU4sSUFBWSxXQVNYO0FBVEQsV0FBWSxXQUFXO0lBQ25CLG9DQUFxQixDQUFBO0lBQ3JCLG9DQUFxQixDQUFBO0lBQ3JCLDRCQUFhLENBQUE7SUFDYiw0QkFBYSxDQUFBO0lBQ2IsZ0NBQWlCLENBQUE7SUFDakIsa0NBQW1CLENBQUE7SUFDbkIsb0NBQXFCLENBQUE7SUFDckIsZ0NBQWlCLENBQUE7QUFDckIsQ0FBQyxFQVRXLFdBQVcsS0FBWCxXQUFXLFFBU3RCO0FBRUQsTUFBTSxDQUFOLElBQVksUUFpQ1g7QUFqQ0QsV0FBWSxRQUFRO0lBQ2hCLHdCQUFZLENBQUE7SUFDWiw0QkFBZ0IsQ0FBQTtJQUNoQiwwQkFBYyxDQUFBO0lBQ2Qsb0NBQXdCLENBQUE7SUFDeEIsd0JBQVksQ0FBQTtJQUNaLGtDQUFzQixDQUFBO0lBRXRCLGdDQUFvQixDQUFBO0lBQ3BCLG9DQUF3QixDQUFBO0lBQ3hCLG9DQUF3QixDQUFBO0lBQ3hCLHdDQUE0QixDQUFBO0lBQzVCLGdDQUFvQixDQUFBO0lBQ3BCLG9DQUF3QixDQUFBO0lBRXhCLHFCQUFTLENBQUE7SUFDVCx5QkFBYSxDQUFBO0lBRWIsNkJBQWlCLENBQUE7SUFDakIsbUNBQXVCLENBQUE7SUFFdkIsOEJBQWtCLENBQUE7SUFDbEIsb0NBQXdCLENBQUE7SUFDeEIscUNBQXlCLENBQUE7SUFDekIsMkNBQStCLENBQUE7SUFDL0IscUNBQXlCLENBQUE7SUFDekIsMkNBQStCLENBQUE7SUFDL0IscUNBQXlCLENBQUE7SUFDekIsMkNBQStCLENBQUE7SUFDL0IsdUNBQTJCLENBQUE7SUFDM0IsNkNBQWlDLENBQUE7SUFDakMsMkNBQStCLENBQUE7SUFDL0IsNkNBQWlDLENBQUE7QUFDckMsQ0FBQyxFQWpDVyxRQUFRLEtBQVIsUUFBUSxRQWlDbkI7QUFFRCxNQUFNLENBQU4sSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ2xCLGlEQUFXLENBQUE7SUFDWCxrREFBWSxDQUFBO0lBQ1osK0NBQVUsQ0FBQTtBQUNkLENBQUMsRUFKVyxVQUFVLEtBQVYsVUFBVSxRQUlyQjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDdkIsb0NBQWlCLENBQUE7SUFDakIsd0NBQXFCLENBQUE7QUFDekIsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN0Qiw2REFBMkMsQ0FBQTtJQUMzQyx1REFBcUMsQ0FBQTtBQUN6QyxDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekI7QUFFRCxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3RCLG1DQUFpQixDQUFBO0lBQ2pCLCtCQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNqQix5Q0FBUSxDQUFBO0lBQ1IsNkNBQVUsQ0FBQTtJQUNWLDRDQUFVLENBQUE7QUFDZCxDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsUUFJcEI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3ZCLDZEQUFZLENBQUE7SUFDWix1RUFBaUIsQ0FBQTtJQUNqQixtRUFBZSxDQUFBO0FBQ25CLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsbUVBQWlCLENBQUE7SUFDakIsK0RBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSFcsYUFBYSxLQUFiLGFBQWEsUUFHeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlVHJhbnNmb3JtLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBBdXRvQ29tcGxldGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS1waWNrZXIvYXV0b2NvbXBsZXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcnVkTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY3J1ZC9jcnVkLWxpc3QvY3J1ZC1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlckRhdGFDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLWRhdGEvZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlclNlbGVjdGVkQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXItZGlhbG9nL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci1zZWxlY3RlZC9lbnRpdHktcGlja2VyLXNlbGVjdGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci9lbnRpdHktcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlciwgU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VudGl0eS1tZXRhZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFRyZWVOb2RlLCBDcnVkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vLi4vY29tcG9uZW50cy9jcnVkL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcnJlY3RvciB9IGZyb20gJy4vYmFzZS9jb3JyZWN0b3JzJztcclxuaW1wb3J0IHsgSVZhbGlkYXRvciB9IGZyb20gJy4vYmFzZS92YWxpZGF0b3JzJztcclxuaW1wb3J0IHsgRW51bUNvbnRyb2xQaWNrZXJUeXBlLCBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXksIEZvcm1TdGF0ZSwgU2hhcmVkRm9sZGVyVHlwZSB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dTZXR0aW5nLCBXb3JrZmxvd1NldHRpbmdOZXcgfSBmcm9tICcuL3dvcmtmbG93LXNjaGVtYSc7XHJcblxyXG5leHBvcnQgY2xhc3MgTW9kZWxTY2hlbWEge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgZGF0YVR5cGU/OiAnaW50JyB8ICdkZWNpbWFsJyB8ICdkYXRlJyB8ICdkYXRldGltZScgfCAnc3RyaW5nJyB8ICdib29sZWFuJyB8ICd0aW1lc3BhbicgPSAnc3RyaW5nJztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBNb2RlbFNjaGVtYSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRCYXNlIHtcclxuICAgIC8vIENvbXBvbmVudCBzdWJzY3JpYmUgLSBLaGkgc3ViY3JpYmUgbeG7mXQgY29tcG9uZW50IHRow6wgYWRkIHbDoG8gYXJyYXkgxJHhu4Mga2hpIGRlc3Ryb3kgdGjDrCB1bnN1YnNjcmliZVxyXG4gICAgY29tcG9uZW50U3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkQmFzZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRMaXN0U2V0dGluZyB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgb2JqZWN0TmFtZSA9ICcnO1xyXG4gICAgZW50aXR5S2V5ID0gJ2lkJztcclxuICAgIHNldHRpbmdLZXk/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlNZXRhZGF0YVNlcnZpY2U/OiBFbnRpdHlNZXRhZGF0YVNlcnZpY2U7XHJcbiAgICBtb2RlbFNjaGVtYXM/OiBNb2RlbFNjaGVtYVtdID0gW107XHJcbiAgICBjb2xzPzogQ29sdW1uU2NoZW1hQmFzZVtdID0gW107XHJcbiAgICBjb2x1bW5TZXR0aW5nPzogQ29sdW1uU2V0dGluZyA9IG5ldyBDb2x1bW5TZXR0aW5nKCk7XHJcbiAgICBwYWdlU2V0dGluZz86IFBhZ2VTZXR0aW5nID0gbmV3IFBhZ2VTZXR0aW5nKCk7XHJcbiAgICBoZWlnaHRUeXBlPzogSGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZGVmYXVsdDsgLy8gQ8OzIGN1c3RvbSBjaGnhu4F1IGNhbyBraMO0bmc6IFRoxrDhu51uZyBz4butIGThu6VuZyB0cm9uZyBkaWFsb2dcclxuICAgIGZpeEhlaWdodFR5cGVJbkRpYWxvZz89IHRydWU7XHJcbiAgICBtdWx0aXBsZUNoZWNrV2hlbkNsaWNrUm93ID0gdHJ1ZTtcclxuICAgIGN1c3RvbVdvcmtmbG93Q29kZVRyaW5oS3k6IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleSA9IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleS5NQUNfRElOSDtcclxuICAgIHN0aWNreUNvbHVtbiA9IGZhbHNlO1xyXG4gICAgdGFibGVOYW1lPzogc3RyaW5nO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcclxuICAgIHJlU2VsZWN0TGFzdEl0ZW0/PSB0cnVlOyAvLyBTZWxlY3QgbOG6oWkgaXRlbSBjdeG7kWkgY8O5bmcgxJHDoyBjaOG7jW4gY+G7p2EgZ3JpZFxyXG4gICAgZmlyZUV2ZW50V2hlblJlU2VsZWN0Pz0gZmFsc2U7XHJcbiAgICBhZHZhbmNlRGF0YT86IGFueSA9IHt9O1xyXG4gICAgdXNlV29ya2Zsb3dOZXc/OiBib29sZWFuID0gZmFsc2U7IC8vIFPhur0gYuG7jyDEkWkgdHJvbmcgdMawxqFuZyBsYWkga2hpIHRoYXkgdGjhur8gaG/DoG4gdG/DoG4gYuG6sW5nIHdvcmtmbG93IG5ld1xyXG4gICAgd29ya2Zsb3dTZXR0aW5nPzogV29ya2Zsb3dTZXR0aW5nO1xyXG4gICAgd29ya2Zsb3dTZXR0aW5nTmV3PzogV29ya2Zsb3dTZXR0aW5nTmV3O1xyXG4gICAgaXNXb3JrZmxvd1RyZWU/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB3b3JrZmxvd0NvbmZpZ0FkdmFuY2U/OiBXb3JrZmxvd0NvbmZpZ0FkdmFuY2U7XHJcbiAgICBkaXNwbGF5RmllbGQ6IHN0cmluZyB8ICgoaXRlbSkgPT4gc3RyaW5nKTsgLy8gdHLGsOG7nW5nIMSR4bqhaSBkaeG7h24gY2hvIGLhuqNuIGdoaSBsw6BtIHRpw6p1IMSR4buBIGhp4buDbiB0aOG7iyAocGjhu6VjIHbhu6UgY2hvIGPDoWMgZOG7i2NoIHbhu6Uga2jDoWMga2hhaSB0aMOhYylcclxuICAgIGhhc0N1c3RvbUhhbmRsZUNsaWNrUm93ID0gZmFsc2U7XHJcbiAgICBjaGVja0FsbG93VHJpbmhLeTogKHJvd0RhdGEpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcbiAgICBjaGVja1Blcm1pc2lvblRyaW5oS3kgPSBmYWxzZTtcclxuXHJcbiAgICBzaG93RWRpdExpbmsgPSB0cnVlO1xyXG5cclxuICAgIGhpZGRlbkhlYWRlciA9IGZhbHNlO1xyXG4gICAgaGlkZGVuUGFnZVNldHRpbmcgPSBmYWxzZTtcclxuICAgIGhpZGRlblRleHRQYWdlID0gZmFsc2U7XHJcbiAgICBoaWRkZW5Ub29sYmFyID0gZmFsc2U7XHJcbiAgICBoaWRkZW5CdXR0b25zID0gZmFsc2U7XHJcbiAgICBoaWRkZW5BZHZhbmNlU2VhcmNoID0gZmFsc2U7XHJcbiAgICBoaWRkZW5TYXZlU2V0dGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2V0dGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSBmYWxzZTtcclxuICAgIGhpZGRlblNldHRpbmdXb3JrZmxvdyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2V0dGluZ1dvcmtmbG93TmV3ID0gdHJ1ZTtcclxuICAgIGhpZGRlblBhZ2VUaXRsZSA9IGZhbHNlO1xyXG5cclxuICAgIGhpZGRlbkNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICBoaWRkZW5PcmRlckNvbHVtbiA9IGZhbHNlO1xyXG4gICAgaGlkZGVuV29ya2Zsb3dDb2x1bW4gPSBmYWxzZTtcclxuICAgIGhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gZmFsc2U7XHJcbiAgICBoaWRkZW5SZWZyZXNoID0gZmFsc2U7XHJcbiAgICBoaWRkZW5GaWx0ZXJSb3cgPSBmYWxzZTtcclxuICAgIGhpZGRlblRyaW5oS3kgPSB0cnVlO1xyXG4gICAgdXNlQmFzZVRyaW5oS3kgPSB0cnVlO1xyXG4gICAgaGlkZGVuV29ya2Zsb3dDb3JlU3RhdHVzID0gdHJ1ZTtcclxuICAgIHJlcXVpcmVkVmFuQmFuRGlBZnRlclRyaW5oS3kgPSBmYWxzZTtcclxuXHJcbiAgICBncm91cENvbHVtbj86IENvbHVtblNjaGVtYUJhc2U7XHJcblxyXG4gICAgc2hvd0V4cG9ydEFsbCA9IGZhbHNlO1xyXG4gICAgZXhwb3J0QWxsTW9kZWw6IEV4cG9ydEFsbE1vZGUgPSBFeHBvcnRBbGxNb2RlLkF1dG9HZXREYXRhO1xyXG4gICAgZXhwb3J0SXRlbXNNb2RlOiBFeHBvcnRJdGVtc01vZGUgPSBFeHBvcnRJdGVtc01vZGUuRnJvbUh0bWw7XHJcblxyXG4gICAgZW5hYmxlVmVyc2lvbiA9IGZhbHNlO1xyXG4gICAgc2hvd1ZlcnNpb25CdXR0b24gPSBmYWxzZTtcclxuICAgIHZlcnNpb25Nb2RlbD86IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcclxuICAgIHNob3dIaXN0b3J5ID0gZmFsc2U7XHJcbiAgICBoaXN0b3J5PzogYW55O1xyXG5cclxuICAgIGNvbG9yRmlsdGVyRmllbGQgPSAnJztcclxuICAgIGNvbG9yRmlsdGVyVGFibGU/OiBSb3dDb2xvck9wdGlvbltdID0gW107XHJcblxyXG4gICAgZW50aXR5TWV0YWRhdGFTZXR0aW5nPzogQ3J1ZEZvcm1TZXR0aW5nID0gbmV3IENydWRGb3JtU2V0dGluZygpO1xyXG5cclxuICAgIGZpZWxkU2VhcmNoVGV4dD86IHN0cmluZ1tdID0gW107XHJcbiAgICBmaWx0ZXJUZW1wbGF0ZUFkdnM/OiBGaWx0ZXJbXTtcclxuXHJcbiAgICBmdW5jdGlvbjogQ3J1ZExpc3RDdXN0b21GdW5jdGlvbiA9IG5ldyBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uKCk7XHJcblxyXG4gICAgcG9wdXBIZWFkZXI/PSAnJztcclxuICAgIHBvcHVwU2l6ZT86IFBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoKTtcclxuICAgIG1hc2tDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICBnZXRDdXN0b21EYXRhVHJpbmhLeTogKHJvd0RhdGEpID0+IGFueSA9IChyb3dEYXRhKSA9PiAoe30pO1xyXG4gICAgZ2V0TGFiZWxCdXR0b25UcmluaEt5OiAocm93RGF0YSkgPT4gc3RyaW5nID0gKHJvd0RhdGEpID0+ICdUcsOsbmgga8O9JztcclxuICAgIGNoZWNrUmVhZHlUb1RyaW5oS3k6ICgpID0+IGJvb2xlYW4gPSAoKSA9PiB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdFNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBXb3JrZmxvd0NvbmZpZ0FkdmFuY2Uge1xyXG4gICAgZ2V0V29ya2Zsb3dTZXR0aW5nOiAocm93RGF0YSkgPT4gV29ya2Zsb3dTZXR0aW5nTmV3O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3RDdXN0b21GdW5jdGlvbiB7XHJcbiAgICAvLyBDdXN0b21pemVcclxuICAgIGdldFNlYXJjaENvbnRyb2w/OiAoZmllbGQ6IHN0cmluZykgPT4gRm9ybVNjaGVtYUJhc2VbXSA9IChmaWVsZDogc3RyaW5nKSA9PiBudWxsO1xyXG4gICAgLy8gQXN5bmMgZnVuY3Rpb25cclxuICAgIG1vZGlmeUFkdmFuY2VTZWFjaE1vZGVsPzogKGRhdGE6IEFkdmFuY2VTZWFyY2hEYXRhLCBzZXR0aW5nOiBBZHZhbmNlU2VhcmNoU2V0dGluZykgPT4gUHJvbWlzZTx2b2lkPiA9IGFzeW5jIChkYXRhKSA9PiBudWxsO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzb25hbFNldHRpbmcge1xyXG4gICAgY29sdW1uU2V0dGluZz86IENvbHVtblNldHRpbmcgPSBuZXcgQ29sdW1uU2V0dGluZygpO1xyXG4gICAgcGFnZVNldHRpbmc/OiBQYWdlU2V0dGluZyA9IG5ldyBQYWdlU2V0dGluZygpO1xyXG4gICAgY29sb3JGaWx0ZXJGaWVsZCA9ICcnO1xyXG4gICAgY29sb3JGaWx0ZXJUYWJsZT86IFJvd0NvbG9yT3B0aW9uW10gPSBbXTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQZXJzb25hbFNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkTGlzdERhdGEgZXh0ZW5kcyBDcnVkQmFzZSB7XHJcbiAgICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICByZWFkeSA9IHRydWU7XHJcbiAgICBkYXRhU291cmNlPzogYW55W10gPSBbXTtcclxuICAgIHNlbGVjdGVkSXRlbXM/OiBhbnlbXSA9IFtdO1xyXG4gICAgc2VsZWN0ZWRJdGVtPzogYW55O1xyXG4gICAgc2VsZWN0ZWRJdGVtTGFzdD86IGFueTtcclxuICAgIHNlbGVjdGVkSWQ/OiBudW1iZXI7XHJcbiAgICB0b3RhbCA9IDA7XHJcbiAgICBpdGVtRGF0YT86IGFueTtcclxuICAgIGFkdmFuY2VEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgICBleHBhbmRlZFJvd0tleXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdERhdGEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVudGl0eU1lZGF0YURhdGFTZXR0aW5nIHtcclxuICAgIGRhdGE/OiBhbnkgPSB7fTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBFbnRpdHlNZWRhdGFEYXRhU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJvd0NvbG9yT3B0aW9uIHtcclxuICAgIGZpbHRlclZhbHVlID0gJyc7XHJcbiAgICBjb21wYXJlVHlwZSA9ICcnO1xyXG4gICAgY29sb3IgPSAnJztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBSb3dDb2xvck9wdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VTZXR0aW5nIHtcclxuICAgIHBhZ2UgPSAxO1xyXG4gICAgcGFnZVNpemUgPSAxNTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQYWdlU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmcge1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD86IHN0cmluZztcclxuICAgIHNvcnREaXI/OiAtMSB8IDAgfCAxIHwgMiA9IC0xO1xyXG4gICAgZ3JvdXBGaWVsZCA9ICcnO1xyXG4gICAgZGV0YWlscz86IENvbHVtblNldHRpbmdEZXRhaWxbXSA9IFtdO1xyXG4gICAgY29sdW1uUmVvcmRlcj9cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb2x1bW5TZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sdW1uU2V0dGluZ0RldGFpbCB7XHJcbiAgICBvcmRlcj86IG51bWJlcjtcclxuICAgIGNvbHVtbkNvZGU/OiBzdHJpbmc7XHJcbiAgICBjb2x1bW5OYW1lPzogc3RyaW5nO1xyXG4gICAgdmlzaWJsZT86IGJvb2xlYW47XHJcbiAgICB0ZXh0QWxpZ24/OiBUZXh0QWxpZ247XHJcbiAgICB3aWR0aD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRGb3JtRGF0YSBleHRlbmRzIENydWRCYXNlIHtcclxuICAgIGRhdGE/OiBhbnkgPSB7fTtcclxuICAgIHN1Ym1pdHRpbmc/PSBmYWxzZTtcclxuICAgIC8qKlxyXG4gICAgICogVHLhuqFuZyB0aMOhaSBj4bunYSBmb3JtIMSRYW5nIMSRxrDhu6NjIG3hu586IEzDoCBmb3JtIHRow6ptIG3hu5tpLCBoYXkgZm9ybSBz4butYSwgaGF5IGZvcm0geMOzYVxyXG4gICAgICovXHJcbiAgICBmb3JtU3RhdGU/OiBGb3JtU3RhdGUgPSBGb3JtU3RhdGUuQUREO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRGb3JtRGF0YSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZEZvcm1DdXN0b21GdW5jdGlvbiB7XHJcbiAgICAvLyBDdXN0b21pemVcclxuICAgIG1vZGlmeURhdGFBZnRlckdldENhY2hlPzogKGRhdGE6IGFueSkgPT4gdm9pZCA9IChkYXRhOiBhbnkpID0+IG51bGw7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDdXN0b21GdW5jdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRGb3JtU2V0dGluZyB7XHJcbiAgICBkaXNhYmxlQ2FjaGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuVHJpbmhLeSA9IHRydWU7XHJcbiAgICBzY2hlbWE/OiBGb3JtU2NoZW1hQmFzZVtdID0gW107XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlO1xyXG4gICAgYnVpbGRJblNjaGVtYT86IEZvcm1Db250cm9sQmFzZVtdID0gW107XHJcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZ1tdIHwgc3RyaW5nW11bXSA9IFtdO1xyXG4gICAgZmllbGREcm9wZG93bj86IHsgW2tleTogc3RyaW5nXTogRHJvcGRvd25Db250cm9sU2NoZW1hIH0gPSB7fTtcclxuICAgIGZpZWxkTmVlZEdldFJlZj86IHsgW2tleTogc3RyaW5nXTogVGV4dENvbnRyb2xTY2hlbWEgfSA9IHt9O1xyXG4gICAgZGlzcGxheUZpZWxkPzogc3RyaW5nIHwgKChpdGVtKSA9PiBzdHJpbmcpO1xyXG4gICAgZmlyc3RGb2N1c0NvbnRyb2w/OiBzdHJpbmc7XHJcbiAgICBmaWx0ZXJDaGVja0V4aXN0QnlWZXJzaW9uPzogRmlsdGVyW107XHJcbiAgICBkZWZhdWx0RmlsdGVyQ2hlY2tFeGlzdD86IEZpbHRlcltdIHwgKCgpID0+IEZpbHRlcltdKTtcclxuICAgIGN1c3RvbVdvcmtmbG93Q29kZVRyaW5oS3k6IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleSA9IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleS5NQUNfRElOSDtcclxuICAgIGVudGl0eU1ldGFkYXRhRGF0YT86IENydWRGb3JtRGF0YTtcclxuICAgIGVudGl0eU1ldGFkYXRhU2V0dGluZz86IENydWRGb3JtU2V0dGluZztcclxuICAgIGZ1bmN0aW9uPzogQ3J1ZEZvcm1DdXN0b21GdW5jdGlvbiA9IG5ldyBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uKCk7XHJcbiAgICBnZXRDdXN0b21EYXRhVHJpbmhLeTogKHJvd0RhdGEpID0+IGFueSA9IChyb3dEYXRhKSA9PiAoe30pO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRGb3JtU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkdmFuY2VTZWFyY2hEYXRhIGV4dGVuZHMgQ3J1ZEZvcm1EYXRhIHtcclxuICAgIGluaXREYXRhPzogYW55ID0ge307XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWR2YW5jZVNlYXJjaERhdGEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkdmFuY2VTZWFyY2hTZXR0aW5nIGV4dGVuZHMgQ3J1ZEZvcm1TZXR0aW5nIHtcclxuICAgIGZpZWxkS2V5ID0gJ19rJztcclxuICAgIGVudGl0eVBlcm1pc3Npb25TY2hlbWE/OiBGb3JtQ29udHJvbEJhc2VbXSA9IFtdO1xyXG4gICAga2VlcEluaXRTZWFyY2hEYXRhTm90TnVsbCA9IHRydWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWR2YW5jZVNlYXJjaFNldHRpbmcpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNjaGVtYUJhc2Uge1xyXG4gICAgZmllbGQ/OiBzdHJpbmc7XHJcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZztcclxuICAgIHR5cGU/OiAnYm9vbGVhbicgfCAnaW50JyB8ICdkZWNpbWFsJyB8ICdkYXRldGltZScgfCAnc3RyaW5nJyA9ICdzdHJpbmcnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTY2hlbWFCYXNlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVNjaGVtYUJhc2UgZXh0ZW5kcyBTY2hlbWFCYXNlIHtcclxuICAgIGxhYmVsPzogc3RyaW5nO1xyXG4gICAgZnVsbExhYmVsPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XHJcbiAgICBzaG93TGFiZWw/PSB0cnVlO1xyXG4gICAgZ1dpZHRoPz0gMTI7XHJcbiAgICBtZFdpZHRoPz0gNjtcclxuICAgIHdpZHRoPzogc3RyaW5nO1xyXG4gICAgY2xhc3M/PSAnJztcclxuICAgIHN0eWxlPzogYW55ID0ge307XHJcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XHJcbiAgICBoaWRkZW4/PSBmYWxzZTtcclxuICAgIGhpZGRlbkNoZWNrPzogKHJvb3RNb2RlbDogYW55LCBjdXJyZW50Tm9kZTogQ29udHJvbFRyZWVOb2RlKSA9PiBib29sZWFuO1xyXG4gICAgaGlkZGVuT25WaWV3Pz0gZmFsc2U7XHJcbiAgICB2aXNpYmxlSW5MaXN0Pz0gdHJ1ZTtcclxuICAgIG9wZXJhdG9yPzogT3BlcmF0b3I7XHJcbiAgICBncm91cENvZGU/PSAnJztcclxuICAgIGRlZmF1bHRWYWx1ZT86IGFueTtcclxuICAgIGZpZWxkQWxpYXM/PSAnJztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29udGFpbmVyU2NoZW1hIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgY29udHJvbHM6IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICBzaG93SW5Cb3g/PSB0cnVlO1xyXG4gICAgYm94U3R5bGU/OiBhbnk7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29udGFpbmVyU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgLy8gVXJsIMSR4buDIGzhuqV5IGThu68gbGnhu4d1ICoqKiBLSMOUTkcgU+G7rCBE4bukTkcgVFJPTkcgQ8OBQyBDQVNFIFBI4buUIEJJ4bq+TiwgQ0jhu4ggU+G7rCBE4bukTkcgxJDhu5BJIFbhu5pJIEZPUk0gS0jhuqJPIFPDgVQgKioqXHJcbiAgICBzZXJ2aWNlVXJpPz0gJyc7XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XHJcbiAgICByZWZGaWVsZHM/OiBSZWZGaWVsZFtdID0gW107XHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgZGF0YVNvdXJjZT86IGFueVtdID0gW107XHJcblxyXG4gICAgaXNTZXJ2ZXJMb2FkPz0gZmFsc2U7XHJcbiAgICBzZWFyY2hGaWVsZD86IHN0cmluZ1tdO1xyXG5cclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzZWxlY3RDaGlsZEl0ZW0/PSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uIG7hur91IGNo4buNbiBi4bqjbiBnaGkgY2hhXHJcblxyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcclxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+OyAvLyB0dW5ndHMgdGjDqm0ga2nhu4N1IGThu68gbGnhu4d1IGRlZmF1bHRGaWx0ZXJzIGzDoCBwcm9taXNlXHJcbiAgICBhZnRlckdldERhdGE/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBmdW5jU2V0RGVmYXVsdFZhbHVlPzogRnVuY3Rpb247XHJcblxyXG4gICAgZmllbGRWYWx1ZVBhcmVudD89ICd2YWx1ZSc7IC8vIFRyxrDhu51uZyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBsw6BtIGtow7NhIHThu6sgYuG6o25nIGNoYSBj4bunYSBpdGVtIGRyb3AgZG93biDEkcaw4bujYyBjaOG7jW5cclxuXHJcbiAgICBjYWxsYmFja0RhdGFGaW5pc2g/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBtb2RpZnlGaWx0ZXI/OiBGdW5jdGlvbjtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTGFiZWxTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICBmb3I/PSAnJztcclxuICAgIGlzSHRtbD89IGZhbHNlO1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgaW5kZXhMYWJlbD86IG51bWJlcjtcclxuICAgIHRleHQ/PSAnJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTGFiZWxTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRpdGxlU2NoZW1hIGV4dGVuZHMgTGFiZWxTY2hlbWEge1xyXG4gICAgY2xhc3M/PSAndGl0bGUtZ3JvdXAgdGV4dC1ib2xkJztcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUaXRsZVNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybUNvbnRyb2xCYXNlIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgX2NvbXBvbmVudD86IGFueTsgLy8gQ29tcG9uZW50IGPhu6dhIHNjaGVtYSBraGkga2jhu59pIHThuqFvXHJcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZzsgLy8gU+G7rSBk4bulbmcgdHJvbmcgdGFibGUgc2NoZW1hXHJcbiAgICBhdXRvZm9jdXM/PSBmYWxzZTtcclxuICAgIHZhbGlkYXRvcnM/OiBJVmFsaWRhdG9yW10gPSBbXTtcclxuICAgIGNvcnJlY3RvcnM/OiBJQ29ycmVjdG9yW10gPSBbXTtcclxuICAgIHJlcXVpcmVkPz0gZmFsc2U7XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gZmFsc2U7XHJcbiAgICBvbkNoYW5nZWQ/OiBGdW5jdGlvbjtcclxuICAgIHRyaWdnZXJMb2FkQ2hpbGQ/OiBGdW5jdGlvbjtcclxuICAgIGhhc09wZXJhdG9yQ2FuQm8/PSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtQ29udHJvbEJhc2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIC8qKiBDb3B5IHThu6sgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSAqL1xyXG4gICAgLy8gVXJsIMSR4buDIGzhuqV5IGThu68gbGnhu4d1ICoqKiBLSMOUTkcgU+G7rCBE4bukTkcgVFJPTkcgQ8OBQyBDQVNFIFBI4buUIEJJ4bq+TiwgQ0jhu4ggU+G7rCBE4bukTkcgxJDhu5BJIFbhu5pJIEZPUk0gS0jhuqJPIFPDgVQgKioqXHJcbiAgICBzZXJ2aWNlVXJpPz0gJyc7XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XHJcbiAgICByZWZGaWVsZHM/OiBSZWZGaWVsZFtdID0gW107XHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG5cclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgc2VhcmNoRmllbGQ/OiBzdHJpbmdbXTtcclxuXHJcbiAgICBpc1RyZWU/PSBmYWxzZTtcclxuICAgIGZpZWxkVHJlZT86IHN0cmluZztcclxuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG5cclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXHJcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjsgLy8gdHVuZ3RzIHRow6ptIGtp4buDdSBk4buvIGxp4buHdSBkZWZhdWx0RmlsdGVycyBsw6AgcHJvbWlzZVxyXG4gICAgYmluZGluZ0ZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47IC8vIHR1bmd0cyB0aMOqbSBraeG7g3UgZOG7ryBsaeG7h3UgZGVmYXVsdEZpbHRlcnMgbMOgIHByb21pc2VcclxuICAgIGFmdGVyR2V0RGF0YT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGZ1bmNTZXREZWZhdWx0VmFsdWU/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBwYXJlbnRGaWVsZD86IHN0cmluZzsgLy8gQ29sdW1uIHTGsMahbmcg4bupbmcgdHJvbmcgdGFibGUgc3FsIHNlcnZlci5cclxuICAgIGZpZWxkVmFsdWVQYXJlbnQ/PSAndmFsdWUnOyAvLyBUcsaw4budbmcgc+G7rSBk4bulbmcgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgbMOgbSBraMOzYSB04burIGLhuqNuZyBjaGEgY+G7p2EgaXRlbSBkcm9wIGRvd24gxJHGsOG7o2MgY2jhu41uXHJcblxyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgZmlyZUNhbGxCYWNrSW5zaWRlPz0gdHJ1ZTtcclxuICAgIG1vZGlmeUZpbHRlcj86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICAvKiogRW5kIGNvcHkgdOG7qyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlICovXHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZXh0Q29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBzZWxlY3RBbGxUZXh0Pz0gZmFsc2U7IC8vIENo4buNbiB04bqldCBj4bqjIHRleHQga2hpIGZvY3VzXHJcblxyXG4gICAgcGxhY2Vob2xkZXI/PSAnJztcclxuICAgIGRhdGFGb3JtYXQ/OiAndGV4dCcgfCAncGFzc3dvcmQnIHwgJ251bWJlcicgfCAnZW1haWwnIHwgJ3Bob25lJyB8ICdmYXgnIHwgJ21vbmV5JyB8ICdtb25leWludCcgfCAnYW1vdW50JyA9ICd0ZXh0JztcclxuICAgIG1heExlbmd0aD86IG51bWJlcjtcclxuICAgIG1pbj89IDA7XHJcbiAgICBtYXg/PSA5OTk5OTk5OTtcclxuXHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG5cclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRleHRDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZXh0Q29udHJvbFNjaGVtYVdpdGhTZXJ2aWNlIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2Uge1xyXG4gICAgcGxhY2Vob2xkZXI/PSAnJztcclxuICAgIGRhdGFGb3JtYXQ/OiAndGV4dCcgfCAnbnVtYmVyJyB8ICdlbWFpbCcgfCAncGhvbmUnIHwgJ2ZheCcgfCAnbW9uZXknIHwgJ21vbmV5aW50JyB8ICdhbW91bnQnID0gJ3RleHQnO1xyXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUZXh0Q29udHJvbFNjaGVtYVdpdGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNYXNrQ29udHJvbFNjaGVtYSBleHRlbmRzIFRleHRDb250cm9sU2NoZW1hIHtcclxuICAgIG1hc2tUeXBlPzogJ2RlY2ltYWwnIHwgJ2ludCcgPSAnaW50JztcclxuICAgIG1pbj89IDA7XHJcbiAgICBtYXg/PSA5OTk5OTk5OTk5O1xyXG4gICAgcHJlZml4Pz0gJyc7XHJcbiAgICBzdWZmaXg/PSAnJztcclxuICAgIGRlY2ltYWxQbGFjZXM/PSAyO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE1hc2tDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBUZXh0Q29udHJvbFNjaGVtYSB7XHJcbiAgICBtYXNrVHlwZT86ICdkZWNpbWFsJyB8ICdpbnQnO1xyXG4gICAgbWluPz0gMDtcclxuICAgIG1heD89IDk5OTk5OTk5OTk7XHJcbiAgICBwcmVmaXg/PSAnJztcclxuICAgIHN1ZmZpeD89ICcnO1xyXG4gICAgZGVjaW1hbFBsYWNlcz89IDI7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRlVGltZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgYXBwZW5kVG8/PSAnYm9keSc7XHJcbiAgICBwYW5lbENsYXNzPz0gJyc7XHJcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICAgIHNob3dUaW1lPz0gZmFsc2U7XHJcbiAgICBzaG93SWNvbj89IHRydWU7XHJcbiAgICBmb3JtYXQ/OiAnbm9ybWFsJyB8ICdmcm9tTm93JyA9ICdmcm9tTm93JztcclxuICAgIHNob3dPbkZvY3VzPz0gdHJ1ZTtcclxuICAgIG1pbkRhdGU/OiBEYXRlID0gbnVsbDtcclxuICAgIG1heERhdGU/OiBEYXRlID0gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRGF0ZVRpbWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5wbGFjZWhvbGRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5zaG93VGltZSA/ICdkZC9NTS95eXl5IGhoOm1tJyA6ICdkZC9NTS95eXl5JztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRlVGltZVJhbmdlQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGVUaW1lQ29udHJvbFNjaGVtYSB7XHJcbiAgICBzaG93SWNvbj89IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGVUaW1lQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcclxuXHJcbiAgICAvLyAjUHJvcGVydHkgb3ZlcnJpZGVcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2U7XHJcbiAgICAvLyAjRW5kIHByb3BlcnR5IG92ZXJyaWRlXHJcblxyXG4gICAgcmV0dXJuVHlwZT86ICd2YWx1ZScgfCAnb2JqZWN0JyA9ICd2YWx1ZSc7XHJcblxyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgbGltaXQ/PSAxMDAwO1xyXG4gICAgdGl0bGU/PSAnICc7XHJcbiAgICBjb2x1bW5zPzogRW50aXR5UGlja2VyQ29sdW1uW107XHJcbiAgICBmaWVsZFNlYXJjaFRleHQ/OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZGF0YUluaXQ/OiBhbnkgPSB7fTtcclxuICAgIGFkdmFuY2VTZWFyY2hNb2RlbD86IGFueSA9IHt9O1xyXG4gICAgb25TZWFyY2hGb3JtSW5pdGlhbGl6ZWQ/OiBGdW5jdGlvbjtcclxuICAgIG9uRm9ybUV2ZW50PzogRnVuY3Rpb247XHJcbiAgICBvblNlbGVjdEVudGl0eT86IEZ1bmN0aW9uOyAvLyBu4bq/dSBmdW5jdGlvbiBraMOhYyBudWxsIHbDoCByZXR1cm4gdHJ1ZSBz4bq9IGNobyBwaMOpcCBt4bufIGRpYWxvZ1xyXG4gICAgYWZ0ZXJDb250ZW50TGVmdEluaXQ/OiAoY3J1ZExpc3Q6IENydWRMaXN0Q29tcG9uZW50KSA9PiB2b2lkOyAvLyBTYXUga2hpIGPDoWMgdGVtcGxhdGUgY29udGVudCBpbml0XHJcbiAgICBhZnRlckNvbnRlbnRSaWdodEluaXQ/OiAoY3J1ZExpc3Q6IENydWRMaXN0Q29tcG9uZW50KSA9PiB2b2lkOyAvLyBTYXUga2hpIGPDoWMgdGVtcGxhdGUgY29udGVudCBpbml0XHJcbiAgICBhZnRlckdldERhdGE/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlckNvbXBvbmVudCkgPT4gdm9pZDtcclxuICAgIGFmdGVyR2V0RGF0YVVuUGlja2VkPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJEYXRhQ29tcG9uZW50KSA9PiB2b2lkO1xyXG4gICAgYWZ0ZXJHZXREYXRhUGlja2VkPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJTZWxlY3RlZENvbXBvbmVudCkgPT4gdm9pZDtcclxuXHJcbiAgICAvLyBDw7Mgc+G7rSBk4bulbmcgcGx1c1VybCDhu58gbcOgbiBow6xuaCBjaMOtbmggRW50aXR5UGlja2VyIGhheSBraMO0bmcuXHJcbiAgICB1c2VEZWZhdWx0UGx1c2xVcmxJbkxpc3Q/PSBmYWxzZTtcclxuXHJcbiAgICAvLyBDw7Mgc+G7rSBk4bulbmcgZGVmYXVsdEZpbHRlciBraGkgdMOsbSBraeG6v20gZGFuaCBzw6FjaCDhu58gbcOgbiBow6xuaCBjaMOtbmggRW50aXR5UGlja2VyLlxyXG4gICAgdXNlRGVmYXVsdEZpbHRlckluTGlzdD89IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBFbnRpdHlQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSB7XHJcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICAgIGRhdGFUeXBlPzogRW51bUNvbnRyb2xQaWNrZXJUeXBlID0gRW51bUNvbnRyb2xQaWNrZXJUeXBlLlVTRVI7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIG1vZGlmeUluaXRTZWFyY2hEYXRhPzogRnVuY3Rpb247IC8vIFPhu60gZOG7pW5nIMSR4buDIG1vZGlmeSBkYXRhIGPhu6dhIHBo4bqnbiBzZWFyY2gsIHRoxrDhu51uZyDEkeG7gyBzZXQgaW5pdCBkYXRhIGR5bmFtaWMgdGhlbyBuaHUgY+G6p3VcclxuICAgIGNhbGxCYWNrPzogeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbiB9O1xyXG4gICAgb25SZWFkeT86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIG1vZGlmeUNvbnRyb2w/OiBGdW5jdGlvbjsgLy8gU+G7rSBk4bulbmcgxJHhu4MgbW9kaWZ5IHNjaGVtYSBiYXNlXHJcbiAgICBuZWVkQ2xvbmU/PSBmYWxzZTsgLy8gU+G7rSBk4bulbmcgdHJvbmcgdGFibGUgc2NoZW1hLCBraGkgZGF0YXNvdXJjZSBj4bunYSBt4buZdCBj4buZdCB0csOqbiBt4buXaSBkw7JuZyBsw6Aga2jDoWMgbmhhdSBj4bqnbiBzZXQgbmVlZENsb25lID0gdHJ1ZVxcXHJcbiAgICBhZnRlckdldERhdGFEcm9wZG93bj86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogQXV0b0NvbXBsZXRlUGlja2VyQ29tcG9uZW50KSA9PiB2b2lkO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdyYXBQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSB7XHJcbiAgICBkYXRhVHlwZT86IEVudW1Db250cm9sUGlja2VyVHlwZSA9IEVudW1Db250cm9sUGlja2VyVHlwZS5VU0VSO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFdyYXBQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21Db250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEN1c3RvbUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbG9yUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb2xvclBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBTcGFuQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBzb3VyY2VGaWVsZD86IHN0cmluZztcclxuICAgIGlzaHRtbD89IGZhbHNlO1xyXG4gICAgZWRpdGFibGU/PSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTcGFuQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sb3JDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbG9yQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgS2V5VmFsdWVDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBLZXlWYWx1ZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpbGVNYW5hZ2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICBhY2NlcHQ/OiBzdHJpbmc7XHJcbiAgICBtYXhGaWxlU2l6ZT89IDEwMDAwMDAwMDtcclxuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5Pz0gJ3swfTogUXXDoSBkdW5nIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbD89ICdkdW5nIGzGsOG7o25nIHThu5FpIMSRYSBsw6AgezB9Lic7XHJcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeT89ICd7MH06IEtow7RuZyDEkcO6bmcgxJHhu4tuaCBk4bqhbmcgZmlsZSwgJztcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWw/PSAnxJHhu4tuaCBk4bqhbmcgZmlsZSBjaG8gcGjDqXA6IHswfS4nO1xyXG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5Pz0gJ1F1w6Egc+G7kSBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcclxuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsPz0gJ3Thu5FpIMSRYSB7MH0gZmlsZS4nO1xyXG4gICAgbW9kZT86IEZpbGVNYW5hZ2VyTW9kZSB8IEZpbGVVcGxvYWRNb2RlID0gRmlsZU1hbmFnZXJNb2RlLm11bHRpcGxlO1xyXG4gICAgbGF5b3V0PzogRW51bUZpbGVMYXlvdXQgPSBFbnVtRmlsZUxheW91dC5MSVNUO1xyXG4gICAgcmVhZG9ubHk/PSBmYWxzZTtcclxuXHJcbiAgICAvLyBTZXJ2aWNlIGTDuW5nIMSR4buDIGzhuqV5IGRhdGFzb3VyY2UgY+G7p2Egbmhp4buBdSBjb250cm9sIG3hu5l0IGzhuqduLlxyXG4gICAgZmlsZURhdGFTZXJ2aWNlPzogRmlsZURhdGFTZXJ2aWNlO1xyXG5cclxuICAgIC8vIELhu5kgMyBrZXkgxJHhu4MgbOG6pXkgdGjGsCBt4bulYyBn4buRYy5cclxuICAgIHNlcnZpY2VDb2RlPzogc3RyaW5nO1xyXG4gICAgZW50aXR5Pzogc3RyaW5nO1xyXG4gICAgZW50aXR5S2V5Pzogc3RyaW5nO1xyXG5cclxuICAgIC8vIFTDqm4gdGjGsCBt4bulYyBn4buRYyBraGkgaGnhu4NuIHRo4buLIHRyw6puIGJyZWFkY3J1bWJzLlxyXG4gICAgcm9vdEZvbGRlck5hbWU/OiBzdHJpbmc7XHJcblxyXG4gICAgLy8gVHLGsOG7nW5nIGjhu6NwIOG7nyB0cm9uZyBmb3JtLCBkw7luZyB0csaw4budbmcgbsOgeSDEkeG7gyBs4bqleVxyXG4gICAgLy8gZW50aXR5S2V5IHThu6sgbW9kZWwuZGF0YSB0aGF5IHbDrCB0cnV54buBbiB2w6BvIGVudGl0eUtleVxyXG4gICAgZW50aXR5S2V5RmllbGQ/PSAnaWQnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb250cm9sU2NoZW1hIGV4dGVuZHMgRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hIHtcclxuICAgIG1vZGU/PSBGaWxlVXBsb2FkTW9kZS51c2luZ1NlcnZpY2VGaWxlO1xyXG4gICAgbWRXaWR0aD89IDY7XHJcbiAgICBzaGFyZWRGb2xkZXJUeXBlPzogU2hhcmVkRm9sZGVyVHlwZSA9IFNoYXJlZEZvbGRlclR5cGUuVGVtcHQ7XHJcblxyXG4gICAgaGlkZGVuQnV0dG9ucz89IGZhbHNlO1xyXG4gICAgZGlzYWJsZWQ/PSBmYWxzZTtcclxuICAgIHJlYWRvbmx5Pz0gZmFsc2U7XHJcbiAgICBhdXRvU2F2ZWQ/PSB0cnVlO1xyXG5cclxuICAgIGVuYWJsZVNjYW4/PSBmYWxzZTtcclxuICAgIGV4dHJhY3RaaXBGaWxlPz0gZmFsc2U7XHJcbiAgICBlbmFibGVEcml2ZUZpbGU/PSBmYWxzZTtcclxuXHJcbiAgICBzaG93RG93bmxvYWRGaWxlPz0gdHJ1ZTtcclxuICAgIHNob3dEZWxldGVGaWxlPz0gdHJ1ZTtcclxuICAgIHNob3dQcmludEZpbGU/PSB0cnVlO1xyXG4gICAgbWF4RmlsZVNpemU/PSAxMDAwMDAwMDA7IC8vIDEwMCBNQlxyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZVN1bW1hcnk/PSAnezB9OiBRdcOhIGR1bmcgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlRGV0YWlsPz0gJ2R1bmcgbMaw4bujbmcgdOG7kWkgxJFhIGzDoCB7MH0uJztcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VTdW1tYXJ5Pz0gJ3swfTogS2jDtG5nIMSRw7puZyDEkeG7i25oIGThuqFuZyBmaWxlLCAnO1xyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZURldGFpbD89ICfEkeG7i25oIGThuqFuZyBmaWxlIGNobyBwaMOpcDogezB9Lic7XHJcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZVN1bW1hcnk/PSAnUXXDoSBz4buRIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xyXG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VEZXRhaWw/PSAndOG7kWkgxJFhIHswfSBmaWxlLic7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZpbGVVcGxvYWRDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTd2l0Y2hDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBoaWRkZW5MYWJlbD89IGZhbHNlOyAvLyBTZXQgPSB0cnVlIGNo4bunIHnhur91IGtoaSBkw7luZyB0cm9uZyB0YWJsZSBzY2hlbWEgxJHhu4Mg4bqpbiBsYWJlbCDEkWksIHbDrCBsYWJlbCDEkcOjIGPDsyB0csOqbiB0acOqdSDEkeG7gSBj4buZdFxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENoZWNrYm94Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIHNob3dMYWJlbD89IGZhbHNlO1xyXG4gICAgYnRDbGFzcz89ICdwLWJ1dHRvbi10ZXh0JztcclxuICAgIGljb24/O1xyXG4gICAgYnRTdHlsZT89IHsgd2lkdGg6ICdhdXRvJyB9O1xyXG4gICAgb25DbGljaz86IEZ1bmN0aW9uO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEJ1dHRvbkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIHRlbXBsYXRlOiBhbnk7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGVtcGxhdGVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZXh0QXJlYUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgcm93cz89IDU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dEFyZWFDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGxpbWl0Pz0gMjA7IC8vIEdp4bubaSBo4bqhbiBz4buRIG5nxrDhu51pIGTDuW5nIHThu5FpIMSRYSDEkcaw4bujYyBwaWNrXHJcbiAgICB0aXRsZT89ICdDaOG7jW4gbmfGsOG7nWkgZMO5bmcnO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIHBhcmVudE9yZ0NvZGU/OiBzdHJpbmc7XHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgbGF6eUxvYWRPcmdhbml6YXRpb24/PSBmYWxzZTtcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ2Z1bGxOYW1lTmV3JztcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHJldHVyblR5cGU/OiAndmFsdWUnIHwgJ29iamVjdCcgPSAndmFsdWUnO1xyXG4gICAgb25SZWFkeT86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVXNlclBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvQ2F1VG9DaHVjUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGxpbWl0Pz0gMjA7IC8vIEdp4bubaSBo4bqhbiBz4buRIGLhuqNuIGdoaSB04buRaSDEkWEgxJHGsOG7o2MgcGlja1xyXG4gICAgdGl0bGU/PSAnQ2jhu41uIMSRxqFuIHbhu4snO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBvblJlYWR5PzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgcGFyZW50T3JnSWQ/OiBudW1iZXI7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBpc1VzaW5nSWQ/PSB0cnVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE9yZ2FuaXphdGlvblBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgcGFyZW50T3JnSWQ/OiBudW1iZXI7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBpc1VzaW5nSWQ/PSB0cnVlO1xyXG4gICAgZGlzYWJsZWRQYXJlbnRJdGVtPz0gdHJ1ZTtcclxuICAgIHJvb3RQYXJlbnRJZD86IHN0cmluZyA9IG51bGw7XHJcbiAgICBkaXNhYmxlZD89IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvQ2F1VG9DaHVjQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRWRpdG9yQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBtb2RlPzogJ2Jhc2ljJyB8ICdtZWRpdW0nIHwgJ2Z1bGwnIHwgJ3NpbXBsZScgPSAnYmFzaWMnO1xyXG4gICAgaGVpZ2h0Pz0gMjUwO1xyXG4gICAgaW5pdD86IGFueTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBFZGl0b3JDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcclxuICAgIGRhdGFTb3VyY2U/OiBhbnkgfCBGdW5jdGlvbjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEYXRhU291cmNlQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xyXG4gICAgYXBwZW5kVG8/PSAnYm9keSc7XHJcbiAgICBwYW5lbENsYXNzPz0gJyc7XHJcbiAgICBwbGFjZWhvbGRlcj89ICdDaOG7jW4nO1xyXG4gICAgc2VsZWN0ZWRJdGVtc0xhYmVsPz0gJ8SQw6MgY2jhu41uIHswfSBt4bulYyc7XHJcbiAgICBzZWxlY3RlZEFsbEl0ZW1MYWJlbD89ICfEkMOjIGNo4buNbiB04bqldCBj4bqjJztcclxuICAgIHNob3dDbGVhcj89IHRydWU7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSBmYWxzZTtcclxuICAgIGdlbmVyYXRlVG9vbHRpcD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBtYXhTZWxlY3RlZExhYmVscz89IDU7XHJcbiAgICBtYXhJdGVtRGlzcGxheT89IDUwO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBuZWVkQ2xvbmU/PSBmYWxzZTsgLy8gU+G7rSBk4bulbmcgdHJvbmcgdGFibGUgc2NoZW1hLCBraGkgZGF0YXNvdXJjZSBj4bunYSBt4buZdCBj4buZdCB0csOqbiBt4buXaSBkw7JuZyBsw6Aga2jDoWMgbmhhdSBj4bqnbiBzZXQgbmVlZENsb25lID0gdHJ1ZVxyXG4gICAgdGVtcGxhdGVJdGVtPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHRlbXBsYXRlU2VsZWN0ZWRJdGVtPzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHF1aWNrQWRkPz0gZmFsc2U7XHJcbiAgICBjb2xzPzogRm9ybVNjaGVtYUJhc2VbXTtcclxuICAgIGluaXREYXRhPzogYW55ID0ge307XHJcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgd2lkdGg6IDc1MCwgaGVpZ2h0OiA0MDAgfSk7XHJcblxyXG4gICAgbG9hZEluRmlyc3REaXNwbGF5Pz0gdHJ1ZTtcclxuXHJcbiAgICBhdXRvR2V0RGF0YT89IHRydWU7XHJcblxyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuXHJcbiAgICBhdXRvRGlzcGxheUZpcnN0Pz0gZmFsc2U7XHJcbiAgICBub3RJbkNydWRGb3JtPz0gZmFsc2U7XHJcbiAgICBzZWFyY2hNdWx0aXBsZT89IHRydWU7XHJcbiAgICBkaXNhYmxlRGlzcGxheUZpZWxkU2VydmVyU2VhcmNoPz0gZmFsc2U7XHJcblxyXG4gICAgbG9hZE9uSW5pdD89IGZhbHNlO1xyXG4gICAgYWxsb3dMb2FkRGF0YVdoZW5QYXJlbnROdWxsPz0gZmFsc2U7XHJcblxyXG4gICAgZGlzYWJsZWRQYXJlbnRJdGVtPz0gdHJ1ZTtcclxuICAgIG9uQWRqdXN0ZWRWYWx1ZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGhpZGVObz89IGZhbHNlO1xyXG4gICAgaGlkZVN0cmVldD89IGZhbHNlO1xyXG4gICAgaGlkZVdhcmQ/PSBmYWxzZTtcclxuICAgIGhpZGVEaXN0cmljdD89IGZhbHNlO1xyXG4gICAgcmVxdWlyZWRObz89IHRydWU7XHJcbiAgICByZXF1aXJlZFN0cmVldD89IHRydWU7XHJcbiAgICByZXF1aXJlZFdhcmQ/PSB0cnVlO1xyXG4gICAgcmVxdWlyZWREaXN0cmljdD89IHRydWU7XHJcbiAgICByZXF1aXJlZFByb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIHdhcmRUb1Byb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIG5vV2lkdGg/PSAxO1xyXG4gICAgc3RyZWV0V2lkdGg/PSAzO1xyXG4gICAgd2FyZFdpZHRoPz0gMztcclxuICAgIGRpc3RyaWN0V2lkdGg/PSAyO1xyXG4gICAgcHJvdmluY2VXaWR0aD89IDM7XHJcbiAgICBzaG93SW5Cb3g/PSBmYWxzZTtcclxuXHJcbiAgICBoaWRlSG9sZGVyPz0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZGRyZXNzQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVmFuQmFuUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICB1c2VWYkRlbj89IHRydWU7XHJcbiAgICB1c2VWYkRpPz0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBWYW5CYW5QaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb25nVmllY1BpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgc2VydmljZUNvZGU/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHk/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlLZXk/OiBzdHJpbmc7XHJcbiAgICBzdGF0ZT86IGFueSA9IHt9O1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbmdWaWVjUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIHtcclxuICAgIHBsYWNlaG9sZGVyPz0gJyc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgbWluTGVuZ3RoRmlsdGVyPz0gMTtcclxuICAgIGFwcGVuZFRvPzogc3RyaW5nID0gJ2JvZHknO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEF1dG9Db21wbGV0ZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnID0gJ2hvcml6b250YWwnO1xyXG4gICAgYWxpZ24/OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnbGVmdCc7XHJcbiAgICBvbkFkanVzdGVkVmFsdWU/OiBGdW5jdGlvbjtcclxuICAgIGRpc2FibGVDaGVjaz86ICgpID0+IGJvb2xlYW47XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENoZWNrQm94TGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIGxheW91dD86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XHJcbiAgICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcclxuICAgIGNsYXNzUGx1cz89ICcnO1xyXG4gICAgZnJlZVRleHQ/PSAnJztcclxuICAgIHBDb2xDbGFzcz86IG51bWJlcjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDaGVja0JveExpc3RDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICByb3dUZW1wbGF0ZTogRm9ybVNjaGVtYUJhc2VbXTtcclxuICAgIHJvd0J1dHRvbnM/OiAocm93RGF0YSkgPT4gTWVudUl0ZW1bXTtcclxuICAgIGZvb3RlckJ1dHRvbnM/OiB7XHJcbiAgICAgICAgaWNvbj86IHN0cmluZztcclxuICAgICAgICBsYWJlbD86IHN0cmluZztcclxuICAgICAgICBjbGFzcz86IHN0cmluZztcclxuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICB9W107XHJcbiAgICBzaG93TnVtYmVyPz0gdHJ1ZTtcclxuICAgIHNob3dGdW5jdGlvbj89IHRydWU7XHJcbiAgICBzaG93Rm9vdGVyPz0gdHJ1ZTtcclxuICAgIHNob3dTYXZlPz0gZmFsc2U7XHJcbiAgICBzaG93RWRpdD89IGZhbHNlO1xyXG4gICAgc2hvd0RlbGV0ZT89IHRydWU7XHJcbiAgICBzaG93QWRkPz0gdHJ1ZTtcclxuICAgIGVuYWJsZVJlb3JkZXJSb3c/PSBmYWxzZTtcclxuICAgIG9uUmVvcmRlcmVkPzogRnVuY3Rpb247XHJcbiAgICBlbmFibGVBZGRNdWx0aT89IGZhbHNlO1xyXG4gICAgcGlja2VyQ29udHJvbEZpZWxkPzogc3RyaW5nO1xyXG4gICAgaXNVbmlxdWU/PSB0cnVlO1xyXG4gICAgZW5hYmxlUGFnaW5nPz0gZmFsc2U7XHJcbiAgICBsaW1pdD89IDUwO1xyXG4gICAgaW5pdFJvd0NvdW50Pz0gMTtcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuXHJcbiAgICBvbkFkZGluZz86IEZ1bmN0aW9uO1xyXG4gICAgb25BZGRlZD86IEZ1bmN0aW9uO1xyXG4gICAgb25TYXZlPzogRnVuY3Rpb247XHJcbiAgICBvbk1lc3NhZ2U/OiBGdW5jdGlvbjtcclxuICAgIG9uRGVsZXRpbmc/OiBGdW5jdGlvbjtcclxuICAgIG9uRGVsZXRlZD86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUYWJsZVNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sdW1uU2NoZW1hQmFzZSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2Uge1xyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgICBzaG93RWRpdExpbms/PSBmYWxzZTtcclxuICAgIGNvbFNwYW4/OiBudW1iZXI7XHJcbiAgICBncm91cD89IGZhbHNlO1xyXG4gICAgdmlzaWJsZT89IHRydWU7XHJcbiAgICByZW1vdmVPbkluaXQ/PSBmYWxzZTtcclxuICAgIGFsbG93RmlsdGVyPz0gdHJ1ZTtcclxuICAgIHRleHRBbGlnbj86IFRleHRBbGlnbjtcclxuICAgIGNlbGxDbGFzcz86IHN0cmluZztcclxuICAgIGZ1bGxUZXh0U2VhcmNoPz0gZmFsc2U7XHJcbiAgICByYXdDb2x1bW4/OiBDb2x1bW5TY2hlbWFCYXNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuXHJcbiAgICBkYXRhVHlwZVJlZkZpZWxkPzogRGF0YVR5cGUgfCBzdHJpbmc7XHJcbiAgICBmb3JjZUdldERhdGE/PSBmYWxzZTtcclxuICAgIGZ1bmNHZXRSZWZEYXRhUm93PzogKHJlZkl0ZW1zKSA9PiB7fTtcclxuICAgIGZ1bmNTZXRWYWx1ZVJvdz86IChyb3dJdGVtLCBkYXRhKSA9PiB2b2lkO1xyXG4gICAgcm93U3Bhbj89IDE7XHJcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xyXG4gICAgY29udHJvbFR5cGU/OiBDb250cm9sVHlwZSA9IENvbnRyb2xUeXBlLnRleHRib3g7XHJcbiAgICB0ZW1wbGF0ZUZpbHRlcj86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBmaWVsZEZpbHRlcj86IHN0cmluZztcclxuICAgIGRpc2FibGVDaGVja0JveD89IHRydWU7XHJcbiAgICAvLyBUaOG7qSB04buxIMawdSB0acOqbiBnZXQgcmVmIGRhdGEgY+G7p2EgY3J1ZC1saXN0XHJcbiAgICAvLyBO4bq/dSBjw7MgdmFsdWUgbmdoxKlhIGzDoCBuaOG7r25nIGPhu5l0IG7DoHkgY+G6p24gcGjhuqNpIGzhuqV5IGThu68gbGnhu4d1IHhvbmcgcuG7k2kgbeG7m2kgxJHhur9uIGPhu5l0IGtow6FjXHJcbiAgICBvcmRlcj86IG51bWJlcjtcclxuICAgIG1heFdvcmREaXNwbGF5PzogbnVtYmVyO1xyXG4gICAgbWF4TGVuZ3RoRGlzcGxheT86IG51bWJlcjtcclxuXHJcbiAgICBtZFdpZHRoSW5TZWFyY2g/PSAxMjtcclxuXHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5O1xyXG5cclxuICAgIHNob3dDbGVhcj89IHRydWU7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG5cclxuICAgIHBpcGU/OiBQaXBlVHJhbnNmb3JtO1xyXG4gICAgYXN5bmNQaXBlPz0gdHJ1ZTtcclxuICAgIHNvcnQ/PSB0cnVlO1xyXG4gICAgZXh0ZW5kRGF0YT86IGFueSA9IHt9O1xyXG5cclxuICAgIGdlbmVyYXRlZFJlZkNvbHVtbj86IGFueTsgLy8gVE9ETzogTmFtTkggdGjDqm0gdOG6oW0gdGhlbyB5w6p1IGPhuqd1IGPhu6dhIExpbmgsIExpbmggY2hlY2sgbOG6oWkgc2F1XHJcbiAgICBoYXNPcGVyYXRvckNhbkJvPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sdW1uU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25PcHRpb25zIHtcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBmaWVsZFRyZWU/PSAnJztcclxuICAgIHNlbGVjdENoaWxkSXRlbT89IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIHBhZ2VTaXplPz0gOTk5OTtcclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEcm9wZG93bk9wdGlvbnMpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIFJlZkZpZWxkIHtcclxuICAgIGZpZWxkOiBzdHJpbmc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIGdyb3VwQ29kZT86IHN0cmluZztcclxuICAgIGRhdGFTb3VyY2U/OiBhbnlbXTtcclxuICAgIG9yZGVyPzogbnVtYmVyO1xyXG5cclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBmdW5jU2V0VmFsdWVSb3c/OiAocm93SXRlbSwgZGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRSZWZEYXRhUm93PzogKHJlZkl0ZW1zKSA9PiB7fTtcclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUmVmRmllbGQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmNsYXNzIFByb3BGb3JEcm9wZG93biB7XHJcbiAgICBzZXJ2ZXJGaWx0ZXJVcmk/OiBzdHJpbmc7XHJcbiAgICBsb2FkSW5GaXJzdERpc3BsYXk/PSB0cnVlO1xyXG4gICAgZGlzcGxheUZpZWxkU2VydmVyPz0gJ3Rlbic7XHJcbiAgICB2YWx1ZUZpZWxkU2VydmVyPz0gJ2lkJztcclxuXHJcbiAgICBkYXRhU291cmNlPzogYW55O1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uO1xyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb247XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuICAgIHNlYXJjaE11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgc2VhcmNoRmllbGQ/OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcblxyXG4gICAgZmllbGRWYWx1ZVBhcmVudD89ICd2YWx1ZSc7IC8vIFRyxrDhu51uZyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBsw6BtIGtow7NhIHThu6sgYuG6o25nIGNoYSBj4bunYSBpdGVtIGRyb3AgZG93biDEkcaw4bujYyBjaOG7jW5cclxuXHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQcm9wRm9yRHJvcGRvd24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlQaWNrZXJDb2x1bW4gZXh0ZW5kcyBDb2x1bW5TY2hlbWFCYXNlIHtcclxuICAgIGxhYmVsPzogc3RyaW5nO1xyXG4gICAgY29kZT86IHN0cmluZztcclxuICAgIGRpc2FibGVkPz0gZmFsc2U7XHJcbiAgICBpc1NlYXJjaGFibGU/PSB0cnVlO1xyXG4gICAgaXNEaXNwbGF5Pz0gdHJ1ZTtcclxuICAgIGRhdGFUeXBlPzogRGF0YVR5cGUgfCBzdHJpbmc7XHJcbiAgICBvcGVyYXRvcj86IE9wZXJhdG9yO1xyXG4gICAgd2lkdGg/PSAnJztcclxuICAgIG5vdEluRmllbGRzPz0gZmFsc2U7IC8vIEPDoWMgdHLGsOG7nW5nIGThu68gbGnhu4d1IMSRxrDhu6NjIHThu5VuZyBo4bujcCBs4bqhaSBoaeG7g24gdGjhu4sgbMOqbiBncmlkIG3DoCBraMO0bmcgcGjhuqNpIGzhuqV5IHThu6sgdHJvbmcgdGFibGUgcmEuXHJcblxyXG4gICAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBFbnRpdHlQaWNrZXJDb2x1bW4pIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEdldFJlZkRhdGFTY2hlbWEgZXh0ZW5kcyBQcm9wRm9yRHJvcGRvd24ge1xyXG4gICAgZmllbGQ/OiBzdHJpbmc7XHJcbiAgICBmdW5jU2V0VmFsdWVSb3c/OiAocm93SXRlbSwgZGF0YSkgPT4gdm9pZDtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBHZXRSZWZEYXRhU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkTGlzdENvbmZpZyB7XHJcbiAgICB0b29sdGlwVmlldz86IHN0cmluZztcclxuICAgIG9uVmlldz86IEZ1bmN0aW9uO1xyXG4gICAgZGlzYWJsZVJvd1NlbGVjdFdoZW5DbGlja0FjdGlvbj89IHRydWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDb25maWcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcmVlRGF0YU9wdGlvbiB7XHJcbiAgICBkaXNwbGF5RmllbGQgPSAndGVuJztcclxuICAgIHNob3J0RGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICBleHBhbmRlZEljb24gPSAncGkgcGktZm9sZGVyLW9wZW4nO1xyXG4gICAgY29sbGFwc2VkSWNvbiA9ICdwaSBwaS1mb2xkZXInO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRyZWVEYXRhT3B0aW9uKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGlhbG9nTW9kZWwge1xyXG4gICAgc2hvd0VkaXRGb3JtPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaGVhZGVyPzogc3RyaW5nID0gJyc7XHJcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgbWF4aW1pemU6IHRydWUgfSlcclxuICAgIGRhdGE/OiBhbnkgPSB7fTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEaWFsb2dNb2RlbCkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBvcHVwU2l6ZSB7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGhlaWdodD86IG51bWJlcjtcclxuICAgIG1heGltaXplPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUG9wdXBTaXplKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRXZlbnREYXRhIHtcclxuICAgIGN1cnJlbnROb2RlOiBDb250cm9sVHJlZU5vZGU7XHJcbiAgICBzb3VyY2VOb2RlPzogQ29udHJvbFRyZWVOb2RlO1xyXG4gICAgc291cmNlRXZlbnQ/OiBhbnk7XHJcbiAgICBldmVudFR5cGU/OiBhbnk7XHJcbiAgICBkYXRhPzogYW55O1xyXG4gICAgcHJpdmF0ZSBfY3J1ZEZvcm06IENydWRGb3JtQ29tcG9uZW50O1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaW5pdD86IHtcclxuICAgICAgICAgICAgY3VycmVudE5vZGU6IENvbnRyb2xUcmVlTm9kZSxcclxuICAgICAgICAgICAgc291cmNlTm9kZT86IENvbnRyb2xUcmVlTm9kZSxcclxuICAgICAgICAgICAgc291cmNlRXZlbnQ/OiBhbnksXHJcbiAgICAgICAgICAgIGV2ZW50VHlwZT86IGFueSxcclxuICAgICAgICAgICAgZGF0YT86IGFueSxcclxuICAgICAgICAgICAgY3J1ZEZvcm0/OiBDcnVkRm9ybUNvbXBvbmVudFxyXG4gICAgICAgIH1cclxuICAgICkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50TW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50UGF0aCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnBhcmVudE1vZGVsUGF0aDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJvb3RNb2RlbCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnJvb3ROb2RlLm1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250cm9sKCk6IEZvcm1TY2hlbWFCYXNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5jb250cm9sXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBhcmVudENvbnRyb2woKTogRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnBhcmVudENvbnRyb2w7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZvcm1Db250cm9scygpOiBGb3JtU2NoZW1hQmFzZVtdIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5mb3JtQ29udHJvbHM7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIERhdGFUeXBlIHtcclxuICAgIGRhdGUgPSAnZGF0ZScsXHJcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXHJcbiAgICBodG1sID0gJ2h0bWwnLFxyXG4gICAgc3RyaW5nID0gJ3N0cmluZycsXHJcbiAgICBpbnQgPSAnaW50JyxcclxuICAgIGRlY2ltYWwgPSAnZGVjaW1hbCcsXHJcbiAgICBib29sZWFuID0gJ2Jvb2xlYW4nLFxyXG4gICAgZW51bSA9ICdlbnVtJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb250cm9sVHlwZSB7XHJcbiAgICBkcm9wZG93biA9ICdkcm9wZG93bicsXHJcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXHJcbiAgICBkYXRlID0gJ2RhdGUnLFxyXG4gICAgdGltZSA9ICd0aW1lJyxcclxuICAgIG51bWJlciA9ICdudW1iZXInLFxyXG4gICAgdGV4dGJveCA9ICd0ZXh0Ym94JyxcclxuICAgIGNoZWNrYm94ID0gJ2NoZWNrYm94JyxcclxuICAgIHN3aXRjaCA9ICdzd2l0Y2gnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE9wZXJhdG9yIHtcclxuICAgIGVxdWFsID0gJ2VxJyxcclxuICAgIG5vdEVxdWFsID0gJ25lcScsXHJcbiAgICBncmVhdGVyID0gJ2d0JyxcclxuICAgIGdyZWF0ZXJUaGFuRXF1YWwgPSAnZ3RlJyxcclxuICAgIGxvd2VyID0gJ2x0JyxcclxuICAgIGxvd2VyVGhhbkVxdWFsID0gJ2x0ZScsXHJcblxyXG4gICAgY29udGFpbiA9ICdjb250YWlucycsXHJcbiAgICBub3RDb250YWluID0gJ25jb250YWlucycsXHJcbiAgICBzdGFydFdpdGggPSAnc3RhcnRzd2l0aCcsXHJcbiAgICBub3RTdGFydFdpdGggPSAnbnN0YXJ0c3dpdGgnLFxyXG4gICAgZW5kV2l0aCA9ICdlbmRzd2l0aCcsXHJcbiAgICBub3RFbmRXaXRoID0gJ25lbmRzd2l0aCcsXHJcblxyXG4gICAgaW4gPSAnaW4nLFxyXG4gICAgbm90SW4gPSAnbmluJyxcclxuXHJcbiAgICBpc051bGwgPSAnaXNudWxsJyxcclxuICAgIGlzTm90TnVsbCA9ICdpc25vdG51bGwnLFxyXG5cclxuICAgIGluUm9sZSA9ICdoYXNSb2xlJyxcclxuICAgIG5vdEluUm9sZSA9ICdub3RIYXNSb2xlJyxcclxuICAgIGluQ2F0ZWdvcnkgPSAnaW5DYXRlZ29yeScsXHJcbiAgICBub3RJbkNhdGVnb3J5ID0gJ25vdEluQ2F0ZWdvcnknLFxyXG4gICAgaW5Qb3NpdGlvbiA9ICdpblBvc2l0aW9uJyxcclxuICAgIG5vdEluUG9zaXRpb24gPSAnbm90SW5Qb3NpdGlvbicsXHJcbiAgICBpbkxpc3RVc2VyID0gJ2luTGlzdFVzZXInLFxyXG4gICAgbm90SW5MaXN0VXNlciA9ICdub3RJbkxpc3RVc2VyJyxcclxuICAgIGluTGlzdEdyb3VwID0gJ2luTGlzdEdyb3VwJyxcclxuICAgIG5vdEluTGlzdEdyb3VwID0gJ25vdEluTGlzdEdyb3VwJyxcclxuICAgIGlzQ3VycmVudFVzZXIgPSAnaXNDdXJyZW50VXNlcicsXHJcbiAgICBpc0N1cnJlbnRDYW5CbyA9ICdpc0N1cnJlbnRDYW5CbydcclxufVxyXG5cclxuZXhwb3J0IGVudW0gSGVpZ2h0VHlwZSB7XHJcbiAgICBkZWZhdWx0ID0gMCxcclxuICAgIGR5bmFtaWMgPSAtMSxcclxuICAgIGN1c3RvbSA9IDFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRmlsZU1hbmFnZXJNb2RlIHtcclxuICAgIHNpbmdsZSA9ICdzaW5nbGUnLFxyXG4gICAgbXVsdGlwbGUgPSAnbXVsdGlwbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEZpbGVVcGxvYWRNb2RlIHtcclxuICAgIHVzaW5nRmlsZUluc3RhbmNlSWQgPSAndXNpbmdGaWxlSW5zdGFuY2VJZCcsXHJcbiAgICB1c2luZ1NlcnZpY2VGaWxlID0gJ3VzaW5nU2VydmljZUZpbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVudW1GaWxlTGF5b3V0IHtcclxuICAgIFNJTVBMRSA9ICdTSU1QTEUnLFxyXG4gICAgTElTVCA9ICdMSVNUJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBUZXh0QWxpZ24ge1xyXG4gICAgTGVmdCA9IDAsXHJcbiAgICBDZW50ZXIgPSAxLFxyXG4gICAgUmlnaHQgPSAtMVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBFeHBvcnRJdGVtc01vZGUge1xyXG4gICAgRnJvbUh0bWwgPSAwLFxyXG4gICAgTWFudWFsR2V0RGF0YSA9IDEsXHJcbiAgICBBdXRvR2V0RGF0YSA9IDJcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRXhwb3J0QWxsTW9kZSB7XHJcbiAgICBNYW51YWxHZXREYXRhID0gMCxcclxuICAgIEF1dG9HZXREYXRhID0gMVxyXG59XHJcbiJdfQ==
|
|
1107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY2xhc3Nlcy9mb3JtLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBZ0JBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHakgsTUFBTSxPQUFPLFdBQVc7SUFNcEIsWUFBWSxJQUFrQjtRQUQ5QixhQUFRLEdBQWlGLFFBQVEsQ0FBQztRQUU5RixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFHakIsWUFBWSxJQUFlO1FBRjNCLG9HQUFvRztRQUNwRyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFFL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxlQUFlO0lBbUZ4QixZQUFZLElBQXNCO1FBakZsQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFHakIsaUJBQVksR0FBbUIsRUFBRSxDQUFDO1FBQ2xDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBQy9CLGtCQUFhLEdBQW1CLElBQUksYUFBYSxFQUFFLENBQUM7UUFDcEQsZ0JBQVcsR0FBaUIsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM5QyxlQUFVLEdBQWdCLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyx5REFBeUQ7UUFDdkcsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FB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LGFBQWEsUUFHeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlVHJhbnNmb3JtLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBBdXRvQ29tcGxldGVQaWNrZXJDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS1waWNrZXIvYXV0b2NvbXBsZXRlLXBpY2tlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDcnVkTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvY3J1ZC9jcnVkLWxpc3QvY3J1ZC1saXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlckRhdGFDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLWRhdGEvZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlclNlbGVjdGVkQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXItZGlhbG9nL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci1zZWxlY3RlZC9lbnRpdHktcGlja2VyLXNlbGVjdGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci9lbnRpdHktcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlciwgU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VudGl0eS1tZXRhZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFRyZWVOb2RlLCBDcnVkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vLi4vY29tcG9uZW50cy9jcnVkL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcnJlY3RvciB9IGZyb20gJy4vYmFzZS9jb3JyZWN0b3JzJztcclxuaW1wb3J0IHsgSVZhbGlkYXRvciB9IGZyb20gJy4vYmFzZS92YWxpZGF0b3JzJztcclxuaW1wb3J0IHsgRW51bUNvbnRyb2xQaWNrZXJUeXBlLCBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXksIEZvcm1TdGF0ZSwgU2hhcmVkRm9sZGVyVHlwZSB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dTZXR0aW5nLCBXb3JrZmxvd1NldHRpbmdOZXcgfSBmcm9tICcuL3dvcmtmbG93LXNjaGVtYSc7XHJcblxyXG5leHBvcnQgY2xhc3MgTW9kZWxTY2hlbWEge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgZGF0YVR5cGU/OiAnaW50JyB8ICdkZWNpbWFsJyB8ICdkYXRlJyB8ICdkYXRldGltZScgfCAnc3RyaW5nJyB8ICdib29sZWFuJyB8ICd0aW1lc3BhbicgPSAnc3RyaW5nJztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBNb2RlbFNjaGVtYSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRCYXNlIHtcclxuICAgIC8vIENvbXBvbmVudCBzdWJzY3JpYmUgLSBLaGkgc3ViY3JpYmUgbeG7mXQgY29tcG9uZW50IHRow6wgYWRkIHbDoG8gYXJyYXkgxJHhu4Mga2hpIGRlc3Ryb3kgdGjDrCB1bnN1YnNjcmliZVxyXG4gICAgY29tcG9uZW50U3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkQmFzZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRMaXN0U2V0dGluZyB7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgb2JqZWN0TmFtZSA9ICcnO1xyXG4gICAgZW50aXR5S2V5ID0gJ2lkJztcclxuICAgIHNldHRpbmdLZXk/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlNZXRhZGF0YVNlcnZpY2U/OiBFbnRpdHlNZXRhZGF0YVNlcnZpY2U7XHJcbiAgICBtb2RlbFNjaGVtYXM/OiBNb2RlbFNjaGVtYVtdID0gW107XHJcbiAgICBjb2xzPzogQ29sdW1uU2NoZW1hQmFzZVtdID0gW107XHJcbiAgICBjb2x1bW5TZXR0aW5nPzogQ29sdW1uU2V0dGluZyA9IG5ldyBDb2x1bW5TZXR0aW5nKCk7XHJcbiAgICBwYWdlU2V0dGluZz86IFBhZ2VTZXR0aW5nID0gbmV3IFBhZ2VTZXR0aW5nKCk7XHJcbiAgICBoZWlnaHRUeXBlPzogSGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZGVmYXVsdDsgLy8gQ8OzIGN1c3RvbSBjaGnhu4F1IGNhbyBraMO0bmc6IFRoxrDhu51uZyBz4butIGThu6VuZyB0cm9uZyBkaWFsb2dcclxuICAgIGZpeEhlaWdodFR5cGVJbkRpYWxvZz89IHRydWU7XHJcbiAgICBtdWx0aXBsZUNoZWNrV2hlbkNsaWNrUm93ID0gdHJ1ZTtcclxuICAgIGN1c3RvbVdvcmtmbG93Q29kZVRyaW5oS3k6IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleSA9IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleS5NQUNfRElOSDtcclxuICAgIHN0aWNreUNvbHVtbiA9IGZhbHNlO1xyXG4gICAgdGFibGVOYW1lPzogc3RyaW5nO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcclxuICAgIHJlU2VsZWN0TGFzdEl0ZW0/PSB0cnVlOyAvLyBTZWxlY3QgbOG6oWkgaXRlbSBjdeG7kWkgY8O5bmcgxJHDoyBjaOG7jW4gY+G7p2EgZ3JpZFxyXG4gICAgZmlyZUV2ZW50V2hlblJlU2VsZWN0Pz0gZmFsc2U7XHJcbiAgICBhZHZhbmNlRGF0YT86IGFueSA9IHt9O1xyXG4gICAgd29ya2Zsb3dTZXR0aW5nPzogV29ya2Zsb3dTZXR0aW5nO1xyXG4gICAgd29ya2Zsb3dDb25maWdBZHZhbmNlPzogV29ya2Zsb3dDb25maWdBZHZhbmNlO1xyXG4gICAgZGlzcGxheUZpZWxkOiBzdHJpbmcgfCAoKGl0ZW0pID0+IHN0cmluZyk7IC8vIHRyxrDhu51uZyDEkeG6oWkgZGnhu4duIGNobyBi4bqjbiBnaGkgbMOgbSB0acOqdSDEkeG7gSBoaeG7g24gdGjhu4sgKHBo4bulYyB24bulIGNobyBjw6FjIGThu4tjaCB24bulIGtow6FjIGtoYWkgdGjDoWMpXHJcbiAgICBoYXNDdXN0b21IYW5kbGVDbGlja1JvdyA9IGZhbHNlO1xyXG4gICAgY2hlY2tBbGxvd1RyaW5oS3k6IChyb3dEYXRhKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xyXG4gICAgY2hlY2tQZXJtaXNpb25UcmluaEt5ID0gZmFsc2U7XHJcblxyXG4gICAgc2hvd0VkaXRMaW5rID0gdHJ1ZTtcclxuXHJcbiAgICBoaWRkZW5IZWFkZXIgPSBmYWxzZTtcclxuICAgIGhpZGRlblBhZ2VTZXR0aW5nID0gZmFsc2U7XHJcbiAgICBoaWRkZW5UZXh0UGFnZSA9IGZhbHNlO1xyXG4gICAgaGlkZGVuVG9vbGJhciA9IGZhbHNlO1xyXG4gICAgaGlkZGVuQnV0dG9ucyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuQWR2YW5jZVNlYXJjaCA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2F2ZVNldHRpbmcgPSBmYWxzZTtcclxuICAgIGhpZGRlblNldHRpbmcgPSBmYWxzZTtcclxuICAgIGhpZGRlblNldHRpbmdQZXJtaXNzaW9uID0gZmFsc2U7XHJcbiAgICBoaWRkZW5TZXR0aW5nV29ya2Zsb3cgPSBmYWxzZTtcclxuICAgIGhpZGRlblNldHRpbmdXb3JrZmxvd05ldyA9IHRydWU7XHJcbiAgICBoaWRkZW5QYWdlVGl0bGUgPSBmYWxzZTtcclxuXHJcbiAgICBoaWRkZW5DaGVja2JveCA9IGZhbHNlO1xyXG4gICAgaGlkZGVuT3JkZXJDb2x1bW4gPSBmYWxzZTtcclxuICAgIGhpZGRlbldvcmtmbG93Q29sdW1uID0gZmFsc2U7XHJcbiAgICBoaWRkZW5GdW5jdGlvbkNvbHVtbiA9IGZhbHNlO1xyXG4gICAgaGlkZGVuUmVmcmVzaCA9IGZhbHNlO1xyXG4gICAgaGlkZGVuRmlsdGVyUm93ID0gZmFsc2U7XHJcbiAgICBoaWRkZW5UcmluaEt5ID0gdHJ1ZTtcclxuICAgIHVzZUJhc2VUcmluaEt5ID0gdHJ1ZTtcclxuICAgIGhpZGRlbldvcmtmbG93Q29yZVN0YXR1cyA9IHRydWU7XHJcbiAgICByZXF1aXJlZFZhbkJhbkRpQWZ0ZXJUcmluaEt5ID0gZmFsc2U7XHJcblxyXG4gICAgZ3JvdXBDb2x1bW4/OiBDb2x1bW5TY2hlbWFCYXNlO1xyXG5cclxuICAgIHNob3dFeHBvcnRBbGwgPSBmYWxzZTtcclxuICAgIGV4cG9ydEFsbE1vZGVsOiBFeHBvcnRBbGxNb2RlID0gRXhwb3J0QWxsTW9kZS5BdXRvR2V0RGF0YTtcclxuICAgIGV4cG9ydEl0ZW1zTW9kZTogRXhwb3J0SXRlbXNNb2RlID0gRXhwb3J0SXRlbXNNb2RlLkZyb21IdG1sO1xyXG5cclxuICAgIGVuYWJsZVZlcnNpb24gPSBmYWxzZTtcclxuICAgIHNob3dWZXJzaW9uQnV0dG9uID0gZmFsc2U7XHJcbiAgICB2ZXJzaW9uTW9kZWw/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XHJcbiAgICBzaG93SGlzdG9yeSA9IGZhbHNlO1xyXG4gICAgaGlzdG9yeT86IGFueTtcclxuXHJcbiAgICBjb2xvckZpbHRlckZpZWxkID0gJyc7XHJcbiAgICBjb2xvckZpbHRlclRhYmxlPzogUm93Q29sb3JPcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGVudGl0eU1ldGFkYXRhU2V0dGluZz86IENydWRGb3JtU2V0dGluZyA9IG5ldyBDcnVkRm9ybVNldHRpbmcoKTtcclxuXHJcbiAgICBmaWVsZFNlYXJjaFRleHQ/OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZmlsdGVyVGVtcGxhdGVBZHZzPzogRmlsdGVyW107XHJcblxyXG4gICAgZnVuY3Rpb246IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24gPSBuZXcgQ3J1ZExpc3RDdXN0b21GdW5jdGlvbigpO1xyXG5cclxuICAgIHBvcHVwSGVhZGVyPz0gJyc7XHJcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKCk7XHJcbiAgICBtYXNrQ2xhc3M/OiBzdHJpbmc7XHJcblxyXG4gICAgZ2V0Q3VzdG9tRGF0YVRyaW5oS3k6IChyb3dEYXRhKSA9PiBhbnkgPSAocm93RGF0YSkgPT4gKHt9KTtcclxuICAgIGdldExhYmVsQnV0dG9uVHJpbmhLeTogKHJvd0RhdGEpID0+IHN0cmluZyA9IChyb3dEYXRhKSA9PiAnVHLDrG5oIGvDvSc7XHJcbiAgICBjaGVja1JlYWR5VG9UcmluaEt5OiAoKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RTZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dDb25maWdBZHZhbmNlIHtcclxuICAgIGdldFdvcmtmbG93U2V0dGluZzogKHJvd0RhdGEpID0+IFdvcmtmbG93U2V0dGluZ05ldztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRMaXN0Q3VzdG9tRnVuY3Rpb24ge1xyXG4gICAgLy8gQ3VzdG9taXplXHJcbiAgICBnZXRTZWFyY2hDb250cm9sPzogKGZpZWxkOiBzdHJpbmcpID0+IEZvcm1TY2hlbWFCYXNlW10gPSAoZmllbGQ6IHN0cmluZykgPT4gbnVsbDtcclxuICAgIC8vIEFzeW5jIGZ1bmN0aW9uXHJcbiAgICBtb2RpZnlBZHZhbmNlU2VhY2hNb2RlbD86IChkYXRhOiBBZHZhbmNlU2VhcmNoRGF0YSwgc2V0dGluZzogQWR2YW5jZVNlYXJjaFNldHRpbmcpID0+IFByb21pc2U8dm9pZD4gPSBhc3luYyAoZGF0YSkgPT4gbnVsbDtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyc29uYWxTZXR0aW5nIHtcclxuICAgIGNvbHVtblNldHRpbmc/OiBDb2x1bW5TZXR0aW5nID0gbmV3IENvbHVtblNldHRpbmcoKTtcclxuICAgIHBhZ2VTZXR0aW5nPzogUGFnZVNldHRpbmcgPSBuZXcgUGFnZVNldHRpbmcoKTtcclxuICAgIGNvbG9yRmlsdGVyRmllbGQgPSAnJztcclxuICAgIGNvbG9yRmlsdGVyVGFibGU/OiBSb3dDb2xvck9wdGlvbltdID0gW107XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUGVyc29uYWxTZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3REYXRhIGV4dGVuZHMgQ3J1ZEJhc2Uge1xyXG4gICAgbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgcmVhZHkgPSB0cnVlO1xyXG4gICAgZGF0YVNvdXJjZT86IGFueVtdID0gW107XHJcbiAgICBzZWxlY3RlZEl0ZW1zPzogYW55W10gPSBbXTtcclxuICAgIHNlbGVjdGVkSXRlbT86IGFueTtcclxuICAgIHNlbGVjdGVkSXRlbUxhc3Q/OiBhbnk7XHJcbiAgICBzZWxlY3RlZElkPzogbnVtYmVyO1xyXG4gICAgdG90YWwgPSAwO1xyXG4gICAgaXRlbURhdGE/OiBhbnk7XHJcbiAgICBhZHZhbmNlRGF0YTogYW55ID0ge307XHJcblxyXG4gICAgZXhwYW5kZWRSb3dLZXlzPzogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3REYXRhKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlNZWRhdGFEYXRhU2V0dGluZyB7XHJcbiAgICBkYXRhPzogYW55ID0ge307XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5TWVkYXRhRGF0YVNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSb3dDb2xvck9wdGlvbiB7XHJcbiAgICBmaWx0ZXJWYWx1ZSA9ICcnO1xyXG4gICAgY29tcGFyZVR5cGUgPSAnJztcclxuICAgIGNvbG9yID0gJyc7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUm93Q29sb3JPcHRpb24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQYWdlU2V0dGluZyB7XHJcbiAgICBwYWdlID0gMTtcclxuICAgIHBhZ2VTaXplID0gMTU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUGFnZVNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5TZXR0aW5nIHtcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/OiBzdHJpbmc7XHJcbiAgICBzb3J0RGlyPzogLTEgfCAwIHwgMSB8IDIgPSAtMTtcclxuICAgIGdyb3VwRmllbGQgPSAnJztcclxuICAgIGRldGFpbHM/OiBDb2x1bW5TZXR0aW5nRGV0YWlsW10gPSBbXTtcclxuICAgIGNvbHVtblJlb3JkZXI/XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sdW1uU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmdEZXRhaWwge1xyXG4gICAgb3JkZXI/OiBudW1iZXI7XHJcbiAgICBjb2x1bW5Db2RlPzogc3RyaW5nO1xyXG4gICAgY29sdW1uTmFtZT86IHN0cmluZztcclxuICAgIHZpc2libGU/OiBib29sZWFuO1xyXG4gICAgdGV4dEFsaWduPzogVGV4dEFsaWduO1xyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkRm9ybURhdGEgZXh0ZW5kcyBDcnVkQmFzZSB7XHJcbiAgICBkYXRhPzogYW55ID0ge307XHJcbiAgICBzdWJtaXR0aW5nPz0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICAqIFRy4bqhbmcgdGjDoWkgY+G7p2EgZm9ybSDEkWFuZyDEkcaw4bujYyBt4bufOiBMw6AgZm9ybSB0aMOqbSBt4bubaSwgaGF5IGZvcm0gc+G7rWEsIGhheSBmb3JtIHjDs2FcclxuICAgICAqL1xyXG4gICAgZm9ybVN0YXRlPzogRm9ybVN0YXRlID0gRm9ybVN0YXRlLkFERDtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkRm9ybURhdGEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRGb3JtQ3VzdG9tRnVuY3Rpb24ge1xyXG4gICAgLy8gQ3VzdG9taXplXHJcbiAgICBtb2RpZnlEYXRhQWZ0ZXJHZXRDYWNoZT86IChkYXRhOiBhbnkpID0+IHZvaWQgPSAoZGF0YTogYW55KSA9PiBudWxsO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkRm9ybVNldHRpbmcge1xyXG4gICAgZGlzYWJsZUNhY2hpbmcgPSBmYWxzZTtcclxuICAgIGhpZGRlblRyaW5oS3kgPSB0cnVlO1xyXG4gICAgc2NoZW1hPzogRm9ybVNjaGVtYUJhc2VbXSA9IFtdO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcclxuICAgIGJ1aWxkSW5TY2hlbWE/OiBGb3JtQ29udHJvbEJhc2VbXSA9IFtdO1xyXG4gICAgdW5pcXVlRmllbGQ/OiBzdHJpbmdbXSB8IHN0cmluZ1tdW10gPSBbXTtcclxuICAgIGZpZWxkRHJvcGRvd24/OiB7IFtrZXk6IHN0cmluZ106IERyb3Bkb3duQ29udHJvbFNjaGVtYSB9ID0ge307XHJcbiAgICBmaWVsZE5lZWRHZXRSZWY/OiB7IFtrZXk6IHN0cmluZ106IFRleHRDb250cm9sU2NoZW1hIH0gPSB7fTtcclxuICAgIGRpc3BsYXlGaWVsZD86IHN0cmluZyB8ICgoaXRlbSkgPT4gc3RyaW5nKTtcclxuICAgIGZpcnN0Rm9jdXNDb250cm9sPzogc3RyaW5nO1xyXG4gICAgZmlsdGVyQ2hlY2tFeGlzdEJ5VmVyc2lvbj86IEZpbHRlcltdO1xyXG4gICAgZGVmYXVsdEZpbHRlckNoZWNrRXhpc3Q/OiBGaWx0ZXJbXSB8ICgoKSA9PiBGaWx0ZXJbXSk7XHJcbiAgICBjdXN0b21Xb3JrZmxvd0NvZGVUcmluaEt5OiBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXkgPSBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXkuTUFDX0RJTkg7XHJcbiAgICBlbnRpdHlNZXRhZGF0YURhdGE/OiBDcnVkRm9ybURhdGE7XHJcbiAgICBlbnRpdHlNZXRhZGF0YVNldHRpbmc/OiBDcnVkRm9ybVNldHRpbmc7XHJcbiAgICBmdW5jdGlvbj86IENydWRGb3JtQ3VzdG9tRnVuY3Rpb24gPSBuZXcgQ3J1ZEZvcm1DdXN0b21GdW5jdGlvbigpO1xyXG4gICAgZ2V0Q3VzdG9tRGF0YVRyaW5oS3k6IChyb3dEYXRhKSA9PiBhbnkgPSAocm93RGF0YSkgPT4gKHt9KTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkRm9ybVNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBZHZhbmNlU2VhcmNoRGF0YSBleHRlbmRzIENydWRGb3JtRGF0YSB7XHJcbiAgICBpbml0RGF0YT86IGFueSA9IHt9O1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEFkdmFuY2VTZWFyY2hEYXRhKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBZHZhbmNlU2VhcmNoU2V0dGluZyBleHRlbmRzIENydWRGb3JtU2V0dGluZyB7XHJcbiAgICBmaWVsZEtleSA9ICdfayc7XHJcbiAgICBlbnRpdHlQZXJtaXNzaW9uU2NoZW1hPzogRm9ybUNvbnRyb2xCYXNlW10gPSBbXTtcclxuICAgIGtlZXBJbml0U2VhcmNoRGF0YU5vdE51bGwgPSB0cnVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEFkdmFuY2VTZWFyY2hTZXR0aW5nKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTY2hlbWFCYXNlIHtcclxuICAgIGZpZWxkPzogc3RyaW5nO1xyXG4gICAgdW5pcXVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgICB0eXBlPzogJ2Jvb2xlYW4nIHwgJ2ludCcgfCAnZGVjaW1hbCcgfCAnZGF0ZXRpbWUnIHwgJ3N0cmluZycgPSAnc3RyaW5nJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1TY2hlbWFCYXNlIGV4dGVuZHMgU2NoZW1hQmFzZSB7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGZ1bGxMYWJlbD86IHN0cmluZztcclxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gICAgc2hvd0xhYmVsPz0gdHJ1ZTtcclxuICAgIGdXaWR0aD89IDEyO1xyXG4gICAgbWRXaWR0aD89IDY7XHJcbiAgICB3aWR0aD86IHN0cmluZztcclxuICAgIGNsYXNzPz0gJyc7XHJcbiAgICBzdHlsZT86IGFueSA9IHt9O1xyXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gICAgaGlkZGVuPz0gZmFsc2U7XHJcbiAgICBoaWRkZW5DaGVjaz86IChyb290TW9kZWw6IGFueSwgY3VycmVudE5vZGU6IENvbnRyb2xUcmVlTm9kZSkgPT4gYm9vbGVhbjtcclxuICAgIGhpZGRlbk9uVmlldz89IGZhbHNlO1xyXG4gICAgdmlzaWJsZUluTGlzdD89IHRydWU7XHJcbiAgICBvcGVyYXRvcj86IE9wZXJhdG9yO1xyXG4gICAgZ3JvdXBDb2RlPz0gJyc7XHJcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnk7XHJcbiAgICBmaWVsZEFsaWFzPz0gJyc7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybVNjaGVtYUJhc2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbnRhaW5lclNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIGNvbnRyb2xzOiBGb3JtU2NoZW1hQmFzZVtdO1xyXG4gICAgc2hvd0luQm94Pz0gdHJ1ZTtcclxuICAgIGJveFN0eWxlPzogYW55O1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbnRhaW5lclNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIC8vIFVybCDEkeG7gyBs4bqleSBk4buvIGxp4buHdSAqKiogS0jDlE5HIFPhu6wgROG7pE5HIFRST05HIEPDgUMgQ0FTRSBQSOG7lCBCSeG6vk4sIENI4buIIFPhu6wgROG7pE5HIMSQ4buQSSBW4buaSSBGT1JNIEtI4bqiTyBTw4FUICoqKlxyXG4gICAgc2VydmljZVVyaT89ICcnO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIGRhdGFTb3VyY2U/OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgc2VhcmNoRmllbGQ/OiBzdHJpbmdbXTtcclxuXHJcbiAgICBpc1RyZWU/PSBmYWxzZTtcclxuICAgIGZpZWxkVHJlZT86IHN0cmluZztcclxuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG5cclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXHJcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjsgLy8gdHVuZ3RzIHRow6ptIGtp4buDdSBk4buvIGxp4buHdSBkZWZhdWx0RmlsdGVycyBsw6AgcHJvbWlzZVxyXG4gICAgYWZ0ZXJHZXREYXRhPzogRnVuY3Rpb247XHJcblxyXG4gICAgZnVuY1NldERlZmF1bHRWYWx1ZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGZpZWxkVmFsdWVQYXJlbnQ/PSAndmFsdWUnOyAvLyBUcsaw4budbmcgc+G7rSBk4bulbmcgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgbMOgbSBraMOzYSB04burIGLhuqNuZyBjaGEgY+G7p2EgaXRlbSBkcm9wIGRvd24gxJHGsOG7o2MgY2jhu41uXHJcblxyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb247XHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExhYmVsU2NoZW1hIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgZm9yPz0gJyc7XHJcbiAgICBpc0h0bWw/PSBmYWxzZTtcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuICAgIGluZGV4TGFiZWw/OiBudW1iZXI7XHJcbiAgICB0ZXh0Pz0gJyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IExhYmVsU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaXRsZVNjaGVtYSBleHRlbmRzIExhYmVsU2NoZW1hIHtcclxuICAgIGNsYXNzPz0gJ3RpdGxlLWdyb3VwIHRleHQtYm9sZCc7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGl0bGVTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQmFzZSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIF9jb21wb25lbnQ/OiBhbnk7IC8vIENvbXBvbmVudCBj4bunYSBzY2hlbWEga2hpIGto4bufaSB04bqhb1xyXG4gICAgdW5pcXVlRmllbGQ/OiBzdHJpbmc7IC8vIFPhu60gZOG7pW5nIHRyb25nIHRhYmxlIHNjaGVtYVxyXG4gICAgYXV0b2ZvY3VzPz0gZmFsc2U7XHJcbiAgICB2YWxpZGF0b3JzPzogSVZhbGlkYXRvcltdID0gW107XHJcbiAgICBjb3JyZWN0b3JzPzogSUNvcnJlY3RvcltdID0gW107XHJcbiAgICByZXF1aXJlZD89IGZhbHNlO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IGZhbHNlO1xyXG4gICAgb25DaGFuZ2VkPzogRnVuY3Rpb247XHJcbiAgICB0cmlnZ2VyTG9hZENoaWxkPzogRnVuY3Rpb247XHJcbiAgICBoYXNPcGVyYXRvckNhbkJvPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybUNvbnRyb2xCYXNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICAvKiogQ29weSB04burIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UgKi9cclxuICAgIC8vIFVybCDEkeG7gyBs4bqleSBk4buvIGxp4buHdSAqKiogS0jDlE5HIFPhu6wgROG7pE5HIFRST05HIEPDgUMgQ0FTRSBQSOG7lCBCSeG6vk4sIENI4buIIFPhu6wgROG7pE5HIMSQ4buQSSBW4buaSSBGT1JNIEtI4bqiTyBTw4FUICoqKlxyXG4gICAgc2VydmljZVVyaT89ICcnO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuXHJcbiAgICBpc1NlcnZlckxvYWQ/PSBmYWxzZTtcclxuICAgIHNlYXJjaEZpZWxkPzogc3RyaW5nW107XHJcblxyXG4gICAgaXNUcmVlPz0gZmFsc2U7XHJcbiAgICBmaWVsZFRyZWU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZVBhcmVudFJvb3Q/OiBhbnkgPSBudWxsOyAvLyBHacOhIHRy4buLIHRyxrDhu51uZyBbZmllbGRUcmVlXSBj4bunYSBpdGVtIHRyZWUgcm9vdFxyXG4gICAgZmllbGRQYXJlbnRUcmVlSXRlbT89ICdpZCc7IC8vIFRyxrDhu51uZyB4w6FjIMSR4buLbmggYuG6o24gZ2hpIGzDoCBi4bqjbiBnaGkgY2hhIGPhu6dhIGLhuqNuIGdoaSBjb25cclxuICAgIHNlbGVjdENoaWxkSXRlbT89IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuXHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD89ICcnO1xyXG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XHJcbiAgICBmaWVsZFBsdXM/PSAnJzsgLy8gRGFuaCBzw6FjaCBuaOG7r25nIHRyxrDhu51uZyBi4buVIHN1bmcgY+G6p24gbOG6pXkgdGjDqm0gbmdvw6BpIGlkLCB0ZW47IFbDrSBk4bulICxtYVxyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47IC8vIHR1bmd0cyB0aMOqbSBraeG7g3UgZOG7ryBsaeG7h3UgZGVmYXVsdEZpbHRlcnMgbMOgIHByb21pc2VcclxuICAgIGJpbmRpbmdGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+OyAvLyB0dW5ndHMgdGjDqm0ga2nhu4N1IGThu68gbGnhu4d1IGRlZmF1bHRGaWx0ZXJzIGzDoCBwcm9taXNlXHJcbiAgICBhZnRlckdldERhdGE/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBmdW5jU2V0RGVmYXVsdFZhbHVlPzogRnVuY3Rpb247XHJcblxyXG4gICAgcGFyZW50RmllbGQ/OiBzdHJpbmc7IC8vIENvbHVtbiB0xrDGoW5nIOG7qW5nIHRyb25nIHRhYmxlIHNxbCBzZXJ2ZXIuXHJcbiAgICBmaWVsZFZhbHVlUGFyZW50Pz0gJ3ZhbHVlJzsgLy8gVHLGsOG7nW5nIHPhu60gZOG7pW5nIMSR4buDIGzhuqV5IGThu68gbGnhu4d1IGzDoG0ga2jDs2EgdOG7qyBi4bqjbmcgY2hhIGPhu6dhIGl0ZW0gZHJvcCBkb3duIMSRxrDhu6NjIGNo4buNblxyXG5cclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZpcmVDYWxsQmFja0luc2lkZT89IHRydWU7XHJcbiAgICBtb2RpZnlGaWx0ZXI/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG4gICAgLyoqIEVuZCBjb3B5IHThu6sgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSAqL1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGV4dENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgc2VsZWN0QWxsVGV4dD89IGZhbHNlOyAvLyBDaOG7jW4gdOG6pXQgY+G6oyB0ZXh0IGtoaSBmb2N1c1xyXG5cclxuICAgIHBsYWNlaG9sZGVyPz0gJyc7XHJcbiAgICBkYXRhRm9ybWF0PzogJ3RleHQnIHwgJ3Bhc3N3b3JkJyB8ICdudW1iZXInIHwgJ2VtYWlsJyB8ICdwaG9uZScgfCAnZmF4JyB8ICdtb25leScgfCAnbW9uZXlpbnQnIHwgJ2Ftb3VudCcgPSAndGV4dCc7XHJcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5OTk7XHJcblxyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuXHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD89ICcnO1xyXG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XHJcbiAgICBmaWVsZFBsdXM/PSAnJzsgLy8gRGFuaCBzw6FjaCBuaOG7r25nIHRyxrDhu51uZyBi4buVIHN1bmcgY+G6p24gbOG6pXkgdGjDqm0gbmdvw6BpIGlkLCB0ZW47IFbDrSBk4bulICxtYVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUZXh0Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGV4dENvbnRyb2xTY2hlbWFXaXRoU2VydmljZSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcclxuICAgIHBsYWNlaG9sZGVyPz0gJyc7XHJcbiAgICBkYXRhRm9ybWF0PzogJ3RleHQnIHwgJ251bWJlcicgfCAnZW1haWwnIHwgJ3Bob25lJyB8ICdmYXgnIHwgJ21vbmV5JyB8ICdtb25leWludCcgfCAnYW1vdW50JyA9ICd0ZXh0JztcclxuICAgIG1heExlbmd0aD86IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dENvbnRyb2xTY2hlbWFXaXRoU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTWFza0NvbnRyb2xTY2hlbWEgZXh0ZW5kcyBUZXh0Q29udHJvbFNjaGVtYSB7XHJcbiAgICBtYXNrVHlwZT86ICdkZWNpbWFsJyB8ICdpbnQnID0gJ2ludCc7XHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5OTk5OTtcclxuICAgIHByZWZpeD89ICcnO1xyXG4gICAgc3VmZml4Pz0gJyc7XHJcbiAgICBkZWNpbWFsUGxhY2VzPz0gMjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBNYXNrQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTnVtYmVyUmFuZ2VDb250cm9sU2NoZW1hIGV4dGVuZHMgVGV4dENvbnRyb2xTY2hlbWEge1xyXG4gICAgbWFza1R5cGU/OiAnZGVjaW1hbCcgfCAnaW50JztcclxuICAgIG1pbj89IDA7XHJcbiAgICBtYXg/PSA5OTk5OTk5OTk5O1xyXG4gICAgcHJlZml4Pz0gJyc7XHJcbiAgICBzdWZmaXg/PSAnJztcclxuICAgIGRlY2ltYWxQbGFjZXM/PSAyO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGFwcGVuZFRvPz0gJ2JvZHknO1xyXG4gICAgcGFuZWxDbGFzcz89ICcnO1xyXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgICBzaG93VGltZT89IGZhbHNlO1xyXG4gICAgc2hvd0ljb24/PSB0cnVlO1xyXG4gICAgZm9ybWF0PzogJ25vcm1hbCcgfCAnZnJvbU5vdycgPSAnZnJvbU5vdyc7XHJcbiAgICBzaG93T25Gb2N1cz89IHRydWU7XHJcbiAgICBtaW5EYXRlPzogRGF0ZSA9IG51bGw7XHJcbiAgICBtYXhEYXRlPzogRGF0ZSA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGVUaW1lQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMucGxhY2Vob2xkZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuc2hvd1RpbWUgPyAnZGQvTU0veXl5eSBoaDptbScgOiAnZGQvTU0veXl5eSc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0ZVRpbWVSYW5nZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRlVGltZUNvbnRyb2xTY2hlbWEge1xyXG4gICAgc2hvd0ljb24/PSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEYXRlVGltZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSB7XHJcblxyXG4gICAgLy8gI1Byb3BlcnR5IG92ZXJyaWRlXHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlO1xyXG4gICAgLy8gI0VuZCBwcm9wZXJ0eSBvdmVycmlkZVxyXG5cclxuICAgIHJldHVyblR5cGU/OiAndmFsdWUnIHwgJ29iamVjdCcgPSAndmFsdWUnO1xyXG5cclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGxpbWl0Pz0gMTAwMDtcclxuICAgIHRpdGxlPz0gJyAnO1xyXG4gICAgY29sdW1ucz86IEVudGl0eVBpY2tlckNvbHVtbltdO1xyXG4gICAgZmllbGRTZWFyY2hUZXh0Pzogc3RyaW5nW10gPSBbXTtcclxuICAgIGRhdGFJbml0PzogYW55ID0ge307XHJcbiAgICBhZHZhbmNlU2VhcmNoTW9kZWw/OiBhbnkgPSB7fTtcclxuICAgIG9uU2VhcmNoRm9ybUluaXRpYWxpemVkPzogRnVuY3Rpb247XHJcbiAgICBvbkZvcm1FdmVudD86IEZ1bmN0aW9uO1xyXG4gICAgb25TZWxlY3RFbnRpdHk/OiBGdW5jdGlvbjsgLy8gbuG6v3UgZnVuY3Rpb24ga2jDoWMgbnVsbCB2w6AgcmV0dXJuIHRydWUgc+G6vSBjaG8gcGjDqXAgbeG7nyBkaWFsb2dcclxuICAgIGFmdGVyQ29udGVudExlZnRJbml0PzogKGNydWRMaXN0OiBDcnVkTGlzdENvbXBvbmVudCkgPT4gdm9pZDsgLy8gU2F1IGtoaSBjw6FjIHRlbXBsYXRlIGNvbnRlbnQgaW5pdFxyXG4gICAgYWZ0ZXJDb250ZW50UmlnaHRJbml0PzogKGNydWRMaXN0OiBDcnVkTGlzdENvbXBvbmVudCkgPT4gdm9pZDsgLy8gU2F1IGtoaSBjw6FjIHRlbXBsYXRlIGNvbnRlbnQgaW5pdFxyXG4gICAgYWZ0ZXJHZXREYXRhPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJDb21wb25lbnQpID0+IHZvaWQ7XHJcbiAgICBhZnRlckdldERhdGFVblBpY2tlZD86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyRGF0YUNvbXBvbmVudCkgPT4gdm9pZDtcclxuICAgIGFmdGVyR2V0RGF0YVBpY2tlZD86IChzb3VyY2VzOiBhbnlbXSwgZWxlbWVudDogRW50aXR5UGlja2VyU2VsZWN0ZWRDb21wb25lbnQpID0+IHZvaWQ7XHJcblxyXG4gICAgLy8gQ8OzIHPhu60gZOG7pW5nIHBsdXNVcmwg4bufIG3DoG4gaMOsbmggY2jDrW5oIEVudGl0eVBpY2tlciBoYXkga2jDtG5nLlxyXG4gICAgdXNlRGVmYXVsdFBsdXNsVXJsSW5MaXN0Pz0gZmFsc2U7XHJcblxyXG4gICAgLy8gQ8OzIHPhu60gZOG7pW5nIGRlZmF1bHRGaWx0ZXIga2hpIHTDrG0ga2nhur9tIGRhbmggc8OhY2gg4bufIG3DoG4gaMOsbmggY2jDrW5oIEVudGl0eVBpY2tlci5cclxuICAgIHVzZURlZmF1bHRGaWx0ZXJJbkxpc3Q/PSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEge1xyXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgICBkYXRhVHlwZT86IEVudW1Db250cm9sUGlja2VyVHlwZSA9IEVudW1Db250cm9sUGlja2VyVHlwZS5VU0VSO1xyXG4gICAgYXBwZW5kVG8/PSAnYm9keSc7XHJcbiAgICBtb2RpZnlJbml0U2VhcmNoRGF0YT86IEZ1bmN0aW9uOyAvLyBT4butIGThu6VuZyDEkeG7gyBtb2RpZnkgZGF0YSBj4bunYSBwaOG6p24gc2VhcmNoLCB0aMaw4budbmcgxJHhu4Mgc2V0IGluaXQgZGF0YSBkeW5hbWljIHRoZW8gbmh1IGPhuqd1XHJcbiAgICBjYWxsQmFjaz86IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfTtcclxuICAgIG9uUmVhZHk/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBtb2RpZnlDb250cm9sPzogRnVuY3Rpb247IC8vIFPhu60gZOG7pW5nIMSR4buDIG1vZGlmeSBzY2hlbWEgYmFzZVxyXG4gICAgbmVlZENsb25lPz0gZmFsc2U7IC8vIFPhu60gZOG7pW5nIHRyb25nIHRhYmxlIHNjaGVtYSwga2hpIGRhdGFzb3VyY2UgY+G7p2EgbeG7mXQgY+G7mXQgdHLDqm4gbeG7l2kgZMOybmcgbMOgIGtow6FjIG5oYXUgY+G6p24gc2V0IG5lZWRDbG9uZSA9IHRydWVcXFxyXG4gICAgYWZ0ZXJHZXREYXRhRHJvcGRvd24/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEF1dG9Db21wbGV0ZVBpY2tlckNvbXBvbmVudCkgPT4gdm9pZDtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBdXRvQ29tcGxldGVQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBXcmFwUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEge1xyXG4gICAgZGF0YVR5cGU/OiBFbnVtQ29udHJvbFBpY2tlclR5cGUgPSBFbnVtQ29udHJvbFBpY2tlclR5cGUuVVNFUjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBXcmFwUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDdXN0b21Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2xvclBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sb3JQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5leHBvcnQgY2xhc3MgU3BhbkNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgc291cmNlRmllbGQ/OiBzdHJpbmc7XHJcbiAgICBpc2h0bWw/PSBmYWxzZTtcclxuICAgIGVkaXRhYmxlPz0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogU3BhbkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbG9yQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBzb3VyY2VGaWVsZD86IHN0cmluZztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb2xvckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEtleVZhbHVlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogS2V5VmFsdWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgYWNjZXB0Pzogc3RyaW5nO1xyXG4gICAgbWF4RmlsZVNpemU/PSAxMDAwMDAwMDA7XHJcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeT89ICd7MH06IFF1w6EgZHVuZyBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcclxuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWw/PSAnZHVuZyBsxrDhu6NuZyB04buRaSDEkWEgbMOgIHswfS4nO1xyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnk/PSAnezB9OiBLaMO0bmcgxJHDum5nIMSR4buLbmggZOG6oW5nIGZpbGUsICc7XHJcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsPz0gJ8SR4buLbmggZOG6oW5nIGZpbGUgY2hvIHBow6lwOiB7MH0uJztcclxuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeT89ICdRdcOhIHPhu5EgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbD89ICd04buRaSDEkWEgezB9IGZpbGUuJztcclxuICAgIG1vZGU/OiBGaWxlTWFuYWdlck1vZGUgfCBGaWxlVXBsb2FkTW9kZSA9IEZpbGVNYW5hZ2VyTW9kZS5tdWx0aXBsZTtcclxuICAgIGxheW91dD86IEVudW1GaWxlTGF5b3V0ID0gRW51bUZpbGVMYXlvdXQuTElTVDtcclxuICAgIHJlYWRvbmx5Pz0gZmFsc2U7XHJcblxyXG4gICAgLy8gU2VydmljZSBkw7luZyDEkeG7gyBs4bqleSBkYXRhc291cmNlIGPhu6dhIG5oaeG7gXUgY29udHJvbCBt4buZdCBs4bqnbi5cclxuICAgIGZpbGVEYXRhU2VydmljZT86IEZpbGVEYXRhU2VydmljZTtcclxuXHJcbiAgICAvLyBC4buZIDMga2V5IMSR4buDIGzhuqV5IHRoxrAgbeG7pWMgZ+G7kWMuXHJcbiAgICBzZXJ2aWNlQ29kZT86IHN0cmluZztcclxuICAgIGVudGl0eT86IHN0cmluZztcclxuICAgIGVudGl0eUtleT86IHN0cmluZztcclxuXHJcbiAgICAvLyBUw6puIHRoxrAgbeG7pWMgZ+G7kWMga2hpIGhp4buDbiB0aOG7iyB0csOqbiBicmVhZGNydW1icy5cclxuICAgIHJvb3RGb2xkZXJOYW1lPzogc3RyaW5nO1xyXG5cclxuICAgIC8vIFRyxrDhu51uZyBo4bujcCDhu58gdHJvbmcgZm9ybSwgZMO5bmcgdHLGsOG7nW5nIG7DoHkgxJHhu4MgbOG6pXlcclxuICAgIC8vIGVudGl0eUtleSB04burIG1vZGVsLmRhdGEgdGhheSB2w6wgdHJ1eeG7gW4gdsOgbyBlbnRpdHlLZXlcclxuICAgIGVudGl0eUtleUZpZWxkPz0gJ2lkJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRmlsZU1hbmFnZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkQ29udHJvbFNjaGVtYSBleHRlbmRzIEZpbGVNYW5hZ2VyQ29udHJvbFNjaGVtYSB7XHJcbiAgICBtb2RlPz0gRmlsZVVwbG9hZE1vZGUudXNpbmdTZXJ2aWNlRmlsZTtcclxuICAgIG1kV2lkdGg/PSA2O1xyXG4gICAgc2hhcmVkRm9sZGVyVHlwZT86IFNoYXJlZEZvbGRlclR5cGUgPSBTaGFyZWRGb2xkZXJUeXBlLlRlbXB0O1xyXG5cclxuICAgIGhpZGRlbkJ1dHRvbnM/PSBmYWxzZTtcclxuICAgIGRpc2FibGVkPz0gZmFsc2U7XHJcbiAgICByZWFkb25seT89IGZhbHNlO1xyXG4gICAgYXV0b1NhdmVkPz0gdHJ1ZTtcclxuXHJcbiAgICBlbmFibGVTY2FuPz0gZmFsc2U7XHJcbiAgICBleHRyYWN0WmlwRmlsZT89IGZhbHNlO1xyXG4gICAgZW5hYmxlRHJpdmVGaWxlPz0gZmFsc2U7XHJcblxyXG4gICAgc2hvd0Rvd25sb2FkRmlsZT89IHRydWU7XHJcbiAgICBzaG93RGVsZXRlRmlsZT89IHRydWU7XHJcbiAgICBzaG93UHJpbnRGaWxlPz0gdHJ1ZTtcclxuICAgIG1heEZpbGVTaXplPz0gMTAwMDAwMDAwOyAvLyAxMDAgTUJcclxuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5Pz0gJ3swfTogUXXDoSBkdW5nIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbD89ICdkdW5nIGzGsOG7o25nIHThu5FpIMSRYSBsw6AgezB9Lic7XHJcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeT89ICd7MH06IEtow7RuZyDEkcO6bmcgxJHhu4tuaCBk4bqhbmcgZmlsZSwgJztcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWw/PSAnxJHhu4tuaCBk4bqhbmcgZmlsZSBjaG8gcGjDqXA6IHswfS4nO1xyXG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5Pz0gJ1F1w6Egc+G7kSBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcclxuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsPz0gJ3Thu5FpIMSRYSB7MH0gZmlsZS4nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGaWxlVXBsb2FkQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5leHBvcnQgY2xhc3MgU3dpdGNoQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogU3dpdGNoQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgaGlkZGVuTGFiZWw/PSBmYWxzZTsgLy8gU2V0ID0gdHJ1ZSBjaOG7pyB54bq/dSBraGkgZMO5bmcgdHJvbmcgdGFibGUgc2NoZW1hIMSR4buDIOG6qW4gbGFiZWwgxJFpLCB2w6wgbGFiZWwgxJHDoyBjw7MgdHLDqm4gdGnDqnUgxJHhu4EgY+G7mXRcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDaGVja2JveENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEJ1dHRvbkNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICBzaG93TGFiZWw/PSBmYWxzZTtcclxuICAgIGJ0Q2xhc3M/PSAncC1idXR0b24tdGV4dCc7XHJcbiAgICBpY29uPztcclxuICAgIGJ0U3R5bGU/PSB7IHdpZHRoOiAnYXV0bycgfTtcclxuICAgIG9uQ2xpY2s/OiBGdW5jdGlvbjtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBCdXR0b25Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICB0ZW1wbGF0ZTogYW55O1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRlbXBsYXRlQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGV4dEFyZWFDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHJvd3M/PSA1O1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRleHRBcmVhQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVXNlclBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgYXBwZW5kVG8/PSAnYm9keSc7XHJcbiAgICBtdWx0aXBsZT89IHRydWU7XHJcbiAgICBsaW1pdD89IDIwOyAvLyBHaeG7m2kgaOG6oW4gc+G7kSBuZ8aw4budaSBkw7luZyB04buRaSDEkWEgxJHGsOG7o2MgcGlja1xyXG4gICAgdGl0bGU/PSAnQ2jhu41uIG5nxrDhu51pIGTDuW5nJztcclxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+O1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgcGxhY2Vob2xkZXI/PSAnJztcclxuICAgIGxhenlMb2FkT3JnYW5pemF0aW9uPz0gZmFsc2U7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICdmdWxsTmFtZU5ldyc7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcclxuICAgIG9uUmVhZHk/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFVzZXJQaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb0NhdVRvQ2h1Y1BpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgYXBwZW5kVG8/PSAnYm9keSc7XHJcbiAgICBtdWx0aXBsZT89IHRydWU7XHJcbiAgICBsaW1pdD89IDIwOyAvLyBHaeG7m2kgaOG6oW4gc+G7kSBi4bqjbiBnaGkgdOG7kWkgxJFhIMSRxrDhu6NjIHBpY2tcclxuICAgIHRpdGxlPz0gJ0No4buNbiDEkcahbiB24buLJztcclxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+O1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7XHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG4gICAgb25SZWFkeT86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVXNlclBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE9yZ2FuaXphdGlvblBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZmlsdGVyPz0gdHJ1ZTtcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIHBhcmVudE9yZ0lkPzogbnVtYmVyO1xyXG4gICAgcGFyZW50T3JnQ29kZT86IHN0cmluZztcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgaXNVc2luZ0lkPz0gdHJ1ZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBPcmdhbml6YXRpb25QaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb0NhdVRvQ2h1Y0NvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZmlsdGVyPz0gdHJ1ZTtcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIHBhcmVudE9yZ0lkPzogbnVtYmVyO1xyXG4gICAgcGFyZW50T3JnQ29kZT86IHN0cmluZztcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgaXNVc2luZ0lkPz0gdHJ1ZTtcclxuICAgIGRpc2FibGVkUGFyZW50SXRlbT89IHRydWU7XHJcbiAgICByb290UGFyZW50SWQ/OiBzdHJpbmcgPSBudWxsO1xyXG4gICAgZGlzYWJsZWQ/PSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb0NhdVRvQ2h1Y0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVkaXRvckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbW9kZT86ICdiYXNpYycgfCAnbWVkaXVtJyB8ICdmdWxsJyB8ICdzaW1wbGUnID0gJ2Jhc2ljJztcclxuICAgIGhlaWdodD89IDI1MDtcclxuICAgIGluaXQ/OiBhbnk7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRWRpdG9yQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSB7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgcmV0dXJuVHlwZT86ICd2YWx1ZScgfCAnb2JqZWN0JyA9ICd2YWx1ZSc7XHJcbiAgICBkYXRhU291cmNlPzogYW55IHwgRnVuY3Rpb247XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIHtcclxuICAgIGFwcGVuZFRvPz0gJ2JvZHknO1xyXG4gICAgcGFuZWxDbGFzcz89ICcnO1xyXG4gICAgcGxhY2Vob2xkZXI/PSAnQ2jhu41uJztcclxuICAgIHNlbGVjdGVkSXRlbXNMYWJlbD89ICfEkMOjIGNo4buNbiB7MH0gbeG7pWMnO1xyXG4gICAgc2VsZWN0ZWRBbGxJdGVtTGFiZWw/PSAnxJDDoyBjaOG7jW4gdOG6pXQgY+G6oyc7XHJcbiAgICBzaG93Q2xlYXI/PSB0cnVlO1xyXG4gICAgZmlsdGVyPz0gdHJ1ZTtcclxuICAgIG11bHRpcGxlPz0gZmFsc2U7XHJcbiAgICBnZW5lcmF0ZVRvb2x0aXA/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgbWF4U2VsZWN0ZWRMYWJlbHM/PSA1O1xyXG4gICAgbWF4SXRlbURpc3BsYXk/PSA1MDtcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgbmVlZENsb25lPz0gZmFsc2U7IC8vIFPhu60gZOG7pW5nIHRyb25nIHRhYmxlIHNjaGVtYSwga2hpIGRhdGFzb3VyY2UgY+G7p2EgbeG7mXQgY+G7mXQgdHLDqm4gbeG7l2kgZMOybmcgbMOgIGtow6FjIG5oYXUgY+G6p24gc2V0IG5lZWRDbG9uZSA9IHRydWVcclxuICAgIHRlbXBsYXRlSXRlbT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICB0ZW1wbGF0ZVNlbGVjdGVkSXRlbT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBxdWlja0FkZD89IGZhbHNlO1xyXG4gICAgY29scz86IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICBpbml0RGF0YT86IGFueSA9IHt9O1xyXG4gICAgcG9wdXBTaXplPzogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSh7IHdpZHRoOiA3NTAsIGhlaWdodDogNDAwIH0pO1xyXG5cclxuICAgIGxvYWRJbkZpcnN0RGlzcGxheT89IHRydWU7XHJcblxyXG4gICAgYXV0b0dldERhdGE/PSB0cnVlO1xyXG5cclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcblxyXG4gICAgYXV0b0Rpc3BsYXlGaXJzdD89IGZhbHNlO1xyXG4gICAgbm90SW5DcnVkRm9ybT89IGZhbHNlO1xyXG4gICAgc2VhcmNoTXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgZGlzYWJsZURpc3BsYXlGaWVsZFNlcnZlclNlYXJjaD89IGZhbHNlO1xyXG5cclxuICAgIGxvYWRPbkluaXQ/PSBmYWxzZTtcclxuICAgIGFsbG93TG9hZERhdGFXaGVuUGFyZW50TnVsbD89IGZhbHNlO1xyXG5cclxuICAgIGRpc2FibGVkUGFyZW50SXRlbT89IHRydWU7XHJcbiAgICBvbkFkanVzdGVkVmFsdWU/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRHJvcGRvd25Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBZGRyZXNzQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBoaWRlTm8/PSBmYWxzZTtcclxuICAgIGhpZGVTdHJlZXQ/PSBmYWxzZTtcclxuICAgIGhpZGVXYXJkPz0gZmFsc2U7XHJcbiAgICBoaWRlRGlzdHJpY3Q/PSBmYWxzZTtcclxuICAgIHJlcXVpcmVkTm8/PSB0cnVlO1xyXG4gICAgcmVxdWlyZWRTdHJlZXQ/PSB0cnVlO1xyXG4gICAgcmVxdWlyZWRXYXJkPz0gdHJ1ZTtcclxuICAgIHJlcXVpcmVkRGlzdHJpY3Q/PSB0cnVlO1xyXG4gICAgcmVxdWlyZWRQcm92aW5jZT89IHRydWU7XHJcbiAgICB3YXJkVG9Qcm92aW5jZT89IHRydWU7XHJcbiAgICBub1dpZHRoPz0gMTtcclxuICAgIHN0cmVldFdpZHRoPz0gMztcclxuICAgIHdhcmRXaWR0aD89IDM7XHJcbiAgICBkaXN0cmljdFdpZHRoPz0gMjtcclxuICAgIHByb3ZpbmNlV2lkdGg/PSAzO1xyXG4gICAgc2hvd0luQm94Pz0gZmFsc2U7XHJcblxyXG4gICAgaGlkZUhvbGRlcj89IHRydWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWRkcmVzc0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZhbkJhblBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgdXNlVmJEZW4/PSB0cnVlO1xyXG4gICAgdXNlVmJEaT89IHRydWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVmFuQmFuUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29uZ1ZpZWNQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuICAgIHNlcnZpY2VDb2RlPzogc3RyaW5nO1xyXG4gICAgZW50aXR5Pzogc3RyaW5nO1xyXG4gICAgZW50aXR5S2V5Pzogc3RyaW5nO1xyXG4gICAgc3RhdGU/OiBhbnkgPSB7fTtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb25nVmllY1BpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgbXVsdGlwbGU/PSBmYWxzZTtcclxuICAgIG1pbkxlbmd0aEZpbHRlcj89IDE7XHJcbiAgICBhcHBlbmRUbz86IHN0cmluZyA9ICdib2R5JztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBdXRvQ29tcGxldGVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvbkxpc3RDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgbGF5b3V0PzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyA9ICdob3Jpem9udGFsJztcclxuICAgIGFsaWduPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2xlZnQnO1xyXG4gICAgb25BZGp1c3RlZFZhbHVlPzogRnVuY3Rpb247XHJcbiAgICBkaXNhYmxlQ2hlY2s/OiAoKSA9PiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBSYWRpb0J1dHRvbkxpc3RDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja0JveExpc3RDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBsYXlvdXQ/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnID0gJ2hvcml6b250YWwnO1xyXG4gICAgYWxpZ24/OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnbGVmdCc7XHJcbiAgICBjbGFzc1BsdXM/PSAnJztcclxuICAgIGZyZWVUZXh0Pz0gJyc7XHJcbiAgICBwQ29sQ2xhc3M/OiBudW1iZXI7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ2hlY2tCb3hMaXN0Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgcm93VGVtcGxhdGU6IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICByb3dCdXR0b25zPzogKHJvd0RhdGEpID0+IE1lbnVJdGVtW107XHJcbiAgICBmb290ZXJCdXR0b25zPzoge1xyXG4gICAgICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICAgICAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgICAgICAgY2xhc3M/OiBzdHJpbmc7XHJcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgfVtdO1xyXG4gICAgc2hvd051bWJlcj89IHRydWU7XHJcbiAgICBzaG93RnVuY3Rpb24/PSB0cnVlO1xyXG4gICAgc2hvd0Zvb3Rlcj89IHRydWU7XHJcbiAgICBzaG93U2F2ZT89IGZhbHNlO1xyXG4gICAgc2hvd0VkaXQ/PSBmYWxzZTtcclxuICAgIHNob3dEZWxldGU/PSB0cnVlO1xyXG4gICAgc2hvd0FkZD89IHRydWU7XHJcbiAgICBlbmFibGVSZW9yZGVyUm93Pz0gZmFsc2U7XHJcbiAgICBvblJlb3JkZXJlZD86IEZ1bmN0aW9uO1xyXG4gICAgZW5hYmxlQWRkTXVsdGk/PSBmYWxzZTtcclxuICAgIHBpY2tlckNvbnRyb2xGaWVsZD86IHN0cmluZztcclxuICAgIGlzVW5pcXVlPz0gdHJ1ZTtcclxuICAgIGVuYWJsZVBhZ2luZz89IGZhbHNlO1xyXG4gICAgbGltaXQ/PSA1MDtcclxuICAgIGluaXRSb3dDb3VudD89IDE7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcblxyXG4gICAgb25BZGRpbmc/OiBGdW5jdGlvbjtcclxuICAgIG9uQWRkZWQ/OiBGdW5jdGlvbjtcclxuICAgIG9uU2F2ZT86IEZ1bmN0aW9uO1xyXG4gICAgb25NZXNzYWdlPzogRnVuY3Rpb247XHJcbiAgICBvbkRlbGV0aW5nPzogRnVuY3Rpb247XHJcbiAgICBvbkRlbGV0ZWQ/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGFibGVTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtblNjaGVtYUJhc2UgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlIHtcclxuICAgIHdpZHRoPzogc3RyaW5nO1xyXG4gICAgc2hvd0VkaXRMaW5rPz0gZmFsc2U7XHJcbiAgICBjb2xTcGFuPzogbnVtYmVyO1xyXG4gICAgZ3JvdXA/PSBmYWxzZTtcclxuICAgIHZpc2libGU/PSB0cnVlO1xyXG4gICAgcmVtb3ZlT25Jbml0Pz0gZmFsc2U7XHJcbiAgICBhbGxvd0ZpbHRlcj89IHRydWU7XHJcbiAgICB0ZXh0QWxpZ24/OiBUZXh0QWxpZ247XHJcbiAgICBjZWxsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICBmdWxsVGV4dFNlYXJjaD89IGZhbHNlO1xyXG4gICAgcmF3Q29sdW1uPzogQ29sdW1uU2NoZW1hQmFzZTtcclxuICAgIHNlcGFyYXRvcj89ICcsICc7XHJcblxyXG4gICAgZGF0YVR5cGVSZWZGaWVsZD86IERhdGFUeXBlIHwgc3RyaW5nO1xyXG4gICAgZm9yY2VHZXREYXRhPz0gZmFsc2U7XHJcbiAgICBmdW5jR2V0UmVmRGF0YVJvdz86IChyZWZJdGVtcykgPT4ge307XHJcbiAgICBmdW5jU2V0VmFsdWVSb3c/OiAocm93SXRlbSwgZGF0YSkgPT4gdm9pZDtcclxuICAgIHJvd1NwYW4/PSAxO1xyXG4gICAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gICAgZGF0YVR5cGU/OiBEYXRhVHlwZSB8IHN0cmluZztcclxuICAgIGNvbnRyb2xUeXBlPzogQ29udHJvbFR5cGUgPSBDb250cm9sVHlwZS50ZXh0Ym94O1xyXG4gICAgdGVtcGxhdGVGaWx0ZXI/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgZmllbGRGaWx0ZXI/OiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlQ2hlY2tCb3g/PSB0cnVlO1xyXG4gICAgLy8gVGjhu6kgdOG7sSDGsHUgdGnDqm4gZ2V0IHJlZiBkYXRhIGPhu6dhIGNydWQtbGlzdFxyXG4gICAgLy8gTuG6v3UgY8OzIHZhbHVlIG5naMSpYSBsw6Agbmjhu69uZyBj4buZdCBuw6B5IGPhuqduIHBo4bqjaSBs4bqleSBk4buvIGxp4buHdSB4b25nIHLhu5NpIG3hu5tpIMSR4bq/biBj4buZdCBraMOhY1xyXG4gICAgb3JkZXI/OiBudW1iZXI7XHJcbiAgICBtYXhXb3JkRGlzcGxheT86IG51bWJlcjtcclxuICAgIG1heExlbmd0aERpc3BsYXk/OiBudW1iZXI7XHJcblxyXG4gICAgbWRXaWR0aEluU2VhcmNoPz0gMTI7XHJcblxyXG4gICAgbWluPz0gMDtcclxuICAgIG1heD89IDk5OTk5OTtcclxuXHJcbiAgICBzaG93Q2xlYXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSBmYWxzZTtcclxuXHJcbiAgICBwaXBlPzogUGlwZVRyYW5zZm9ybTtcclxuICAgIGFzeW5jUGlwZT89IHRydWU7XHJcbiAgICBzb3J0Pz0gdHJ1ZTtcclxuICAgIGV4dGVuZERhdGE/OiBhbnkgPSB7fTtcclxuXHJcbiAgICBnZW5lcmF0ZWRSZWZDb2x1bW4/OiBhbnk7IC8vIFRPRE86IE5hbU5IIHRow6ptIHThuqFtIHRoZW8gecOqdSBj4bqndSBj4bunYSBMaW5oLCBMaW5oIGNoZWNrIGzhuqFpIHNhdVxyXG4gICAgaGFzT3BlcmF0b3JDYW5Cbz89IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbHVtblNjaGVtYUJhc2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERyb3Bkb3duT3B0aW9ucyB7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZmllbGRUcmVlPz0gJyc7XHJcbiAgICBzZWxlY3RDaGlsZEl0ZW0/PSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uIG7hur91IGNo4buNbiBi4bqjbiBnaGkgY2hhXHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD89ICcnO1xyXG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBjYWxsYmFja0RhdGFGaW5pc2g/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBwYWdlU2l6ZT89IDk5OTk7XHJcbiAgICBpc1NlcnZlckxvYWQ/PSBmYWxzZTtcclxuICAgIHJlZkZpZWxkcz86IFJlZkZpZWxkW10gPSBbXTtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRHJvcGRvd25PcHRpb25zKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBSZWZGaWVsZCB7XHJcbiAgICBmaWVsZDogc3RyaW5nO1xyXG4gICAgbXVsdGlwbGU/PSBmYWxzZTtcclxuICAgIHNlcGFyYXRvcj89ICcsICc7XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7XHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICBkYXRhU291cmNlPzogYW55W107XHJcbiAgICBvcmRlcj86IG51bWJlcjtcclxuXHJcbiAgICBpc1RyZWU/PSBmYWxzZTtcclxuICAgIGZpZWxkVHJlZT86IHN0cmluZztcclxuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD89ICcnO1xyXG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG4gICAgZnVuY1NldFZhbHVlUm93PzogKHJvd0l0ZW0sIGRhdGEpID0+IHZvaWQ7XHJcbiAgICBmdW5jR2V0UmVmRGF0YVJvdz86IChyZWZJdGVtcykgPT4ge307XHJcbiAgICBjYWxsYmFja0RhdGFGaW5pc2g/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJlZkZpZWxkKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5jbGFzcyBQcm9wRm9yRHJvcGRvd24ge1xyXG4gICAgc2VydmVyRmlsdGVyVXJpPzogc3RyaW5nO1xyXG4gICAgbG9hZEluRmlyc3REaXNwbGF5Pz0gdHJ1ZTtcclxuICAgIGRpc3BsYXlGaWVsZFNlcnZlcj89ICd0ZW4nO1xyXG4gICAgdmFsdWVGaWVsZFNlcnZlcj89ICdpZCc7XHJcblxyXG4gICAgZGF0YVNvdXJjZT86IGFueTtcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbjtcclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIG1vZGlmeUZpbHRlcj86IEZ1bmN0aW9uO1xyXG4gICAgbXVsdGlwbGU/PSBmYWxzZTtcclxuICAgIHNlcGFyYXRvcj89ICcsICc7XHJcbiAgICBzZWFyY2hNdWx0aXBsZT89IHRydWU7XHJcbiAgICBpc1RyZWU/PSBmYWxzZTtcclxuICAgIGZpZWxkVHJlZT86IHN0cmluZztcclxuICAgIHNlbGVjdENoaWxkSXRlbT89IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIHNlYXJjaEZpZWxkPzogc3RyaW5nW10gPSBbXTtcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD89ICcnO1xyXG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG5cclxuICAgIGZpZWxkVmFsdWVQYXJlbnQ/PSAndmFsdWUnOyAvLyBUcsaw4budbmcgc+G7rSBk4bulbmcgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgbMOgbSBraMOzYSB04burIGLhuqNuZyBjaGEgY+G7p2EgaXRlbSBkcm9wIGRvd24gxJHGsOG7o2MgY2jhu41uXHJcblxyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUHJvcEZvckRyb3Bkb3duKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyQ29sdW1uIGV4dGVuZHMgQ29sdW1uU2NoZW1hQmFzZSB7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGNvZGU/OiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlZD89IGZhbHNlO1xyXG4gICAgaXNTZWFyY2hhYmxlPz0gdHJ1ZTtcclxuICAgIGlzRGlzcGxheT89IHRydWU7XHJcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xyXG4gICAgb3BlcmF0b3I/OiBPcGVyYXRvcjtcclxuICAgIHdpZHRoPz0gJyc7XHJcbiAgICBub3RJbkZpZWxkcz89IGZhbHNlOyAvLyBDw6FjIHRyxrDhu51uZyBk4buvIGxp4buHdSDEkcaw4bujYyB04buVbmcgaOG7o3AgbOG6oWkgaGnhu4NuIHRo4buLIGzDqm4gZ3JpZCBtw6Aga2jDtG5nIHBo4bqjaSBs4bqleSB04burIHRyb25nIHRhYmxlIHJhLlxyXG5cclxuICAgIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5UGlja2VyQ29sdW1uKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBHZXRSZWZEYXRhU2NoZW1hIGV4dGVuZHMgUHJvcEZvckRyb3Bkb3duIHtcclxuICAgIGZpZWxkPzogc3RyaW5nO1xyXG4gICAgZnVuY1NldFZhbHVlUm93PzogKHJvd0l0ZW0sIGRhdGEpID0+IHZvaWQ7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogR2V0UmVmRGF0YVNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3RDb25maWcge1xyXG4gICAgdG9vbHRpcFZpZXc/OiBzdHJpbmc7XHJcbiAgICBvblZpZXc/OiBGdW5jdGlvbjtcclxuICAgIGRpc2FibGVSb3dTZWxlY3RXaGVuQ2xpY2tBY3Rpb24/PSB0cnVlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0Q29uZmlnKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVHJlZURhdGFPcHRpb24ge1xyXG4gICAgZGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICBzaG9ydERpc3BsYXlGaWVsZCA9ICd0ZW4nO1xyXG4gICAgZXhwYW5kZWRJY29uID0gJ3BpIHBpLWZvbGRlci1vcGVuJztcclxuICAgIGNvbGxhcHNlZEljb24gPSAncGkgcGktZm9sZGVyJztcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUcmVlRGF0YU9wdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERpYWxvZ01vZGVsIHtcclxuICAgIHNob3dFZGl0Rm9ybT86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGhlYWRlcj86IHN0cmluZyA9ICcnO1xyXG4gICAgcG9wdXBTaXplPzogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSh7IG1heGltaXplOiB0cnVlIH0pXHJcbiAgICBkYXRhPzogYW55ID0ge307XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRGlhbG9nTW9kZWwpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQb3B1cFNpemUge1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBoZWlnaHQ/OiBudW1iZXI7XHJcbiAgICBtYXhpbWl6ZT89IGZhbHNlO1xyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBvcHVwU2l6ZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEV2ZW50RGF0YSB7XHJcbiAgICBjdXJyZW50Tm9kZTogQ29udHJvbFRyZWVOb2RlO1xyXG4gICAgc291cmNlTm9kZT86IENvbnRyb2xUcmVlTm9kZTtcclxuICAgIHNvdXJjZUV2ZW50PzogYW55O1xyXG4gICAgZXZlbnRUeXBlPzogYW55O1xyXG4gICAgZGF0YT86IGFueTtcclxuICAgIHByaXZhdGUgX2NydWRGb3JtOiBDcnVkRm9ybUNvbXBvbmVudDtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIGluaXQ/OiB7XHJcbiAgICAgICAgICAgIGN1cnJlbnROb2RlOiBDb250cm9sVHJlZU5vZGUsXHJcbiAgICAgICAgICAgIHNvdXJjZU5vZGU/OiBDb250cm9sVHJlZU5vZGUsXHJcbiAgICAgICAgICAgIHNvdXJjZUV2ZW50PzogYW55LFxyXG4gICAgICAgICAgICBldmVudFR5cGU/OiBhbnksXHJcbiAgICAgICAgICAgIGRhdGE/OiBhbnksXHJcbiAgICAgICAgICAgIGNydWRGb3JtPzogQ3J1ZEZvcm1Db21wb25lbnRcclxuICAgICAgICB9XHJcbiAgICApIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUubW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IG1vZGVsKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUubW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBhcmVudE1vZGVsKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUucGFyZW50TW9kZWw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHBhcmVudFBhdGgoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRNb2RlbFBhdGg7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGdldCByb290TW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5yb290Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29udHJvbCgpOiBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUuY29udHJvbFxyXG4gICAgfVxyXG5cclxuICAgIGdldCBwYXJlbnRDb250cm9sKCk6IEZvcm1TY2hlbWFCYXNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRDb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmb3JtQ29udHJvbHMoKTogRm9ybVNjaGVtYUJhc2VbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUuZm9ybUNvbnRyb2xzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XHJcbiAgICBkYXRlID0gJ2RhdGUnLFxyXG4gICAgZGF0ZXRpbWUgPSAnZGF0ZXRpbWUnLFxyXG4gICAgaHRtbCA9ICdodG1sJyxcclxuICAgIHN0cmluZyA9ICdzdHJpbmcnLFxyXG4gICAgaW50ID0gJ2ludCcsXHJcbiAgICBkZWNpbWFsID0gJ2RlY2ltYWwnLFxyXG4gICAgYm9vbGVhbiA9ICdib29sZWFuJyxcclxuICAgIGVudW0gPSAnZW51bSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQ29udHJvbFR5cGUge1xyXG4gICAgZHJvcGRvd24gPSAnZHJvcGRvd24nLFxyXG4gICAgZGF0ZXRpbWUgPSAnZGF0ZXRpbWUnLFxyXG4gICAgZGF0ZSA9ICdkYXRlJyxcclxuICAgIHRpbWUgPSAndGltZScsXHJcbiAgICBudW1iZXIgPSAnbnVtYmVyJyxcclxuICAgIHRleHRib3ggPSAndGV4dGJveCcsXHJcbiAgICBjaGVja2JveCA9ICdjaGVja2JveCcsXHJcbiAgICBzd2l0Y2ggPSAnc3dpdGNoJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBPcGVyYXRvciB7XHJcbiAgICBlcXVhbCA9ICdlcScsXHJcbiAgICBub3RFcXVhbCA9ICduZXEnLFxyXG4gICAgZ3JlYXRlciA9ICdndCcsXHJcbiAgICBncmVhdGVyVGhhbkVxdWFsID0gJ2d0ZScsXHJcbiAgICBsb3dlciA9ICdsdCcsXHJcbiAgICBsb3dlclRoYW5FcXVhbCA9ICdsdGUnLFxyXG5cclxuICAgIGNvbnRhaW4gPSAnY29udGFpbnMnLFxyXG4gICAgbm90Q29udGFpbiA9ICduY29udGFpbnMnLFxyXG4gICAgc3RhcnRXaXRoID0gJ3N0YXJ0c3dpdGgnLFxyXG4gICAgbm90U3RhcnRXaXRoID0gJ25zdGFydHN3aXRoJyxcclxuICAgIGVuZFdpdGggPSAnZW5kc3dpdGgnLFxyXG4gICAgbm90RW5kV2l0aCA9ICduZW5kc3dpdGgnLFxyXG5cclxuICAgIGluID0gJ2luJyxcclxuICAgIG5vdEluID0gJ25pbicsXHJcblxyXG4gICAgaXNOdWxsID0gJ2lzbnVsbCcsXHJcbiAgICBpc05vdE51bGwgPSAnaXNub3RudWxsJyxcclxuXHJcbiAgICBpblJvbGUgPSAnaGFzUm9sZScsXHJcbiAgICBub3RJblJvbGUgPSAnbm90SGFzUm9sZScsXHJcbiAgICBpbkNhdGVnb3J5ID0gJ2luQ2F0ZWdvcnknLFxyXG4gICAgbm90SW5DYXRlZ29yeSA9ICdub3RJbkNhdGVnb3J5JyxcclxuICAgIGluUG9zaXRpb24gPSAnaW5Qb3NpdGlvbicsXHJcbiAgICBub3RJblBvc2l0aW9uID0gJ25vdEluUG9zaXRpb24nLFxyXG4gICAgaW5MaXN0VXNlciA9ICdpbkxpc3RVc2VyJyxcclxuICAgIG5vdEluTGlzdFVzZXIgPSAnbm90SW5MaXN0VXNlcicsXHJcbiAgICBpbkxpc3RHcm91cCA9ICdpbkxpc3RHcm91cCcsXHJcbiAgICBub3RJbkxpc3RHcm91cCA9ICdub3RJbkxpc3RHcm91cCcsXHJcbiAgICBpc0N1cnJlbnRVc2VyID0gJ2lzQ3VycmVudFVzZXInLFxyXG4gICAgaXNDdXJyZW50Q2FuQm8gPSAnaXNDdXJyZW50Q2FuQm8nXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEhlaWdodFR5cGUge1xyXG4gICAgZGVmYXVsdCA9IDAsXHJcbiAgICBkeW5hbWljID0gLTEsXHJcbiAgICBjdXN0b20gPSAxXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEZpbGVNYW5hZ2VyTW9kZSB7XHJcbiAgICBzaW5nbGUgPSAnc2luZ2xlJyxcclxuICAgIG11bHRpcGxlID0gJ211bHRpcGxlJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBGaWxlVXBsb2FkTW9kZSB7XHJcbiAgICB1c2luZ0ZpbGVJbnN0YW5jZUlkID0gJ3VzaW5nRmlsZUluc3RhbmNlSWQnLFxyXG4gICAgdXNpbmdTZXJ2aWNlRmlsZSA9ICd1c2luZ1NlcnZpY2VGaWxlJ1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBFbnVtRmlsZUxheW91dCB7XHJcbiAgICBTSU1QTEUgPSAnU0lNUExFJyxcclxuICAgIExJU1QgPSAnTElTVCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVGV4dEFsaWduIHtcclxuICAgIExlZnQgPSAwLFxyXG4gICAgQ2VudGVyID0gMSxcclxuICAgIFJpZ2h0ID0gLTFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRXhwb3J0SXRlbXNNb2RlIHtcclxuICAgIEZyb21IdG1sID0gMCxcclxuICAgIE1hbnVhbEdldERhdGEgPSAxLFxyXG4gICAgQXV0b0dldERhdGEgPSAyXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEV4cG9ydEFsbE1vZGUge1xyXG4gICAgTWFudWFsR2V0RGF0YSA9IDAsXHJcbiAgICBBdXRvR2V0RGF0YSA9IDFcclxufVxyXG4iXX0=
|