tnx-shared 5.1.339 → 5.1.342
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 +31 -10
- 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/form-schema.d.ts +1 -0
- package/classes/form-schema.d.ts.map +1 -1
- package/components/common-app-component/app.menu.component.d.ts.map +1 -1
- package/components/common-app-component/common-app-component.d.ts.map +1 -1
- package/components/crud/crud-list/crud-list.component.d.ts +1 -0
- package/components/crud/crud-list/crud-list.component.d.ts.map +1 -1
- package/components/mask/mask.component.d.ts +2 -1
- package/components/mask/mask.component.d.ts.map +1 -1
- package/esm2015/classes/form-schema.js +2 -1
- package/esm2015/components/common-app-component/app.menu.component.js +2 -4
- package/esm2015/components/common-app-component/common-app-component.js +3 -2
- package/esm2015/components/crud/crud-form/crud-form.component.js +2 -2
- package/esm2015/components/crud/crud-list/crud-list.component.js +7 -2
- package/esm2015/components/mask/mask.component.js +11 -5
- package/esm2015/components/tn-dialog/tn-dialog.component.js +2 -2
- package/esm2015/models/types.js +5 -0
- package/esm2015/public-api.js +2 -1
- package/esm2015/services/base.service.js +4 -1
- package/esm2015/services/user.service.js +2 -2
- package/fesm2015/tnx-shared.js +30 -12
- package/fesm2015/tnx-shared.js.map +1 -1
- package/models/types.d.ts +15 -0
- package/models/types.d.ts.map +1 -0
- package/package.json +2 -2
- package/public-api.d.ts +1 -0
- package/public-api.d.ts.map +1 -1
- package/services/base.service.d.ts +1 -0
- package/services/base.service.d.ts.map +1 -1
- package/tnx-shared.metadata.json +1 -1
|
@@ -411,6 +411,7 @@ export class MaskControlSchema extends TextControlSchema {
|
|
|
411
411
|
constructor(init) {
|
|
412
412
|
super();
|
|
413
413
|
this.maskType = 'int';
|
|
414
|
+
this.autoFormat = true;
|
|
414
415
|
this.min = 0;
|
|
415
416
|
this.max = 9999999999;
|
|
416
417
|
this.prefix = '';
|
|
@@ -1199,4 +1200,4 @@ export var UserType;
|
|
|
1199
1200
|
UserType[UserType["CanBo"] = 0] = "CanBo";
|
|
1200
1201
|
UserType[UserType["Normal"] = 1] = "Normal";
|
|
1201
1202
|
})(UserType || (UserType = {}));
|
|
1202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY2xhc3Nlcy9mb3JtLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBS0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFrQmhGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHakgsTUFBTSxPQUFPLFdBQVc7SUFPcEIsWUFBWSxJQUFrQjtRQUY5QixhQUFRLEdBQWlGLFFBQVEsQ0FBQztRQUc5RixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFJakIsWUFBWSxJQUFlO1FBSDNCLG9HQUFvRztRQUNwRyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFHL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxlQUFlO0lBZ0d4QixZQUFZLElBQXNCO1FBNUZsQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFHakIsaUJBQVksR0FBbUIsRUFBRSxDQUFDO1FBQ2xDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBQy9CLGtCQUFhLEdBQW1CLElBQUksYUFBYSxFQUFFLENBQUM7UUFDcEQsZ0JBQVcsR0FBaUIsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM5QyxlQUFVLEdBQWdCLFVBQVUsQ0FBQyxPQUFPLENB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QUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsNkRBQTJDLENBQUE7SUFDM0MsdURBQXFDLENBQUE7QUFDekMsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN0QixtQ0FBaUIsQ0FBQTtJQUNqQixxREFBbUMsQ0FBQTtJQUNuQywrQkFBYSxDQUFBO0lBQ2IsbUNBQWlCLENBQUE7QUFDckIsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBRUQsTUFBTSxDQUFOLElBQVksU0FJWDtBQUpELFdBQVksU0FBUztJQUNqQix5Q0FBUSxDQUFBO0lBQ1IsNkNBQVUsQ0FBQTtJQUNWLDRDQUFVLENBQUE7QUFDZCxDQUFDLEVBSlcsU0FBUyxLQUFULFNBQVMsUUFJcEI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3ZCLDZEQUFZLENBQUE7SUFDWix1RUFBaUIsQ0FBQTtJQUNqQixtRUFBZSxDQUFBO0FBQ25CLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGFBR1g7QUFIRCxXQUFZLGFBQWE7SUFDckIsbUVBQWlCLENBQUE7SUFDakIsK0RBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSFcsYUFBYSxLQUFiLGFBQWEsUUFHeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2hCLHlDQUFLLENBQUE7SUFDTCwyQ0FBTSxDQUFBO0FBQ1YsQ0FBQyxFQUhXLFFBQVEsS0FBUixRQUFRLFFBR25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZVRyYW5zZm9ybSwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAndG4tY3VzdG9tLXByaW1lbmcvYXBpJztcclxuXHJcbmltcG9ydCB7IEF1dG9Db21wbGV0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYXV0b2NvbXBsZXRlLXBpY2tlci9hdXRvY29tcGxldGUtcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudW1Mb2FpVmFuQmFuQmFzZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvY29uZ3ZpZWMtcGlja2VyL21vZGVscy9lbnVtcyc7XHJcbmltcG9ydCB7IENydWRMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jcnVkL2NydWQtbGlzdC9jcnVkLWxpc3QuY29tcG9uZW50JztcclxuaW1wb3J0IHtcclxuICAgIEVudGl0eVBpY2tlckRhdGFDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXItZGlhbG9nL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci1kYXRhL2VudGl0eS1waWNrZXItZGF0YS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gICAgRW50aXR5UGlja2VyU2VsZWN0ZWRDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXItZGlhbG9nL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci1zZWxlY3RlZC9lbnRpdHktcGlja2VyLXNlbGVjdGVkLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEVudGl0eVBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZW50aXR5LXBpY2tlci9lbnRpdHktcGlja2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbGVNYW5hZ2VyU2V0dGluZywgRmlsZVVwbG9hZFNldHRpbmcgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvbW9kZWxzL2ZpbGUtc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBGaWxlRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL2ZpbGUtZXhwbG9yZXIvc2VydmljZXMvZmlsZS1kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGaWx0ZXIsIFNvcnQgfSBmcm9tICcuLi9tb2RlbHMvZ3JpZC1pbmZvJztcclxuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9iYXNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFbnRpdHlNZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnRpdHktbWV0YWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IE1hc3RlckRhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFzdGVyLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRyb2xUcmVlTm9kZSwgQ3J1ZEZvcm1Db21wb25lbnQgfSBmcm9tICcuLy4uL2NvbXBvbmVudHMvY3J1ZC9jcnVkLWZvcm0vY3J1ZC1mb3JtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElDb3JyZWN0b3IgfSBmcm9tICcuL2Jhc2UvY29ycmVjdG9ycyc7XHJcbmltcG9ydCB7IElWYWxpZGF0b3IgfSBmcm9tICcuL2Jhc2UvdmFsaWRhdG9ycyc7XHJcbmltcG9ydCB7IEVudW1Db250cm9sUGlja2VyVHlwZSwgRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5LCBGb3JtU3RhdGUsIFNoYXJlZEZvbGRlclR5cGUgfSBmcm9tICcuL2NvbnN0YW50cyc7XHJcbmltcG9ydCB7IFdvcmtmbG93U2V0dGluZywgV29ya2Zsb3dTZXR0aW5nTmV3IH0gZnJvbSAnLi93b3JrZmxvdy1zY2hlbWEnO1xyXG5cclxuZXhwb3J0IGNsYXNzIE1vZGVsU2NoZW1hIHtcclxuICAgIGZpZWxkOiBzdHJpbmc7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBmdWxsTmFtZTogc3RyaW5nO1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcclxuICAgIGRhdGFUeXBlPzogJ2ludCcgfCAnZGVjaW1hbCcgfCAnZGF0ZScgfCAnZGF0ZXRpbWUnIHwgJ3N0cmluZycgfCAnYm9vbGVhbicgfCAndGltZXNwYW4nID0gJ3N0cmluZyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IE1vZGVsU2NoZW1hKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZEJhc2Uge1xyXG4gICAgLy8gQ29tcG9uZW50IHN1YnNjcmliZSAtIEtoaSBzdWJjcmliZSBt4buZdCBjb21wb25lbnQgdGjDrCBhZGQgdsOgbyBhcnJheSDEkeG7gyBraGkgZGVzdHJveSB0aMOsIHVuc3Vic2NyaWJlXHJcbiAgICBjb21wb25lbnRTdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkQmFzZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRMaXN0U2V0dGluZyB7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICAgIHRpdGxlOiBzdHJpbmc7XHJcbiAgICB0YXJnZXRQYXRoPzogc3RyaW5nO1xyXG4gICAgb2JqZWN0TmFtZSA9ICcnO1xyXG4gICAgZW50aXR5S2V5ID0gJ2lkJztcclxuICAgIHNldHRpbmdLZXk/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlNZXRhZGF0YVNlcnZpY2U/OiBFbnRpdHlNZXRhZGF0YVNlcnZpY2U7XHJcbiAgICBtb2RlbFNjaGVtYXM/OiBNb2RlbFNjaGVtYVtdID0gW107XHJcbiAgICBjb2xzPzogQ29sdW1uU2NoZW1hQmFzZVtdID0gW107XHJcbiAgICBjb2x1bW5TZXR0aW5nPzogQ29sdW1uU2V0dGluZyA9IG5ldyBDb2x1bW5TZXR0aW5nKCk7XHJcbiAgICBwYWdlU2V0dGluZz86IFBhZ2VTZXR0aW5nID0gbmV3IFBhZ2VTZXR0aW5nKCk7XHJcbiAgICBoZWlnaHRUeXBlPzogSGVpZ2h0VHlwZSA9IEhlaWdodFR5cGUuZGVmYXVsdDsgLy8gQ8OzIGN1c3RvbSBjaGnhu4F1IGNhbyBraMO0bmc6IFRoxrDhu51uZyBz4butIGThu6VuZyB0cm9uZyBkaWFsb2dcclxuICAgIGZpeEhlaWdodFR5cGVJbkRpYWxvZz89IHRydWU7XHJcbiAgICBtdWx0aXBsZUNoZWNrV2hlbkNsaWNrUm93ID0gdHJ1ZTtcclxuICAgIGN1c3RvbVdvcmtmbG93Q29kZVRyaW5oS3k6IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleSA9IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleS5NQUNfRElOSDtcclxuICAgIHN0aWNreUNvbHVtbiA9IGZhbHNlO1xyXG4gICAgdGFibGVOYW1lPzogc3RyaW5nO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcclxuICAgIHJlU2VsZWN0TGFzdEl0ZW0/PSB0cnVlOyAvLyBTZWxlY3QgbOG6oWkgaXRlbSBjdeG7kWkgY8O5bmcgxJHDoyBjaOG7jW4gY+G7p2EgZ3JpZFxyXG4gICAgZmlyZUV2ZW50V2hlblJlU2VsZWN0Pz0gZmFsc2U7XHJcbiAgICBhZHZhbmNlRGF0YT86IGFueSA9IHt9O1xyXG4gICAgd29ya2Zsb3dTZXR0aW5nPzogV29ya2Zsb3dTZXR0aW5nO1xyXG4gICAgd29ya2Zsb3dTZXR0aW5nTmV3PzogV29ya2Zsb3dTZXR0aW5nTmV3O1xyXG4gICAgaXNXb3JrZmxvd1RyZWU/OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICB3b3JrZmxvd0NvbmZpZ0FkdmFuY2U/OiBXb3JrZmxvd0NvbmZpZ0FkdmFuY2U7XHJcbiAgICBkaXNwbGF5RmllbGQ6IHN0cmluZyB8ICgoaXRlbSkgPT4gc3RyaW5nKTsgLy8gdHLGsOG7nW5nIMSR4bqhaSBkaeG7h24gY2hvIGLhuqNuIGdoaSBsw6BtIHRpw6p1IMSR4buBIGhp4buDbiB0aOG7iyAocGjhu6VjIHbhu6UgY2hvIGPDoWMgZOG7i2NoIHbhu6Uga2jDoWMga2hhaSB0aMOhYylcclxuICAgIGdldERpc3BsYXlOYW1lSW5TZXJ2ZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGhhc0N1c3RvbUhhbmRsZUNsaWNrUm93ID0gZmFsc2U7XHJcbiAgICBjaGVja0FsbG93VHJpbmhLeTogKHJvd0RhdGEpID0+IFByb21pc2U8Ym9vbGVhbj47XHJcbiAgICBjaGVja0FsbG93U2VsZWN0Um93OiAocm93RGF0YSwgZXZ0PykgPT4gYm9vbGVhbjtcclxuICAgIGdldEl0ZW1TdGF0ZTogKGxzdFJvd0RhdGE6IGFueVtdKSA9PiB7IFtrZXk6IHN0cmluZ106IGFueTsgfTtcclxuICAgIGdldERhdGFGb3JOZXh0Rmlyc3RTdGVwVGFzaz86IChyb3dEYXRhKSA9PiAoe30pO1xyXG4gICAgY2hlY2tQZXJtaXNpb25UcmluaEt5ID0gZmFsc2U7XHJcblxyXG4gICAgc2hvd0VkaXRMaW5rID0gdHJ1ZTtcclxuXHJcbiAgICBoaWRkZW5IZWFkZXIgPSBmYWxzZTtcclxuICAgIGhpZGRlblBhZ2VTZXR0aW5nID0gZmFsc2U7XHJcbiAgICBoaWRkZW5UZXh0UGFnZSA9IGZhbHNlO1xyXG4gICAgaGlkZGVuVG9vbGJhciA9IGZhbHNlO1xyXG4gICAgaGlkZGVuQnV0dG9ucyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuQWR2YW5jZVNlYXJjaCA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2F2ZVNldHRpbmcgPSBmYWxzZTtcclxuICAgIGhpZGRlblNldHRpbmcgPSBmYWxzZTtcclxuICAgIGhpZGRlblNldHRpbmdQZXJtaXNzaW9uID0gZmFsc2U7XHJcbiAgICBoaWRkZW5TZXR0aW5nV29ya2Zsb3cgPSBmYWxzZTtcclxuICAgIGhpZGRlblBhZ2VUaXRsZSA9IGZhbHNlO1xyXG5cclxuICAgIGhpZGRlbkNoZWNrYm94ID0gZmFsc2U7XHJcbiAgICBoaWRkZW5PcmRlckNvbHVtbiA9IGZhbHNlO1xyXG4gICAgaGlkZGVuV29ya2Zsb3dDb2x1bW4gPSBmYWxzZTtcclxuICAgIGFsbG93RmlsdGVyV29ya2Zsb3dDb2x1bW4gPSBmYWxzZTtcclxuICAgIGhpZGRlbkZ1bmN0aW9uQ29sdW1uID0gZmFsc2U7XHJcbiAgICBoaWRkZW5SZWZyZXNoID0gZmFsc2U7XHJcbiAgICBoaWRkZW5GaWx0ZXJSb3cgPSBmYWxzZTtcclxuICAgIGhpZGRlblRyaW5oS3kgPSB0cnVlO1xyXG4gICAgdXNlQmFzZVRyaW5oS3kgPSB0cnVlO1xyXG4gICAgZGlzYWJsZVNoYXJlID0gZmFsc2U7XHJcbiAgICBkaXNhYmxlVmlld1dvcmtmbG93QXR0YWNoID0gZmFsc2U7XHJcbiAgICBoaWRkZW5Xb3JrZmxvd0NvcmVTdGF0dXMgPSB0cnVlO1xyXG4gICAgcmVxdWlyZWRWYW5CYW5EaUFmdGVyVHJpbmhLeSA9IGZhbHNlO1xyXG5cclxuICAgIGdyb3VwQ29sdW1uPzogQ29sdW1uU2NoZW1hQmFzZTtcclxuXHJcbiAgICBzaG93RXhwb3J0QWxsID0gZmFsc2U7XHJcbiAgICBzaG93RXhwb3J0U2VsZWN0ZWRJdGVtcyA9IHRydWU7XHJcbiAgICBleHBvcnRBbGxNb2RlbDogRXhwb3J0QWxsTW9kZSA9IEV4cG9ydEFsbE1vZGUuQXV0b0dldERhdGE7XHJcbiAgICBleHBvcnRJdGVtc01vZGU6IEV4cG9ydEl0ZW1zTW9kZSA9IEV4cG9ydEl0ZW1zTW9kZS5Gcm9tSHRtbDtcclxuXHJcbiAgICBlbmFibGVWZXJzaW9uID0gZmFsc2U7XHJcbiAgICBzaG93VmVyc2lvbkJ1dHRvbiA9IGZhbHNlO1xyXG4gICAgdmVyc2lvbk1vZGVsPzogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0gPSB7fTtcclxuICAgIHNob3dIaXN0b3J5ID0gZmFsc2U7XHJcbiAgICBoaXN0b3J5PzogYW55O1xyXG5cclxuICAgIGNvbG9yRmlsdGVyRmllbGQgPSAnJztcclxuICAgIGNvbG9yRmlsdGVyVGFibGU/OiBSb3dDb2xvck9wdGlvbltdID0gW107XHJcblxyXG4gICAgZW50aXR5TWV0YWRhdGFTZXR0aW5nPzogQ3J1ZEZvcm1TZXR0aW5nID0gbmV3IENydWRGb3JtU2V0dGluZygpO1xyXG5cclxuICAgIGZpZWxkU2VhcmNoVGV4dD86IHN0cmluZ1tdID0gW107XHJcbiAgICBmaWx0ZXJUZW1wbGF0ZUFkdnM/OiBGaWx0ZXJbXTtcclxuXHJcbiAgICBmdW5jdGlvbjogQ3J1ZExpc3RDdXN0b21GdW5jdGlvbiA9IG5ldyBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uKCk7XHJcblxyXG4gICAgcG9wdXBIZWFkZXI/PSAnJztcclxuICAgIHBvcHVwU2l6ZT86IFBvcHVwU2l6ZSA9IG5ldyBQb3B1cFNpemUoKTtcclxuICAgIG1hc2tDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICBtb2RpZnlSb3dEYXRhRm9yVGFzazogKHJvd0RhdGEpID0+IHZvaWQgPSAocm93RGF0YSkgPT4gKHt9KTtcclxuICAgIG1vZGlmeUl0ZW1UYXNrOiAobW9kZWxUYXNrLCByb3dEYXRhKSA9PiB2b2lkID0gKG1vZGVsVGFzaywgcm93RGF0YSkgPT4gKHt9KTtcclxuICAgIGdldEN1c3RvbURhdGFUcmluaEt5OiAocm93RGF0YSkgPT4gYW55ID0gKHJvd0RhdGEpID0+ICh7fSk7XHJcbiAgICBnZXRMYWJlbEJ1dHRvblRyaW5oS3k6IChyb3dEYXRhKSA9PiBzdHJpbmcgPSAocm93RGF0YSkgPT4gJ1Ryw6xuaCBrw70nO1xyXG4gICAgY2hlY2tSZWFkeVRvVHJpbmhLeTogKCkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0U2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdvcmtmbG93Q29uZmlnQWR2YW5jZSB7XHJcbiAgICBnZXRXb3JrZmxvd1NldHRpbmc6IChyb3dEYXRhKSA9PiBXb3JrZmxvd1NldHRpbmdOZXc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uIHtcclxuICAgIC8vIEN1c3RvbWl6ZVxyXG4gICAgZ2V0U2VhcmNoQ29udHJvbD86IChmaWVsZDogc3RyaW5nKSA9PiBGb3JtU2NoZW1hQmFzZVtdID0gKGZpZWxkOiBzdHJpbmcpID0+IG51bGw7XHJcbiAgICAvLyBBc3luYyBmdW5jdGlvblxyXG4gICAgbW9kaWZ5QWR2YW5jZVNlYWNoTW9kZWw/OiAoZGF0YTogQWR2YW5jZVNlYXJjaERhdGEsIHNldHRpbmc6IEFkdmFuY2VTZWFyY2hTZXR0aW5nKSA9PiBQcm9taXNlPHZvaWQ+ID0gYXN5bmMgKGRhdGEpID0+IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQZXJzb25hbFNldHRpbmcge1xyXG4gICAgY29sdW1uU2V0dGluZz86IENvbHVtblNldHRpbmcgPSBuZXcgQ29sdW1uU2V0dGluZygpO1xyXG4gICAgcGFnZVNldHRpbmc/OiBQYWdlU2V0dGluZyA9IG5ldyBQYWdlU2V0dGluZygpO1xyXG4gICAgY29sb3JGaWx0ZXJGaWVsZCA9ICcnO1xyXG4gICAgY29sb3JGaWx0ZXJUYWJsZT86IFJvd0NvbG9yT3B0aW9uW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUGVyc29uYWxTZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3REYXRhIGV4dGVuZHMgQ3J1ZEJhc2Uge1xyXG4gICAgbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgYWRqdXN0ZWRQb3NpdGlvbkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIHJlYWR5ID0gdHJ1ZTtcclxuICAgIC8vIGJhc2UgcmVhZHkgbMOgIGNo4bupYyBuxINuZyBraeG7g20gdHJhIHJlYWR5IGPhu6dhIHJpw6puZyB0cm9uZyBiYXNlLiBrIGdp4buRbmcgduG7m2kgcmVhZHkg4bufIHRyw6puXHJcbiAgICAvLyBEw7luZyDEkeG7gyBraeG7g20gdHJhIG7hur91IGPDsyB3b3JrZmxvdyB0aMOsIHThuqFtIHRo4budaSBjaMawYSBjaG8g4bqlbiB0aMOqbSBt4bubaSBu4bq/dSBjaMawYSBsb2FkIHhvbmcgZOG7ryBsaeG7h3UgY+G6p24gdGhp4bq/dFxyXG4gICAgYmFzZVJlYWR5ID0gZmFsc2U7XHJcbiAgICBkYXRhU291cmNlPzogYW55W10gPSBbXTtcclxuICAgIHNlbGVjdGVkSXRlbXM/OiBhbnlbXSA9IFtdO1xyXG4gICAgc2VsZWN0ZWRJdGVtPzogYW55O1xyXG4gICAgc2VsZWN0ZWRJdGVtTGFzdD86IGFueTtcclxuICAgIHNlbGVjdGVkSWQ/OiBudW1iZXI7XHJcbiAgICB0b3RhbCA9IDA7XHJcbiAgICBpdGVtRGF0YT86IGFueTtcclxuICAgIGFkdmFuY2VEYXRhOiBhbnkgPSB7fTtcclxuXHJcbiAgICAvLyBDw6FjIHRodeG7mWMgdMOtbmggYuG7lSBzdW5nIGRvIGLhu4sgbOG7l2kga2hpIHBhY2thZ2VcclxuICAgIHN1Ym1pdHRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8vIEVuZCBDw6FjIHRodeG7mWMgdMOtbmggYuG7lSBzdW5nIGRvIGLhu4sgbOG7l2kga2hpIHBhY2thZ2VcclxuXHJcbiAgICBleHBhbmRlZFJvd0tleXM/OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW47IH0gPSB7fTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3REYXRhKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlNZWRhdGFEYXRhU2V0dGluZyB7XHJcbiAgICBkYXRhPzogYW55ID0ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVudGl0eU1lZGF0YURhdGFTZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUm93Q29sb3JPcHRpb24ge1xyXG4gICAgZmlsdGVyVmFsdWUgPSAnJztcclxuICAgIGNvbXBhcmVUeXBlID0gJyc7XHJcbiAgICBjb2xvciA9ICcnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBSb3dDb2xvck9wdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2VTZXR0aW5nIHtcclxuICAgIHBhZ2UgPSAxO1xyXG4gICAgcGFnZVNpemUgPSAxNTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUGFnZVNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5TZXR0aW5nIHtcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/OiBzdHJpbmc7XHJcbiAgICBzb3J0RGlyPzogLTEgfCAwIHwgMSB8IDIgPSAtMTtcclxuICAgIGdyb3VwRmllbGQgPSAnJztcclxuICAgIGdyb3VwSW5DbGllbnQ/ID0gZmFsc2U7XHJcbiAgICBkZXRhaWxzPzogQ29sdW1uU2V0dGluZ0RldGFpbFtdID0gW107XHJcbiAgICBjb2x1bW5SZW9yZGVyPztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sdW1uU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmdEZXRhaWwge1xyXG4gICAgb3JkZXI/OiBudW1iZXI7XHJcbiAgICBjb2x1bW5Db2RlPzogc3RyaW5nO1xyXG4gICAgY29sdW1uTmFtZT86IHN0cmluZztcclxuICAgIHZpc2libGU/OiBib29sZWFuO1xyXG4gICAgdGV4dEFsaWduPzogVGV4dEFsaWduO1xyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkRm9ybURhdGEgZXh0ZW5kcyBDcnVkQmFzZSB7XHJcbiAgICBkYXRhPzogYW55ID0ge307XHJcbiAgICBzdWJtaXR0aW5nPz0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICAqIFRy4bqhbmcgdGjDoWkgY+G7p2EgZm9ybSDEkWFuZyDEkcaw4bujYyBt4bufOiBMw6AgZm9ybSB0aMOqbSBt4bubaSwgaGF5IGZvcm0gc+G7rWEsIGhheSBmb3JtIHjDs2FcclxuICAgICAqL1xyXG4gICAgZm9ybVN0YXRlPzogRm9ybVN0YXRlID0gRm9ybVN0YXRlLkFERDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZEZvcm1EYXRhKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uIHtcclxuICAgIC8vIEN1c3RvbWl6ZVxyXG4gICAgbW9kaWZ5RGF0YUFmdGVyR2V0Q2FjaGU/OiAoZGF0YTogYW55KSA9PiB2b2lkID0gKGRhdGE6IGFueSkgPT4gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDdXN0b21GdW5jdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRGb3JtU2V0dGluZyB7XHJcbiAgICBkaXNhYmxlQ2FjaGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuVHJpbmhLeSA9IHRydWU7XHJcbiAgICBzY2hlbWE/OiBGb3JtU2NoZW1hQmFzZVtdID0gW107XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlO1xyXG4gICAgYnVpbGRJblNjaGVtYT86IEZvcm1Db250cm9sQmFzZVtdID0gW107XHJcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZ1tdIHwgc3RyaW5nW11bXSA9IFtdO1xyXG4gICAgZmllbGREcm9wZG93bj86IHsgW2tleTogc3RyaW5nXTogRHJvcGRvd25Db250cm9sU2NoZW1hOyB9ID0ge307XHJcbiAgICBmaWVsZE5lZWRHZXRSZWY/OiB7IFtrZXk6IHN0cmluZ106IFRleHRDb250cm9sU2NoZW1hOyB9ID0ge307XHJcbiAgICBkaXNwbGF5RmllbGQ/OiBzdHJpbmcgfCAoKGl0ZW0pID0+IHN0cmluZyk7XHJcbiAgICBmaXJzdEZvY3VzQ29udHJvbD86IHN0cmluZztcclxuICAgIGZpbHRlckNoZWNrRXhpc3RCeVZlcnNpb24/OiBGaWx0ZXJbXTtcclxuICAgIGRlZmF1bHRGaWx0ZXJDaGVja0V4aXN0PzogRmlsdGVyW10gfCAoKCkgPT4gRmlsdGVyW10pO1xyXG4gICAgY3VzdG9tV29ya2Zsb3dDb2RlVHJpbmhLeTogRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5ID0gRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5Lk1BQ19ESU5IO1xyXG4gICAgZW50aXR5TWV0YWRhdGFEYXRhPzogQ3J1ZEZvcm1EYXRhO1xyXG4gICAgZW50aXR5TWV0YWRhdGFTZXR0aW5nPzogQ3J1ZEZvcm1TZXR0aW5nO1xyXG4gICAgZnVuY3Rpb24/OiBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uID0gbmV3IENydWRGb3JtQ3VzdG9tRnVuY3Rpb24oKTtcclxuICAgIGdldEN1c3RvbURhdGFUcmluaEt5OiAocm93RGF0YSkgPT4gYW55ID0gKHJvd0RhdGEpID0+ICh7fSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRGb3JtU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFkdmFuY2VTZWFyY2hEYXRhIGV4dGVuZHMgQ3J1ZEZvcm1EYXRhIHtcclxuICAgIGluaXREYXRhPzogYW55ID0ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEFkdmFuY2VTZWFyY2hEYXRhKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBZHZhbmNlU2VhcmNoU2V0dGluZyBleHRlbmRzIENydWRGb3JtU2V0dGluZyB7XHJcbiAgICBmaWVsZEtleSA9ICdfayc7XHJcbiAgICBlbnRpdHlQZXJtaXNzaW9uU2NoZW1hPzogRm9ybUNvbnRyb2xCYXNlW10gPSBbXTtcclxuICAgIGtlZXBJbml0U2VhcmNoRGF0YU5vdE51bGwgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZHZhbmNlU2VhcmNoU2V0dGluZykge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2NoZW1hQmFzZSB7XHJcbiAgICBmaWVsZD86IHN0cmluZztcclxuICAgIGZpZWxkRmlsdGVyPzogc3RyaW5nO1xyXG4gICAgdW5pcXVlRmllbGQ/OiBzdHJpbmc7XHJcbiAgICB0eXBlPzogJ2Jvb2xlYW4nIHwgJ2ludCcgfCAnZGVjaW1hbCcgfCAnZGF0ZXRpbWUnIHwgJ3N0cmluZycgPSAnc3RyaW5nJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1TY2hlbWFCYXNlIGV4dGVuZHMgU2NoZW1hQmFzZSB7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGZ1bGxMYWJlbD86IHN0cmluZztcclxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG4gICAgc2hvd0xhYmVsPz0gdHJ1ZTtcclxuICAgIGdXaWR0aD89IDEyO1xyXG4gICAgbWRXaWR0aD89IDY7XHJcbiAgICB3aWR0aD86IHN0cmluZztcclxuICAgIGNsYXNzPz0gJyc7XHJcbiAgICBzdHlsZT86IGFueSA9IHt9O1xyXG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xyXG4gICAgaGlkZGVuPz0gZmFsc2U7XHJcbiAgICBoaWRkZW5DaGVjaz86IChyb290TW9kZWw6IGFueSwgY3VycmVudE5vZGU6IENvbnRyb2xUcmVlTm9kZSkgPT4gYm9vbGVhbjtcclxuICAgIGhpZGRlbk9uVmlldz89IGZhbHNlO1xyXG4gICAgdmlzaWJsZUluTGlzdD89IHRydWU7XHJcbiAgICBvcGVyYXRvcj86IE9wZXJhdG9yO1xyXG4gICAgZ3JvdXBDb2RlPz0gJyc7XHJcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnk7XHJcbiAgICBmaWVsZEFsaWFzPz0gJyc7XHJcbiAgICBkYXRhPzogYW55ID0ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZvcm1TY2hlbWFCYXNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb250YWluZXJTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICBjb250cm9sczogRm9ybVNjaGVtYUJhc2VbXTtcclxuICAgIHNob3dJbkJveD89IHRydWU7XHJcbiAgICBib3hTdHlsZT86IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29udGFpbmVyU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgLy8gVXJsIMSR4buDIGzhuqV5IGThu68gbGnhu4d1ICoqKiBLSMOUTkcgU+G7rCBE4bukTkcgVFJPTkcgQ8OBQyBDQVNFIFBI4buUIEJJ4bq+TiwgQ0jhu4ggU+G7rCBE4bukTkcgxJDhu5BJIFbhu5pJIEZPUk0gS0jhuqJPIFPDgVQgKioqXHJcbiAgICBzZXJ2aWNlVXJpPz0gJyc7XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XHJcbiAgICByZWZGaWVsZHM/OiBSZWZGaWVsZFtdID0gW107XHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgZGF0YVNvdXJjZT86IGFueVtdID0gW107XHJcblxyXG4gICAgaXNTZXJ2ZXJMb2FkPz0gZmFsc2U7XHJcbiAgICBzZWFyY2hGaWVsZD86IHN0cmluZ1tdO1xyXG5cclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVQYXJlbnRSb290PzogYW55ID0gbnVsbDsgLy8gR2nDoSB0cuG7iyB0csaw4budbmcgW2ZpZWxkVHJlZV0gY+G7p2EgaXRlbSB0cmVlIHJvb3RcclxuICAgIGZpZWxkUGFyZW50VHJlZUl0ZW0/PSAnaWQnOyAvLyBUcsaw4budbmcgeMOhYyDEkeG7i25oIGLhuqNuIGdoaSBsw6AgYuG6o24gZ2hpIGNoYSBj4bunYSBi4bqjbiBnaGkgY29uXHJcbiAgICBzZWxlY3RDaGlsZEl0ZW0/PSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uIG7hur91IGNo4buNbiBi4bqjbiBnaGkgY2hhXHJcbiAgICBzZWxlY3REZXNjZW5kYW50Pz0gZmFsc2U7Ly8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uLCBjaMOhdSBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG5cclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXHJcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjsgLy8gdHVuZ3RzIHRow6ptIGtp4buDdSBk4buvIGxp4buHdSBkZWZhdWx0RmlsdGVycyBsw6AgcHJvbWlzZVxyXG4gICAgYWZ0ZXJHZXREYXRhPzogRnVuY3Rpb247XHJcblxyXG4gICAgZnVuY1NldERlZmF1bHRWYWx1ZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGZpZWxkVmFsdWVQYXJlbnQ/PSAndmFsdWUnOyAvLyBUcsaw4budbmcgc+G7rSBk4bulbmcgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgbMOgbSBraMOzYSB04burIGLhuqNuZyBjaGEgY+G7p2EgaXRlbSBkcm9wIGRvd24gxJHGsOG7o2MgY2jhu41uXHJcblxyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb247XHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMYWJlbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIGZvcj89ICcnO1xyXG4gICAgaXNIdG1sPz0gZmFsc2U7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICBpbmRleExhYmVsPzogbnVtYmVyO1xyXG4gICAgdGV4dD89ICcnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBMYWJlbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGl0bGVTY2hlbWEgZXh0ZW5kcyBMYWJlbFNjaGVtYSB7XHJcbiAgICBjbGFzcz89ICd0aXRsZS1ncm91cCB0ZXh0LWJvbGQnO1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUaXRsZVNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybUNvbnRyb2xCYXNlIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgX2NvbXBvbmVudD86IGFueTsgLy8gQ29tcG9uZW50IGPhu6dhIHNjaGVtYSBraGkga2jhu59pIHThuqFvXHJcbiAgICB1bmlxdWVGaWVsZD86IHN0cmluZzsgLy8gU+G7rSBk4bulbmcgdHJvbmcgdGFibGUgc2NoZW1hXHJcbiAgICBhdXRvZm9jdXM/PSBmYWxzZTtcclxuICAgIHZhbGlkYXRvcnM/OiBJVmFsaWRhdG9yW10gPSBbXTtcclxuICAgIGNvcnJlY3RvcnM/OiBJQ29ycmVjdG9yW10gPSBbXTtcclxuICAgIHJlcXVpcmVkPz0gZmFsc2U7XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gZmFsc2U7XHJcbiAgICBvbkNoYW5nZWQ/OiBGdW5jdGlvbjtcclxuICAgIG9uSW5pdD86IEZ1bmN0aW9uO1xyXG4gICAgdHJpZ2dlckxvYWRDaGlsZD86IEZ1bmN0aW9uO1xyXG4gICAgaGFzT3BlcmF0b3JDYW5Cbz89IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtQ29udHJvbEJhc2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIC8qKiBDb3B5IHThu6sgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSAqL1xyXG4gICAgLy8gVXJsIMSR4buDIGzhuqV5IGThu68gbGnhu4d1ICoqKiBLSMOUTkcgU+G7rCBE4bukTkcgVFJPTkcgQ8OBQyBDQVNFIFBI4buUIEJJ4bq+TiwgQ0jhu4ggU+G7rCBE4bukTkcgxJDhu5BJIFbhu5pJIEZPUk0gS0jhuqJPIFPDgVQgKioqXHJcbiAgICBzZXJ2aWNlVXJpPz0gJyc7XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XHJcbiAgICByZWZGaWVsZHM/OiBSZWZGaWVsZFtdID0gW107XHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG5cclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgc2VhcmNoRmllbGQ/OiBzdHJpbmdbXTtcclxuXHJcbiAgICBpc1RyZWU/PSBmYWxzZTtcclxuICAgIGZpZWxkVHJlZT86IHN0cmluZztcclxuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgZmllbGRNYVBoYW5DYXA/PSAnbWFQaGFuQ2FwJzsgLy8gRmllbGQgbcOjIHBow6JuIGPhuqVwXHJcbiAgICBzZWxlY3RDaGlsZEl0ZW0/PSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uIG7hur91IGNo4buNbiBi4bqjbiBnaGkgY2hhXHJcbiAgICBzZWxlY3REZXNjZW5kYW50Pz0gZmFsc2U7Ly8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uLCBjaMOhdSBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG5cclxuICAgIHBhZ2VTaXplPzogbnVtYmVyID0gMTU7IC8vIETDuW5nIGNobyBkcm9wZG93biBzZXJ2ZXIgbG9hZFxyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcclxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+OyAvLyB0dW5ndHMgdGjDqm0ga2nhu4N1IGThu68gbGnhu4d1IGRlZmF1bHRGaWx0ZXJzIGzDoCBwcm9taXNlXHJcbiAgICBmaWx0ZXJXaGlsZVByb2Nlc3M/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47IC8vIHR1bmd0cyB0aMOqbSBraeG7g3UgZOG7ryBsaeG7h3UgZGVmYXVsdEZpbHRlcnMgbMOgIHByb21pc2VcclxuICAgIGJpbmRpbmdGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+OyAvLyB0dW5ndHMgdGjDqm0ga2nhu4N1IGThu68gbGnhu4d1IGRlZmF1bHRGaWx0ZXJzIGzDoCBwcm9taXNlXHJcbiAgICBhZnRlckdldERhdGE/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBmdW5jU2V0RGVmYXVsdFZhbHVlPzogRnVuY3Rpb247XHJcblxyXG4gICAgcGFyZW50RmllbGQ/OiBzdHJpbmc7IC8vIENvbHVtbiB0xrDGoW5nIOG7qW5nIHRyb25nIHRhYmxlIHNxbCBzZXJ2ZXIuXHJcbiAgICBmaWVsZFZhbHVlUGFyZW50Pz0gJ3ZhbHVlJzsgLy8gVHLGsOG7nW5nIHPhu60gZOG7pW5nIMSR4buDIGzhuqV5IGThu68gbGnhu4d1IGzDoG0ga2jDs2EgdOG7qyBi4bqjbmcgY2hhIGPhu6dhIGl0ZW0gZHJvcCBkb3duIMSRxrDhu6NjIGNo4buNblxyXG5cclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZpcmVDYWxsQmFja0luc2lkZT89IHRydWU7XHJcbiAgICBtb2RpZnlGaWx0ZXI/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG5cclxuICAgIC8qKiBFbmQgY29weSB04burIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UgKi9cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNlbGVjdEFsbFRleHQ/PSBmYWxzZTsgLy8gQ2jhu41uIHThuqV0IGPhuqMgdGV4dCBraGkgZm9jdXNcclxuXHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgZGF0YUZvcm1hdD86ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnbnVtYmVyJyB8ICdlbWFpbCcgfCAncGhvbmUnIHwgJ2ZheCcgfCAnbW9uZXknIHwgJ21vbmV5aW50JyB8ICdhbW91bnQnID0gJ3RleHQnO1xyXG4gICAgbWF4TGVuZ3RoPzogbnVtYmVyO1xyXG4gICAgbWluPz0gMDtcclxuICAgIG1heD89IDk5OTk5OTk5O1xyXG5cclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIGdyb3VwQ29kZT86IHN0cmluZztcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcblxyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlZmVyZW5jZVRleHRDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHBsYWNlaG9sZGVyPz0gJyc7XHJcbiAgICBzdWZmaXg/OiBzdHJpbmc7XHJcbiAgICBwcmVmaXg/OiBzdHJpbmc7XHJcblxyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcblxyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7IC8vIERhbmggc8OhY2ggbmjhu69uZyB0csaw4budbmcgYuG7lSBzdW5nIGPhuqduIGzhuqV5IHRow6ptIG5nb8OgaSBpZCwgdGVuOyBWw60gZOG7pSAsbWFcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBSZWZlcmVuY2VUZXh0Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGV4dENvbnRyb2xTY2hlbWFXaXRoU2VydmljZSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcclxuICAgIHBsYWNlaG9sZGVyPz0gJyc7XHJcbiAgICBkYXRhRm9ybWF0PzogJ3RleHQnIHwgJ251bWJlcicgfCAnZW1haWwnIHwgJ3Bob25lJyB8ICdmYXgnIHwgJ21vbmV5JyB8ICdtb25leWludCcgfCAnYW1vdW50JyA9ICd0ZXh0JztcclxuICAgIG1heExlbmd0aD86IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dENvbnRyb2xTY2hlbWFXaXRoU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTWFza0NvbnRyb2xTY2hlbWEgZXh0ZW5kcyBUZXh0Q29udHJvbFNjaGVtYSB7XHJcbiAgICBtYXNrVHlwZT86ICdkZWNpbWFsJyB8ICdpbnQnID0gJ2ludCc7XHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5OTk5OTtcclxuICAgIHByZWZpeD89ICcnO1xyXG4gICAgc3VmZml4Pz0gJyc7XHJcbiAgICBkZWNpbWFsUGxhY2VzPz0gMjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTWFza0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSBleHRlbmRzIFRleHRDb250cm9sU2NoZW1hIHtcclxuICAgIG1hc2tUeXBlPzogJ2RlY2ltYWwnIHwgJ2ludCc7XHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5OTk5OTtcclxuICAgIHByZWZpeD89ICcnO1xyXG4gICAgc3VmZml4Pz0gJyc7XHJcbiAgICBkZWNpbWFsUGxhY2VzPz0gMjtcclxuICAgIC8vIFPhu60gZOG7pW5nIMSR4buDIGtoYWkgYsOhbyBvcGVyYXRvciBjaG8gY29udHJvbCB0cm9uZyBxdWVyeS1idWlsZGVyIHRoYXkgY2hvIGPDoWMgb3BlcmF0b3IgbeG6t2MgxJHhu4tuaCDEkcaw4bujYyB04bqhbyB04burIHF1ZXJ5LWJ1aWxkZXJcclxuICAgIG9wZXJhdG9ycz86IGFueVtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIHBhbmVsQ2xhc3M/PSAnJztcclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gICAgc2hvd1RpbWU/PSBmYWxzZTtcclxuICAgIHNob3dJY29uPz0gdHJ1ZTtcclxuICAgIGZvcm1hdD86ICdub3JtYWwnIHwgJ2Zyb21Ob3cnID0gJ25vcm1hbCc7XHJcbiAgICBzaG93T25Gb2N1cz89IHRydWU7XHJcbiAgICBtaW5EYXRlPzogRGF0ZSA9IG51bGw7XHJcbiAgICBtYXhEYXRlPzogRGF0ZSA9IG51bGw7XHJcbiAgICB0aW1lT25seT89IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEYXRlVGltZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnNob3dUaW1lID8gJ2RkL01NL3l5eXkgaGg6bW0nIDogJ2RkL01NL3l5eXknO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUmFuZ2VDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0ZVRpbWVDb250cm9sU2NoZW1hIHtcclxuICAgIHNob3dJY29uPz0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGVUaW1lQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcclxuXHJcbiAgICAvLyAjUHJvcGVydHkgb3ZlcnJpZGVcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2U7XHJcbiAgICAvLyAjRW5kIHByb3BlcnR5IG92ZXJyaWRlXHJcblxyXG4gICAgcmV0dXJuVHlwZT86ICd2YWx1ZScgfCAnb2JqZWN0JyA9ICd2YWx1ZSc7XHJcblxyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgbGltaXQ/PSAxMDAwO1xyXG4gICAgdGl0bGU/PSAnICc7XHJcbiAgICBjb2x1bW5zPzogRW50aXR5UGlja2VyQ29sdW1uW107XHJcbiAgICBmaWVsZFNlYXJjaFRleHQ/OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZGF0YUluaXQ/OiBhbnkgPSB7fTtcclxuICAgIGFkdmFuY2VTZWFyY2hNb2RlbD86IGFueSA9IHt9O1xyXG4gICAgb25TZWFyY2hGb3JtSW5pdGlhbGl6ZWQ/OiBGdW5jdGlvbjtcclxuICAgIG9uRm9ybUV2ZW50PzogRnVuY3Rpb247XHJcbiAgICBvblNlbGVjdEVudGl0eT86IEZ1bmN0aW9uOyAvLyBu4bq/dSBmdW5jdGlvbiBraMOhYyBudWxsIHbDoCByZXR1cm4gdHJ1ZSBz4bq9IGNobyBwaMOpcCBt4bufIGRpYWxvZ1xyXG4gICAgYWZ0ZXJDb250ZW50TGVmdEluaXQ/OiAoY3J1ZExpc3Q6IENydWRMaXN0Q29tcG9uZW50KSA9PiB2b2lkOyAvLyBTYXUga2hpIGPDoWMgdGVtcGxhdGUgY29udGVudCBpbml0XHJcbiAgICBhZnRlckNvbnRlbnRSaWdodEluaXQ/OiAoY3J1ZExpc3Q6IENydWRMaXN0Q29tcG9uZW50KSA9PiB2b2lkOyAvLyBTYXUga2hpIGPDoWMgdGVtcGxhdGUgY29udGVudCBpbml0XHJcbiAgICBhZnRlckdldERhdGE/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlckNvbXBvbmVudCkgPT4gdm9pZDtcclxuICAgIGFmdGVyR2V0RGF0YVVuUGlja2VkPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJEYXRhQ29tcG9uZW50KSA9PiB2b2lkO1xyXG4gICAgYWZ0ZXJHZXREYXRhUGlja2VkPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJTZWxlY3RlZENvbXBvbmVudCkgPT4gdm9pZDtcclxuXHJcbiAgICAvLyBDw7Mgc+G7rSBk4bulbmcgcGx1c1VybCDhu58gbcOgbiBow6xuaCBjaMOtbmggRW50aXR5UGlja2VyIGhheSBraMO0bmcuXHJcbiAgICB1c2VEZWZhdWx0UGx1c2xVcmxJbkxpc3Q/PSBmYWxzZTtcclxuXHJcbiAgICAvLyBDw7Mgc+G7rSBk4bulbmcgZGVmYXVsdEZpbHRlciBraGkgdMOsbSBraeG6v20gZGFuaCBzw6FjaCDhu58gbcOgbiBow6xuaCBjaMOtbmggRW50aXR5UGlja2VyLlxyXG4gICAgdXNlRGVmYXVsdEZpbHRlckluTGlzdD89IGZhbHNlO1xyXG5cclxuICAgIGhpZGRlbkFkdmFuY2VTZWFyY2g/PSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEge1xyXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgICBkYXRhVHlwZT86IEVudW1Db250cm9sUGlja2VyVHlwZSA9IEVudW1Db250cm9sUGlja2VyVHlwZS5VU0VSO1xyXG4gICAgYXBwZW5kVG8/PSAnYm9keSc7XHJcbiAgICBtb2RpZnlJbml0U2VhcmNoRGF0YT86IEZ1bmN0aW9uOyAvLyBT4butIGThu6VuZyDEkeG7gyBtb2RpZnkgZGF0YSBj4bunYSBwaOG6p24gc2VhcmNoLCB0aMaw4budbmcgxJHhu4Mgc2V0IGluaXQgZGF0YSBkeW5hbWljIHRoZW8gbmh1IGPhuqd1XHJcbiAgICBjYWxsQmFjaz86IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb247IH07XHJcbiAgICBvblJlYWR5PzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5Q29udHJvbD86IEZ1bmN0aW9uOyAvLyBT4butIGThu6VuZyDEkeG7gyBtb2RpZnkgc2NoZW1hIGJhc2VcclxuICAgIG5lZWRDbG9uZT89IGZhbHNlOyAvLyBT4butIGThu6VuZyB0cm9uZyB0YWJsZSBzY2hlbWEsIGtoaSBkYXRhc291cmNlIGPhu6dhIG3hu5l0IGPhu5l0IHRyw6puIG3hu5dpIGTDsm5nIGzDoCBraMOhYyBuaGF1IGPhuqduIHNldCBuZWVkQ2xvbmUgPSB0cnVlXFxcclxuICAgIGFmdGVyR2V0RGF0YURyb3Bkb3duPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBBdXRvQ29tcGxldGVQaWNrZXJDb21wb25lbnQpID0+IHZvaWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdyYXBQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSB7XHJcbiAgICBkYXRhVHlwZT86IEVudW1Db250cm9sUGlja2VyVHlwZSA9IEVudW1Db250cm9sUGlja2VyVHlwZS5VU0VSO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBXcmFwUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICAgIC8vIFPhu60gZOG7pW5nIMSR4buDIGtoYWkgYsOhbyBvcGVyYXRvciBjaG8gY29udHJvbCB0cm9uZyBxdWVyeS1idWlsZGVyIHRoYXkgY2hvIGPDoWMgb3BlcmF0b3IgbeG6t2MgxJHhu4tuaCDEkcaw4bujYyB04bqhbyB04burIHF1ZXJ5LWJ1aWxkZXJcclxuICAgIG9wZXJhdG9ycz86IGFueVtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDdXN0b21Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2xvclBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbG9yUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFNwYW5Db250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgaXNodG1sPz0gZmFsc2U7XHJcbiAgICBlZGl0YWJsZT89IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTcGFuQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sb3JDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb2xvckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEtleVZhbHVlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogS2V5VmFsdWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgLy8gZW1pdCBldmVudCBraGkgY2jhu41uIG3hu5l0IHJvdyB0cm9uZyBmaWxlIG1hbmFnZXJcclxuICAgIG9uU2VsZWN0ZWQ/OiBGdW5jdGlvbiA9ICgpID0+IHtcclxuICAgIH07XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICBhY2NlcHQ/OiBzdHJpbmc7XHJcbiAgICBtYXhGaWxlU2l6ZT89IDEwMDAwMDAwMDtcclxuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5Pz0gJ3swfTogUXXDoSBkdW5nIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbD89ICdkdW5nIGzGsOG7o25nIHThu5FpIMSRYSBsw6AgezB9Lic7XHJcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeT89ICd7MH06IEtow7RuZyDEkcO6bmcgxJHhu4tuaCBk4bqhbmcgZmlsZSwgJztcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWw/PSAnxJHhu4tuaCBk4bqhbmcgZmlsZSBjaG8gcGjDqXA6IHswfS4nO1xyXG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5Pz0gJ1F1w6Egc+G7kSBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcclxuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsPz0gJ3Thu5FpIMSRYSB7MH0gZmlsZS4nO1xyXG4gICAgbW9kZT86IEZpbGVNYW5hZ2VyTW9kZSB8IEZpbGVVcGxvYWRNb2RlID0gRmlsZU1hbmFnZXJNb2RlLm11bHRpcGxlO1xyXG4gICAgbGF5b3V0PzogRW51bUZpbGVMYXlvdXQgPSBFbnVtRmlsZUxheW91dC5MSVNUO1xyXG4gICAgcmVhZG9ubHk/PSBmYWxzZTtcclxuXHJcbiAgICAvLyBTZXJ2aWNlIGTDuW5nIMSR4buDIGzhuqV5IGRhdGFzb3VyY2UgY+G7p2Egbmhp4buBdSBjb250cm9sIG3hu5l0IGzhuqduLlxyXG4gICAgZmlsZURhdGFTZXJ2aWNlPzogRmlsZURhdGFTZXJ2aWNlO1xyXG5cclxuICAgIC8vIELhu5kgMyBrZXkgxJHhu4MgbOG6pXkgdGjGsCBt4bulYyBn4buRYy5cclxuICAgIHNlcnZpY2VDb2RlPzogc3RyaW5nO1xyXG4gICAgZW50aXR5Pzogc3RyaW5nO1xyXG4gICAgZW50aXR5S2V5Pzogc3RyaW5nO1xyXG5cclxuICAgIC8vIFTDqm4gdGjGsCBt4bulYyBn4buRYyBraGkgaGnhu4NuIHRo4buLIHRyw6puIGJyZWFkY3J1bWJzLlxyXG4gICAgcm9vdEZvbGRlck5hbWU/OiBzdHJpbmc7XHJcblxyXG4gICAgLy8gVHLGsOG7nW5nIGjhu6NwIOG7nyB0cm9uZyBmb3JtLCBkw7luZyB0csaw4budbmcgbsOgeSDEkeG7gyBs4bqleVxyXG4gICAgLy8gZW50aXR5S2V5IHThu6sgbW9kZWwuZGF0YSB0aGF5IHbDrCB0cnV54buBbiB2w6BvIGVudGl0eUtleVxyXG4gICAgZW50aXR5S2V5RmllbGQ/PSAnaWQnO1xyXG4gICAgZGF0YUt5U29Eb25WaT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGluVGFpTGlldT89IGZhbHNlO1xyXG4gICAgaW5UYWlMaWV1Q2h1bmc/PSBmYWxzZTtcclxuICAgIGNvcHlUb0ZvbGRlcklkPz0gJyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZpbGVNYW5hZ2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEge1xyXG4gICAgbW9kZT89IEZpbGVVcGxvYWRNb2RlLnVzaW5nU2VydmljZUZpbGU7XHJcbiAgICBtZFdpZHRoPz0gNjtcclxuICAgIHNoYXJlZEZvbGRlclR5cGU/OiBTaGFyZWRGb2xkZXJUeXBlID0gU2hhcmVkRm9sZGVyVHlwZS5UZW1wdDtcclxuXHJcbiAgICBoaWRkZW5CdXR0b25zPz0gZmFsc2U7XHJcbiAgICBkaXNhYmxlZD89IGZhbHNlO1xyXG4gICAgcmVhZG9ubHk/PSBmYWxzZTtcclxuICAgIGF1dG9TYXZlZD89IHRydWU7XHJcblxyXG4gICAgZW5hYmxlU2Nhbj89IGZhbHNlO1xyXG4gICAgZXh0cmFjdFppcEZpbGU/PSBmYWxzZTtcclxuICAgIGVuYWJsZURyaXZlRmlsZT89IGZhbHNlO1xyXG5cclxuICAgIHNob3dEb3dubG9hZEZpbGU/PSB0cnVlO1xyXG4gICAgc2hvd0RlbGV0ZUZpbGU/PSB0cnVlO1xyXG4gICAgc2hvd1ByaW50RmlsZT89IHRydWU7XHJcbiAgICBtYXhGaWxlU2l6ZT89IDEwMDAwMDAwMDsgLy8gMTAwIE1CXHJcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeT89ICd7MH06IFF1w6EgZHVuZyBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcclxuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWw/PSAnZHVuZyBsxrDhu6NuZyB04buRaSDEkWEgbMOgIHswfS4nO1xyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnk/PSAnezB9OiBLaMO0bmcgxJHDum5nIMSR4buLbmggZOG6oW5nIGZpbGUsICc7XHJcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsPz0gJ8SR4buLbmggZOG6oW5nIGZpbGUgY2hvIHBow6lwOiB7MH0uJztcclxuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeT89ICdRdcOhIHPhu5EgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbD89ICd04buRaSDEkWEgezB9IGZpbGUuJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRmlsZVVwbG9hZENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTd2l0Y2hDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBoaWRkZW5MYWJlbD89IGZhbHNlOyAvLyBTZXQgPSB0cnVlIGNo4bunIHnhur91IGtoaSBkw7luZyB0cm9uZyB0YWJsZSBzY2hlbWEgxJHhu4Mg4bqpbiBsYWJlbCDEkWksIHbDrCBsYWJlbCDEkcOjIGPDsyB0csOqbiB0acOqdSDEkeG7gSBj4buZdFxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENoZWNrYm94Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIHNob3dMYWJlbD89IGZhbHNlO1xyXG4gICAgYnRDbGFzcz89ICdwLWJ1dHRvbi10ZXh0JztcclxuICAgIGljb24/O1xyXG4gICAgYnRTdHlsZT89IHsgd2lkdGg6ICdhdXRvJyB9O1xyXG4gICAgb25DbGljaz86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBCdXR0b25Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICB0ZW1wbGF0ZTogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUZW1wbGF0ZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICByb3dzPz0gNTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dEFyZWFDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIHVzZXJUeXBlPz0gVXNlclR5cGUuQ2FuQm87XHJcbiAgICBsaW1pdD89IDIwOyAvLyBHaeG7m2kgaOG6oW4gc+G7kSBuZ8aw4budaSBkw7luZyB04buRaSDEkWEgxJHGsOG7o2MgcGlja1xyXG4gICAgdGl0bGU/PSAnQ2jhu41uIG5nxrDhu51pIGTDuW5nJztcclxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+O1xyXG4gICAgZmlsdGVyV2hpbGVQcm9jZXNzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+O1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgcGxhY2Vob2xkZXI/PSAnJztcclxuICAgIGxhenlMb2FkT3JnYW5pemF0aW9uPz0gZmFsc2U7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICdmdWxsTmFtZU5ldyc7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcclxuICAgIHBhZ2VTaXplPzogbnVtYmVyO1xyXG4gICAgb25SZWFkeT86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBnZXREaXNwbGF5TmFtZT86IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29DYXVUb0NodWNQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGFwcGVuZFRvPz0gJ2JvZHknO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgbGltaXQ/PSAyMDsgLy8gR2nhu5tpIGjhuqFuIHPhu5EgYuG6o24gZ2hpIHThu5FpIMSRYSDEkcaw4bujYyBwaWNrXHJcbiAgICB0aXRsZT89ICdDaOG7jW4gxJHGoW4gduG7iyc7XHJcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjtcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIG9uUmVhZHk/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgcGFyZW50T3JnSWQ/OiBudW1iZXI7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBpc1VzaW5nSWQ/PSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBPcmdhbml6YXRpb25QaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb0NhdVRvQ2h1Y0NvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZmlsdGVyPz0gdHJ1ZTtcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIHBhcmVudE9yZ0lkPzogbnVtYmVyO1xyXG4gICAgcGFyZW50T3JnQ29kZT86IHN0cmluZztcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgaXNVc2luZ0lkPz0gdHJ1ZTtcclxuICAgIGRpc2FibGVkUGFyZW50SXRlbT89IHRydWU7XHJcbiAgICByb290UGFyZW50SWQ/OiBzdHJpbmcgPSBudWxsO1xyXG4gICAgZGlzYWJsZWQ/PSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29DYXVUb0NodWNDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3JDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIG1vZGU/OiAnYmFzaWMnIHwgJ21lZGl1bScgfCAnZnVsbCcgfCAnc2ltcGxlJyA9ICdiYXNpYyc7XHJcbiAgICBoZWlnaHQ/PSAyNTA7XHJcbiAgICBpbml0PzogYW55O1xyXG4gICAgbGFuZ3VhZ2VDb2RlPzogJ3ZpJyB8ICdlbic7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVkaXRvckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2Uge1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIHJldHVyblR5cGU/OiAndmFsdWUnIHwgJ29iamVjdCcgPSAndmFsdWUnO1xyXG4gICAgZGF0YVNvdXJjZT86IGFueSB8IEZ1bmN0aW9uO1xyXG4gICAgLy8gU+G7rSBk4bulbmcgxJHhu4Mga2hhaSBiw6FvIG9wZXJhdG9yIGNobyBjb250cm9sIHRyb25nIHF1ZXJ5LWJ1aWxkZXIgdGhheSBjaG8gY8OhYyBvcGVyYXRvciBt4bq3YyDEkeG7i25oIMSRxrDhu6NjIHThuqFvIHThu6sgcXVlcnktYnVpbGRlclxyXG4gICAgb3BlcmF0b3JzPzogYW55W107XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGFTb3VyY2VDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIHBhbmVsQ2xhc3M/PSAnJztcclxuICAgIHBsYWNlaG9sZGVyPz0gJ0No4buNbic7XHJcbiAgICBzZWxlY3RlZEl0ZW1zTGFiZWw/PSAnxJDDoyBjaOG7jW4gezB9IG3hu6VjJztcclxuICAgIHNlbGVjdGVkQWxsSXRlbUxhYmVsPz0gJ8SQw6MgY2jhu41uIHThuqV0IGPhuqMnO1xyXG4gICAgc2hvd0NsZWFyPz0gdHJ1ZTtcclxuICAgIGZpbHRlcj89IHRydWU7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgZ2VuZXJhdGVUb29sdGlwPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIG1heFNlbGVjdGVkTGFiZWxzPz0gNTtcclxuICAgIG1heEl0ZW1EaXNwbGF5Pz0gNTA7XHJcbiAgICB2aXJ0dWFsU2Nyb2xsPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgZml0UGFuZWw/OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgbmVlZENsb25lPz0gZmFsc2U7IC8vIFPhu60gZOG7pW5nIHRyb25nIHRhYmxlIHNjaGVtYSwga2hpIGRhdGFzb3VyY2UgY+G7p2EgbeG7mXQgY+G7mXQgdHLDqm4gbeG7l2kgZMOybmcgbMOgIGtow6FjIG5oYXUgY+G6p24gc2V0IG5lZWRDbG9uZSA9IHRydWVcclxuICAgIHRlbXBsYXRlSXRlbT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICB0ZW1wbGF0ZVNlbGVjdGVkSXRlbT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBxdWlja0FkZD89IGZhbHNlO1xyXG4gICAgY29scz86IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICBpbml0RGF0YT86IGFueSA9IHt9O1xyXG4gICAgZGVmYXVsdEluZGV4Pz0gLTE7XHJcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgd2lkdGg6IDc1MCwgaGVpZ2h0OiA0MDAgfSk7XHJcblxyXG4gICAgbG9hZEluRmlyc3REaXNwbGF5Pz0gdHJ1ZTtcclxuXHJcbiAgICBhdXRvR2V0RGF0YT89IHRydWU7XHJcblxyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuXHJcbiAgICBhdXRvRGlzcGxheUZpcnN0Pz0gZmFsc2U7XHJcbiAgICBub3RJbkNydWRGb3JtPz0gZmFsc2U7XHJcbiAgICBzZWFyY2hNdWx0aXBsZT89IHRydWU7XHJcbiAgICBkaXNhYmxlRGlzcGxheUZpZWxkU2VydmVyU2VhcmNoPz0gZmFsc2U7XHJcblxyXG4gICAgbG9hZE9uSW5pdD89IGZhbHNlO1xyXG4gICAgYWxsb3dMb2FkRGF0YVdoZW5QYXJlbnROdWxsPz0gZmFsc2U7XHJcblxyXG4gICAgZGlzYWJsZWRQYXJlbnRJdGVtPz0gdHJ1ZTtcclxuICAgIG9uQWRqdXN0ZWRWYWx1ZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEtleUZ1bmN0aW9uUmVsb2FkID0gJ3JlbG9hZEJhc2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGhpZGVObz89IGZhbHNlO1xyXG4gICAgaGlkZVN0cmVldD89IGZhbHNlO1xyXG4gICAgaGlkZVdhcmQ/PSBmYWxzZTtcclxuICAgIGhpZGVEaXN0cmljdD89IGZhbHNlO1xyXG4gICAgcmVxdWlyZWRObz89IHRydWU7XHJcbiAgICByZXF1aXJlZFN0cmVldD89IHRydWU7XHJcbiAgICByZXF1aXJlZFdhcmQ/PSB0cnVlO1xyXG4gICAgcmVxdWlyZWREaXN0cmljdD89IHRydWU7XHJcbiAgICByZXF1aXJlZFByb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIHdhcmRUb1Byb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIG5vV2lkdGg/PSAxO1xyXG4gICAgc3RyZWV0V2lkdGg/PSAzO1xyXG4gICAgd2FyZFdpZHRoPz0gMztcclxuICAgIGRpc3RyaWN0V2lkdGg/PSAyO1xyXG4gICAgcHJvdmluY2VXaWR0aD89IDM7XHJcbiAgICBzaG93SW5Cb3g/PSBmYWxzZTtcclxuXHJcbiAgICBoaWRlSG9sZGVyPz0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWRkcmVzc0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZhbkJhblBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgdXNlVmJEZW4/PSB0cnVlO1xyXG4gICAgdXNlVmJEaT89IHRydWU7XHJcbiAgICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWlWYW5CYW4/OiBFbnVtTG9haVZhbkJhbkJhc2UgPSBFbnVtTG9haVZhbkJhbkJhc2UuVkJfREk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFZhbkJhblBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbmdWaWVjUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICBzZXJ2aWNlQ29kZT86IHN0cmluZztcclxuICAgIGVudGl0eT86IHN0cmluZztcclxuICAgIGVudGl0eUtleT86IHN0cmluZztcclxuICAgIHN0YXRlPzogYW55ID0ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbmdWaWVjUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyY2VudENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQZXJjZW50Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIHtcclxuICAgIHBsYWNlaG9sZGVyPz0gJyc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgbWluTGVuZ3RoRmlsdGVyPz0gMTtcclxuICAgIGFwcGVuZFRvPzogc3RyaW5nID0gJ2JvZHknO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBdXRvQ29tcGxldGVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvbkxpc3RDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgbGF5b3V0PzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyA9ICdob3Jpem9udGFsJztcclxuICAgIGFsaWduPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2xlZnQnO1xyXG4gICAgb25BZGp1c3RlZFZhbHVlPzogRnVuY3Rpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENoZWNrQm94TGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIGxheW91dD86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XHJcbiAgICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcclxuICAgIGNsYXNzUGx1cz89ICcnO1xyXG4gICAgZnJlZVRleHQ/PSAnJztcclxuICAgIHBDb2xDbGFzcz86IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ2hlY2tCb3hMaXN0Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgcm93VGVtcGxhdGU6IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICByb3dCdXR0b25zPzogKHJvd0RhdGEpID0+IE1lbnVJdGVtW107XHJcbiAgICBmb290ZXJCdXR0b25zPzoge1xyXG4gICAgICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICAgICAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgICAgICAgY2xhc3M/OiBzdHJpbmc7XHJcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgfVtdO1xyXG4gICAgc2hvd051bWJlcj89IHRydWU7XHJcbiAgICBzaG93RnVuY3Rpb24/PSB0cnVlO1xyXG4gICAgc2hvd0Zvb3Rlcj89IHRydWU7XHJcbiAgICBzaG93U2F2ZT89IGZhbHNlO1xyXG4gICAgc2hvd0VkaXQ/PSBmYWxzZTtcclxuICAgIHNob3dEZWxldGU/PSB0cnVlO1xyXG4gICAgc2hvd0FkZD89IHRydWU7XHJcbiAgICBzaG93RGlhbG9nPz0gdHJ1ZTtcclxuICAgIGVuYWJsZVJlb3JkZXJSb3c/PSBmYWxzZTtcclxuICAgIG9uUmVvcmRlcmVkPzogRnVuY3Rpb247XHJcbiAgICBlbmFibGVBZGRNdWx0aT89IGZhbHNlO1xyXG4gICAgcGlja2VyQ29udHJvbEZpZWxkPzogc3RyaW5nO1xyXG4gICAgaXNVbmlxdWU/PSB0cnVlO1xyXG4gICAgZW5hYmxlUGFnaW5nPz0gZmFsc2U7XHJcbiAgICBsaW1pdD89IDUwO1xyXG4gICAgaW5pdFJvd0NvdW50Pz0gMTtcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuICAgIHdpZHRoRnVuY3Rpb25Db2x1bW4/OiBzdHJpbmc7XHJcbiAgICByb3dCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xyXG4gICAgc3VtbWFyeVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XHJcbiAgICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xyXG5cclxuICAgIG9uQWRkaW5nPzogRnVuY3Rpb247XHJcbiAgICBvbkFkZGVkPzogRnVuY3Rpb247XHJcbiAgICBvblNhdmU/OiBGdW5jdGlvbjtcclxuICAgIG9uTWVzc2FnZT86IEZ1bmN0aW9uO1xyXG4gICAgb25EZWxldGluZz86IEZ1bmN0aW9uO1xyXG4gICAgb25EZWxldGVkPzogRnVuY3Rpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRhYmxlU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5TY2hlbWFCYXNlIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSB7XHJcbiAgICBpc0FycmF5RmllbGQ/OiBib29sZWFuOyAvLyBMw6AgZmllbGQgY2jhu6lhIGPDoWMgdmFsdWUgY8OhY2ggbmhhdSBi4bqxbmcgZOG6pXUgLFxyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgICBzaG93RWRpdExpbms/PSBmYWxzZTtcclxuICAgIHNob3dUb2dnbGVJY29uPz0gZmFsc2U7XHJcbiAgICBjb2xTcGFuPzogbnVtYmVyO1xyXG4gICAgZ3JvdXA/PSBmYWxzZTtcclxuICAgIHZpc2libGU/PSB0cnVlO1xyXG4gICAgcmVtb3ZlT25Jbml0Pz0gZmFsc2U7XHJcbiAgICBhbGxvd0ZpbHRlcj89IHRydWU7XHJcbiAgICB0ZXh0QWxpZ24/OiBUZXh0QWxpZ247XHJcbiAgICBjZWxsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICBmdWxsVGV4dFNlYXJjaD89IGZhbHNlO1xyXG4gICAgcmF3Q29sdW1uPzogQ29sdW1uU2NoZW1hQmFzZTtcclxuICAgIHNlcGFyYXRvcj89ICcsICc7XHJcbiAgICBtYXhJdGVtRGlzcGxheT89IDUwO1xyXG4gICAgcGFnZVNpemU/OiBudW1iZXIgPSAxNTsgLy8gUHJvcCBwaOG6o2kgZ2nhu5FuZyB24bubaSBkcm9wZG93blxyXG5cclxuICAgIGZpbGVTZXR0aW5nPzogRmlsZVVwbG9hZFNldHRpbmcgfCBGaWxlTWFuYWdlclNldHRpbmc7XHJcbiAgICBkYXRhVHlwZVJlZkZpZWxkPzogRGF0YVR5cGUgfCBzdHJpbmc7XHJcbiAgICBmb3JjZUdldERhdGE/PSBmYWxzZTtcclxuICAgIGRpc3BsYXlGaWVsZEluR3JpZD86IHN0cmluZztcclxuICAgIGZ1bmNHZXRSZWZEYXRhUm93PzogKHJlZkl0ZW1zKSA9PiB7fTtcclxuICAgIGZ1bmNTZXRWYWx1ZVJvdz86IChyb3dJdGVtLCBkYXRhKSA9PiB2b2lkO1xyXG4gICAgcm93U3Bhbj89IDE7XHJcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xyXG4gICAgY29udHJvbFR5cGU/OiBDb250cm9sVHlwZSA9IENvbnRyb2xUeXBlLnRleHRib3g7XHJcbiAgICB0ZW1wbGF0ZUZpbHRlcj86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBkaXNhYmxlQ2hlY2tCb3g/PSB0cnVlO1xyXG4gICAgLy8gVGjhu6kgdOG7sSDGsHUgdGnDqm4gZ2V0IHJlZiBkYXRhIGPhu6dhIGNydWQtbGlzdFxyXG4gICAgLy8gTuG6v3UgY8OzIHZhbHVlIG5naMSpYSBsw6Agbmjhu69uZyBj4buZdCBuw6B5IGPhuqduIHBo4bqjaSBs4bqleSBk4buvIGxp4buHdSB4b25nIHLhu5NpIG3hu5tpIMSR4bq/biBj4buZdCBraMOhY1xyXG4gICAgb3JkZXI/OiBudW1iZXI7XHJcbiAgICBtYXhXb3JkRGlzcGxheT86IG51bWJlcjtcclxuICAgIG1heExlbmd0aERpc3BsYXk/OiBudW1iZXI7XHJcblxyXG4gICAgbWRXaWR0aEluU2VhcmNoPz0gMTI7XHJcblxyXG4gICAgbWluPz0gMDtcclxuICAgIG1heD89IDk5OTk5OTtcclxuXHJcbiAgICBzaG93Q2xlYXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSBmYWxzZTtcclxuXHJcbiAgICBwaXBlPzogUGlwZVRyYW5zZm9ybTtcclxuICAgIGFzeW5jUGlwZT89IHRydWU7XHJcbiAgICBzb3J0Pz0gdHJ1ZTtcclxuICAgIGV4dGVuZERhdGE/OiBhbnkgPSB7fTtcclxuXHJcbiAgICBoYXNPcGVyYXRvckNhbkJvPz0gZmFsc2U7XHJcbiAgICBtaW5pbWl6ZUZpbHRlcj86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sdW1uU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25PcHRpb25zIHtcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBmaWVsZFRyZWU/PSAnJztcclxuICAgIHNlbGVjdENoaWxkSXRlbT89IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuICAgIHNlbGVjdERlc2NlbmRhbnQ/PSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uLCBjaMOhdSBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG4gICAgZmllbGRQYXJlbnRUcmVlSXRlbT89ICdpZCc7IC8vIFRyxrDhu51uZyB4w6FjIMSR4buLbmggYuG6o24gZ2hpIGzDoCBi4bqjbiBnaGkgY2hhIGPhu6dhIGLhuqNuIGdoaSBjb25cclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7XHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgcGFnZT86IG51bWJlciA9IDE7XHJcbiAgICBwYWdlU2l6ZT89IDY2NjtcclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRHJvcGRvd25PcHRpb25zKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVmRmllbGQge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIG11bHRpcGxlPz0gZmFsc2U7XHJcbiAgICBzZXBhcmF0b3I/PSAnLCAnO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgZGF0YVNvdXJjZT86IGFueVtdO1xyXG4gICAgb3JkZXI/OiBudW1iZXI7XHJcblxyXG4gICAgaXNUcmVlPz0gZmFsc2U7XHJcbiAgICBmaWVsZFRyZWU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZVBhcmVudFJvb3Q/OiBhbnkgPSBudWxsOyAvLyBHacOhIHRy4buLIHRyxrDhu51uZyBbZmllbGRUcmVlXSBj4bunYSBpdGVtIHRyZWUgcm9vdFxyXG4gICAgZmllbGRQYXJlbnRUcmVlSXRlbT89ICdpZCc7IC8vIFRyxrDhu51uZyB4w6FjIMSR4buLbmggYuG6o24gZ2hpIGzDoCBi4bqjbiBnaGkgY2hhIGPhu6dhIGLhuqNuIGdoaSBjb25cclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIGZ1bmNTZXRWYWx1ZVJvdz86IChyb3dJdGVtLCBkYXRhKSA9PiB2b2lkO1xyXG4gICAgZnVuY0dldFJlZkRhdGFSb3c/OiAocmVmSXRlbXMpID0+IHt9O1xyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUmVmRmllbGQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmNsYXNzIFByb3BGb3JEcm9wZG93biB7XHJcbiAgICBzZXJ2ZXJGaWx0ZXJVcmk/OiBzdHJpbmc7XHJcbiAgICBsb2FkSW5GaXJzdERpc3BsYXk/PSB0cnVlO1xyXG4gICAgZGlzcGxheUZpZWxkU2VydmVyPz0gJ3Rlbic7XHJcbiAgICB2YWx1ZUZpZWxkU2VydmVyPz0gJ2lkJztcclxuXHJcbiAgICBkYXRhU291cmNlPzogYW55O1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uO1xyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb247XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuICAgIHNlYXJjaE11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG4gICAgc2VsZWN0RGVzY2VuZGFudD89IGZhbHNlOy8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiwgY2jDoXUgbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIHNlYXJjaEZpZWxkPzogc3RyaW5nW10gPSBbXTtcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD89ICcnO1xyXG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG5cclxuICAgIGZpZWxkVmFsdWVQYXJlbnQ/PSAndmFsdWUnOyAvLyBUcsaw4budbmcgc+G7rSBk4bulbmcgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgbMOgbSBraMOzYSB04burIGLhuqNuZyBjaGEgY+G7p2EgaXRlbSBkcm9wIGRvd24gxJHGsOG7o2MgY2jhu41uXHJcblxyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUHJvcEZvckRyb3Bkb3duKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyQ29sdW1uIGV4dGVuZHMgQ29sdW1uU2NoZW1hQmFzZSB7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGNvZGU/OiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlZD89IGZhbHNlO1xyXG4gICAgaXNTZWFyY2hhYmxlPz0gdHJ1ZTtcclxuICAgIGlzRGlzcGxheT89IHRydWU7XHJcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xyXG4gICAgb3BlcmF0b3I/OiBPcGVyYXRvcjtcclxuICAgIHdpZHRoPz0gJyc7XHJcbiAgICBub3RJbkZpZWxkcz89IGZhbHNlOyAvLyBDw6FjIHRyxrDhu51uZyBk4buvIGxp4buHdSDEkcaw4bujYyB04buVbmcgaOG7o3AgbOG6oWkgaGnhu4NuIHRo4buLIGzDqm4gZ3JpZCBtw6Aga2jDtG5nIHBo4bqjaSBs4bqleSB04burIHRyb25nIHRhYmxlIHJhLlxyXG5cclxuICAgIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5UGlja2VyQ29sdW1uKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBHZXRSZWZEYXRhU2NoZW1hIGV4dGVuZHMgUHJvcEZvckRyb3Bkb3duIHtcclxuICAgIGZpZWxkPzogc3RyaW5nO1xyXG4gICAgZnVuY1NldFZhbHVlUm93PzogKHJvd0l0ZW0sIGRhdGEpID0+IHZvaWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEdldFJlZkRhdGFTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRMaXN0Q29uZmlnIHtcclxuICAgIHRvb2x0aXBWaWV3Pzogc3RyaW5nO1xyXG4gICAgb25WaWV3PzogRnVuY3Rpb247XHJcbiAgICBkaXNhYmxlUm93U2VsZWN0V2hlbkNsaWNrQWN0aW9uPz0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDb25maWcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcmVlRGF0YU9wdGlvbiB7XHJcbiAgICBkaXNwbGF5RmllbGQgPSAndGVuJztcclxuICAgIHNob3J0RGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICBleHBhbmRlZEljb24gPSAncGkgcGktZm9sZGVyLW9wZW4nO1xyXG4gICAgY29sbGFwc2VkSWNvbiA9ICdwaSBwaS1mb2xkZXInO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUcmVlRGF0YU9wdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERpYWxvZ01vZGVsIHtcclxuICAgIHNob3dFZGl0Rm9ybT86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGhlYWRlcj86IHN0cmluZyA9ICcnO1xyXG4gICAgcG9wdXBTaXplPzogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSh7IG1heGltaXplOiB0cnVlIH0pO1xyXG4gICAgZGF0YT86IGFueSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEaWFsb2dNb2RlbCkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBvcHVwU2l6ZSB7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGhlaWdodD86IG51bWJlcjtcclxuICAgIG1heGltaXplPz0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBvcHVwU2l6ZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEV2ZW50RGF0YSB7XHJcbiAgICBjdXJyZW50Tm9kZTogQ29udHJvbFRyZWVOb2RlO1xyXG4gICAgc291cmNlTm9kZT86IENvbnRyb2xUcmVlTm9kZTtcclxuICAgIHNvdXJjZUV2ZW50PzogYW55O1xyXG4gICAgZXZlbnRUeXBlPzogYW55O1xyXG4gICAgZGF0YT86IGFueTtcclxuICAgIHByaXZhdGUgX2NydWRGb3JtOiBDcnVkRm9ybUNvbXBvbmVudDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbml0Pzoge1xyXG4gICAgICAgICAgICBjdXJyZW50Tm9kZTogQ29udHJvbFRyZWVOb2RlLFxyXG4gICAgICAgICAgICBzb3VyY2VOb2RlPzogQ29udHJvbFRyZWVOb2RlLFxyXG4gICAgICAgICAgICBzb3VyY2VFdmVudD86IGFueSxcclxuICAgICAgICAgICAgZXZlbnRUeXBlPzogYW55LFxyXG4gICAgICAgICAgICBkYXRhPzogYW55LFxyXG4gICAgICAgICAgICBjcnVkRm9ybT86IENydWRGb3JtQ29tcG9uZW50O1xyXG4gICAgICAgIH1cclxuICAgICkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50TW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50UGF0aCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnBhcmVudE1vZGVsUGF0aDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJvb3RNb2RlbCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnJvb3ROb2RlLm1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250cm9sKCk6IEZvcm1TY2hlbWFCYXNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5jb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBwYXJlbnRDb250cm9sKCk6IEZvcm1TY2hlbWFCYXNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRDb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmb3JtQ29udHJvbHMoKTogRm9ybVNjaGVtYUJhc2VbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUuZm9ybUNvbnRyb2xzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGFiVmlld0RhdGEge1xyXG4gICAgY29kZT86IHN0cmluZztcclxuICAgIGhpZGRlbj86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGhlYWRlclN0eWxlQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICBhY3RpdmU/OiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUYWJWaWV3RGF0YSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpZWxkUm93U3BhbiB7XHJcbiAgICBmaWVsZDogc3RyaW5nO1xyXG4gICAgZnVuY0dldFZhbHVlPzogKGl0ZW0pID0+IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRmllbGRSb3dTcGFuKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XHJcbiAgICBkYXRlID0gJ2RhdGUnLFxyXG4gICAgZGF0ZXRpbWUgPSAnZGF0ZXRpbWUnLFxyXG4gICAgaHRtbCA9ICdodG1sJyxcclxuICAgIHN0cmluZyA9ICdzdHJpbmcnLFxyXG4gICAgaW50ID0gJ2ludCcsXHJcbiAgICBkZWNpbWFsID0gJ2RlY2ltYWwnLFxyXG4gICAgYm9vbGVhbiA9ICdib29sZWFuJyxcclxuICAgIGVudW0gPSAnZW51bScsXHJcbiAgICBmaWxlVXBsb2FkID0gJ2ZpbGVVcGxvYWQnLFxyXG4gICAgZmlsZU1hbmFnZXIgPSAnZmlsZU1hbmFnZXInLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb250cm9sVHlwZSB7XHJcbiAgICBkcm9wZG93biA9ICdkcm9wZG93bicsXHJcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXHJcbiAgICBkYXRlID0gJ2RhdGUnLFxyXG4gICAgdGltZSA9ICd0aW1lJyxcclxuICAgIG51bWJlciA9ICdudW1iZXInLFxyXG4gICAgdGV4dGJveCA9ICd0ZXh0Ym94JyxcclxuICAgIGNoZWNrYm94ID0gJ2NoZWNrYm94JyxcclxuICAgIHN3aXRjaCA9ICdzd2l0Y2gnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE9wZXJhdG9yIHtcclxuICAgIGVxdWFsID0gJ2VxJyxcclxuICAgIG5vdEVxdWFsID0gJ25lcScsXHJcbiAgICBncmVhdGVyID0gJ2d0JyxcclxuICAgIGdyZWF0ZXJUaGFuRXF1YWwgPSAnZ3RlJyxcclxuICAgIGxvd2VyID0gJ2x0JyxcclxuICAgIGxvd2VyVGhhbkVxdWFsID0gJ2x0ZScsXHJcblxyXG4gICAgY29udGFpbiA9ICdjb250YWlucycsXHJcbiAgICBub3RDb250YWluID0gJ25jb250YWlucycsXHJcbiAgICBzdGFydFdpdGggPSAnc3RhcnRzd2l0aCcsXHJcbiAgICBub3RTdGFydFdpdGggPSAnbnN0YXJ0c3dpdGgnLFxyXG4gICAgZW5kV2l0aCA9ICdlbmRzd2l0aCcsXHJcbiAgICBub3RFbmRXaXRoID0gJ25lbmRzd2l0aCcsXHJcblxyXG4gICAgaW4gPSAnaW4nLFxyXG4gICAgbm90SW4gPSAnbmluJyxcclxuXHJcbiAgICBpc051bGwgPSAnaXNudWxsJyxcclxuICAgIGlzTm90TnVsbCA9ICdpc25vdG51bGwnLFxyXG5cclxuICAgIGluUm9sZSA9ICdoYXNSb2xlJyxcclxuICAgIG5vdEluUm9sZSA9ICdub3RIYXNSb2xlJyxcclxuICAgIGluQ2F0ZWdvcnkgPSAnaW5DYXRlZ29yeScsXHJcbiAgICBub3RJbkNhdGVnb3J5ID0gJ25vdEluQ2F0ZWdvcnknLFxyXG4gICAgaW5Qb3NpdGlvbiA9ICdpblBvc2l0aW9uJyxcclxuICAgIG5vdEluUG9zaXRpb24gPSAnbm90SW5Qb3NpdGlvbicsXHJcbiAgICBpbkxpc3RVc2VyID0gJ2luTGlzdFVzZXInLFxyXG4gICAgbm90SW5MaXN0VXNlciA9ICdub3RJbkxpc3RVc2VyJyxcclxuICAgIGluTGlzdEdyb3VwID0gJ2luTGlzdEdyb3VwJyxcclxuICAgIG5vdEluTGlzdEdyb3VwID0gJ25vdEluTGlzdEdyb3VwJyxcclxuICAgIGlzQ3VycmVudFVzZXIgPSAnaXNDdXJyZW50VXNlcicsXHJcbiAgICBpc0N1cnJlbnRDYW5CbyA9ICdpc0N1cnJlbnRDYW5CbydcclxufVxyXG5cclxuZXhwb3J0IGVudW0gSGVpZ2h0VHlwZSB7XHJcbiAgICBkZWZhdWx0ID0gMCxcclxuICAgIGR5bmFtaWMgPSAtMSxcclxuICAgIGN1c3RvbSA9IDFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRmlsZU1hbmFnZXJNb2RlIHtcclxuICAgIHNpbmdsZSA9ICdzaW5nbGUnLFxyXG4gICAgbXVsdGlwbGUgPSAnbXVsdGlwbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEZpbGVVcGxvYWRNb2RlIHtcclxuICAgIHVzaW5nRmlsZUluc3RhbmNlSWQgPSAndXNpbmdGaWxlSW5zdGFuY2VJZCcsXHJcbiAgICB1c2luZ1NlcnZpY2VGaWxlID0gJ3VzaW5nU2VydmljZUZpbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVudW1GaWxlTGF5b3V0IHtcclxuICAgIFNJTVBMRSA9ICdTSU1QTEUnLFxyXG4gICAgU0lNUExFX0ZPUl9MSVNUID0gJ1NJTVBMRV9GT1JfTElTVCcsXHJcbiAgICBMSVNUID0gJ0xJU1QnLFxyXG4gICAgSU5MSU5FID0gJ0lOTElORSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVGV4dEFsaWduIHtcclxuICAgIExlZnQgPSAwLFxyXG4gICAgQ2VudGVyID0gMSxcclxuICAgIFJpZ2h0ID0gLTFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRXhwb3J0SXRlbXNNb2RlIHtcclxuICAgIEZyb21IdG1sID0gMCxcclxuICAgIE1hbnVhbEdldERhdGEgPSAxLFxyXG4gICAgQXV0b0dldERhdGEgPSAyXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEV4cG9ydEFsbE1vZGUge1xyXG4gICAgTWFudWFsR2V0RGF0YSA9IDAsXHJcbiAgICBBdXRvR2V0RGF0YSA9IDFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVXNlclR5cGUge1xyXG4gICAgQ2FuQm8sXHJcbiAgICBOb3JtYWxcclxufVxyXG4iXX0=
|
|
1203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG54LXNoYXJlZC9zcmMvbGliLyIsInNvdXJjZXMiOlsiY2xhc3Nlcy9mb3JtLXNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBS0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFrQmhGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSw4QkFBOEIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHakgsTUFBTSxPQUFPLFdBQVc7SUFPcEIsWUFBWSxJQUFrQjtRQUY5QixhQUFRLEdBQWlGLFFBQVEsQ0FBQztRQUc5RixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFFBQVE7SUFJakIsWUFBWSxJQUFlO1FBSDNCLG9HQUFvRztRQUNwRyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFHL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBTyxlQUFlO0lBZ0d4QixZQUFZLElBQXNCO1FBNUZsQyxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFHakIsaUJBQVksR0FBbUIsRUFBRSxDQUFDO1FBQ2xDLFNBQUksR0FBd0IsRUFBRSxDQUFDO1FBQy9CLGtCQUFhLEdBQW1CLElBQUksYUFBYSxFQUFFLENBQUM7UUFDcEQsZ0JBQVcsR0FBaUIsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM5QyxlQUFVLEdBQWdCLFVBQVUsQ0FBQyxPQUFPLENB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QUFlLFFBRzFCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN0Qiw2REFBMkMsQ0FBQTtJQUMzQyx1REFBcUMsQ0FBQTtBQUN6QyxDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekI7QUFFRCxNQUFNLENBQU4sSUFBWSxjQUtYO0FBTEQsV0FBWSxjQUFjO0lBQ3RCLG1DQUFpQixDQUFBO0lBQ2pCLHFEQUFtQyxDQUFBO0lBQ25DLCtCQUFhLENBQUE7SUFDYixtQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekI7QUFFRCxNQUFNLENBQU4sSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ2pCLHlDQUFRLENBQUE7SUFDUiw2Q0FBVSxDQUFBO0lBQ1YsNENBQVUsQ0FBQTtBQUNkLENBQUMsRUFKVyxTQUFTLEtBQVQsU0FBUyxRQUlwQjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFDdkIsNkRBQVksQ0FBQTtJQUNaLHVFQUFpQixDQUFBO0lBQ2pCLG1FQUFlLENBQUE7QUFDbkIsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCO0FBRUQsTUFBTSxDQUFOLElBQVksYUFHWDtBQUhELFdBQVksYUFBYTtJQUNyQixtRUFBaUIsQ0FBQTtJQUNqQiwrREFBZSxDQUFBO0FBQ25CLENBQUMsRUFIVyxhQUFhLEtBQWIsYUFBYSxRQUd4QjtBQUVELE1BQU0sQ0FBTixJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDaEIseUNBQUssQ0FBQTtJQUNMLDJDQUFNLENBQUE7QUFDVixDQUFDLEVBSFcsUUFBUSxLQUFSLFFBQVEsUUFHbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlVHJhbnNmb3JtLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICd0bi1jdXN0b20tcHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9hdXRvY29tcGxldGUtcGlja2VyL2F1dG9jb21wbGV0ZS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW51bUxvYWlWYW5CYW5CYXNlIH0gZnJvbSAnLi4vY29tcG9uZW50cy9jb25ndmllYy1waWNrZXIvbW9kZWxzL2VudW1zJztcclxuaW1wb3J0IHsgQ3J1ZExpc3RDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2NydWQvY3J1ZC1saXN0L2NydWQtbGlzdC5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gICAgRW50aXR5UGlja2VyRGF0YUNvbXBvbmVudCxcclxufSBmcm9tICcuLi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLWRhdGEvZW50aXR5LXBpY2tlci1kYXRhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgICBFbnRpdHlQaWNrZXJTZWxlY3RlZENvbXBvbmVudCxcclxufSBmcm9tICcuLi9jb21wb25lbnRzL2VudGl0eS1waWNrZXIvZW50aXR5LXBpY2tlci1kaWFsb2cvY29tcG9uZW50cy9lbnRpdHktcGlja2VyLXNlbGVjdGVkL2VudGl0eS1waWNrZXItc2VsZWN0ZWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRW50aXR5UGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9lbnRpdHktcGlja2VyL2VudGl0eS1waWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRmlsZU1hbmFnZXJTZXR0aW5nLCBGaWxlVXBsb2FkU2V0dGluZyB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9tb2RlbHMvZmlsZS1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IEZpbGVEYXRhU2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvZmlsZS1leHBsb3Jlci9zZXJ2aWNlcy9maWxlLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlciwgU29ydCB9IGZyb20gJy4uL21vZGVscy9ncmlkLWluZm8nO1xyXG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Jhc2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eU1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2VudGl0eS1tZXRhZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWFzdGVyRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYXN0ZXItZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbFRyZWVOb2RlLCBDcnVkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4vLi4vY29tcG9uZW50cy9jcnVkL2NydWQtZm9ybS9jcnVkLWZvcm0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUNvcnJlY3RvciB9IGZyb20gJy4vYmFzZS9jb3JyZWN0b3JzJztcclxuaW1wb3J0IHsgSVZhbGlkYXRvciB9IGZyb20gJy4vYmFzZS92YWxpZGF0b3JzJztcclxuaW1wb3J0IHsgRW51bUNvbnRyb2xQaWNrZXJUeXBlLCBFbnVtV29ya2Zsb3dDb3JlQ29kZVNldHRpbmdLZXksIEZvcm1TdGF0ZSwgU2hhcmVkRm9sZGVyVHlwZSB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgV29ya2Zsb3dTZXR0aW5nLCBXb3JrZmxvd1NldHRpbmdOZXcgfSBmcm9tICcuL3dvcmtmbG93LXNjaGVtYSc7XHJcblxyXG5leHBvcnQgY2xhc3MgTW9kZWxTY2hlbWEge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGZ1bGxOYW1lOiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG4gICAgZGF0YVR5cGU/OiAnaW50JyB8ICdkZWNpbWFsJyB8ICdkYXRlJyB8ICdkYXRldGltZScgfCAnc3RyaW5nJyB8ICdib29sZWFuJyB8ICd0aW1lc3BhbicgPSAnc3RyaW5nJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTW9kZWxTY2hlbWEpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkQmFzZSB7XHJcbiAgICAvLyBDb21wb25lbnQgc3Vic2NyaWJlIC0gS2hpIHN1YmNyaWJlIG3hu5l0IGNvbXBvbmVudCB0aMOsIGFkZCB2w6BvIGFycmF5IMSR4buDIGtoaSBkZXN0cm95IHRow6wgdW5zdWJzY3JpYmVcclxuICAgIGNvbXBvbmVudFN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRCYXNlKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZExpc3RTZXR0aW5nIHtcclxuICAgIGtleTogc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIHRhcmdldFBhdGg/OiBzdHJpbmc7XHJcbiAgICBvYmplY3ROYW1lID0gJyc7XHJcbiAgICBlbnRpdHlLZXkgPSAnaWQnO1xyXG4gICAgc2V0dGluZ0tleT86IHN0cmluZztcclxuICAgIGVudGl0eU1ldGFkYXRhU2VydmljZT86IEVudGl0eU1ldGFkYXRhU2VydmljZTtcclxuICAgIG1vZGVsU2NoZW1hcz86IE1vZGVsU2NoZW1hW10gPSBbXTtcclxuICAgIGNvbHM/OiBDb2x1bW5TY2hlbWFCYXNlW10gPSBbXTtcclxuICAgIGNvbHVtblNldHRpbmc/OiBDb2x1bW5TZXR0aW5nID0gbmV3IENvbHVtblNldHRpbmcoKTtcclxuICAgIHBhZ2VTZXR0aW5nPzogUGFnZVNldHRpbmcgPSBuZXcgUGFnZVNldHRpbmcoKTtcclxuICAgIGhlaWdodFR5cGU/OiBIZWlnaHRUeXBlID0gSGVpZ2h0VHlwZS5kZWZhdWx0OyAvLyBDw7MgY3VzdG9tIGNoaeG7gXUgY2FvIGtow7RuZzogVGjGsOG7nW5nIHPhu60gZOG7pW5nIHRyb25nIGRpYWxvZ1xyXG4gICAgZml4SGVpZ2h0VHlwZUluRGlhbG9nPz0gdHJ1ZTtcclxuICAgIG11bHRpcGxlQ2hlY2tXaGVuQ2xpY2tSb3cgPSB0cnVlO1xyXG4gICAgY3VzdG9tV29ya2Zsb3dDb2RlVHJpbmhLeTogRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5ID0gRW51bVdvcmtmbG93Q29yZUNvZGVTZXR0aW5nS2V5Lk1BQ19ESU5IO1xyXG4gICAgc3RpY2t5Q29sdW1uID0gZmFsc2U7XHJcbiAgICB0YWJsZU5hbWU/OiBzdHJpbmc7XHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlO1xyXG4gICAgcmVTZWxlY3RMYXN0SXRlbT89IHRydWU7IC8vIFNlbGVjdCBs4bqhaSBpdGVtIGN14buRaSBjw7luZyDEkcOjIGNo4buNbiBj4bunYSBncmlkXHJcbiAgICBmaXJlRXZlbnRXaGVuUmVTZWxlY3Q/PSBmYWxzZTtcclxuICAgIGFkdmFuY2VEYXRhPzogYW55ID0ge307XHJcbiAgICB3b3JrZmxvd1NldHRpbmc/OiBXb3JrZmxvd1NldHRpbmc7XHJcbiAgICB3b3JrZmxvd1NldHRpbmdOZXc/OiBXb3JrZmxvd1NldHRpbmdOZXc7XHJcbiAgICBpc1dvcmtmbG93VHJlZT86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHdvcmtmbG93Q29uZmlnQWR2YW5jZT86IFdvcmtmbG93Q29uZmlnQWR2YW5jZTtcclxuICAgIGRpc3BsYXlGaWVsZDogc3RyaW5nIHwgKChpdGVtKSA9PiBzdHJpbmcpOyAvLyB0csaw4budbmcgxJHhuqFpIGRp4buHbiBjaG8gYuG6o24gZ2hpIGzDoG0gdGnDqnUgxJHhu4EgaGnhu4NuIHRo4buLIChwaOG7pWMgduG7pSBjaG8gY8OhYyBk4buLY2ggduG7pSBraMOhYyBraGFpIHRow6FjKVxyXG4gICAgZ2V0RGlzcGxheU5hbWVJblNlcnZlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaGFzQ3VzdG9tSGFuZGxlQ2xpY2tSb3cgPSBmYWxzZTtcclxuICAgIGNoZWNrQWxsb3dUcmluaEt5OiAocm93RGF0YSkgPT4gUHJvbWlzZTxib29sZWFuPjtcclxuICAgIGNoZWNrQWxsb3dTZWxlY3RSb3c6IChyb3dEYXRhLCBldnQ/KSA9PiBib29sZWFuO1xyXG4gICAgZ2V0SXRlbVN0YXRlOiAobHN0Um93RGF0YTogYW55W10pID0+IHsgW2tleTogc3RyaW5nXTogYW55OyB9O1xyXG4gICAgZ2V0RGF0YUZvck5leHRGaXJzdFN0ZXBUYXNrPzogKHJvd0RhdGEpID0+ICh7fSk7XHJcbiAgICBjaGVja1Blcm1pc2lvblRyaW5oS3kgPSBmYWxzZTtcclxuXHJcbiAgICBzaG93RWRpdExpbmsgPSB0cnVlO1xyXG5cclxuICAgIGhpZGRlbkhlYWRlciA9IGZhbHNlO1xyXG4gICAgaGlkZGVuUGFnZVNldHRpbmcgPSBmYWxzZTtcclxuICAgIGhpZGRlblRleHRQYWdlID0gZmFsc2U7XHJcbiAgICBoaWRkZW5Ub29sYmFyID0gZmFsc2U7XHJcbiAgICBoaWRkZW5CdXR0b25zID0gZmFsc2U7XHJcbiAgICBoaWRkZW5BZHZhbmNlU2VhcmNoID0gZmFsc2U7XHJcbiAgICBoaWRkZW5TYXZlU2V0dGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2V0dGluZyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuU2V0dGluZ1Blcm1pc3Npb24gPSBmYWxzZTtcclxuICAgIGhpZGRlblNldHRpbmdXb3JrZmxvdyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuUGFnZVRpdGxlID0gZmFsc2U7XHJcblxyXG4gICAgaGlkZGVuQ2hlY2tib3ggPSBmYWxzZTtcclxuICAgIGhpZGRlbk9yZGVyQ29sdW1uID0gZmFsc2U7XHJcbiAgICBoaWRkZW5Xb3JrZmxvd0NvbHVtbiA9IGZhbHNlO1xyXG4gICAgYWxsb3dGaWx0ZXJXb3JrZmxvd0NvbHVtbiA9IGZhbHNlO1xyXG4gICAgaGlkZGVuRnVuY3Rpb25Db2x1bW4gPSBmYWxzZTtcclxuICAgIGhpZGRlblJlZnJlc2ggPSBmYWxzZTtcclxuICAgIGhpZGRlbkZpbHRlclJvdyA9IGZhbHNlO1xyXG4gICAgaGlkZGVuVHJpbmhLeSA9IHRydWU7XHJcbiAgICB1c2VCYXNlVHJpbmhLeSA9IHRydWU7XHJcbiAgICBkaXNhYmxlU2hhcmUgPSBmYWxzZTtcclxuICAgIGRpc2FibGVWaWV3V29ya2Zsb3dBdHRhY2ggPSBmYWxzZTtcclxuICAgIGhpZGRlbldvcmtmbG93Q29yZVN0YXR1cyA9IHRydWU7XHJcbiAgICByZXF1aXJlZFZhbkJhbkRpQWZ0ZXJUcmluaEt5ID0gZmFsc2U7XHJcblxyXG4gICAgZ3JvdXBDb2x1bW4/OiBDb2x1bW5TY2hlbWFCYXNlO1xyXG5cclxuICAgIHNob3dFeHBvcnRBbGwgPSBmYWxzZTtcclxuICAgIHNob3dFeHBvcnRTZWxlY3RlZEl0ZW1zID0gdHJ1ZTtcclxuICAgIGV4cG9ydEFsbE1vZGVsOiBFeHBvcnRBbGxNb2RlID0gRXhwb3J0QWxsTW9kZS5BdXRvR2V0RGF0YTtcclxuICAgIGV4cG9ydEl0ZW1zTW9kZTogRXhwb3J0SXRlbXNNb2RlID0gRXhwb3J0SXRlbXNNb2RlLkZyb21IdG1sO1xyXG5cclxuICAgIGVuYWJsZVZlcnNpb24gPSBmYWxzZTtcclxuICAgIHNob3dWZXJzaW9uQnV0dG9uID0gZmFsc2U7XHJcbiAgICB2ZXJzaW9uTW9kZWw/OiB7IFtrZXk6IHN0cmluZ106IGFueTsgfSA9IHt9O1xyXG4gICAgc2hvd0hpc3RvcnkgPSBmYWxzZTtcclxuICAgIGhpc3Rvcnk/OiBhbnk7XHJcblxyXG4gICAgY29sb3JGaWx0ZXJGaWVsZCA9ICcnO1xyXG4gICAgY29sb3JGaWx0ZXJUYWJsZT86IFJvd0NvbG9yT3B0aW9uW10gPSBbXTtcclxuXHJcbiAgICBlbnRpdHlNZXRhZGF0YVNldHRpbmc/OiBDcnVkRm9ybVNldHRpbmcgPSBuZXcgQ3J1ZEZvcm1TZXR0aW5nKCk7XHJcblxyXG4gICAgZmllbGRTZWFyY2hUZXh0Pzogc3RyaW5nW10gPSBbXTtcclxuICAgIGZpbHRlclRlbXBsYXRlQWR2cz86IEZpbHRlcltdO1xyXG5cclxuICAgIGZ1bmN0aW9uOiBDcnVkTGlzdEN1c3RvbUZ1bmN0aW9uID0gbmV3IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24oKTtcclxuXHJcbiAgICBwb3B1cEhlYWRlcj89ICcnO1xyXG4gICAgcG9wdXBTaXplPzogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSgpO1xyXG4gICAgbWFza0NsYXNzPzogc3RyaW5nO1xyXG5cclxuICAgIG1vZGlmeVJvd0RhdGFGb3JUYXNrOiAocm93RGF0YSkgPT4gdm9pZCA9IChyb3dEYXRhKSA9PiAoe30pO1xyXG4gICAgbW9kaWZ5SXRlbVRhc2s6IChtb2RlbFRhc2ssIHJvd0RhdGEpID0+IHZvaWQgPSAobW9kZWxUYXNrLCByb3dEYXRhKSA9PiAoe30pO1xyXG4gICAgZ2V0Q3VzdG9tRGF0YVRyaW5oS3k6IChyb3dEYXRhKSA9PiBhbnkgPSAocm93RGF0YSkgPT4gKHt9KTtcclxuICAgIGdldExhYmVsQnV0dG9uVHJpbmhLeTogKHJvd0RhdGEpID0+IHN0cmluZyA9IChyb3dEYXRhKSA9PiAnVHLDrG5oIGvDvSc7XHJcbiAgICBjaGVja1JlYWR5VG9UcmluaEt5OiAoKSA9PiBib29sZWFuID0gKCkgPT4gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RTZXR0aW5nKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dDb25maWdBZHZhbmNlIHtcclxuICAgIGdldFdvcmtmbG93U2V0dGluZzogKHJvd0RhdGEpID0+IFdvcmtmbG93U2V0dGluZ05ldztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRMaXN0Q3VzdG9tRnVuY3Rpb24ge1xyXG4gICAgLy8gQ3VzdG9taXplXHJcbiAgICBnZXRTZWFyY2hDb250cm9sPzogKGZpZWxkOiBzdHJpbmcpID0+IEZvcm1TY2hlbWFCYXNlW10gPSAoZmllbGQ6IHN0cmluZykgPT4gbnVsbDtcclxuICAgIC8vIEFzeW5jIGZ1bmN0aW9uXHJcbiAgICBtb2RpZnlBZHZhbmNlU2VhY2hNb2RlbD86IChkYXRhOiBBZHZhbmNlU2VhcmNoRGF0YSwgc2V0dGluZzogQWR2YW5jZVNlYXJjaFNldHRpbmcpID0+IFByb21pc2U8dm9pZD4gPSBhc3luYyAoZGF0YSkgPT4gbnVsbDtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDdXN0b21GdW5jdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBlcnNvbmFsU2V0dGluZyB7XHJcbiAgICBjb2x1bW5TZXR0aW5nPzogQ29sdW1uU2V0dGluZyA9IG5ldyBDb2x1bW5TZXR0aW5nKCk7XHJcbiAgICBwYWdlU2V0dGluZz86IFBhZ2VTZXR0aW5nID0gbmV3IFBhZ2VTZXR0aW5nKCk7XHJcbiAgICBjb2xvckZpbHRlckZpZWxkID0gJyc7XHJcbiAgICBjb2xvckZpbHRlclRhYmxlPzogUm93Q29sb3JPcHRpb25bXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQZXJzb25hbFNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkTGlzdERhdGEgZXh0ZW5kcyBDcnVkQmFzZSB7XHJcbiAgICBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICBhZGp1c3RlZFBvc2l0aW9uTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgcmVhZHkgPSB0cnVlO1xyXG4gICAgLy8gYmFzZSByZWFkeSBsw6AgY2jhu6ljIG7Eg25nIGtp4buDbSB0cmEgcmVhZHkgY+G7p2EgcmnDqm5nIHRyb25nIGJhc2UuIGsgZ2nhu5FuZyB24bubaSByZWFkeSDhu58gdHLDqm5cclxuICAgIC8vIETDuW5nIMSR4buDIGtp4buDbSB0cmEgbuG6v3UgY8OzIHdvcmtmbG93IHRow6wgdOG6oW0gdGjhu51pIGNoxrBhIGNobyDhuqVuIHRow6ptIG3hu5tpIG7hur91IGNoxrBhIGxvYWQgeG9uZyBk4buvIGxp4buHdSBj4bqnbiB0aGnhur90XHJcbiAgICBiYXNlUmVhZHkgPSBmYWxzZTtcclxuICAgIGRhdGFTb3VyY2U/OiBhbnlbXSA9IFtdO1xyXG4gICAgc2VsZWN0ZWRJdGVtcz86IGFueVtdID0gW107XHJcbiAgICBzZWxlY3RlZEl0ZW0/OiBhbnk7XHJcbiAgICBzZWxlY3RlZEl0ZW1MYXN0PzogYW55O1xyXG4gICAgc2VsZWN0ZWRJZD86IG51bWJlcjtcclxuICAgIHRvdGFsID0gMDtcclxuICAgIGl0ZW1EYXRhPzogYW55O1xyXG4gICAgYWR2YW5jZURhdGE6IGFueSA9IHt9O1xyXG5cclxuICAgIC8vIEPDoWMgdGh14buZYyB0w61uaCBi4buVIHN1bmcgZG8gYuG7iyBs4buXaSBraGkgcGFja2FnZVxyXG4gICAgc3VibWl0dGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgLy8gRW5kIEPDoWMgdGh14buZYyB0w61uaCBi4buVIHN1bmcgZG8gYuG7iyBs4buXaSBraGkgcGFja2FnZVxyXG5cclxuICAgIGV4cGFuZGVkUm93S2V5cz86IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbjsgfSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkTGlzdERhdGEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEVudGl0eU1lZGF0YURhdGFTZXR0aW5nIHtcclxuICAgIGRhdGE/OiBhbnkgPSB7fTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5TWVkYXRhRGF0YVNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSb3dDb2xvck9wdGlvbiB7XHJcbiAgICBmaWx0ZXJWYWx1ZSA9ICcnO1xyXG4gICAgY29tcGFyZVR5cGUgPSAnJztcclxuICAgIGNvbG9yID0gJyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJvd0NvbG9yT3B0aW9uKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGFnZVNldHRpbmcge1xyXG4gICAgcGFnZSA9IDE7XHJcbiAgICBwYWdlU2l6ZSA9IDE1O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQYWdlU2V0dGluZykge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmcge1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD86IHN0cmluZztcclxuICAgIHNvcnREaXI/OiAtMSB8IDAgfCAxIHwgMiA9IC0xO1xyXG4gICAgZ3JvdXBGaWVsZCA9ICcnO1xyXG4gICAgZ3JvdXBJbkNsaWVudD89IGZhbHNlO1xyXG4gICAgZGV0YWlscz86IENvbHVtblNldHRpbmdEZXRhaWxbXSA9IFtdO1xyXG4gICAgY29sdW1uUmVvcmRlcj87XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbHVtblNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5TZXR0aW5nRGV0YWlsIHtcclxuICAgIG9yZGVyPzogbnVtYmVyO1xyXG4gICAgY29sdW1uQ29kZT86IHN0cmluZztcclxuICAgIGNvbHVtbk5hbWU/OiBzdHJpbmc7XHJcbiAgICB2aXNpYmxlPzogYm9vbGVhbjtcclxuICAgIHRleHRBbGlnbj86IFRleHRBbGlnbjtcclxuICAgIHdpZHRoPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZEZvcm1EYXRhIGV4dGVuZHMgQ3J1ZEJhc2Uge1xyXG4gICAgZGF0YT86IGFueSA9IHt9O1xyXG4gICAgc3VibWl0dGluZz89IGZhbHNlO1xyXG4gICAgLyoqXHJcbiAgICAgKiBUcuG6oW5nIHRow6FpIGPhu6dhIGZvcm0gxJFhbmcgxJHGsOG7o2MgbeG7nzogTMOgIGZvcm0gdGjDqm0gbeG7m2ksIGhheSBmb3JtIHPhu61hLCBoYXkgZm9ybSB4w7NhXHJcbiAgICAgKi9cclxuICAgIGZvcm1TdGF0ZT86IEZvcm1TdGF0ZSA9IEZvcm1TdGF0ZS5BREQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRGb3JtRGF0YSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3J1ZEZvcm1DdXN0b21GdW5jdGlvbiB7XHJcbiAgICAvLyBDdXN0b21pemVcclxuICAgIG1vZGlmeURhdGFBZnRlckdldENhY2hlPzogKGRhdGE6IGFueSkgPT4gdm9pZCA9IChkYXRhOiBhbnkpID0+IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENydWRMaXN0Q3VzdG9tRnVuY3Rpb24pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDcnVkRm9ybVNldHRpbmcge1xyXG4gICAgZGlzYWJsZUNhY2hpbmcgPSBmYWxzZTtcclxuICAgIGhpZGRlblRyaW5oS3kgPSB0cnVlO1xyXG4gICAgc2NoZW1hPzogRm9ybVNjaGVtYUJhc2VbXSA9IFtdO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZTtcclxuICAgIGJ1aWxkSW5TY2hlbWE/OiBGb3JtQ29udHJvbEJhc2VbXSA9IFtdO1xyXG4gICAgdW5pcXVlRmllbGQ/OiBzdHJpbmdbXSB8IHN0cmluZ1tdW10gPSBbXTtcclxuICAgIGZpZWxkRHJvcGRvd24/OiB7IFtrZXk6IHN0cmluZ106IERyb3Bkb3duQ29udHJvbFNjaGVtYTsgfSA9IHt9O1xyXG4gICAgZmllbGROZWVkR2V0UmVmPzogeyBba2V5OiBzdHJpbmddOiBUZXh0Q29udHJvbFNjaGVtYTsgfSA9IHt9O1xyXG4gICAgZGlzcGxheUZpZWxkPzogc3RyaW5nIHwgKChpdGVtKSA9PiBzdHJpbmcpO1xyXG4gICAgZmlyc3RGb2N1c0NvbnRyb2w/OiBzdHJpbmc7XHJcbiAgICBmaWx0ZXJDaGVja0V4aXN0QnlWZXJzaW9uPzogRmlsdGVyW107XHJcbiAgICBkZWZhdWx0RmlsdGVyQ2hlY2tFeGlzdD86IEZpbHRlcltdIHwgKCgpID0+IEZpbHRlcltdKTtcclxuICAgIGN1c3RvbVdvcmtmbG93Q29kZVRyaW5oS3k6IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleSA9IEVudW1Xb3JrZmxvd0NvcmVDb2RlU2V0dGluZ0tleS5NQUNfRElOSDtcclxuICAgIGVudGl0eU1ldGFkYXRhRGF0YT86IENydWRGb3JtRGF0YTtcclxuICAgIGVudGl0eU1ldGFkYXRhU2V0dGluZz86IENydWRGb3JtU2V0dGluZztcclxuICAgIGZ1bmN0aW9uPzogQ3J1ZEZvcm1DdXN0b21GdW5jdGlvbiA9IG5ldyBDcnVkRm9ybUN1c3RvbUZ1bmN0aW9uKCk7XHJcbiAgICBnZXRDdXN0b21EYXRhVHJpbmhLeTogKHJvd0RhdGEpID0+IGFueSA9IChyb3dEYXRhKSA9PiAoe30pO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDcnVkRm9ybVNldHRpbmcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBBZHZhbmNlU2VhcmNoRGF0YSBleHRlbmRzIENydWRGb3JtRGF0YSB7XHJcbiAgICBpbml0RGF0YT86IGFueSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBZHZhbmNlU2VhcmNoRGF0YSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWR2YW5jZVNlYXJjaFNldHRpbmcgZXh0ZW5kcyBDcnVkRm9ybVNldHRpbmcge1xyXG4gICAgZmllbGRLZXkgPSAnX2snO1xyXG4gICAgZW50aXR5UGVybWlzc2lvblNjaGVtYT86IEZvcm1Db250cm9sQmFzZVtdID0gW107XHJcbiAgICBrZWVwSW5pdFNlYXJjaERhdGFOb3ROdWxsID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWR2YW5jZVNlYXJjaFNldHRpbmcpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNjaGVtYUJhc2Uge1xyXG4gICAgZmllbGQ/OiBzdHJpbmc7XHJcbiAgICBmaWVsZEZpbHRlcj86IHN0cmluZztcclxuICAgIHVuaXF1ZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgdHlwZT86ICdib29sZWFuJyB8ICdpbnQnIHwgJ2RlY2ltYWwnIHwgJ2RhdGV0aW1lJyB8ICdzdHJpbmcnID0gJ3N0cmluZyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFNjaGVtYUJhc2UpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2NoZW1hQmFzZSBleHRlbmRzIFNjaGVtYUJhc2Uge1xyXG4gICAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgICBmdWxsTGFiZWw/OiBzdHJpbmc7XHJcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICAgIHNob3dMYWJlbD89IHRydWU7XHJcbiAgICBnV2lkdGg/PSAxMjtcclxuICAgIG1kV2lkdGg/PSA2O1xyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgICBjbGFzcz89ICcnO1xyXG4gICAgc3R5bGU/OiBhbnkgPSB7fTtcclxuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcclxuICAgIGhpZGRlbj89IGZhbHNlO1xyXG4gICAgaGlkZGVuQ2hlY2s/OiAocm9vdE1vZGVsOiBhbnksIGN1cnJlbnROb2RlOiBDb250cm9sVHJlZU5vZGUpID0+IGJvb2xlYW47XHJcbiAgICBoaWRkZW5PblZpZXc/PSBmYWxzZTtcclxuICAgIHZpc2libGVJbkxpc3Q/PSB0cnVlO1xyXG4gICAgb3BlcmF0b3I/OiBPcGVyYXRvcjtcclxuICAgIGdyb3VwQ29kZT89ICcnO1xyXG4gICAgZGVmYXVsdFZhbHVlPzogYW55O1xyXG4gICAgZmllbGRBbGlhcz89ICcnO1xyXG4gICAgZGF0YT86IGFueSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBGb3JtU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29udGFpbmVyU2NoZW1hIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2Uge1xyXG4gICAgY29udHJvbHM6IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICBzaG93SW5Cb3g/PSB0cnVlO1xyXG4gICAgYm94U3R5bGU/OiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbnRhaW5lclNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIC8vIFVybCDEkeG7gyBs4bqleSBk4buvIGxp4buHdSAqKiogS0jDlE5HIFPhu6wgROG7pE5HIFRST05HIEPDgUMgQ0FTRSBQSOG7lCBCSeG6vk4sIENI4buIIFPhu6wgROG7pE5HIMSQ4buQSSBW4buaSSBGT1JNIEtI4bqiTyBTw4FUICoqKlxyXG4gICAgc2VydmljZVVyaT89ICcnO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIGRhdGFTb3VyY2U/OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgc2VhcmNoRmllbGQ/OiBzdHJpbmdbXTtcclxuXHJcbiAgICBpc1RyZWU/PSBmYWxzZTtcclxuICAgIGZpZWxkVHJlZT86IHN0cmluZztcclxuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG4gICAgc2VsZWN0RGVzY2VuZGFudD89IGZhbHNlOy8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiwgY2jDoXUgbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuXHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD89ICcnO1xyXG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XHJcbiAgICBmaWVsZFBsdXM/PSAnJzsgLy8gRGFuaCBzw6FjaCBuaOG7r25nIHRyxrDhu51uZyBi4buVIHN1bmcgY+G6p24gbOG6pXkgdGjDqm0gbmdvw6BpIGlkLCB0ZW47IFbDrSBk4bulICxtYVxyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uIHwgUHJvbWlzZTxGaWx0ZXJbXT47IC8vIHR1bmd0cyB0aMOqbSBraeG7g3UgZOG7ryBsaeG7h3UgZGVmYXVsdEZpbHRlcnMgbMOgIHByb21pc2VcclxuICAgIGFmdGVyR2V0RGF0YT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGZ1bmNTZXREZWZhdWx0VmFsdWU/OiBGdW5jdGlvbjtcclxuXHJcbiAgICBmaWVsZFZhbHVlUGFyZW50Pz0gJ3ZhbHVlJzsgLy8gVHLGsOG7nW5nIHPhu60gZOG7pW5nIMSR4buDIGzhuqV5IGThu68gbGnhu4d1IGzDoG0ga2jDs2EgdOG7qyBi4bqjbmcgY2hhIGPhu6dhIGl0ZW0gZHJvcCBkb3duIMSRxrDhu6NjIGNo4buNblxyXG5cclxuICAgIGNhbGxiYWNrRGF0YUZpbmlzaD86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIG1vZGlmeUZpbHRlcj86IEZ1bmN0aW9uO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTGFiZWxTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICBmb3I/PSAnJztcclxuICAgIGlzSHRtbD89IGZhbHNlO1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgaW5kZXhMYWJlbD86IG51bWJlcjtcclxuICAgIHRleHQ/PSAnJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTGFiZWxTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRpdGxlU2NoZW1hIGV4dGVuZHMgTGFiZWxTY2hlbWEge1xyXG4gICAgY2xhc3M/PSAndGl0bGUtZ3JvdXAgdGV4dC1ib2xkJztcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGl0bGVTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZvcm1Db250cm9sQmFzZSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIF9jb21wb25lbnQ/OiBhbnk7IC8vIENvbXBvbmVudCBj4bunYSBzY2hlbWEga2hpIGto4bufaSB04bqhb1xyXG4gICAgdW5pcXVlRmllbGQ/OiBzdHJpbmc7IC8vIFPhu60gZOG7pW5nIHRyb25nIHRhYmxlIHNjaGVtYVxyXG4gICAgYXV0b2ZvY3VzPz0gZmFsc2U7XHJcbiAgICB2YWxpZGF0b3JzPzogSVZhbGlkYXRvcltdID0gW107XHJcbiAgICBjb3JyZWN0b3JzPzogSUNvcnJlY3RvcltdID0gW107XHJcbiAgICByZXF1aXJlZD89IGZhbHNlO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IGZhbHNlO1xyXG4gICAgb25DaGFuZ2VkPzogRnVuY3Rpb247XHJcbiAgICBvbkluaXQ/OiBGdW5jdGlvbjtcclxuICAgIHRyaWdnZXJMb2FkQ2hpbGQ/OiBGdW5jdGlvbjtcclxuICAgIGhhc09wZXJhdG9yQ2FuQm8/PSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRm9ybUNvbnRyb2xCYXNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICAvKiogQ29weSB04burIEZvcm1TY2hlbWFCYXNlV2l0aFNlcnZpY2UgKi9cclxuICAgIC8vIFVybCDEkeG7gyBs4bqleSBk4buvIGxp4buHdSAqKiogS0jDlE5HIFPhu6wgROG7pE5HIFRST05HIEPDgUMgQ0FTRSBQSOG7lCBCSeG6vk4sIENI4buIIFPhu6wgROG7pE5HIMSQ4buQSSBW4buaSSBGT1JNIEtI4bqiTyBTw4FUICoqKlxyXG4gICAgc2VydmljZVVyaT89ICcnO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuXHJcbiAgICBpc1NlcnZlckxvYWQ/PSBmYWxzZTtcclxuICAgIHNlYXJjaEZpZWxkPzogc3RyaW5nW107XHJcblxyXG4gICAgaXNUcmVlPz0gZmFsc2U7XHJcbiAgICBmaWVsZFRyZWU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZVBhcmVudFJvb3Q/OiBhbnkgPSBudWxsOyAvLyBHacOhIHRy4buLIHRyxrDhu51uZyBbZmllbGRUcmVlXSBj4bunYSBpdGVtIHRyZWUgcm9vdFxyXG4gICAgZmllbGRQYXJlbnRUcmVlSXRlbT89ICdpZCc7IC8vIFRyxrDhu51uZyB4w6FjIMSR4buLbmggYuG6o24gZ2hpIGzDoCBi4bqjbiBnaGkgY2hhIGPhu6dhIGLhuqNuIGdoaSBjb25cclxuICAgIGZpZWxkTWFQaGFuQ2FwPz0gJ21hUGhhbkNhcCc7IC8vIEZpZWxkIG3DoyBwaMOibiBj4bqlcFxyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG4gICAgc2VsZWN0RGVzY2VuZGFudD89IGZhbHNlOy8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiwgY2jDoXUgbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuXHJcbiAgICBwYWdlU2l6ZT86IG51bWJlciA9IDE1OyAvLyBEw7luZyBjaG8gZHJvcGRvd24gc2VydmVyIGxvYWRcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXHJcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjsgLy8gdHVuZ3RzIHRow6ptIGtp4buDdSBk4buvIGxp4buHdSBkZWZhdWx0RmlsdGVycyBsw6AgcHJvbWlzZVxyXG4gICAgZmlsdGVyV2hpbGVQcm9jZXNzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+OyAvLyB0dW5ndHMgdGjDqm0ga2nhu4N1IGThu68gbGnhu4d1IGRlZmF1bHRGaWx0ZXJzIGzDoCBwcm9taXNlXHJcbiAgICBiaW5kaW5nRmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjsgLy8gdHVuZ3RzIHRow6ptIGtp4buDdSBk4buvIGxp4buHdSBkZWZhdWx0RmlsdGVycyBsw6AgcHJvbWlzZVxyXG4gICAgYWZ0ZXJHZXREYXRhPzogRnVuY3Rpb247XHJcblxyXG4gICAgZnVuY1NldERlZmF1bHRWYWx1ZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIHBhcmVudEZpZWxkPzogc3RyaW5nOyAvLyBDb2x1bW4gdMawxqFuZyDhu6luZyB0cm9uZyB0YWJsZSBzcWwgc2VydmVyLlxyXG4gICAgZmllbGRWYWx1ZVBhcmVudD89ICd2YWx1ZSc7IC8vIFRyxrDhu51uZyBz4butIGThu6VuZyDEkeG7gyBs4bqleSBk4buvIGxp4buHdSBsw6BtIGtow7NhIHThu6sgYuG6o25nIGNoYSBj4bunYSBpdGVtIGRyb3AgZG93biDEkcaw4bujYyBjaOG7jW5cclxuXHJcbiAgICBjYWxsYmFja0RhdGFGaW5pc2g/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBmaXJlQ2FsbEJhY2tJbnNpZGU/PSB0cnVlO1xyXG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb247XHJcblxyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuXHJcbiAgICAvKiogRW5kIGNvcHkgdOG7qyBGb3JtU2NoZW1hQmFzZVdpdGhTZXJ2aWNlICovXHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZXh0Q29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBzZWxlY3RBbGxUZXh0Pz0gZmFsc2U7IC8vIENo4buNbiB04bqldCBj4bqjIHRleHQga2hpIGZvY3VzXHJcblxyXG4gICAgcGxhY2Vob2xkZXI/PSAnJztcclxuICAgIGRhdGFGb3JtYXQ/OiAndGV4dCcgfCAncGFzc3dvcmQnIHwgJ251bWJlcicgfCAnZW1haWwnIHwgJ3Bob25lJyB8ICdmYXgnIHwgJ21vbmV5JyB8ICdtb25leWludCcgfCAnYW1vdW50JyA9ICd0ZXh0JztcclxuICAgIG1heExlbmd0aD86IG51bWJlcjtcclxuICAgIG1pbj89IDA7XHJcbiAgICBtYXg/PSA5OTk5OTk5OTtcclxuXHJcbiAgICBiYXNlU2VydmljZT86IEJhc2VTZXJ2aWNlIHwgTWFzdGVyRGF0YVNlcnZpY2U7XHJcbiAgICBncm91cENvZGU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG5cclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRleHRDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZWZlcmVuY2VUZXh0Q29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgc3VmZml4Pzogc3RyaW5nO1xyXG4gICAgcHJlZml4Pzogc3RyaW5nO1xyXG5cclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2UgfCBNYXN0ZXJEYXRhU2VydmljZTtcclxuICAgIGdyb3VwQ29kZT86IHN0cmluZztcclxuICAgIHZhbHVlRmllbGQ/PSAnaWQnO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG5cclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICBzb3J0cz86IFNvcnRbXSA9IFtdO1xyXG4gICAgc29ydEZpZWxkPz0gJyc7XHJcbiAgICBzb3J0RGlyPzogMSB8IC0xID0gMTtcclxuICAgIGZpZWxkUGx1cz89ICcnOyAvLyBEYW5oIHPDoWNoIG5o4buvbmcgdHLGsOG7nW5nIGLhu5Ugc3VuZyBj4bqnbiBs4bqleSB0aMOqbSBuZ2/DoGkgaWQsIHRlbjsgVsOtIGThu6UgLG1hXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUmVmZXJlbmNlVGV4dENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRDb250cm9sU2NoZW1hV2l0aFNlcnZpY2UgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2VXaXRoU2VydmljZSB7XHJcbiAgICBwbGFjZWhvbGRlcj89ICcnO1xyXG4gICAgZGF0YUZvcm1hdD86ICd0ZXh0JyB8ICdudW1iZXInIHwgJ2VtYWlsJyB8ICdwaG9uZScgfCAnZmF4JyB8ICdtb25leScgfCAnbW9uZXlpbnQnIHwgJ2Ftb3VudCcgPSAndGV4dCc7XHJcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRleHRDb250cm9sU2NoZW1hV2l0aFNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE1hc2tDb250cm9sU2NoZW1hIGV4dGVuZHMgVGV4dENvbnRyb2xTY2hlbWEge1xyXG4gICAgbWFza1R5cGU/OiAnZGVjaW1hbCcgfCAnaW50JyA9ICdpbnQnO1xyXG4gICAgYXV0b0Zvcm1hdD89IHRydWU7XHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5OTk5OTtcclxuICAgIHByZWZpeD89ICcnO1xyXG4gICAgc3VmZml4Pz0gJyc7XHJcbiAgICBkZWNpbWFsUGxhY2VzPz0gMjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogTWFza0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIE51bWJlclJhbmdlQ29udHJvbFNjaGVtYSBleHRlbmRzIFRleHRDb250cm9sU2NoZW1hIHtcclxuICAgIG1hc2tUeXBlPzogJ2RlY2ltYWwnIHwgJ2ludCc7XHJcbiAgICBtaW4/PSAwO1xyXG4gICAgbWF4Pz0gOTk5OTk5OTk5OTtcclxuICAgIHByZWZpeD89ICcnO1xyXG4gICAgc3VmZml4Pz0gJyc7XHJcbiAgICBkZWNpbWFsUGxhY2VzPz0gMjtcclxuICAgIC8vIFPhu60gZOG7pW5nIMSR4buDIGtoYWkgYsOhbyBvcGVyYXRvciBjaG8gY29udHJvbCB0cm9uZyBxdWVyeS1idWlsZGVyIHRoYXkgY2hvIGPDoWMgb3BlcmF0b3IgbeG6t2MgxJHhu4tuaCDEkcaw4bujYyB04bqhbyB04burIHF1ZXJ5LWJ1aWxkZXJcclxuICAgIG9wZXJhdG9ycz86IGFueVtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBOdW1iZXJSYW5nZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIHBhbmVsQ2xhc3M/PSAnJztcclxuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gICAgc2hvd1RpbWU/PSBmYWxzZTtcclxuICAgIHNob3dJY29uPz0gdHJ1ZTtcclxuICAgIGZvcm1hdD86ICdub3JtYWwnIHwgJ2Zyb21Ob3cnID0gJ25vcm1hbCc7XHJcbiAgICBzaG93T25Gb2N1cz89IHRydWU7XHJcbiAgICBtaW5EYXRlPzogRGF0ZSA9IG51bGw7XHJcbiAgICBtYXhEYXRlPzogRGF0ZSA9IG51bGw7XHJcbiAgICB0aW1lT25seT89IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEYXRlVGltZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnNob3dUaW1lID8gJ2RkL01NL3l5eXkgaGg6bW0nIDogJ2RkL01NL3l5eXknO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lUmFuZ2VDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0ZVRpbWVDb250cm9sU2NoZW1hIHtcclxuICAgIHNob3dJY29uPz0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGVUaW1lQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZVdpdGhTZXJ2aWNlIHtcclxuXHJcbiAgICAvLyAjUHJvcGVydHkgb3ZlcnJpZGVcclxuICAgIGJhc2VTZXJ2aWNlPzogQmFzZVNlcnZpY2U7XHJcbiAgICAvLyAjRW5kIHByb3BlcnR5IG92ZXJyaWRlXHJcblxyXG4gICAgcmV0dXJuVHlwZT86ICd2YWx1ZScgfCAnb2JqZWN0JyA9ICd2YWx1ZSc7XHJcblxyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgbGltaXQ/PSAxMDAwO1xyXG4gICAgdGl0bGU/PSAnICc7XHJcbiAgICBjb2x1bW5zPzogRW50aXR5UGlja2VyQ29sdW1uW107XHJcbiAgICBmaWVsZFNlYXJjaFRleHQ/OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZGF0YUluaXQ/OiBhbnkgPSB7fTtcclxuICAgIGFkdmFuY2VTZWFyY2hNb2RlbD86IGFueSA9IHt9O1xyXG4gICAgb25TZWFyY2hGb3JtSW5pdGlhbGl6ZWQ/OiBGdW5jdGlvbjtcclxuICAgIG9uRm9ybUV2ZW50PzogRnVuY3Rpb247XHJcbiAgICBvblNlbGVjdEVudGl0eT86IEZ1bmN0aW9uOyAvLyBu4bq/dSBmdW5jdGlvbiBraMOhYyBudWxsIHbDoCByZXR1cm4gdHJ1ZSBz4bq9IGNobyBwaMOpcCBt4bufIGRpYWxvZ1xyXG4gICAgYWZ0ZXJDb250ZW50TGVmdEluaXQ/OiAoY3J1ZExpc3Q6IENydWRMaXN0Q29tcG9uZW50KSA9PiB2b2lkOyAvLyBTYXUga2hpIGPDoWMgdGVtcGxhdGUgY29udGVudCBpbml0XHJcbiAgICBhZnRlckNvbnRlbnRSaWdodEluaXQ/OiAoY3J1ZExpc3Q6IENydWRMaXN0Q29tcG9uZW50KSA9PiB2b2lkOyAvLyBTYXUga2hpIGPDoWMgdGVtcGxhdGUgY29udGVudCBpbml0XHJcbiAgICBhZnRlckdldERhdGE/OiAoc291cmNlczogYW55W10sIGVsZW1lbnQ6IEVudGl0eVBpY2tlckNvbXBvbmVudCkgPT4gdm9pZDtcclxuICAgIGFmdGVyR2V0RGF0YVVuUGlja2VkPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJEYXRhQ29tcG9uZW50KSA9PiB2b2lkO1xyXG4gICAgYWZ0ZXJHZXREYXRhUGlja2VkPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBFbnRpdHlQaWNrZXJTZWxlY3RlZENvbXBvbmVudCkgPT4gdm9pZDtcclxuXHJcbiAgICAvLyBDw7Mgc+G7rSBk4bulbmcgcGx1c1VybCDhu58gbcOgbiBow6xuaCBjaMOtbmggRW50aXR5UGlja2VyIGhheSBraMO0bmcuXHJcbiAgICB1c2VEZWZhdWx0UGx1c2xVcmxJbkxpc3Q/PSBmYWxzZTtcclxuXHJcbiAgICAvLyBDw7Mgc+G7rSBk4bulbmcgZGVmYXVsdEZpbHRlciBraGkgdMOsbSBraeG6v20gZGFuaCBzw6FjaCDhu58gbcOgbiBow6xuaCBjaMOtbmggRW50aXR5UGlja2VyLlxyXG4gICAgdXNlRGVmYXVsdEZpbHRlckluTGlzdD89IGZhbHNlO1xyXG5cclxuICAgIGhpZGRlbkFkdmFuY2VTZWFyY2g/PSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5UGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEVudGl0eVBpY2tlckNvbnRyb2xTY2hlbWEge1xyXG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgICBkYXRhVHlwZT86IEVudW1Db250cm9sUGlja2VyVHlwZSA9IEVudW1Db250cm9sUGlja2VyVHlwZS5VU0VSO1xyXG4gICAgYXBwZW5kVG8/PSAnYm9keSc7XHJcbiAgICBtb2RpZnlJbml0U2VhcmNoRGF0YT86IEZ1bmN0aW9uOyAvLyBT4butIGThu6VuZyDEkeG7gyBtb2RpZnkgZGF0YSBj4bunYSBwaOG6p24gc2VhcmNoLCB0aMaw4budbmcgxJHhu4Mgc2V0IGluaXQgZGF0YSBkeW5hbWljIHRoZW8gbmh1IGPhuqd1XHJcbiAgICBjYWxsQmFjaz86IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb247IH07XHJcbiAgICBvblJlYWR5PzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5Q29udHJvbD86IEZ1bmN0aW9uOyAvLyBT4butIGThu6VuZyDEkeG7gyBtb2RpZnkgc2NoZW1hIGJhc2VcclxuICAgIG5lZWRDbG9uZT89IGZhbHNlOyAvLyBT4butIGThu6VuZyB0cm9uZyB0YWJsZSBzY2hlbWEsIGtoaSBkYXRhc291cmNlIGPhu6dhIG3hu5l0IGPhu5l0IHRyw6puIG3hu5dpIGTDsm5nIGzDoCBraMOhYyBuaGF1IGPhuqduIHNldCBuZWVkQ2xvbmUgPSB0cnVlXFxcclxuICAgIGFmdGVyR2V0RGF0YURyb3Bkb3duPzogKHNvdXJjZXM6IGFueVtdLCBlbGVtZW50OiBBdXRvQ29tcGxldGVQaWNrZXJDb21wb25lbnQpID0+IHZvaWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEF1dG9Db21wbGV0ZVBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdyYXBQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgQXV0b0NvbXBsZXRlUGlja2VyQ29udHJvbFNjaGVtYSB7XHJcbiAgICBkYXRhVHlwZT86IEVudW1Db250cm9sUGlja2VyVHlwZSA9IEVudW1Db250cm9sUGlja2VyVHlwZS5VU0VSO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBXcmFwUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuICAgIC8vIFPhu60gZOG7pW5nIMSR4buDIGtoYWkgYsOhbyBvcGVyYXRvciBjaG8gY29udHJvbCB0cm9uZyBxdWVyeS1idWlsZGVyIHRoYXkgY2hvIGPDoWMgb3BlcmF0b3IgbeG6t2MgxJHhu4tuaCDEkcaw4bujYyB04bqhbyB04burIHF1ZXJ5LWJ1aWxkZXJcclxuICAgIG9wZXJhdG9ycz86IGFueVtdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDdXN0b21Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2xvclBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbG9yUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFNwYW5Db250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG4gICAgaXNodG1sPz0gZmFsc2U7XHJcbiAgICBlZGl0YWJsZT89IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTcGFuQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29sb3JDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIHNvdXJjZUZpZWxkPzogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBDb2xvckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEtleVZhbHVlQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogS2V5VmFsdWVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgLy8gZW1pdCBldmVudCBraGkgY2jhu41uIG3hu5l0IHJvdyB0cm9uZyBmaWxlIG1hbmFnZXJcclxuICAgIG9uU2VsZWN0ZWQ/OiBGdW5jdGlvbiA9ICgpID0+IHtcclxuICAgIH07XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICBhY2NlcHQ/OiBzdHJpbmc7XHJcbiAgICBtYXhGaWxlU2l6ZT89IDEwMDAwMDAwMDtcclxuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VTdW1tYXJ5Pz0gJ3swfTogUXXDoSBkdW5nIGzGsOG7o25nIGZpbGUgY2hvIHBow6lwLCAnO1xyXG4gICAgaW52YWxpZEZpbGVTaXplTWVzc2FnZURldGFpbD89ICdkdW5nIGzGsOG7o25nIHThu5FpIMSRYSBsw6AgezB9Lic7XHJcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlU3VtbWFyeT89ICd7MH06IEtow7RuZyDEkcO6bmcgxJHhu4tuaCBk4bqhbmcgZmlsZSwgJztcclxuICAgIGludmFsaWRGaWxlVHlwZU1lc3NhZ2VEZXRhaWw/PSAnxJHhu4tuaCBk4bqhbmcgZmlsZSBjaG8gcGjDqXA6IHswfS4nO1xyXG4gICAgaW52YWxpZEZpbGVMaW1pdE1lc3NhZ2VTdW1tYXJ5Pz0gJ1F1w6Egc+G7kSBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcclxuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlRGV0YWlsPz0gJ3Thu5FpIMSRYSB7MH0gZmlsZS4nO1xyXG4gICAgbW9kZT86IEZpbGVNYW5hZ2VyTW9kZSB8IEZpbGVVcGxvYWRNb2RlID0gRmlsZU1hbmFnZXJNb2RlLm11bHRpcGxlO1xyXG4gICAgbGF5b3V0PzogRW51bUZpbGVMYXlvdXQgPSBFbnVtRmlsZUxheW91dC5MSVNUO1xyXG4gICAgcmVhZG9ubHk/PSBmYWxzZTtcclxuXHJcbiAgICAvLyBTZXJ2aWNlIGTDuW5nIMSR4buDIGzhuqV5IGRhdGFzb3VyY2UgY+G7p2Egbmhp4buBdSBjb250cm9sIG3hu5l0IGzhuqduLlxyXG4gICAgZmlsZURhdGFTZXJ2aWNlPzogRmlsZURhdGFTZXJ2aWNlO1xyXG5cclxuICAgIC8vIELhu5kgMyBrZXkgxJHhu4MgbOG6pXkgdGjGsCBt4bulYyBn4buRYy5cclxuICAgIHNlcnZpY2VDb2RlPzogc3RyaW5nO1xyXG4gICAgZW50aXR5Pzogc3RyaW5nO1xyXG4gICAgZW50aXR5S2V5Pzogc3RyaW5nO1xyXG5cclxuICAgIC8vIFTDqm4gdGjGsCBt4bulYyBn4buRYyBraGkgaGnhu4NuIHRo4buLIHRyw6puIGJyZWFkY3J1bWJzLlxyXG4gICAgcm9vdEZvbGRlck5hbWU/OiBzdHJpbmc7XHJcblxyXG4gICAgLy8gVHLGsOG7nW5nIGjhu6NwIOG7nyB0cm9uZyBmb3JtLCBkw7luZyB0csaw4budbmcgbsOgeSDEkeG7gyBs4bqleVxyXG4gICAgLy8gZW50aXR5S2V5IHThu6sgbW9kZWwuZGF0YSB0aGF5IHbDrCB0cnV54buBbiB2w6BvIGVudGl0eUtleVxyXG4gICAgZW50aXR5S2V5RmllbGQ/PSAnaWQnO1xyXG4gICAgZGF0YUt5U29Eb25WaT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGluVGFpTGlldT89IGZhbHNlO1xyXG4gICAgaW5UYWlMaWV1Q2h1bmc/PSBmYWxzZTtcclxuICAgIGNvcHlUb0ZvbGRlcklkPz0gJyc7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEZpbGVNYW5hZ2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGaWxlTWFuYWdlckNvbnRyb2xTY2hlbWEge1xyXG4gICAgbW9kZT89IEZpbGVVcGxvYWRNb2RlLnVzaW5nU2VydmljZUZpbGU7XHJcbiAgICBtZFdpZHRoPz0gNjtcclxuICAgIHNoYXJlZEZvbGRlclR5cGU/OiBTaGFyZWRGb2xkZXJUeXBlID0gU2hhcmVkRm9sZGVyVHlwZS5UZW1wdDtcclxuXHJcbiAgICBoaWRkZW5CdXR0b25zPz0gZmFsc2U7XHJcbiAgICBkaXNhYmxlZD89IGZhbHNlO1xyXG4gICAgcmVhZG9ubHk/PSBmYWxzZTtcclxuICAgIGF1dG9TYXZlZD89IHRydWU7XHJcblxyXG4gICAgZW5hYmxlU2Nhbj89IGZhbHNlO1xyXG4gICAgZXh0cmFjdFppcEZpbGU/PSBmYWxzZTtcclxuICAgIGVuYWJsZURyaXZlRmlsZT89IGZhbHNlO1xyXG5cclxuICAgIHNob3dEb3dubG9hZEZpbGU/PSB0cnVlO1xyXG4gICAgc2hvd0RlbGV0ZUZpbGU/PSB0cnVlO1xyXG4gICAgc2hvd1ByaW50RmlsZT89IHRydWU7XHJcbiAgICBtYXhGaWxlU2l6ZT89IDEwMDAwMDAwMDsgLy8gMTAwIE1CXHJcbiAgICBpbnZhbGlkRmlsZVNpemVNZXNzYWdlU3VtbWFyeT89ICd7MH06IFF1w6EgZHVuZyBsxrDhu6NuZyBmaWxlIGNobyBwaMOpcCwgJztcclxuICAgIGludmFsaWRGaWxlU2l6ZU1lc3NhZ2VEZXRhaWw/PSAnZHVuZyBsxrDhu6NuZyB04buRaSDEkWEgbMOgIHswfS4nO1xyXG4gICAgaW52YWxpZEZpbGVUeXBlTWVzc2FnZVN1bW1hcnk/PSAnezB9OiBLaMO0bmcgxJHDum5nIMSR4buLbmggZOG6oW5nIGZpbGUsICc7XHJcbiAgICBpbnZhbGlkRmlsZVR5cGVNZXNzYWdlRGV0YWlsPz0gJ8SR4buLbmggZOG6oW5nIGZpbGUgY2hvIHBow6lwOiB7MH0uJztcclxuICAgIGludmFsaWRGaWxlTGltaXRNZXNzYWdlU3VtbWFyeT89ICdRdcOhIHPhu5EgbMaw4bujbmcgZmlsZSBjaG8gcGjDqXAsICc7XHJcbiAgICBpbnZhbGlkRmlsZUxpbWl0TWVzc2FnZURldGFpbD89ICd04buRaSDEkWEgezB9IGZpbGUuJztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRmlsZVVwbG9hZENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBTd2l0Y2hDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDaGVja2JveENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBoaWRkZW5MYWJlbD89IGZhbHNlOyAvLyBTZXQgPSB0cnVlIGNo4bunIHnhur91IGtoaSBkw7luZyB0cm9uZyB0YWJsZSBzY2hlbWEgxJHhu4Mg4bqpbiBsYWJlbCDEkWksIHbDrCBsYWJlbCDEkcOjIGPDsyB0csOqbiB0acOqdSDEkeG7gSBj4buZdFxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENoZWNrYm94Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1TY2hlbWFCYXNlIHtcclxuICAgIHNob3dMYWJlbD89IGZhbHNlO1xyXG4gICAgYnRDbGFzcz89ICdwLWJ1dHRvbi10ZXh0JztcclxuICAgIGljb24/O1xyXG4gICAgYnRTdHlsZT89IHsgd2lkdGg6ICdhdXRvJyB9O1xyXG4gICAgb25DbGljaz86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBCdXR0b25Db250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtU2NoZW1hQmFzZSB7XHJcbiAgICB0ZW1wbGF0ZTogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUZW1wbGF0ZUNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRBcmVhQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICByb3dzPz0gNTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogVGV4dEFyZWFDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIHVzZXJUeXBlPz0gVXNlclR5cGUuQ2FuQm87XHJcbiAgICBsaW1pdD89IDIwOyAvLyBHaeG7m2kgaOG6oW4gc+G7kSBuZ8aw4budaSBkw7luZyB04buRaSDEkWEgxJHGsOG7o2MgcGlja1xyXG4gICAgdGl0bGU/PSAnQ2jhu41uIG5nxrDhu51pIGTDuW5nJztcclxuICAgIGRlZmF1bHRGaWx0ZXJzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+O1xyXG4gICAgZmlsdGVyV2hpbGVQcm9jZXNzPzogRmlsdGVyW10gfCBGdW5jdGlvbiB8IFByb21pc2U8RmlsdGVyW10+O1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgcGxhY2Vob2xkZXI/PSAnJztcclxuICAgIGxhenlMb2FkT3JnYW5pemF0aW9uPz0gZmFsc2U7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGRpc3BsYXlGaWVsZD89ICdmdWxsTmFtZU5ldyc7XHJcbiAgICBmaWVsZFBsdXM/PSAnJztcclxuICAgIHBsdXNVcmw/OiBzdHJpbmc7XHJcbiAgICByZXR1cm5UeXBlPzogJ3ZhbHVlJyB8ICdvYmplY3QnID0gJ3ZhbHVlJztcclxuICAgIHBhZ2VTaXplPzogbnVtYmVyO1xyXG4gICAgb25SZWFkeT86IChldnQ6IEV2ZW50RGF0YSkgPT4gdm9pZDtcclxuICAgIGZ1bmNHZXRMYWJlbD86IChpdGVtKSA9PiBzdHJpbmc7XHJcbiAgICBmdW5jQ29tcGFyZT86IChpdGVtOiBhbnksIHZhbHVlKSA9PiBib29sZWFuID0gKGl0ZW0sIHZhbHVlKSA9PiBpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT0gdmFsdWU7XHJcbiAgICBnZXREaXNwbGF5TmFtZT86IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQ29DYXVUb0NodWNQaWNrZXJDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGFwcGVuZFRvPz0gJ2JvZHknO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgbGltaXQ/PSAyMDsgLy8gR2nhu5tpIGjhuqFuIHPhu5EgYuG6o24gZ2hpIHThu5FpIMSRYSDEkcaw4bujYyBwaWNrXHJcbiAgICB0aXRsZT89ICdDaOG7jW4gxJHGoW4gduG7iyc7XHJcbiAgICBkZWZhdWx0RmlsdGVycz86IEZpbHRlcltdIHwgRnVuY3Rpb24gfCBQcm9taXNlPEZpbHRlcltdPjtcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIG9uUmVhZHk/OiAoZXZ0OiBFdmVudERhdGEpID0+IHZvaWQ7XHJcbiAgICBmdW5jR2V0TGFiZWw/OiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gICAgZnVuY0NvbXBhcmU/OiAoaXRlbTogYW55LCB2YWx1ZSkgPT4gYm9vbGVhbiA9IChpdGVtLCB2YWx1ZSkgPT4gaXRlbVt0aGlzLnZhbHVlRmllbGRdID09IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBVc2VyUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgT3JnYW5pemF0aW9uUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBmaWx0ZXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSB0cnVlO1xyXG4gICAgcGFyZW50T3JnSWQ/OiBudW1iZXI7XHJcbiAgICBwYXJlbnRPcmdDb2RlPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlQ2FjaGluZz89IHRydWU7XHJcbiAgICBpc1VzaW5nSWQ/PSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBPcmdhbml6YXRpb25QaWNrZXJDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb0NhdVRvQ2h1Y0NvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgZmlsdGVyPz0gdHJ1ZTtcclxuICAgIG11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIHBhcmVudE9yZ0lkPzogbnVtYmVyO1xyXG4gICAgcGFyZW50T3JnQ29kZT86IHN0cmluZztcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgaXNVc2luZ0lkPz0gdHJ1ZTtcclxuICAgIGRpc2FibGVkUGFyZW50SXRlbT89IHRydWU7XHJcbiAgICByb290UGFyZW50SWQ/OiBzdHJpbmcgPSBudWxsO1xyXG4gICAgZGlzYWJsZWQ/PSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29DYXVUb0NodWNDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFZGl0b3JDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIG1vZGU/OiAnYmFzaWMnIHwgJ21lZGl1bScgfCAnZnVsbCcgfCAnc2ltcGxlJyA9ICdiYXNpYyc7XHJcbiAgICBoZWlnaHQ/PSAyNTA7XHJcbiAgICBpbml0PzogYW55O1xyXG4gICAgbGFuZ3VhZ2VDb2RlPzogJ3ZpJyB8ICdlbic7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEVkaXRvckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlV2l0aFNlcnZpY2Uge1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIHJldHVyblR5cGU/OiAndmFsdWUnIHwgJ29iamVjdCcgPSAndmFsdWUnO1xyXG4gICAgZGF0YVNvdXJjZT86IGFueSB8IEZ1bmN0aW9uO1xyXG4gICAgLy8gU+G7rSBk4bulbmcgxJHhu4Mga2hhaSBiw6FvIG9wZXJhdG9yIGNobyBjb250cm9sIHRyb25nIHF1ZXJ5LWJ1aWxkZXIgdGhheSBjaG8gY8OhYyBvcGVyYXRvciBt4bq3YyDEkeG7i25oIMSRxrDhu6NjIHThuqFvIHThu6sgcXVlcnktYnVpbGRlclxyXG4gICAgb3BlcmF0b3JzPzogYW55W107XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IERhdGFTb3VyY2VDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEcm9wZG93bkNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICBhcHBlbmRUbz89ICdib2R5JztcclxuICAgIHBhbmVsQ2xhc3M/PSAnJztcclxuICAgIHBsYWNlaG9sZGVyPz0gJ0No4buNbic7XHJcbiAgICBzZWxlY3RlZEl0ZW1zTGFiZWw/PSAnxJDDoyBjaOG7jW4gezB9IG3hu6VjJztcclxuICAgIHNlbGVjdGVkQWxsSXRlbUxhYmVsPz0gJ8SQw6MgY2jhu41uIHThuqV0IGPhuqMnO1xyXG4gICAgc2hvd0NsZWFyPz0gdHJ1ZTtcclxuICAgIGZpbHRlcj89IHRydWU7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgZ2VuZXJhdGVUb29sdGlwPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIG1heFNlbGVjdGVkTGFiZWxzPz0gNTtcclxuICAgIG1heEl0ZW1EaXNwbGF5Pz0gNTA7XHJcbiAgICB2aXJ0dWFsU2Nyb2xsPzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgZml0UGFuZWw/OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgbmVlZENsb25lPz0gZmFsc2U7IC8vIFPhu60gZOG7pW5nIHRyb25nIHRhYmxlIHNjaGVtYSwga2hpIGRhdGFzb3VyY2UgY+G7p2EgbeG7mXQgY+G7mXQgdHLDqm4gbeG7l2kgZMOybmcgbMOgIGtow6FjIG5oYXUgY+G6p24gc2V0IG5lZWRDbG9uZSA9IHRydWVcclxuICAgIHRlbXBsYXRlSXRlbT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICB0ZW1wbGF0ZVNlbGVjdGVkSXRlbT86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBxdWlja0FkZD89IGZhbHNlO1xyXG4gICAgY29scz86IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICBpbml0RGF0YT86IGFueSA9IHt9O1xyXG4gICAgZGVmYXVsdEluZGV4Pz0gLTE7XHJcbiAgICBwb3B1cFNpemU/OiBQb3B1cFNpemUgPSBuZXcgUG9wdXBTaXplKHsgd2lkdGg6IDc1MCwgaGVpZ2h0OiA0MDAgfSk7XHJcblxyXG4gICAgbG9hZEluRmlyc3REaXNwbGF5Pz0gdHJ1ZTtcclxuXHJcbiAgICBhdXRvR2V0RGF0YT89IHRydWU7XHJcblxyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuXHJcbiAgICBhdXRvRGlzcGxheUZpcnN0Pz0gZmFsc2U7XHJcbiAgICBub3RJbkNydWRGb3JtPz0gZmFsc2U7XHJcbiAgICBzZWFyY2hNdWx0aXBsZT89IHRydWU7XHJcbiAgICBkaXNhYmxlRGlzcGxheUZpZWxkU2VydmVyU2VhcmNoPz0gZmFsc2U7XHJcblxyXG4gICAgbG9hZE9uSW5pdD89IGZhbHNlO1xyXG4gICAgYWxsb3dMb2FkRGF0YVdoZW5QYXJlbnROdWxsPz0gZmFsc2U7XHJcblxyXG4gICAgZGlzYWJsZWRQYXJlbnRJdGVtPz0gdHJ1ZTtcclxuICAgIG9uQWRqdXN0ZWRWYWx1ZT86IEZ1bmN0aW9uO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEcm9wZG93bkNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEtleUZ1bmN0aW9uUmVsb2FkID0gJ3JlbG9hZEJhc2UnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb250cm9sU2NoZW1hIGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIHtcclxuICAgIGhpZGVObz89IGZhbHNlO1xyXG4gICAgaGlkZVN0cmVldD89IGZhbHNlO1xyXG4gICAgaGlkZVdhcmQ/PSBmYWxzZTtcclxuICAgIGhpZGVEaXN0cmljdD89IGZhbHNlO1xyXG4gICAgcmVxdWlyZWRObz89IHRydWU7XHJcbiAgICByZXF1aXJlZFN0cmVldD89IHRydWU7XHJcbiAgICByZXF1aXJlZFdhcmQ/PSB0cnVlO1xyXG4gICAgcmVxdWlyZWREaXN0cmljdD89IHRydWU7XHJcbiAgICByZXF1aXJlZFByb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIHdhcmRUb1Byb3ZpbmNlPz0gdHJ1ZTtcclxuICAgIG5vV2lkdGg/PSAxO1xyXG4gICAgc3RyZWV0V2lkdGg/PSAzO1xyXG4gICAgd2FyZFdpZHRoPz0gMztcclxuICAgIGRpc3RyaWN0V2lkdGg/PSAyO1xyXG4gICAgcHJvdmluY2VXaWR0aD89IDM7XHJcbiAgICBzaG93SW5Cb3g/PSBmYWxzZTtcclxuXHJcbiAgICBoaWRlSG9sZGVyPz0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQWRkcmVzc0NvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFZhbkJhblBpY2tlckNvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG4gICAgdXNlVmJEZW4/PSB0cnVlO1xyXG4gICAgdXNlVmJEaT89IHRydWU7XHJcbiAgICByZWFkb25seT86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWlWYW5CYW4/OiBFbnVtTG9haVZhbkJhbkJhc2UgPSBFbnVtTG9haVZhbkJhbkJhc2UuVkJfREk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFZhbkJhblBpY2tlckNvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbmdWaWVjUGlja2VyQ29udHJvbFNjaGVtYSBleHRlbmRzIEZvcm1Db250cm9sQmFzZSB7XHJcbiAgICBtZFdpZHRoPz0gMTI7XHJcbiAgICBzZXJ2aWNlQ29kZT86IHN0cmluZztcclxuICAgIGVudGl0eT86IHN0cmluZztcclxuICAgIGVudGl0eUtleT86IHN0cmluZztcclxuICAgIHN0YXRlPzogYW55ID0ge307XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IENvbmdWaWVjUGlja2VyQ29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUGVyY2VudENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgbWRXaWR0aD89IDEyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBQZXJjZW50Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQXV0b0NvbXBsZXRlQ29udHJvbFNjaGVtYSBleHRlbmRzIERhdGFTb3VyY2VDb250cm9sU2NoZW1hIHtcclxuICAgIHBsYWNlaG9sZGVyPz0gJyc7XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgbWluTGVuZ3RoRmlsdGVyPz0gMTtcclxuICAgIGFwcGVuZFRvPzogc3RyaW5nID0gJ2JvZHknO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBBdXRvQ29tcGxldGVDb250cm9sU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0J1dHRvbkxpc3RDb250cm9sU2NoZW1hIGV4dGVuZHMgRGF0YVNvdXJjZUNvbnRyb2xTY2hlbWEge1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIGVuYWJsZUNhY2hpbmc/PSB0cnVlO1xyXG4gICAgbGF5b3V0PzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJyA9ICdob3Jpem9udGFsJztcclxuICAgIGFsaWduPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnID0gJ2xlZnQnO1xyXG4gICAgb25BZGp1c3RlZFZhbHVlPzogRnVuY3Rpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFJhZGlvQnV0dG9uTGlzdENvbnRyb2xTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENoZWNrQm94TGlzdENvbnRyb2xTY2hlbWEgZXh0ZW5kcyBEYXRhU291cmNlQ29udHJvbFNjaGVtYSB7XHJcbiAgICBlbmFibGVDYWNoaW5nPz0gdHJ1ZTtcclxuICAgIGxheW91dD86ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgPSAnaG9yaXpvbnRhbCc7XHJcbiAgICBhbGlnbj86ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcclxuICAgIGNsYXNzUGx1cz89ICcnO1xyXG4gICAgZnJlZVRleHQ/PSAnJztcclxuICAgIHBDb2xDbGFzcz86IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ2hlY2tCb3hMaXN0Q29udHJvbFNjaGVtYSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGFibGVTY2hlbWEgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2Uge1xyXG4gICAgcm93VGVtcGxhdGU6IEZvcm1TY2hlbWFCYXNlW107XHJcbiAgICByb3dCdXR0b25zPzogKHJvd0RhdGEpID0+IE1lbnVJdGVtW107XHJcbiAgICBmb290ZXJCdXR0b25zPzoge1xyXG4gICAgICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICAgICAgbGFiZWw/OiBzdHJpbmc7XHJcbiAgICAgICAgY2xhc3M/OiBzdHJpbmc7XHJcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgfVtdO1xyXG4gICAgc2hvd051bWJlcj89IHRydWU7XHJcbiAgICBzaG93RnVuY3Rpb24/PSB0cnVlO1xyXG4gICAgc2hvd0Zvb3Rlcj89IHRydWU7XHJcbiAgICBzaG93U2F2ZT89IGZhbHNlO1xyXG4gICAgc2hvd0VkaXQ/PSBmYWxzZTtcclxuICAgIHNob3dEZWxldGU/PSB0cnVlO1xyXG4gICAgc2hvd0FkZD89IHRydWU7XHJcbiAgICBzaG93RGlhbG9nPz0gdHJ1ZTtcclxuICAgIGVuYWJsZVJlb3JkZXJSb3c/PSBmYWxzZTtcclxuICAgIG9uUmVvcmRlcmVkPzogRnVuY3Rpb247XHJcbiAgICBlbmFibGVBZGRNdWx0aT89IGZhbHNlO1xyXG4gICAgcGlja2VyQ29udHJvbEZpZWxkPzogc3RyaW5nO1xyXG4gICAgaXNVbmlxdWU/PSB0cnVlO1xyXG4gICAgZW5hYmxlUGFnaW5nPz0gZmFsc2U7XHJcbiAgICBsaW1pdD89IDUwO1xyXG4gICAgaW5pdFJvd0NvdW50Pz0gMTtcclxuICAgIG1kV2lkdGg/PSAxMjtcclxuICAgIHdpZHRoRnVuY3Rpb25Db2x1bW4/OiBzdHJpbmc7XHJcbiAgICByb3dCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xyXG4gICAgc3VtbWFyeVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XHJcbiAgICBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xyXG5cclxuICAgIG9uQWRkaW5nPzogRnVuY3Rpb247XHJcbiAgICBvbkFkZGVkPzogRnVuY3Rpb247XHJcbiAgICBvblNhdmU/OiBGdW5jdGlvbjtcclxuICAgIG9uTWVzc2FnZT86IEZ1bmN0aW9uO1xyXG4gICAgb25EZWxldGluZz86IEZ1bmN0aW9uO1xyXG4gICAgb25EZWxldGVkPzogRnVuY3Rpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFRhYmxlU2NoZW1hKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5TY2hlbWFCYXNlIGV4dGVuZHMgRm9ybVNjaGVtYUJhc2VXaXRoU2VydmljZSB7XHJcbiAgICBpc0FycmF5RmllbGQ/OiBib29sZWFuOyAvLyBMw6AgZmllbGQgY2jhu6lhIGPDoWMgdmFsdWUgY8OhY2ggbmhhdSBi4bqxbmcgZOG6pXUgLFxyXG4gICAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgICBzaG93RWRpdExpbms/PSBmYWxzZTtcclxuICAgIHNob3dUb2dnbGVJY29uPz0gZmFsc2U7XHJcbiAgICBjb2xTcGFuPzogbnVtYmVyO1xyXG4gICAgZ3JvdXA/PSBmYWxzZTtcclxuICAgIHZpc2libGU/PSB0cnVlO1xyXG4gICAgcmVtb3ZlT25Jbml0Pz0gZmFsc2U7XHJcbiAgICBhbGxvd0ZpbHRlcj89IHRydWU7XHJcbiAgICB0ZXh0QWxpZ24/OiBUZXh0QWxpZ247XHJcbiAgICBjZWxsQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICBmdWxsVGV4dFNlYXJjaD89IGZhbHNlO1xyXG4gICAgcmF3Q29sdW1uPzogQ29sdW1uU2NoZW1hQmFzZTtcclxuICAgIHNlcGFyYXRvcj89ICcsICc7XHJcbiAgICBtYXhJdGVtRGlzcGxheT89IDUwO1xyXG4gICAgcGFnZVNpemU/OiBudW1iZXIgPSAxNTsgLy8gUHJvcCBwaOG6o2kgZ2nhu5FuZyB24bubaSBkcm9wZG93blxyXG5cclxuICAgIGZpbGVTZXR0aW5nPzogRmlsZVVwbG9hZFNldHRpbmcgfCBGaWxlTWFuYWdlclNldHRpbmc7XHJcbiAgICBkYXRhVHlwZVJlZkZpZWxkPzogRGF0YVR5cGUgfCBzdHJpbmc7XHJcbiAgICBmb3JjZUdldERhdGE/PSBmYWxzZTtcclxuICAgIGRpc3BsYXlGaWVsZEluR3JpZD86IHN0cmluZztcclxuICAgIGZ1bmNHZXRSZWZEYXRhUm93PzogKHJlZkl0ZW1zKSA9PiB7fTtcclxuICAgIGZ1bmNTZXRWYWx1ZVJvdz86IChyb3dJdGVtLCBkYXRhKSA9PiB2b2lkO1xyXG4gICAgcm93U3Bhbj89IDE7XHJcbiAgICBmb3JtYXQ/OiBzdHJpbmc7XHJcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xyXG4gICAgY29udHJvbFR5cGU/OiBDb250cm9sVHlwZSA9IENvbnRyb2xUeXBlLnRleHRib3g7XHJcbiAgICB0ZW1wbGF0ZUZpbHRlcj86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgICBkaXNhYmxlQ2hlY2tCb3g/PSB0cnVlO1xyXG4gICAgLy8gVGjhu6kgdOG7sSDGsHUgdGnDqm4gZ2V0IHJlZiBkYXRhIGPhu6dhIGNydWQtbGlzdFxyXG4gICAgLy8gTuG6v3UgY8OzIHZhbHVlIG5naMSpYSBsw6Agbmjhu69uZyBj4buZdCBuw6B5IGPhuqduIHBo4bqjaSBs4bqleSBk4buvIGxp4buHdSB4b25nIHLhu5NpIG3hu5tpIMSR4bq/biBj4buZdCBraMOhY1xyXG4gICAgb3JkZXI/OiBudW1iZXI7XHJcbiAgICBtYXhXb3JkRGlzcGxheT86IG51bWJlcjtcclxuICAgIG1heExlbmd0aERpc3BsYXk/OiBudW1iZXI7XHJcblxyXG4gICAgbWRXaWR0aEluU2VhcmNoPz0gMTI7XHJcblxyXG4gICAgbWluPz0gMDtcclxuICAgIG1heD89IDk5OTk5OTtcclxuXHJcbiAgICBzaG93Q2xlYXI/PSB0cnVlO1xyXG4gICAgbXVsdGlwbGU/PSBmYWxzZTtcclxuXHJcbiAgICBwaXBlPzogUGlwZVRyYW5zZm9ybTtcclxuICAgIGFzeW5jUGlwZT89IHRydWU7XHJcbiAgICBzb3J0Pz0gdHJ1ZTtcclxuICAgIGV4dGVuZERhdGE/OiBhbnkgPSB7fTtcclxuXHJcbiAgICBoYXNPcGVyYXRvckNhbkJvPz0gZmFsc2U7XHJcbiAgICBtaW5pbWl6ZUZpbHRlcj86IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ29sdW1uU2NoZW1hQmFzZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRHJvcGRvd25PcHRpb25zIHtcclxuICAgIGRpc3BsYXlGaWVsZD89ICd0ZW4nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBmaWVsZFRyZWU/PSAnJztcclxuICAgIHNlbGVjdENoaWxkSXRlbT89IGZhbHNlOyAvLyBDw7Mgc2VsZWN0IGLhuqNuIGdoaSBjb24gbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuICAgIHNlbGVjdERlc2NlbmRhbnQ/PSBmYWxzZTsgLy8gQ8OzIHNlbGVjdCBi4bqjbiBnaGkgY29uLCBjaMOhdSBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG4gICAgZmllbGRQYXJlbnRUcmVlSXRlbT89ICdpZCc7IC8vIFRyxrDhu51uZyB4w6FjIMSR4buLbmggYuG6o24gZ2hpIGzDoCBi4bqjbiBnaGkgY2hhIGPhu6dhIGLhuqNuIGdoaSBjb25cclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgZmllbGRQbHVzPz0gJyc7XHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgcGFnZT86IG51bWJlciA9IDE7XHJcbiAgICBwYWdlU2l6ZT89IDY2NjtcclxuICAgIGlzU2VydmVyTG9hZD89IGZhbHNlO1xyXG4gICAgcmVmRmllbGRzPzogUmVmRmllbGRbXSA9IFtdO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRHJvcGRvd25PcHRpb25zKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVmRmllbGQge1xyXG4gICAgZmllbGQ6IHN0cmluZztcclxuICAgIG11bHRpcGxlPz0gZmFsc2U7XHJcbiAgICBzZXBhcmF0b3I/PSAnLCAnO1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgZGlzcGxheUZpZWxkPz0gJ3Rlbic7XHJcbiAgICB2YWx1ZUZpZWxkPz0gJ2lkJztcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgZGF0YVNvdXJjZT86IGFueVtdO1xyXG4gICAgb3JkZXI/OiBudW1iZXI7XHJcblxyXG4gICAgaXNUcmVlPz0gZmFsc2U7XHJcbiAgICBmaWVsZFRyZWU/OiBzdHJpbmc7XHJcbiAgICB2YWx1ZVBhcmVudFJvb3Q/OiBhbnkgPSBudWxsOyAvLyBHacOhIHRy4buLIHRyxrDhu51uZyBbZmllbGRUcmVlXSBj4bunYSBpdGVtIHRyZWUgcm9vdFxyXG4gICAgZmllbGRQYXJlbnRUcmVlSXRlbT89ICdpZCc7IC8vIFRyxrDhu51uZyB4w6FjIMSR4buLbmggYuG6o24gZ2hpIGzDoCBi4bqjbiBnaGkgY2hhIGPhu6dhIGLhuqNuIGdoaSBjb25cclxuICAgIHNvcnRzPzogU29ydFtdID0gW107XHJcbiAgICBzb3J0RmllbGQ/PSAnJztcclxuICAgIHNvcnREaXI/OiAxIHwgLTEgPSAxO1xyXG4gICAgcGx1c1VybD86IHN0cmluZztcclxuICAgIGZ1bmNTZXRWYWx1ZVJvdz86IChyb3dJdGVtLCBkYXRhKSA9PiB2b2lkO1xyXG4gICAgZnVuY0dldFJlZkRhdGFSb3c/OiAocmVmSXRlbXMpID0+IHt9O1xyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUmVmRmllbGQpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmNsYXNzIFByb3BGb3JEcm9wZG93biB7XHJcbiAgICBzZXJ2ZXJGaWx0ZXJVcmk/OiBzdHJpbmc7XHJcbiAgICBsb2FkSW5GaXJzdERpc3BsYXk/PSB0cnVlO1xyXG4gICAgZGlzcGxheUZpZWxkU2VydmVyPz0gJ3Rlbic7XHJcbiAgICB2YWx1ZUZpZWxkU2VydmVyPz0gJ2lkJztcclxuXHJcbiAgICBkYXRhU291cmNlPzogYW55O1xyXG4gICAgYmFzZVNlcnZpY2U/OiBCYXNlU2VydmljZSB8IE1hc3RlckRhdGFTZXJ2aWNlO1xyXG4gICAgZGVmYXVsdEZpbHRlcnM/OiBGaWx0ZXJbXSB8IEZ1bmN0aW9uO1xyXG4gICAgY2FsbGJhY2tEYXRhRmluaXNoPzogKGV2dDogRXZlbnREYXRhKSA9PiB2b2lkO1xyXG4gICAgbW9kaWZ5RmlsdGVyPzogRnVuY3Rpb247XHJcbiAgICBtdWx0aXBsZT89IGZhbHNlO1xyXG4gICAgc2VwYXJhdG9yPz0gJywgJztcclxuICAgIHNlYXJjaE11bHRpcGxlPz0gdHJ1ZTtcclxuICAgIGlzVHJlZT89IGZhbHNlO1xyXG4gICAgZmllbGRUcmVlPzogc3RyaW5nO1xyXG4gICAgc2VsZWN0Q2hpbGRJdGVtPz0gZmFsc2U7IC8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiBu4bq/dSBjaOG7jW4gYuG6o24gZ2hpIGNoYVxyXG4gICAgc2VsZWN0RGVzY2VuZGFudD89IGZhbHNlOy8vIEPDsyBzZWxlY3QgYuG6o24gZ2hpIGNvbiwgY2jDoXUgbuG6v3UgY2jhu41uIGLhuqNuIGdoaSBjaGFcclxuICAgIHZhbHVlUGFyZW50Um9vdD86IGFueSA9IG51bGw7IC8vIEdpw6EgdHLhu4sgdHLGsOG7nW5nIFtmaWVsZFRyZWVdIGPhu6dhIGl0ZW0gdHJlZSByb290XHJcbiAgICBmaWVsZFBhcmVudFRyZWVJdGVtPz0gJ2lkJzsgLy8gVHLGsOG7nW5nIHjDoWMgxJHhu4tuaCBi4bqjbiBnaGkgbMOgIGLhuqNuIGdoaSBjaGEgY+G7p2EgYuG6o24gZ2hpIGNvblxyXG4gICAgZ3JvdXBDb2RlPzogc3RyaW5nO1xyXG4gICAgdmFsdWVGaWVsZD89ICdpZCc7XHJcbiAgICBkaXNwbGF5RmllbGQ/PSAndGVuJztcclxuICAgIHNlYXJjaEZpZWxkPzogc3RyaW5nW10gPSBbXTtcclxuICAgIGZpZWxkUGx1cz89ICcnO1xyXG4gICAgc29ydHM/OiBTb3J0W10gPSBbXTtcclxuICAgIHNvcnRGaWVsZD89ICcnO1xyXG4gICAgc29ydERpcj86IDEgfCAtMSA9IDE7XHJcbiAgICBwbHVzVXJsPzogc3RyaW5nO1xyXG5cclxuICAgIGZpZWxkVmFsdWVQYXJlbnQ/PSAndmFsdWUnOyAvLyBUcsaw4budbmcgc+G7rSBk4bulbmcgxJHhu4MgbOG6pXkgZOG7ryBsaeG7h3UgbMOgbSBraMOzYSB04burIGLhuqNuZyBjaGEgY+G7p2EgaXRlbSBkcm9wIGRvd24gxJHGsOG7o2MgY2jhu41uXHJcblxyXG4gICAgZnVuY0dldExhYmVsPzogKGl0ZW0pID0+IHN0cmluZztcclxuICAgIGZ1bmNDb21wYXJlPzogKGl0ZW06IGFueSwgdmFsdWUpID0+IGJvb2xlYW4gPSAoaXRlbSwgdmFsdWUpID0+IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXSA9PSB2YWx1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogUHJvcEZvckRyb3Bkb3duKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgRW50aXR5UGlja2VyQ29sdW1uIGV4dGVuZHMgQ29sdW1uU2NoZW1hQmFzZSB7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGNvZGU/OiBzdHJpbmc7XHJcbiAgICBkaXNhYmxlZD89IGZhbHNlO1xyXG4gICAgaXNTZWFyY2hhYmxlPz0gdHJ1ZTtcclxuICAgIGlzRGlzcGxheT89IHRydWU7XHJcbiAgICBkYXRhVHlwZT86IERhdGFUeXBlIHwgc3RyaW5nO1xyXG4gICAgb3BlcmF0b3I/OiBPcGVyYXRvcjtcclxuICAgIHdpZHRoPz0gJyc7XHJcbiAgICBub3RJbkZpZWxkcz89IGZhbHNlOyAvLyBDw6FjIHRyxrDhu51uZyBk4buvIGxp4buHdSDEkcaw4bujYyB04buVbmcgaOG7o3AgbOG6oWkgaGnhu4NuIHRo4buLIGzDqm4gZ3JpZCBtw6Aga2jDtG5nIHBo4bqjaSBs4bqleSB04burIHRyb25nIHRhYmxlIHJhLlxyXG5cclxuICAgIHRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRW50aXR5UGlja2VyQ29sdW1uKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBHZXRSZWZEYXRhU2NoZW1hIGV4dGVuZHMgUHJvcEZvckRyb3Bkb3duIHtcclxuICAgIGZpZWxkPzogc3RyaW5nO1xyXG4gICAgZnVuY1NldFZhbHVlUm93PzogKHJvd0l0ZW0sIGRhdGEpID0+IHZvaWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IEdldFJlZkRhdGFTY2hlbWEpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENydWRMaXN0Q29uZmlnIHtcclxuICAgIHRvb2x0aXBWaWV3Pzogc3RyaW5nO1xyXG4gICAgb25WaWV3PzogRnVuY3Rpb247XHJcbiAgICBkaXNhYmxlUm93U2VsZWN0V2hlbkNsaWNrQWN0aW9uPz0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogQ3J1ZExpc3RDb25maWcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbml0KSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGluaXRba2V5XTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcmVlRGF0YU9wdGlvbiB7XHJcbiAgICBkaXNwbGF5RmllbGQgPSAndGVuJztcclxuICAgIHNob3J0RGlzcGxheUZpZWxkID0gJ3Rlbic7XHJcbiAgICBleHBhbmRlZEljb24gPSAncGkgcGktZm9sZGVyLW9wZW4nO1xyXG4gICAgY29sbGFwc2VkSWNvbiA9ICdwaSBwaS1mb2xkZXInO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUcmVlRGF0YU9wdGlvbikge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIERpYWxvZ01vZGVsIHtcclxuICAgIHNob3dFZGl0Rm9ybT86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGhlYWRlcj86IHN0cmluZyA9ICcnO1xyXG4gICAgcG9wdXBTaXplPzogUG9wdXBTaXplID0gbmV3IFBvcHVwU2l6ZSh7IG1heGltaXplOiB0cnVlIH0pO1xyXG4gICAgZGF0YT86IGFueSA9IHt9O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBEaWFsb2dNb2RlbCkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBvcHVwU2l6ZSB7XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGhlaWdodD86IG51bWJlcjtcclxuICAgIG1heGltaXplPz0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IoaW5pdD86IFBvcHVwU2l6ZSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEV2ZW50RGF0YSB7XHJcbiAgICBjdXJyZW50Tm9kZTogQ29udHJvbFRyZWVOb2RlO1xyXG4gICAgc291cmNlTm9kZT86IENvbnRyb2xUcmVlTm9kZTtcclxuICAgIHNvdXJjZUV2ZW50PzogYW55O1xyXG4gICAgZXZlbnRUeXBlPzogYW55O1xyXG4gICAgZGF0YT86IGFueTtcclxuICAgIHByaXZhdGUgX2NydWRGb3JtOiBDcnVkRm9ybUNvbXBvbmVudDtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbml0Pzoge1xyXG4gICAgICAgICAgICBjdXJyZW50Tm9kZTogQ29udHJvbFRyZWVOb2RlLFxyXG4gICAgICAgICAgICBzb3VyY2VOb2RlPzogQ29udHJvbFRyZWVOb2RlLFxyXG4gICAgICAgICAgICBzb3VyY2VFdmVudD86IGFueSxcclxuICAgICAgICAgICAgZXZlbnRUeXBlPzogYW55LFxyXG4gICAgICAgICAgICBkYXRhPzogYW55LFxyXG4gICAgICAgICAgICBjcnVkRm9ybT86IENydWRGb3JtQ29tcG9uZW50O1xyXG4gICAgICAgIH1cclxuICAgICkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWUoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5tb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50TW9kZWwoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcGFyZW50UGF0aCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnBhcmVudE1vZGVsUGF0aDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHJvb3RNb2RlbCgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnROb2RlLnJvb3ROb2RlLm1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb250cm9sKCk6IEZvcm1TY2hlbWFCYXNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5jb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBwYXJlbnRDb250cm9sKCk6IEZvcm1TY2hlbWFCYXNlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Tm9kZS5wYXJlbnRDb250cm9sO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBmb3JtQ29udHJvbHMoKTogRm9ybVNjaGVtYUJhc2VbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE5vZGUuZm9ybUNvbnRyb2xzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgVGFiVmlld0RhdGEge1xyXG4gICAgY29kZT86IHN0cmluZztcclxuICAgIGhpZGRlbj86IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGljb24/OiBzdHJpbmc7XHJcbiAgICBsYWJlbD86IHN0cmluZztcclxuICAgIGhlYWRlclN0eWxlQ2xhc3M/OiBzdHJpbmc7XHJcbiAgICBhY3RpdmU/OiBib29sZWFuO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGluaXQ/OiBUYWJWaWV3RGF0YSkge1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGluaXQpIHtcclxuICAgICAgICAgICAgdGhpc1trZXldID0gaW5pdFtrZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEZpZWxkUm93U3BhbiB7XHJcbiAgICBmaWVsZDogc3RyaW5nO1xyXG4gICAgZnVuY0dldFZhbHVlPzogKGl0ZW0pID0+IGFueTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihpbml0PzogRmllbGRSb3dTcGFuKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdCkge1xyXG4gICAgICAgICAgICB0aGlzW2tleV0gPSBpbml0W2tleV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBEYXRhVHlwZSB7XHJcbiAgICBkYXRlID0gJ2RhdGUnLFxyXG4gICAgZGF0ZXRpbWUgPSAnZGF0ZXRpbWUnLFxyXG4gICAgaHRtbCA9ICdodG1sJyxcclxuICAgIHN0cmluZyA9ICdzdHJpbmcnLFxyXG4gICAgaW50ID0gJ2ludCcsXHJcbiAgICBkZWNpbWFsID0gJ2RlY2ltYWwnLFxyXG4gICAgYm9vbGVhbiA9ICdib29sZWFuJyxcclxuICAgIGVudW0gPSAnZW51bScsXHJcbiAgICBmaWxlVXBsb2FkID0gJ2ZpbGVVcGxvYWQnLFxyXG4gICAgZmlsZU1hbmFnZXIgPSAnZmlsZU1hbmFnZXInLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBDb250cm9sVHlwZSB7XHJcbiAgICBkcm9wZG93biA9ICdkcm9wZG93bicsXHJcbiAgICBkYXRldGltZSA9ICdkYXRldGltZScsXHJcbiAgICBkYXRlID0gJ2RhdGUnLFxyXG4gICAgdGltZSA9ICd0aW1lJyxcclxuICAgIG51bWJlciA9ICdudW1iZXInLFxyXG4gICAgdGV4dGJveCA9ICd0ZXh0Ym94JyxcclxuICAgIGNoZWNrYm94ID0gJ2NoZWNrYm94JyxcclxuICAgIHN3aXRjaCA9ICdzd2l0Y2gnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIE9wZXJhdG9yIHtcclxuICAgIGVxdWFsID0gJ2VxJyxcclxuICAgIG5vdEVxdWFsID0gJ25lcScsXHJcbiAgICBncmVhdGVyID0gJ2d0JyxcclxuICAgIGdyZWF0ZXJUaGFuRXF1YWwgPSAnZ3RlJyxcclxuICAgIGxvd2VyID0gJ2x0JyxcclxuICAgIGxvd2VyVGhhbkVxdWFsID0gJ2x0ZScsXHJcblxyXG4gICAgY29udGFpbiA9ICdjb250YWlucycsXHJcbiAgICBub3RDb250YWluID0gJ25jb250YWlucycsXHJcbiAgICBzdGFydFdpdGggPSAnc3RhcnRzd2l0aCcsXHJcbiAgICBub3RTdGFydFdpdGggPSAnbnN0YXJ0c3dpdGgnLFxyXG4gICAgZW5kV2l0aCA9ICdlbmRzd2l0aCcsXHJcbiAgICBub3RFbmRXaXRoID0gJ25lbmRzd2l0aCcsXHJcblxyXG4gICAgaW4gPSAnaW4nLFxyXG4gICAgbm90SW4gPSAnbmluJyxcclxuXHJcbiAgICBpc051bGwgPSAnaXNudWxsJyxcclxuICAgIGlzTm90TnVsbCA9ICdpc25vdG51bGwnLFxyXG5cclxuICAgIGluUm9sZSA9ICdoYXNSb2xlJyxcclxuICAgIG5vdEluUm9sZSA9ICdub3RIYXNSb2xlJyxcclxuICAgIGluQ2F0ZWdvcnkgPSAnaW5DYXRlZ29yeScsXHJcbiAgICBub3RJbkNhdGVnb3J5ID0gJ25vdEluQ2F0ZWdvcnknLFxyXG4gICAgaW5Qb3NpdGlvbiA9ICdpblBvc2l0aW9uJyxcclxuICAgIG5vdEluUG9zaXRpb24gPSAnbm90SW5Qb3NpdGlvbicsXHJcbiAgICBpbkxpc3RVc2VyID0gJ2luTGlzdFVzZXInLFxyXG4gICAgbm90SW5MaXN0VXNlciA9ICdub3RJbkxpc3RVc2VyJyxcclxuICAgIGluTGlzdEdyb3VwID0gJ2luTGlzdEdyb3VwJyxcclxuICAgIG5vdEluTGlzdEdyb3VwID0gJ25vdEluTGlzdEdyb3VwJyxcclxuICAgIGlzQ3VycmVudFVzZXIgPSAnaXNDdXJyZW50VXNlcicsXHJcbiAgICBpc0N1cnJlbnRDYW5CbyA9ICdpc0N1cnJlbnRDYW5CbydcclxufVxyXG5cclxuZXhwb3J0IGVudW0gSGVpZ2h0VHlwZSB7XHJcbiAgICBkZWZhdWx0ID0gMCxcclxuICAgIGR5bmFtaWMgPSAtMSxcclxuICAgIGN1c3RvbSA9IDFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRmlsZU1hbmFnZXJNb2RlIHtcclxuICAgIHNpbmdsZSA9ICdzaW5nbGUnLFxyXG4gICAgbXVsdGlwbGUgPSAnbXVsdGlwbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEZpbGVVcGxvYWRNb2RlIHtcclxuICAgIHVzaW5nRmlsZUluc3RhbmNlSWQgPSAndXNpbmdGaWxlSW5zdGFuY2VJZCcsXHJcbiAgICB1c2luZ1NlcnZpY2VGaWxlID0gJ3VzaW5nU2VydmljZUZpbGUnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEVudW1GaWxlTGF5b3V0IHtcclxuICAgIFNJTVBMRSA9ICdTSU1QTEUnLFxyXG4gICAgU0lNUExFX0ZPUl9MSVNUID0gJ1NJTVBMRV9GT1JfTElTVCcsXHJcbiAgICBMSVNUID0gJ0xJU1QnLFxyXG4gICAgSU5MSU5FID0gJ0lOTElORSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVGV4dEFsaWduIHtcclxuICAgIExlZnQgPSAwLFxyXG4gICAgQ2VudGVyID0gMSxcclxuICAgIFJpZ2h0ID0gLTFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gRXhwb3J0SXRlbXNNb2RlIHtcclxuICAgIEZyb21IdG1sID0gMCxcclxuICAgIE1hbnVhbEdldERhdGEgPSAxLFxyXG4gICAgQXV0b0dldERhdGEgPSAyXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEV4cG9ydEFsbE1vZGUge1xyXG4gICAgTWFudWFsR2V0RGF0YSA9IDAsXHJcbiAgICBBdXRvR2V0RGF0YSA9IDFcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVXNlclR5cGUge1xyXG4gICAgQ2FuQm8sXHJcbiAgICBOb3JtYWxcclxufVxyXG4iXX0=
|