@appconda/sdk 1.0.628 → 1.0.629
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/dist/modules/emploid/schema.d.ts +14 -0
- package/dist/modules/emploid/schema.js +15 -1
- package/dist/modules/emploid/service.d.ts +4 -1
- package/dist/modules/emploid/service.js +28 -1
- package/package.json +1 -1
- package/src/modules/emploid/schema.ts +16 -0
- package/src/modules/emploid/service.ts +45 -1
|
@@ -582,9 +582,36 @@ export class EmploidService extends ServiceClient {
|
|
|
582
582
|
async ListCollections(payload) {
|
|
583
583
|
return await this.actionCall("collection", "ListCollections", payload);
|
|
584
584
|
}
|
|
585
|
+
async GetCollectionById(payload) {
|
|
586
|
+
return await this.actionCall("collection", "GetCollectionById", payload);
|
|
587
|
+
}
|
|
585
588
|
async CreateRecord(payload) {
|
|
586
589
|
return await this.actionCall("collection", "CreateRecord", payload);
|
|
587
590
|
}
|
|
591
|
+
async UploadCollectionFile(payload) {
|
|
592
|
+
const result = await this.actionCall("collection", "UploadCollectionFile", payload);
|
|
593
|
+
const storagePath = this.normalizeStoragePath(String(result?.path || result?.filePath || result?.url || ""));
|
|
594
|
+
const resolvedUrl = this.resolveStorageViewUrl(storagePath);
|
|
595
|
+
return {
|
|
596
|
+
...result,
|
|
597
|
+
fileId: String(result?.itemId || result?.fileId || result?.id || payload.itemId || ""),
|
|
598
|
+
path: storagePath,
|
|
599
|
+
filePath: resolvedUrl || storagePath,
|
|
600
|
+
url: resolvedUrl || storagePath,
|
|
601
|
+
};
|
|
602
|
+
}
|
|
603
|
+
async ResolveCollectionFileView(payload) {
|
|
604
|
+
const result = await this.actionCall("collection", "ResolveCollectionFileView", payload);
|
|
605
|
+
const storagePath = this.normalizeStoragePath(String(result?.path || result?.filePath || result?.url || ""));
|
|
606
|
+
const resolvedUrl = this.resolveStorageViewUrl(storagePath);
|
|
607
|
+
return {
|
|
608
|
+
...result,
|
|
609
|
+
fileId: String(result?.fileId || result?.itemId || payload.itemId || ""),
|
|
610
|
+
path: storagePath,
|
|
611
|
+
filePath: resolvedUrl || storagePath,
|
|
612
|
+
url: resolvedUrl || storagePath,
|
|
613
|
+
};
|
|
614
|
+
}
|
|
588
615
|
async GetRecordById(payload) {
|
|
589
616
|
return await this.actionCall("collection", "GetRecordById", payload);
|
|
590
617
|
}
|
|
@@ -893,4 +920,4 @@ export class EmploidService extends ServiceClient {
|
|
|
893
920
|
return await this.get("/chat/history", payload);
|
|
894
921
|
}
|
|
895
922
|
}
|
|
896
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2VtcGxvaWQvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNckQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBQ25DLGNBQWM7UUFDcEIsT0FBTyw4QkFBOEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFnQjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRSxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakYsT0FBTyxPQUFPLEtBQUssV0FBVyxD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QUUsT0FBTyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxPQUF1RDtRQUN6RixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxPQUF1RDtRQUN6RixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFtRDtRQUNqRixPQUFPLE1BQU0sSUFB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Q0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHogZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgU2VydmljZUNsaWVudCB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlLWNsaWVudFwiO1xuXG5cbmltcG9ydCB7IEFnZ3JlZ2F0ZVJlY29yZHNTY2hlbWEsIEJ1bGtDcmVhdGVSZWNvcmRzU2NoZW1hLCBCdWxrRGVsZXRlUmVjb3Jkc1NjaGVtYSwgQnVsa1VwZGF0ZVJlY29yZHNTY2hlbWEsIENoYW5nZUFnZW50Zmxvd1Byb2plY3RTY2hlbWEsIENoZWNrUmVjb3JkUGVybWlzc2lvblNjaGVtYSwgQ29ubmVjdFRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWEsIENvdW50UmVjb3Jkc1NjaGVtYSwgQ3JlYXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hLCBDcmVhdGVBZ2VudEZsb3dTY2hlbWEsIENyZWF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWEsIENyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnRTY2hlbWEsIENyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWEsIENyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uU2NoZW1hLCBDcmVhdGVBc3Npc3RhbnRTY2hlbWEsIENyZWF0ZUFzc2lzdGFudFNraWxsU2NoZW1hLCBDcmVhdGVDaGFubmVsU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uVmlld1NjaGVtYSwgQ3JlYXRlQ29tbWFuZFNjaGVtYSwgQ3JlYXRlQ29tcGV0ZW5jeVNjaGVtYSwgQ3JlYXRlQ29uc3RyYWludFNjaGVtYSwgQ3JlYXRlRGF0YU1vZGVsU2NoZW1hLCBDcmVhdGVEYXRhc291cmNlU2NoZW1hLCBDcmVhdGVEb21haW5Ub3BpY1NjaGVtYSwgQ3JlYXRlRHJpdmVGb2xkZXJTY2hlbWEsIENyZWF0ZUVtcGxvaWRTY2hlbWEsIENyZWF0ZUV4dGVuc2lvblNjaGVtYSwgQ3JlYXRlSW5wdXRTY2hlbWEsIENyZWF0ZUluc3RydWN0aW9uU2NoZW1hLCBDcmVhdGVKb2JEZWZpbml0aW9uU2NoZW1hLCBDcmVhdGVLbm93bGVkZ2VTY2hlbWEsIENyZWF0ZU9jY3VwYXRpb25TY2hlbWEsIENyZWF0ZVJlY29yZFNjaGVtYSwgQ3JlYXRlU2NvcGVTY2hlbWEsIENyZWF0ZVNraWxsU2NoZW1hLCBDcmVhdGVTdHJlYW1JZFNjaGVtYSwgQ3JlYXRlVGFza1RlbXBsYXRlU2NoZW1hLCBDcmVhdGVUZWFtU2NoZW1hLCBDcmVhdGVUb3BpY1NjaGVtYSwgQ3JlYXRlV2lraUNvbW1lbnRTY2hlbWEsIENyZWF0ZVdpa2lQYWdlU2NoZW1hLCBDcmVhdGVXaWtpUmV2aXNpb25TY2hlbWEsIENyZWF0ZVdvcmtlclNjaGVtYSwgQ3JlYXRlV29ya2VyVG9waWNTY2hlbWEsIERlbGV0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYSwgRGVsZXRlQWdlbnRGbG93U2NoZW1hLCBEZWxldGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hLCBEZWxldGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hLCBEZWxldGVBc3Npc3RhbnRTY2hlbWEsIERlbGV0ZUFzc2lzdGFudFNraWxsU2NoZW1hLCBEZWxldGVDaGFubmVsU2NoZW1hLCBEZWxldGVDaGF0QnlJZFNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uRmllbGRTY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvblZpZXdTY2hlbWEsIERlbGV0ZUNvbW1hbmRTY2hlbWEsIERlbGV0ZUNvbXBldGVuY3lTY2hlbWEsIERlbGV0ZUNvbnN0cmFpbnRTY2hlbWEsIERlbGV0ZURhdGFNb2RlbFNjaGVtYSwgRGVsZXRlRGF0YXNvdXJjZVNjaGVtYSwgRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wU2NoZW1hLCBEZWxldGVEb21haW5Ub3BpY1NjaGVtYSwgRGVsZXRlRHJpdmVJdGVtU2NoZW1hLCBEZWxldGVFbXBsb2lkU2NoZW1hLCBEZWxldGVFeHRlbnNpb25TY2hlbWEsIERlbGV0ZUlucHV0U2NoZW1hLCBEZWxldGVJbnN0cnVjdGlvblNjaGVtYSwgRGVsZXRlSm9iRGVmaW5pdGlvblNjaGVtYSwgRGVsZXRlS25vd2xlZGdlU2NoZW1hLCBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXBTY2hlbWEsIERlbGV0ZU9jY3VwYXRpb25TY2hlbWEsIERlbGV0ZVJlY29yZFNjaGVtYSwgRGVsZXRlU2NvcGVTY2hlbWEsIERlbGV0ZVNraWxsU2NoZW1hLCBEZWxldGVUYXNrVGVtcGxhdGVTY2hlbWEsIERlbGV0ZVRlYW1TY2hlbWEsIERlbGV0ZVRvcGljU2NoZW1hLCBEZWxldGVXaWtpQ29tbWVudFNjaGVtYSwgRGVsZXRlV2lraVBhZ2VTY2hlbWEsIERlbGV0ZVdvcmtlclNjaGVtYSwgRGVsZXRlV29ya2VyVG9waWNTY2hlbWEsIERpc3RpbmN0RmllbGRWYWx1ZXNTY2hlbWEsIER1cGxpY2F0ZUFnZW50Rmxvd1NjaGVtYSwgRHVwbGljYXRlUmVjb3JkU2NoZW1hLCBFbmhhbmNlVG9waWNTY2hlbWEsIEVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlR21haWxJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlTGluZWFySW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlTm90aW9uSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRW5zdXJlVHJlbGxvSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgRXhlY3V0ZUNvbGxlY3Rpb25BaUZpZWxkU2NoZW1hLCBFeGVjdXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgR2V0Q2hhdEJ5SWRTY2hlbWEsIEdldENoYXRzQnlVc2VySWRTY2hlbWEsIEdldENvbGxlY3Rpb25TY2hlbWFTY2hlbWEsIEdldERhdGFNb2RlbEJ5SWRTY2hlbWEsIEdldERvY3VtZW50QnlJZFNjaGVtYSwgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYSwgR2V0RHJpdmVEZWxldGVJbXBhY3RTY2hlbWEsIEdldExhdGVzdFdpa2lSZXZpc2lvblNjaGVtYSwgR2V0TWFya2V0U3RvcmVJdGVtU2NoZW1hLCBHZXRNZXNzYWdlQnlJZFNjaGVtYSwgR2V0TWVzc2FnZUNvdW50QnlVc2VySWRTY2hlbWEsIEdldE1lc3NhZ2VzQnlDaGF0SWRTY2hlbWEsIEdldFJlY29yZEJ5SWRTY2hlbWEsIEdldFJlY29yZFJlbGF0aW9uc1NjaGVtYSwgR2V0U2NvcGVCeVR5cGVTY2hlbWEsIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hLCBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZFNjaGVtYSwgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYSwgR2V0V2lraVBhZ2VCeUlkU2NoZW1hLCBHZXRXaWtpUGFnZUJ5U2x1Z1NjaGVtYSwgR2V0V2lraVJldmlzaW9uQnlJZFNjaGVtYSwgR2V0V2lraVRyZWVTY2hlbWEsIEdyYW50UmVjb3JkUGVybWlzc2lvblNjaGVtYSwgR3JvdXBSZWNvcmRzU2NoZW1hLCBIYXJkRGVsZXRlRGF0YU1vZGVsU2NoZW1hLCBMaXN0QWdlbnRGbG93Rm9sZGVyc1NjaGVtYSwgTGlzdEFnZW50Rmxvd3NTY2hlbWEsIExpc3RBaXJ0YWJsZUltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RBc3Npc3RhbnRDaGFubmVsc1NjaGVtYSwgTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzU2NoZW1hLCBMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXNTY2hlbWEsIExpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnNTY2hlbWEsIExpc3RBc3Npc3RhbnRTa2lsbHNTY2hlbWEsIExpc3RBc3Npc3RhbnRzU2NoZW1hLCBMaXN0Q2hhbm5lbHNTY2hlbWEsIExpc3RDaGF0SGlzdG9yeVNjaGVtYSwgTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXNTY2hlbWEsIExpc3RDb2xsZWN0aW9uQnV0dG9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25SZWxhdGlvbnNTY2hlbWEsIExpc3RDb2xsZWN0aW9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25WaWV3c1NjaGVtYSwgTGlzdENvbW1hbmRzU2NoZW1hLCBMaXN0Q29tcGV0ZW5jaWVzU2NoZW1hLCBMaXN0Q29uc3RyYWludHNTY2hlbWEsIExpc3REYXRhTW9kZWxzU2NoZW1hLCBMaXN0RGF0YXNvdXJjZXNTY2hlbWEsIExpc3REb21haW5Ub3BpY3NTY2hlbWEsIExpc3REcml2ZUl0ZW1zU2NoZW1hLCBMaXN0RHJpdmVUcmVlU2NoZW1hLCBMaXN0RW1wbG9pZHNQYWdpbmF0ZWRTY2hlbWEsIExpc3RFbXBsb2lkc1NjaGVtYSwgTGlzdEV4dGVuc2lvbnNTY2hlbWEsIExpc3RHbWFpbEltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RHaXRodWJJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0SW5wdXRTY2hlbWEsIExpc3RJbnN0cnVjdGlvbnNTY2hlbWEsIExpc3RKaXJhSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEpvYkRlZmluaXRpb25TY2hlbWEsIExpc3RLbm93bGVkZ2VzU2NoZW1hLCBMaXN0TGluZWFySW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdE1hcmtldFN0b3JlSXRlbXNTY2hlbWEsIExpc3ROb3Rpb25JbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0T2NjdXBhdGlvbnNTY2hlbWEsIExpc3RSZWNvcmRQZXJtaXNzaW9uc1NjaGVtYSwgTGlzdFJlY29yZHNTY2hlbWEsIExpc3RSZWxhdGlvbkNhbmRpZGF0ZXNTY2hlbWEsIExpc3RTY29wZXNTY2hlbWEsIExpc3RTa2lsbHNTY2hlbWEsIExpc3RUYXNrVGVtcGxhdGVzU2NoZW1hLCBMaXN0VGVhbXNTY2hlbWEsIExpc3RUb3BpY3NTY2hlbWEsIExpc3RUcmVsbG9JbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0V2lraUNvbW1lbnRzU2NoZW1hLCBMaXN0V2lraVBhZ2VzU2NoZW1hLCBMaXN0V29ya2Vyc1NjaGVtYSwgTGlzdFdvcmtlclRvcGljc1NjaGVtYSwgTW92ZURyaXZlSXRlbVNjaGVtYSwgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hLCBQcmV2aWV3QWlydGFibGVJbXBvcnRTY2hlbWEsIFByZXZpZXdDc3ZJbXBvcnRTY2hlbWEsIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYSwgUHJldmlld0dpdGh1YkltcG9ydFNjaGVtYSwgUHJldmlld0ppcmFJbXBvcnRTY2hlbWEsIFByZXZpZXdMaW5lYXJJbXBvcnRTY2hlbWEsIFByZXZpZXdOb3Rpb25JbXBvcnRTY2hlbWEsIFByZXZpZXdUcmVsbG9JbXBvcnRTY2hlbWEsIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hLCBQdWJsaXNoRG9tYWluU2NoZW1hLCBQdWJsaXNoRW1wbG9pZFNjaGVtYSwgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWEsIFF1ZXJ5UmVjb3Jkc1NjaGVtYSwgUmVuYW1lRHJpdmVJdGVtU2NoZW1hLCBSZW9yZGVyQ29sbGVjdGlvbkZpZWxkc1NjaGVtYSwgUmVzb2x2ZURyaXZlRG93bmxvYWRTY2hlbWEsIFJlc29sdmVTY29wZUZpbGVWaWV3U2NoZW1hLCBSZXNvbHZlV2lraUZpbGVWaWV3U2NoZW1hLCBSZXN0b3JlRGF0YU1vZGVsU2NoZW1hLCBSZXN0b3JlUmVjb3JkU2NoZW1hLCBSZXN0b3JlV2lraVBhZ2VTY2hlbWEsIFJldm9rZVJlY29yZFBlcm1pc3Npb25TY2hlbWEsIFJ1bkFpcnRhYmxlSW1wb3J0U2NoZW1hLCBSdW5Dc3ZJbXBvcnRTY2hlbWEsIFJ1bkdtYWlsSW1wb3J0U2NoZW1hLCBSdW5HaXRodWJJbXBvcnRTY2hlbWEsIFJ1bkppcmFJbXBvcnRTY2hlbWEsIFJ1bkxpbmVhckltcG9ydFNjaGVtYSwgUnVuTm90aW9uSW1wb3J0U2NoZW1hLCBSdW5UcmVsbG9JbXBvcnRTY2hlbWEsIFNhdmVDaGF0U2NoZW1hLCBTYXZlRG9jdW1lbnRTY2hlbWEsIFNhdmVNZXNzYWdlc1NjaGVtYSwgU2F2ZVN1Z2dlc3Rpb25zU2NoZW1hLCBTZWFyY2hEcml2ZUl0ZW1zU2NoZW1hLCBTZWFyY2hSZWNvcmRzU2NoZW1hLCBVcGRhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIFVwZGF0ZUFnZW50Rmxvd1NjaGVtYSwgVXBkYXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYSwgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYSwgVXBkYXRlQXNzaXN0YW50U2NoZW1hLCBVcGRhdGVBc3Npc3RhbnRTa2lsbFNjaGVtYSwgVXBkYXRlQ2hhbm5lbFNjaGVtYSwgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYSwgVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWRTY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hLCBVcGRhdGVDb21tYW5kU2NoZW1hLCBVcGRhdGVDb21wZXRlbmN5U2NoZW1hLCBVcGRhdGVDb25zdHJhaW50U2NoZW1hLCBVcGRhdGVEYXRhTW9kZWxTY2hlbWEsIFVwZGF0ZURhdGFzb3VyY2VTY2hlbWEsIFVwZGF0ZURvbWFpblRvcGljU2NoZW1hLCBVcGRhdGVFbXBsb2lkU2NoZW1hLCBVcGRhdGVJbnB1dFNjaGVtYSwgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWEsIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIFVwZGF0ZUtub3dsZWRnZVNjaGVtYSwgVXBkYXRlT2NjdXBhdGlvblNjaGVtYSwgVXBkYXRlUmVjb3JkU2NoZW1hLCBVcGRhdGVTY29wZVNjaGVtYSwgVXBkYXRlU2tpbGxTY2hlbWEsIFVwZGF0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgVXBkYXRlVGVhbVNjaGVtYSwgVXBkYXRlVG9waWNTY2hlbWEsIFVwZGF0ZVdpa2lDb21tZW50U2NoZW1hLCBVcGRhdGVXaWtpUGFnZVNjaGVtYSwgVXBkYXRlV29ya2VyU2NoZW1hLCBVcGRhdGVXb3JrZXJUb3BpY1NjaGVtYSwgVXBsb2FkRWRpdG9yRmlsZVNjaGVtYSwgVXBzZXJ0UmVjb3JkU2NoZW1hLCBWYWxpZGF0ZVJlY29yZFNjaGVtYSwgVm90ZU1lc3NhZ2VTY2hlbWEgfSBmcm9tIFwiLi9zY2hlbWFcIjtcbmltcG9ydCB7IFRBZ2VudEZsb3csIFRBZ2VudEZsb3dGb2xkZXIsIFRBc3Npc3RhbnQsIFRBc3Npc3RhbnRDaGFubmVsLCBUQXNzaXN0YW50Q29uc3RyYWludCwgVEFzc2lzdGFudERhdGFzb3VyY2UsIFRBc3Npc3RhbnRJbnN0cnVjdGlvbiwgVEFzc2lzdGFudFNraWxsLCBUQ2hhbm5lbCwgVENoYXQsIFRDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGUsIFRDb2xsZWN0aW9uQnV0dG9uLCBUQ29sbGVjdGlvblJlbGF0aW9uLCBUQ29sbGVjdGlvblZpZXcsIFRDb21tYW5kLCBUQ29tcGV0ZW5jeSwgVENvbnN0cmFpbnQsIFREYXRhc291cmNlLCBURGVsZXRlQWdlbnRGbG93UmVzdWx0LCBURG9jdW1lbnQsIFREb21haW5Ub3BpYywgVERyaXZlRGVsZXRlSW1wYWN0LCBURHJpdmVJdGVtLCBURHJpdmVUcmVlTm9kZSwgVEVtcGxvaWQsIFRFbmhhbmNlVG9waWMsIFRFeHRlbnNpb24sIFRJbnB1dCwgVEluc3RydWN0aW9uLCBUSm9iRGVmaW5pdGlvbiwgVEtub3dsZWRnZSwgVE1hcmtldFN0b3JlSXRlbSwgVE9jY3VwYXRpb24sIFRQYWdpbmF0ZWRFbXBsb2lkc1Jlc3VsdCwgVFByZXBhcmVkRHJpdmVVcGxvYWQsIFRQdWJsaXNoRW1wbG9pZCwgVFB1Ymxpc2hXb3JrZXJUb01hcmtldFN0b3JlLCBUUmVsYXRpb25SZWNvcmRPcHRpb24sIFRTY29wZSwgVFNraWxsLCBUU3RyZWFtSWQsIFRUYXNrVGVtcGxhdGUsIFRUZWFtLCBUVG9waWMsIFRVcGxvYWRlZEZpbGUsIFRXaWtpQ29tbWVudCwgVFdpa2lDb21tZW50UGFnaW5hdGlvbiwgVFdpa2lGaWxlVmlld1Jlc29sdXRpb24sIFRXb3JrZXIsIFRXb3JrZXJUb3BpYyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBFbXBsb2lkU2VydmljZSBleHRlbmRzIFNlcnZpY2VDbGllbnQge1xuICAgIHByb3RlY3RlZCBnZXRTZXJ2aWNlTmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ2NvbS5hcHBjb25kYS5zZXJ2aWNlLmVtcGxvaWQnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNIdHRwVXJsKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eaHR0cHM/OlxcL1xcLy9pLnRlc3QodmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm9ybWFsaXplU3RvcmFnZVBhdGgocGF0aExpa2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBTdHJpbmcocGF0aExpa2UgfHwgXCJcIikudHJpbSgpO1xuICAgICAgICBpZiAoIW5vcm1hbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNIdHRwVXJsKG5vcm1hbGl6ZWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub3JtYWxpemVkLnN0YXJ0c1dpdGgoXCIvXCIpID8gbm9ybWFsaXplZCA6IGAvJHtub3JtYWxpemVkfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNvbHZlRW52RW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZW52Q2FuZGlkYXRlcyA9IFtcbiAgICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiID8gcHJvY2Vzcz8uZW52Py5BUFBDT05EQV9FTkRQT0lOVCA6IFwiXCIsXG4gICAgICAgICAgICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3M/LmVudj8uTkVYVF9QVUJMSUNfQVBQQ09OREFfRU5EUE9JTlQgOiBcIlwiLFxuICAgICAgICAgICAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzPy5lbnY/Ll9BUFBfQVBQQ09OREFfRU5EUE9JTlQgOiBcIlwiLFxuICAgICAgICBdO1xuXG4gICAgICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGVudkNhbmRpZGF0ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBTdHJpbmcoY2FuZGlkYXRlIHx8IFwiXCIpLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNIdHRwVXJsKG5vcm1hbGl6ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKHN0b3JhZ2VQYXRoKTtcbiAgICAgICAgaWYgKCFub3JtYWxpemVkUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0h0dHBVcmwobm9ybWFsaXplZFBhdGgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGg7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbmRwb2ludCA9IFN0cmluZyh0aGlzLmNsaWVudC5jb25maWcuZW5kcG9pbnQgfHwgXCJcIikudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChlbmRwb2ludCkpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlbmRwb2ludH0ke25vcm1hbGl6ZWRQYXRofWA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgY29uc3QgcHJvdG9jb2wgPSB3aW5kb3c/LmxvY2F0aW9uPy5wcm90b2NvbCB8fCBcIlwiO1xuICAgICAgICAgICAgaWYgKHByb3RvY29sICYmIHByb3RvY29sICE9PSBcImZpbGU6XCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW4gPSBTdHJpbmcod2luZG93Py5sb2NhdGlvbj8ub3JpZ2luIHx8IFwiXCIpLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gICAgICAgICAgICAgICAgaWYgKG9yaWdpbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkRW5kcG9pbnQgPSBlbmRwb2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAoZW5kcG9pbnQuc3RhcnRzV2l0aChcIi9cIikgPyBlbmRwb2ludCA6IGAvJHtlbmRwb2ludH1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBcIlwiO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7b3JpZ2lufSR7bm9ybWFsaXplZEVuZHBvaW50fSR7bm9ybWFsaXplZFBhdGh9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlbnZFbmRwb2ludCA9IHRoaXMucmVzb2x2ZUVudkVuZHBvaW50KCk7XG4gICAgICAgIGlmIChlbnZFbmRwb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIGAke2VudkVuZHBvaW50fSR7bm9ybWFsaXplZFBhdGh9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub3JtYWxpemVkUGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRW1wbG9pZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVFbXBsb2lkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUVtcGxvaWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlRW1wbG9pZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHVibGlzaEVtcGxvaWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHVibGlzaEVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxUUHVibGlzaEVtcGxvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdQdWJsaXNoRW1wbG9pZCcsIHBheWxvYWQpO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEVtcGxvaWRzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RFbXBsb2lkc1NjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0RW1wbG9pZHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEVtcGxvaWRzUGFnaW5hdGVkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RFbXBsb2lkc1BhZ2luYXRlZFNjaGVtYT4pOiBQcm9taXNlPFRQYWdpbmF0ZWRFbXBsb2lkc1Jlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RFbXBsb2lkc1BhZ2luYXRlZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVJbnN0cnVjdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVJbnN0cnVjdGlvblNjaGVtYT4pOiBQcm9taXNlPFRJbnN0cnVjdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZUluc3RydWN0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RJbnN0cnVjdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEluc3RydWN0aW9uc1NjaGVtYT4pOiBQcm9taXNlPFRJbnN0cnVjdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdEluc3RydWN0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVJbnN0cnVjdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVJbnN0cnVjdGlvblNjaGVtYT4pOiBQcm9taXNlPFRJbnN0cnVjdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUluc3RydWN0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUluc3RydWN0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUluc3RydWN0aW9uU2NoZW1hPik6IFByb21pc2U8VEluc3RydWN0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlSW5zdHJ1Y3Rpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29uc3RyYWludChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb25zdHJhaW50U2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb25zdHJhaW50cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29uc3RyYWludHNTY2hlbWE+KTogUHJvbWlzZTxUQ29uc3RyYWludFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdENvbnN0cmFpbnRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlQ29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQ29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUNvbnN0cmFpbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFNjb3BlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0U2NvcGVzU2NoZW1hPik6IFByb21pc2U8VFNjb3BlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0U2NvcGVzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFNjb3BlQnlUeXBlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFNjb3BlQnlUeXBlU2NoZW1hPik6IFByb21pc2U8VFNjb3BlIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0dldFNjb3BlQnlUeXBlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVNjb3BlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVNjb3BlU2NoZW1hPik6IFByb21pc2U8VFNjb3BlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlU2NvcGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlU2NvcGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlU2NvcGVTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVTY29wZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVTY29wZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVTY29wZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZVNjb3BlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwbG9hZFNjb3BlRmlsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBsb2FkRWRpdG9yRmlsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRVcGxvYWRlZEZpbGU+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJzY29wZVwiLCBcIlVwbG9hZEZpbGVcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoID1cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoU3RyaW5nKHJlc3VsdD8ucGF0aCB8fCByZXN1bHQ/LmZpbGVQYXRoIHx8IHJlc3VsdD8udXJsIHx8IFwiXCIpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uZmlsZUlkIHx8IHJlc3VsdD8uaWQgfHwgcGF5bG9hZC5hdHRhY2htZW50SWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVTY29wZUZpbGVWaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlU2NvcGVGaWxlVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpRmlsZVZpZXdSZXNvbHV0aW9uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwic2NvcGVcIiwgXCJSZXNvbHZlU2NvcGVGaWxlVmlld1wiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcGF5bG9hZC5maWxlSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZU9jY3VwYXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlT2NjdXBhdGlvblNjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnQ3JlYXRlT2NjdXBhdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVPY2N1cGF0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZU9jY3VwYXRpb25TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ1VwZGF0ZU9jY3VwYXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlT2NjdXBhdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVPY2N1cGF0aW9uU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdEZWxldGVPY2N1cGF0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RPY2N1cGF0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0T2NjdXBhdGlvbnNTY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnTGlzdE9jY3VwYXRpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFB1Ymxpc2hEb21haW4ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHVibGlzaERvbWFpblNjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnUHVibGlzaERvbWFpbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVEb21haW5Ub3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEb21haW5Ub3BpY1NjaGVtYT4pOiBQcm9taXNlPFREb21haW5Ub3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0NyZWF0ZURvbWFpblRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZURvbWFpblRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZURvbWFpblRvcGljU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnVXBkYXRlRG9tYWluVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRG9tYWluVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRG9tYWluVG9waWNTY2hlbWE+KTogUHJvbWlzZTxURG9tYWluVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdEZWxldGVEb21haW5Ub3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RG9tYWluVG9waWNzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REb21haW5Ub3BpY3NTY2hlbWE+KTogUHJvbWlzZTxURG9tYWluVG9waWNbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0xpc3REb21haW5Ub3BpY3MnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlSm9iRGVmaW5pdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVKb2JEZWZpbml0aW9uU2NoZW1hPik6IFByb21pc2U8VEpvYkRlZmluaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVKb2JEZWZpbml0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUpvYkRlZmluaXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlSm9iRGVmaW5pdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVKb2JEZWZpbml0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUpvYkRlZmluaXRpb25TY2hlbWE+KTogUHJvbWlzZTxUSm9iRGVmaW5pdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUpvYkRlZmluaXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEpvYkRlZmluaXRpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RKb2JEZWZpbml0aW9uU2NoZW1hPik6IFByb21pc2U8VEpvYkRlZmluaXRpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RKb2JEZWZpbml0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb21wZXRlbmN5KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbXBldGVuY3lTY2hlbWE+KTogUHJvbWlzZTxUQ29tcGV0ZW5jeT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZUNvbXBldGVuY3knLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29tcGV0ZW5jeShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb21wZXRlbmN5U2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3k+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVDb21wZXRlbmN5JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbXBldGVuY3kocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29tcGV0ZW5jeVNjaGVtYT4pOiBQcm9taXNlPFRDb21wZXRlbmN5PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnRGVsZXRlQ29tcGV0ZW5jeScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29tcGV0ZW5jaWVzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb21wZXRlbmNpZXNTY2hlbWE+KTogUHJvbWlzZTxUQ29tcGV0ZW5jeVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdENvbXBldGVuY2llcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVUYXNrVGVtcGxhdGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVGFza1RlbXBsYXRlU2NoZW1hPik6IFByb21pc2U8VFRhc2tUZW1wbGF0ZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZVRhc2tUZW1wbGF0ZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVUYXNrVGVtcGxhdGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlVGFza1RlbXBsYXRlU2NoZW1hPik6IFByb21pc2U8VFRhc2tUZW1wbGF0ZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZVRhc2tUZW1wbGF0ZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVUYXNrVGVtcGxhdGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlVGFza1RlbXBsYXRlU2NoZW1hPik6IFByb21pc2U8VFRhc2tUZW1wbGF0ZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZVRhc2tUZW1wbGF0ZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0VGFza1RlbXBsYXRlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0VGFza1RlbXBsYXRlc1NjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGVbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RUYXNrVGVtcGxhdGVzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFnZW50RmxvdyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBZ2VudEZsb3dTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnQ3JlYXRlQWdlbnRGbG93JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFnZW50RmxvdyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBZ2VudEZsb3dTY2hlbWE+KTogUHJvbWlzZTxURGVsZXRlQWdlbnRGbG93UmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnRGVsZXRlQWdlbnRGbG93JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIER1cGxpY2F0ZUFnZW50RmxvdyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEdXBsaWNhdGVBZ2VudEZsb3dTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnRHVwbGljYXRlQWdlbnRGbG93JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENoYW5nZUFnZW50Zmxvd1Byb2plY3QocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ2hhbmdlQWdlbnRmbG93UHJvamVjdFNjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3c+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdDaGFuZ2VBZ2VudGZsb3dQcm9qZWN0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFnZW50RmxvdyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBZ2VudEZsb3dTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnVXBkYXRlQWdlbnRGbG93JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBZ2VudEZsb3dzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBZ2VudEZsb3dzU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnTGlzdEFnZW50Rmxvd3MnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQWdlbnRGbG93Rm9sZGVyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dGb2xkZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdDcmVhdGVBZ2VudEZsb3dGb2xkZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQWdlbnRGbG93Rm9sZGVyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dGb2xkZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdVcGRhdGVBZ2VudEZsb3dGb2xkZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQWdlbnRGbG93Rm9sZGVyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFnZW50Rmxvd0ZvbGRlclNjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dGb2xkZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdEZWxldGVBZ2VudEZsb3dGb2xkZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFnZW50Rmxvd0ZvbGRlcnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFnZW50Rmxvd0ZvbGRlcnNTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYWdlbnQtZmxvdycsICdMaXN0QWdlbnRGbG93Rm9sZGVycycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RHJpdmVJdGVtcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlSXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGN1cnJlbnRGb2xkZXI6IFREcml2ZUl0ZW07IGl0ZW1zOiBURHJpdmVJdGVtW10gfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVJdGVtc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlVHJlZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERyaXZlVHJlZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZVRyZWVOb2RlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkxpc3REcml2ZVRyZWVcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNlYXJjaERyaXZlSXRlbXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNlYXJjaERyaXZlSXRlbXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiU2VhcmNoRHJpdmVJdGVtc1wiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRHJpdmVGb2xkZXIoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURyaXZlRm9sZGVyU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJDcmVhdGVEcml2ZUZvbGRlclwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJlcGFyZURyaXZlVXBsb2FkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmVwYXJlRHJpdmVVcGxvYWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUUHJlcGFyZWREcml2ZVVwbG9hZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJQcmVwYXJlRHJpdmVVcGxvYWRcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlbmFtZURyaXZlSXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVuYW1lRHJpdmVJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJSZW5hbWVEcml2ZUl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIE1vdmVEcml2ZUl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIE1vdmVEcml2ZUl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVJdGVtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIk1vdmVEcml2ZUl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldERyaXZlRGVsZXRlSW1wYWN0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREcml2ZURlbGV0ZUltcGFjdFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZURlbGV0ZUltcGFjdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJHZXREcml2ZURlbGV0ZUltcGFjdFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRHJpdmVJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEcml2ZUl0ZW1TY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7IGlkOiBzdHJpbmc7IGRlbGV0ZWQ6IGJvb2xlYW47IHRvdGFsSXRlbXM6IG51bWJlciB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIkRlbGV0ZURyaXZlSXRlbVwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzb2x2ZURyaXZlRG93bmxvYWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlc29sdmVEcml2ZURvd25sb2FkU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJkcml2ZVwiLCBcIlJlc29sdmVEcml2ZURvd25sb2FkXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/Lml0ZW1JZCB8fCBwYXlsb2FkLml0ZW1JZCB8fCBcIlwiKSxcbiAgICAgICAgICAgIHBhdGg6IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgZmlsZVBhdGg6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgdXJsOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRXh0ZW5zaW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUV4dGVuc2lvblNjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZXh0ZW5zaW9uJywgJ0NyZWF0ZUV4dGVuc2lvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVFeHRlbnNpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRXh0ZW5zaW9uU2NoZW1hPik6IFByb21pc2U8VEV4dGVuc2lvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdleHRlbnNpb24nLCAnRGVsZXRlRXh0ZW5zaW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RFeHRlbnNpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RFeHRlbnNpb25zU2NoZW1hPik6IFByb21pc2U8VEV4dGVuc2lvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2V4dGVuc2lvbicsICdMaXN0RXh0ZW5zaW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tQXNzaXN0YW50LS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50U2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50c1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50SW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudEluc3RydWN0aW9uc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRJbnN0cnVjdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50SW5zdHJ1Y3Rpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnRDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnRDb25zdHJhaW50cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50Q29uc3RyYWludHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q29uc3RyYWludFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50Q29uc3RyYWludHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudERhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50RGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnREYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudERhdGFzb3VyY2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnREYXRhc291cmNlc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnREYXRhc291cmNlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnRTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50U2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50U2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50U2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudFNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudFNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudFNraWxsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnRTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50U2tpbGxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRTa2lsbHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudFNraWxscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBc3Npc3RhbnRDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnVXBkYXRlQXNzaXN0YW50Q2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBc3Npc3RhbnRDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnRGVsZXRlQXNzaXN0YW50Q2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50Q2hhbm5lbHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudENoYW5uZWxzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudENoYW5uZWxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS1EYXRhc291cmNlcy0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1zb3VyY2UnLCAnQ3JlYXRlRGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZURhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxURGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLXNvdXJjZScsICdVcGRhdGVEYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2RhdGEtb3VyY2UnLCAnRGVsZXRlRGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RGF0YXNvdXJjZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERhdGFzb3VyY2VzU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2VbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLXNvdXJjZScsICdMaXN0RGF0YXNvdXJjZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU2tpbGxzLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdDcmVhdGVTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0U2tpbGxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RTa2lsbHNTY2hlbWE+KTogUHJvbWlzZTxUU2tpbGxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdMaXN0U2tpbGxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVNraWxsU2NoZW1hPik6IFByb21pc2U8VFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3NraWxsJywgJ1VwZGF0ZVNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVNraWxsU2NoZW1hPik6IFByb21pc2U8VFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3NraWxsJywgJ0RlbGV0ZVNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUNoYW5uZWxzLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGFubmVsJywgJ0NyZWF0ZUNoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENoYW5uZWxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDaGFubmVsc1NjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdMaXN0Q2hhbm5lbHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdVcGRhdGVDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnRGVsZXRlQ2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1Lbm93bGVkZ2UtLS0tLS0tLS0tLS0tLS0tXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUtub3dsZWRnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVLbm93bGVkZ2VTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdDcmVhdGVLbm93bGVkZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEtub3dsZWRnZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEtub3dsZWRnZXNTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgna25vd2xlZGdlJywgJ0xpc3RLbm93bGVkZ2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUtub3dsZWRnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVLbm93bGVkZ2VTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdVcGRhdGVLbm93bGVkZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlS25vd2xlZGdlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUtub3dsZWRnZVNjaGVtYT4pOiBQcm9taXNlPFRLbm93bGVkZ2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgna25vd2xlZGdlJywgJ0RlbGV0ZUtub3dsZWRnZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLVdPUktFUi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXb3JrZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlV29ya2VyU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnQ3JlYXRlV29ya2VyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVdvcmtlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXb3JrZXJTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdVcGRhdGVXb3JrZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlV29ya2VyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdvcmtlclNjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0RlbGV0ZVdvcmtlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZVNjaGVtYT4pOiBQcm9taXNlPFRQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdtYXJrZXQtc3RvcmUnLCAnUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFdvcmtlcnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFdvcmtlcnNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0xpc3RXb3JrZXJzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdvcmtlclRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdvcmtlclRvcGljU2NoZW1hPik6IFByb21pc2U8VFdvcmtlclRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdDcmVhdGVXb3JrZXJUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXb3JrZXJUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVXb3JrZXJUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnVXBkYXRlV29ya2VyVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlV29ya2VyVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlV29ya2VyVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0RlbGV0ZVdvcmtlclRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RXb3JrZXJUb3BpY3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFdvcmtlclRvcGljc1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpY1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdMaXN0V29ya2VyVG9waWNzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RNYXJrZXRTdG9yZUl0ZW1zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RNYXJrZXRTdG9yZUl0ZW1zU2NoZW1hPik6IFByb21pc2U8VE1hcmtldFN0b3JlSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ21hcmtldC1zdG9yZScsICdMaXN0TWFya2V0U3RvcmVJdGVtcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNYXJrZXRTdG9yZUl0ZW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0TWFya2V0U3RvcmVJdGVtU2NoZW1hPik6IFByb21pc2U8VE1hcmtldFN0b3JlSXRlbSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnbWFya2V0LXN0b3JlJywgJ0dldE1hcmtldFN0b3JlSXRlbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS1Ub3BpY3MtLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnQ3JlYXRlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnVXBkYXRlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnRGVsZXRlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFRvcGljcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0VG9waWNzU2NoZW1hPik6IFByb21pc2U8VFRvcGljW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnTGlzdFRvcGljcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbmhhbmNlVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5oYW5jZVRvcGljU2NoZW1hPik6IFByb21pc2U8VEVuaGFuY2VUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0b3BpYycsICdFbmhhbmNlVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUlucHV0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUlucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdDcmVhdGVJbnB1dCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVJbnB1dChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdpbnB1dC1vdXRwdXQnLCAnVXBkYXRlSW5wdXQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlSW5wdXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlSW5wdXRTY2hlbWE+KTogUHJvbWlzZTxUSW5wdXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ0RlbGV0ZUlucHV0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RJbnB1dHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdElucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ0xpc3RJbnB1dHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVGVhbShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVUZWFtU2NoZW1hPik6IFByb21pc2U8VFRlYW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndGVhbScsICdDcmVhdGVUZWFtJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUZWFtcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0VGVhbXNTY2hlbWE+KTogUHJvbWlzZTxUVGVhbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnTGlzdFRlYW1zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVRlYW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlVGVhbVNjaGVtYT4pOiBQcm9taXNlPFRUZWFtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnVXBkYXRlVGVhbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVUZWFtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRlYW1TY2hlbWE+KTogUHJvbWlzZTxUVGVhbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ0RlbGV0ZVRlYW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZUNoYXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2F2ZUNoYXRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1NhdmVDaGF0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNoYXRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNoYXRCeUlkU2NoZW1hPik6IFByb21pc2U8VENoYXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdEZWxldGVDaGF0QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRDaGF0QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRDaGF0QnlJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0Q2hhdEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q2hhdHNCeVVzZXJJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRDaGF0c0J5VXNlcklkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldENoYXRzQnlVc2VySWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZU1lc3NhZ2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVNZXNzYWdlc1NjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlTWVzc2FnZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNZXNzYWdlc0J5Q2hhdElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VzQnlDaGF0SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0TWVzc2FnZXNCeUNoYXRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIEdldE1lc3NhZ2VCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VCeUlkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldE1lc3NhZ2VCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFZvdGVNZXNzYWdlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFZvdGVNZXNzYWdlU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1ZvdGVNZXNzYWdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFZvdGVzQnlDaGF0SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRWb3Rlc0J5Q2hhdElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXBTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVTdWdnZXN0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlU3VnZ2VzdGlvbnNTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZVN1Z2dlc3Rpb25zJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldFN1Z2dlc3Rpb25zQnlEb2N1bWVudElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXBTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1VwZGF0ZUNoYXRWaXNpYmxpdHlCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdVcGRhdGVDaGF0TGFzdENvbnRleHRCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldE1lc3NhZ2VDb3VudEJ5VXNlcklkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1lc3NhZ2VDb3VudEJ5VXNlcklkU2NoZW1hPik6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0TWVzc2FnZUNvdW50QnlVc2VySWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlU3RyZWFtSWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU3RyZWFtSWRTY2hlbWE+KTogUHJvbWlzZTxUU3RyZWFtSWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdDcmVhdGVTdHJlYW1JZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTdHJlYW1JZHNCeUNoYXRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTdHJlYW1JZHNCeUNoYXRJZFNjaGVtYT4pOiBQcm9taXNlPFRTdHJlYW1JZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0U3RyZWFtSWRzQnlDaGF0SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2F2ZURvY3VtZW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVEb2N1bWVudFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlRG9jdW1lbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RG9jdW1lbnRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldERvY3VtZW50QnlJZFNjaGVtYT4pOiBQcm9taXNlPFREb2N1bWVudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldERvY3VtZW50QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREb2N1bWVudHNCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldERvY3VtZW50c0J5SWRTY2hlbWE+KTogUHJvbWlzZTxURG9jdW1lbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldERvY3VtZW50c0J5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbW1hbmQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29tbWFuZFNjaGVtYT4pOiBQcm9taXNlPFRDb21tYW5kPiB7XG4gICAgICAgIC8qICBkZWJ1Z2dlclxuICAgICAgICAgIGlmICggdHlwZW9mIHBheWxvYWQuaW5wdXRzID09PSAnb2JqZWN0JyApIHtcbiAgICAgICAgICAgICAgcGF5bG9hZC5pbnB1dHMgPSBKU09OLnN0cmluZ2lmeShwYXlsb2FkLmlucHV0cykgYXMgYW55O1xuICAgICAgICAgIH0gKi9cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY29tbWFuZCcsICdDcmVhdGVDb21tYW5kJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb21tYW5kcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29tbWFuZHNTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnTGlzdENvbW1hbmRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbW1hbmQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29tbWFuZFNjaGVtYT4pOiBQcm9taXNlPFRDb21tYW5kPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnVXBkYXRlQ29tbWFuZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb21tYW5kKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbW1hbmRTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ0RlbGV0ZUNvbW1hbmQnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tQ29sbGVjdGlvbnMtLS0tLS0tLS0tLS0tLS0tLS0tXG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEYXRhTW9kZWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREYXRhTW9kZWxCeUlkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREYXRhTW9kZWxCeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0RGF0YU1vZGVsQnlJZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RGF0YU1vZGVscyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdERhdGFNb2RlbHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0RGF0YU1vZGVsc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXN0b3JlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXN0b3JlRGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVzdG9yZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBIYXJkRGVsZXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBIYXJkRGVsZXRlRGF0YU1vZGVsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiSGFyZERlbGV0ZURhdGFNb2RlbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVJlY29yZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlUmVjb3JkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFJlY29yZEJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFJlY29yZEJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRSZWNvcmRCeUlkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICByZWNvcmRzOiBhbnlbXTtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBSZXN0b3JlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXN0b3JlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVzdG9yZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcHNlcnRSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwc2VydFJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwc2VydFJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrQ3JlYXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa0NyZWF0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrQ3JlYXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVBaXJ0YWJsZUltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3QWlydGFibGVJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdBaXJ0YWJsZUltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdBaXJ0YWJsZUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5BaXJ0YWJsZUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuQWlydGFibGVJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5BaXJ0YWJsZUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlTGluZWFySW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0TGluZWFySW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdExpbmVhckltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0TGluZWFySW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3TGluZWFySW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3TGluZWFySW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0xpbmVhckltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5MaW5lYXJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkxpbmVhckltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkxpbmVhckltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVHbWFpbEltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlR2l0aHViSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0R21haWxJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0R21haWxJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEdtYWlsSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0R2l0aHViSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEdpdGh1YkltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0R2l0aHViSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3R21haWxJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdHbWFpbEltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3Q3N2SW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3Q3N2SW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0NzdkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3R2l0aHViSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3R2l0aHViSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0dpdGh1YkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5HbWFpbEltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuR21haWxJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5HbWFpbEltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5Dc3ZJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkNzdkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkNzdkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5HaXRodWJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkdpdGh1YkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkdpdGh1YkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlTm90aW9uSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Tm90aW9uSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdE5vdGlvbkltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Tm90aW9uSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3Tm90aW9uSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3Tm90aW9uSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld05vdGlvbkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5Ob3Rpb25JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bk5vdGlvbkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bk5vdGlvbkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlSmlyYUltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SmlyYUltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RKaXJhSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RKaXJhSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3SmlyYUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0ppcmFJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3SmlyYUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5KaXJhSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5KaXJhSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuSmlyYUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlVHJlbGxvSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ29ubmVjdFRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0VHJlbGxvSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0VHJlbGxvSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3VHJlbGxvSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3VHJlbGxvSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld1RyZWxsb0ltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5UcmVsbG9JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1blRyZWxsb0ltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1blRyZWxsb0ltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrVXBkYXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa1VwZGF0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrVXBkYXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrRGVsZXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa0RlbGV0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrRGVsZXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgRHVwbGljYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEdXBsaWNhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEdXBsaWNhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUXVlcnlSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBRdWVyeVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHJlY29yZHM6IGFueVtdO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJRdWVyeVJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2VhcmNoUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2VhcmNoUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgcmVjb3JkczogYW55W107XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlNlYXJjaFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ291bnRSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDb3VudFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDb3VudFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR3JvdXBSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHcm91cFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdyb3VwUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBBZ2dyZWdhdGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBBZ2dyZWdhdGVSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJBZ2dyZWdhdGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERpc3RpbmN0RmllbGRWYWx1ZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERpc3RpbmN0RmllbGRWYWx1ZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRpc3RpbmN0RmllbGRWYWx1ZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvblZpZXdzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvblZpZXdzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25WaWV3W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvblZpZXdzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uVmlldz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uVmlldz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb2xsZWN0aW9uQnV0dG9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25CdXR0b25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25CdXR0b25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uQnV0dG9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uQnV0dG9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25CdXR0b24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uQnV0dG9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkJ1dHRvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEV4ZWN1dGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRXhlY3V0ZUNvbGxlY3Rpb25BaUZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25SZWxhdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uUmVsYXRpb25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25SZWxhdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25SZWxhdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblJlbGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25SZWxhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uUmVsYXRpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0UmVsYXRpb25DYW5kaWRhdGVzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0UmVsYXRpb25DYW5kaWRhdGVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBmaWVsZElkOiBzdHJpbmc7IGl0ZW1zOiBUUmVsYXRpb25SZWNvcmRPcHRpb25bXSB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlbGF0aW9uQ2FuZGlkYXRlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRSZWNvcmRSZWxhdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFJlY29yZFJlbGF0aW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgcmVjb3JkSWQ6IHN0cmluZztcbiAgICAgICAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBUUmVsYXRpb25SZWNvcmRPcHRpb25bXSB8IFRSZWxhdGlvblJlY29yZE9wdGlvbiB8IG51bGw+O1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRSZWNvcmRSZWxhdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVvcmRlckNvbGxlY3Rpb25GaWVsZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlb3JkZXJDb2xsZWN0aW9uRmllbGRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVvcmRlckNvbGxlY3Rpb25GaWVsZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q29sbGVjdGlvblNjaGVtYShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q29sbGVjdGlvblNjaGVtYVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldENvbGxlY3Rpb25TY2hlbWFcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVmFsaWRhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFZhbGlkYXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVmFsaWRhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld1ZhbGlkYXRpb25FcnJvcnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld1ZhbGlkYXRpb25FcnJvcnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ2hlY2tSZWNvcmRQZXJtaXNzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDaGVja1JlY29yZFBlcm1pc3Npb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDaGVja1JlY29yZFBlcm1pc3Npb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFJlY29yZFBlcm1pc3Npb25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0UmVjb3JkUGVybWlzc2lvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RSZWNvcmRQZXJtaXNzaW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHcmFudFJlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdyYW50UmVjb3JkUGVybWlzc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdyYW50UmVjb3JkUGVybWlzc2lvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIFJldm9rZVJlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJldm9rZVJlY29yZFBlcm1pc3Npb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSZXZva2VSZWNvcmRQZXJtaXNzaW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLy0tLXdpa2ktLS0tLS0tLVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcIndpa2lcIixcbiAgICAgICAgICAgIFwiQ3JlYXRlV2lraVBhZ2VcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiVXBkYXRlV2lraVBhZ2VcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lQYWdlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V2lraVBhZ2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraVBhZ2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJMaXN0V2lraVBhZ2VzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRXaWtpRmlsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBsb2FkRWRpdG9yRmlsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRVcGxvYWRlZEZpbGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGxvYWRGaWxlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlV2lraUZpbGVWaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlV2lraUZpbGVWaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJ3aWtpXCIsIFwiUmVzb2x2ZVdpa2lGaWxlVmlld1wiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcGF5bG9hZC5maWxlSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpQ29tbWVudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lDb21tZW50XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXaWtpQ29tbWVudChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV2lraUNvbW1lbnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUNvbW1lbnQ+IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBheWxvYWQgPSB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLnJlc29sdmVkID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICAgID8geyByZXNvbHZlZDogcGF5bG9hZC5yZXNvbHZlZCA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSBhcyBhbnk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGRhdGVXaWtpQ29tbWVudFwiLCBub3JtYWxpemVkUGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgZGVsZXRlZEF0OiBzdHJpbmcgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lDb21tZW50XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V2lraUNvbW1lbnRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraUNvbW1lbnRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lDb21tZW50UGFnaW5hdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkxpc3RXaWtpQ29tbWVudHNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc3RvcmVXaWtpUGFnZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzdG9yZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiUmVzdG9yZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpUGFnZUJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lQYWdlQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lQYWdlQnlJZFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVBhZ2VCeVNsdWcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lQYWdlQnlTbHVnU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0V2lraVBhZ2VCeVNsdWdcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lUcmVlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpVHJlZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lUcmVlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIFdpa2kgUmV2aXNpb25cbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXaWtpUmV2aXNpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lSZXZpc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lSZXZpc2lvblwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TGF0ZXN0V2lraVJldmlzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRMYXRlc3RXaWtpUmV2aXNpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRMYXRlc3RXaWtpUmV2aXNpb25cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lSZXZpc2lvbkJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lSZXZpc2lvbkJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpUmV2aXNpb25CeUlkXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q2hhdEhpc3RvcnkoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDaGF0SGlzdG9yeVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldChcIi9jaGF0L2hpc3RvcnlcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG59XG4iXX0=
|
|
923
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2VtcGxvaWQvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNckQsTUFBTSxPQUFPLGNBQWUsU0FBUSxhQUFhO0lBQ25DLGNBQWM7UUFDcEIsT0FBTyw4QkFBOEIsQ0FBQztJQUMxQyxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxRQUFnQjtRQUN6QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzdCLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLE1BQU0sYUFBYSxHQUFHO1lBQ2xCLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRSxPQUFPLE9BQU8sS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakYsT0FBTyxPQUFPLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxFQUFFO1NBQzdFLENBQUM7UUFFRixLQUFLLE1BQU0sU0FBUyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsT0FBTyxVQUFVLENBQUM7WUFDdEIsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxXQUFtQjtRQUM3QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sY0FBYyxDQUFDO1FBQzFCLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEYsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxHQUFHLFFBQVEsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDbEQsSUFBSSxRQUFRLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNuQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxNQUFNLEVBQUUsQ0FBQztvQkFDVCxNQUFNLGtCQUFrQixHQUFHLFFBQVE7d0JBQy9CLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQzt3QkFDeEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDVCxPQUFPLEdBQUcsTUFBTSxHQUFHLGtCQUFrQixHQUFHLGNBQWMsRUFBRSxDQUFDO2dCQUM3RCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM5QyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxHQUFHLFdBQVcsR0FBRyxjQUFjLEVBQUUsQ0FBQztRQUM3QyxDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDMUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBNEM7UUFDbkUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUE0QztRQUNuRSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQTRDO1FBQ25FLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBNkM7UUFDckUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDTSxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQTJDO1FBQ2pFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVNLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxPQUFvRDtRQUNuRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFnRDtRQUMzRSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUErQztRQUN6RSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFnRDtRQUMzRSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFnRDtRQUMzRSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUErQztRQUN6RSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBOEM7UUFDdkUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBK0M7UUFDekUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBK0M7UUFDekUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQXlDO1FBQzdELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBNkM7UUFDckUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFTSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQTBDO1FBQy9ELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBMEM7UUFDL0QsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUEwQztRQUMvRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUN4QixPQUErQztRQUUvQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQU0sT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxRSxNQUFNLFdBQVcsR0FDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLFFBQVEsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTVELE9BQU87WUFDSCxHQUFHLE1BQU07WUFDVCxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksTUFBTSxFQUFFLEVBQUUsSUFBSSxPQUFPLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMxRSxJQUFJLEVBQUUsV0FBVztZQUNqQixRQUFRLEVBQUUsV0FBVyxJQUFJLFdBQVc7WUFDcEMsR0FBRyxFQUFFLFdBQVcsSUFBSSxXQUFXO1NBQ2xDLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLG9CQUFvQixDQUM3QixPQUFtRDtRQUVuRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQU0sT0FBTyxFQUFFLHNCQUFzQixFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sV0FBVyxHQUNiLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsUUFBUSxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFNUQsT0FBTztZQUNILEdBQUcsTUFBTTtZQUNULE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUN0RCxJQUFJLEVBQUUsV0FBVztZQUNqQixRQUFRLEVBQUUsV0FBVyxJQUFJLFdBQVc7WUFDcEMsR0FBRyxFQUFFLFdBQVcsSUFBSSxXQUFXO1NBQ2xDLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQStDO1FBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQStDO1FBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQStDO1FBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUE4QztRQUN2RSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsT0FBNEM7UUFDbkUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWdEO1FBQzNFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWdEO1FBQzNFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWdEO1FBQzNFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQStDO1FBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQWtEO1FBQy9FLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQWtEO1FBQy9FLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQWtEO1FBQy9FLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQWdEO1FBQzVFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQStDO1FBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQStDO1FBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQStDO1FBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQStDO1FBQ3pFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQWlEO1FBQzdFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQWlEO1FBQzdFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQWlEO1FBQzdFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWdEO1FBQzNFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUE4QztRQUN2RSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBOEM7UUFDdkUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBaUQ7UUFDN0UsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTSxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBcUQ7UUFDckYsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQThDO1FBQ3ZFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE2QztRQUNyRSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxPQUFvRDtRQUNuRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVNLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxPQUFvRDtRQUNuRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVNLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxPQUFvRDtRQUNuRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVNLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFtRDtRQUNqRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQ3ZCLE9BQTZDO1FBRTdDLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWEsQ0FDdEIsT0FBNEM7UUFFNUMsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUN6QixPQUErQztRQUUvQyxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FDMUIsT0FBZ0Q7UUFFaEQsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQzNCLE9BQWlEO1FBRWpELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDeEIsT0FBOEM7UUFFOUMsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUN0QixPQUE0QztRQUU1QyxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxLQUFLLENBQUMsb0JBQW9CLENBQzdCLE9BQW1EO1FBRW5ELE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FDeEIsT0FBOEM7UUFFOUMsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxLQUFLLENBQUMsb0JBQW9CLENBQzdCLE9BQW1EO1FBRW5ELE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBTSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEYsTUFBTSxXQUFXLEdBQ2IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxRQUFRLElBQUksTUFBTSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU1RCxPQUFPO1lBQ0gsR0FBRyxNQUFNO1lBQ1QsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQ3RELElBQUksRUFBRSxXQUFXO1lBQ2pCLFFBQVEsRUFBRSxXQUFXLElBQUksV0FBVztZQUNwQyxHQUFHLEVBQUUsV0FBVyxJQUFJLFdBQVc7U0FDbEMsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQThDO1FBQ3ZFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUE4QztRQUN2RSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBNkM7UUFDckUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCw4Q0FBOEM7SUFFdkMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUE4QztRQUN2RSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVNLEtBQUssQ0FBQyxlQUFlLENBQUMsT0FBOEM7UUFDdkUsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQThDO1FBQ3ZFLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUE2QztRQUNyRSxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVNLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxPQUF5RDtRQUM3RixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsNEJBQTRCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxPQUF1RDtRQUN6RixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxPQUF3RDtRQUMzRixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxPQUF1RDtRQUN6RixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsMEJBQTBCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVNLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxPQUFtRDtRQUNqRixPQUFPLE1BQU0sSUFB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LHFCQUFxQixDQUM5QixPQUFvRDtRQUVwRCxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVNLEtBQUssQ0FBQyxtQkFBbUIsQ0FDNUIsT0FBa0Q7UUFFbEQsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUN4QixPQUE4QztRQUU5QyxPQUFPLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeiBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBTZXJ2aWNlQ2xpZW50IH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UtY2xpZW50XCI7XG5cblxuaW1wb3J0IHsgQWdncmVnYXRlUmVjb3Jkc1NjaGVtYSwgQnVsa0NyZWF0ZVJlY29yZHNTY2hlbWEsIEJ1bGtEZWxldGVSZWNvcmRzU2NoZW1hLCBCdWxrVXBkYXRlUmVjb3Jkc1NjaGVtYSwgQ2hhbmdlQWdlbnRmbG93UHJvamVjdFNjaGVtYSwgQ2hlY2tSZWNvcmRQZXJtaXNzaW9uU2NoZW1hLCBDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbFNjaGVtYSwgQ291bnRSZWNvcmRzU2NoZW1hLCBDcmVhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIENyZWF0ZUFnZW50Rmxvd1NjaGVtYSwgQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludFNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50SW5zdHJ1Y3Rpb25TY2hlbWEsIENyZWF0ZUFzc2lzdGFudFNjaGVtYSwgQ3JlYXRlQXNzaXN0YW50U2tpbGxTY2hlbWEsIENyZWF0ZUNoYW5uZWxTY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgQ3JlYXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hLCBDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25TY2hlbWEsIENyZWF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hLCBDcmVhdGVDb21tYW5kU2NoZW1hLCBDcmVhdGVDb21wZXRlbmN5U2NoZW1hLCBDcmVhdGVDb25zdHJhaW50U2NoZW1hLCBDcmVhdGVEYXRhTW9kZWxTY2hlbWEsIENyZWF0ZURhdGFzb3VyY2VTY2hlbWEsIENyZWF0ZURvbWFpblRvcGljU2NoZW1hLCBDcmVhdGVEcml2ZUZvbGRlclNjaGVtYSwgQ3JlYXRlRW1wbG9pZFNjaGVtYSwgQ3JlYXRlRXh0ZW5zaW9uU2NoZW1hLCBDcmVhdGVJbnB1dFNjaGVtYSwgQ3JlYXRlSW5zdHJ1Y3Rpb25TY2hlbWEsIENyZWF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIENyZWF0ZUtub3dsZWRnZVNjaGVtYSwgQ3JlYXRlT2NjdXBhdGlvblNjaGVtYSwgQ3JlYXRlUmVjb3JkU2NoZW1hLCBDcmVhdGVTY29wZVNjaGVtYSwgQ3JlYXRlU2tpbGxTY2hlbWEsIENyZWF0ZVN0cmVhbUlkU2NoZW1hLCBDcmVhdGVUYXNrVGVtcGxhdGVTY2hlbWEsIENyZWF0ZVRlYW1TY2hlbWEsIENyZWF0ZVRvcGljU2NoZW1hLCBDcmVhdGVXaWtpQ29tbWVudFNjaGVtYSwgQ3JlYXRlV2lraVBhZ2VTY2hlbWEsIENyZWF0ZVdpa2lSZXZpc2lvblNjaGVtYSwgQ3JlYXRlV29ya2VyU2NoZW1hLCBDcmVhdGVXb3JrZXJUb3BpY1NjaGVtYSwgRGVsZXRlQWdlbnRGbG93Rm9sZGVyU2NoZW1hLCBEZWxldGVBZ2VudEZsb3dTY2hlbWEsIERlbGV0ZUFzc2lzdGFudENoYW5uZWxTY2hlbWEsIERlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2VTY2hlbWEsIERlbGV0ZUFzc2lzdGFudFNjaGVtYSwgRGVsZXRlQXNzaXN0YW50U2tpbGxTY2hlbWEsIERlbGV0ZUNoYW5uZWxTY2hlbWEsIERlbGV0ZUNoYXRCeUlkU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWEsIERlbGV0ZUNvbGxlY3Rpb25GaWVsZFNjaGVtYSwgRGVsZXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hLCBEZWxldGVDb2xsZWN0aW9uVmlld1NjaGVtYSwgRGVsZXRlQ29tbWFuZFNjaGVtYSwgRGVsZXRlQ29tcGV0ZW5jeVNjaGVtYSwgRGVsZXRlQ29uc3RyYWludFNjaGVtYSwgRGVsZXRlRGF0YU1vZGVsU2NoZW1hLCBEZWxldGVEYXRhc291cmNlU2NoZW1hLCBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXBTY2hlbWEsIERlbGV0ZURvbWFpblRvcGljU2NoZW1hLCBEZWxldGVEcml2ZUl0ZW1TY2hlbWEsIERlbGV0ZUVtcGxvaWRTY2hlbWEsIERlbGV0ZUV4dGVuc2lvblNjaGVtYSwgRGVsZXRlSW5wdXRTY2hlbWEsIERlbGV0ZUluc3RydWN0aW9uU2NoZW1hLCBEZWxldGVKb2JEZWZpbml0aW9uU2NoZW1hLCBEZWxldGVLbm93bGVkZ2VTY2hlbWEsIERlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcFNjaGVtYSwgRGVsZXRlT2NjdXBhdGlvblNjaGVtYSwgRGVsZXRlUmVjb3JkU2NoZW1hLCBEZWxldGVTY29wZVNjaGVtYSwgRGVsZXRlU2tpbGxTY2hlbWEsIERlbGV0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgRGVsZXRlVGVhbVNjaGVtYSwgRGVsZXRlVG9waWNTY2hlbWEsIERlbGV0ZVdpa2lDb21tZW50U2NoZW1hLCBEZWxldGVXaWtpUGFnZVNjaGVtYSwgRGVsZXRlV29ya2VyU2NoZW1hLCBEZWxldGVXb3JrZXJUb3BpY1NjaGVtYSwgRGlzdGluY3RGaWVsZFZhbHVlc1NjaGVtYSwgRHVwbGljYXRlQWdlbnRGbG93U2NoZW1hLCBEdXBsaWNhdGVSZWNvcmRTY2hlbWEsIEVuaGFuY2VUb3BpY1NjaGVtYSwgRW5zdXJlQWlydGFibGVJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVHbWFpbEltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUdpdGh1YkltcG9ydENyZWRlbnRpYWxTY2hlbWEsIEVuc3VyZUppcmFJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsU2NoZW1hLCBFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRTY2hlbWEsIEV4ZWN1dGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hLCBHZXRDaGF0QnlJZFNjaGVtYSwgR2V0Q2hhdHNCeVVzZXJJZFNjaGVtYSwgR2V0Q29sbGVjdGlvbkJ5SWRTY2hlbWEsIEdldENvbGxlY3Rpb25TY2hlbWFTY2hlbWEsIEdldERhdGFNb2RlbEJ5SWRTY2hlbWEsIEdldERvY3VtZW50QnlJZFNjaGVtYSwgR2V0RG9jdW1lbnRzQnlJZFNjaGVtYSwgR2V0RHJpdmVEZWxldGVJbXBhY3RTY2hlbWEsIEdldExhdGVzdFdpa2lSZXZpc2lvblNjaGVtYSwgR2V0TWFya2V0U3RvcmVJdGVtU2NoZW1hLCBHZXRNZXNzYWdlQnlJZFNjaGVtYSwgR2V0TWVzc2FnZUNvdW50QnlVc2VySWRTY2hlbWEsIEdldE1lc3NhZ2VzQnlDaGF0SWRTY2hlbWEsIEdldFJlY29yZEJ5SWRTY2hlbWEsIEdldFJlY29yZFJlbGF0aW9uc1NjaGVtYSwgR2V0U2NvcGVCeVR5cGVTY2hlbWEsIEdldFN0cmVhbUlkc0J5Q2hhdElkU2NoZW1hLCBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZFNjaGVtYSwgR2V0Vm90ZXNCeUNoYXRJZFNjaGVtYSwgR2V0V2lraVBhZ2VCeUlkU2NoZW1hLCBHZXRXaWtpUGFnZUJ5U2x1Z1NjaGVtYSwgR2V0V2lraVJldmlzaW9uQnlJZFNjaGVtYSwgR2V0V2lraVRyZWVTY2hlbWEsIEdyYW50UmVjb3JkUGVybWlzc2lvblNjaGVtYSwgR3JvdXBSZWNvcmRzU2NoZW1hLCBIYXJkRGVsZXRlRGF0YU1vZGVsU2NoZW1hLCBMaXN0QWdlbnRGbG93Rm9sZGVyc1NjaGVtYSwgTGlzdEFnZW50Rmxvd3NTY2hlbWEsIExpc3RBaXJ0YWJsZUltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RBc3Npc3RhbnRDaGFubmVsc1NjaGVtYSwgTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzU2NoZW1hLCBMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXNTY2hlbWEsIExpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnNTY2hlbWEsIExpc3RBc3Npc3RhbnRTa2lsbHNTY2hlbWEsIExpc3RBc3Npc3RhbnRzU2NoZW1hLCBMaXN0Q2hhbm5lbHNTY2hlbWEsIExpc3RDaGF0SGlzdG9yeVNjaGVtYSwgTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXNTY2hlbWEsIExpc3RDb2xsZWN0aW9uQnV0dG9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25SZWxhdGlvbnNTY2hlbWEsIExpc3RDb2xsZWN0aW9uc1NjaGVtYSwgTGlzdENvbGxlY3Rpb25WaWV3c1NjaGVtYSwgTGlzdENvbW1hbmRzU2NoZW1hLCBMaXN0Q29tcGV0ZW5jaWVzU2NoZW1hLCBMaXN0Q29uc3RyYWludHNTY2hlbWEsIExpc3REYXRhTW9kZWxzU2NoZW1hLCBMaXN0RGF0YXNvdXJjZXNTY2hlbWEsIExpc3REb21haW5Ub3BpY3NTY2hlbWEsIExpc3REcml2ZUl0ZW1zU2NoZW1hLCBMaXN0RHJpdmVUcmVlU2NoZW1hLCBMaXN0RW1wbG9pZHNQYWdpbmF0ZWRTY2hlbWEsIExpc3RFbXBsb2lkc1NjaGVtYSwgTGlzdEV4dGVuc2lvbnNTY2hlbWEsIExpc3RHbWFpbEltcG9ydFNvdXJjZXNTY2hlbWEsIExpc3RHaXRodWJJbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0SW5wdXRTY2hlbWEsIExpc3RJbnN0cnVjdGlvbnNTY2hlbWEsIExpc3RKaXJhSW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdEpvYkRlZmluaXRpb25TY2hlbWEsIExpc3RLbm93bGVkZ2VzU2NoZW1hLCBMaXN0TGluZWFySW1wb3J0U291cmNlc1NjaGVtYSwgTGlzdE1hcmtldFN0b3JlSXRlbXNTY2hlbWEsIExpc3ROb3Rpb25JbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0T2NjdXBhdGlvbnNTY2hlbWEsIExpc3RSZWNvcmRQZXJtaXNzaW9uc1NjaGVtYSwgTGlzdFJlY29yZHNTY2hlbWEsIExpc3RSZWxhdGlvbkNhbmRpZGF0ZXNTY2hlbWEsIExpc3RTY29wZXNTY2hlbWEsIExpc3RTa2lsbHNTY2hlbWEsIExpc3RUYXNrVGVtcGxhdGVzU2NoZW1hLCBMaXN0VGVhbXNTY2hlbWEsIExpc3RUb3BpY3NTY2hlbWEsIExpc3RUcmVsbG9JbXBvcnRTb3VyY2VzU2NoZW1hLCBMaXN0V2lraUNvbW1lbnRzU2NoZW1hLCBMaXN0V2lraVBhZ2VzU2NoZW1hLCBMaXN0V29ya2Vyc1NjaGVtYSwgTGlzdFdvcmtlclRvcGljc1NjaGVtYSwgTW92ZURyaXZlSXRlbVNjaGVtYSwgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hLCBQcmV2aWV3QWlydGFibGVJbXBvcnRTY2hlbWEsIFByZXZpZXdDc3ZJbXBvcnRTY2hlbWEsIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYSwgUHJldmlld0dpdGh1YkltcG9ydFNjaGVtYSwgUHJldmlld0ppcmFJbXBvcnRTY2hlbWEsIFByZXZpZXdMaW5lYXJJbXBvcnRTY2hlbWEsIFByZXZpZXdOb3Rpb25JbXBvcnRTY2hlbWEsIFByZXZpZXdUcmVsbG9JbXBvcnRTY2hlbWEsIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hLCBQdWJsaXNoRG9tYWluU2NoZW1hLCBQdWJsaXNoRW1wbG9pZFNjaGVtYSwgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWEsIFF1ZXJ5UmVjb3Jkc1NjaGVtYSwgUmVuYW1lRHJpdmVJdGVtU2NoZW1hLCBSZW9yZGVyQ29sbGVjdGlvbkZpZWxkc1NjaGVtYSwgUmVzb2x2ZUNvbGxlY3Rpb25GaWxlVmlld1NjaGVtYSwgUmVzb2x2ZURyaXZlRG93bmxvYWRTY2hlbWEsIFJlc29sdmVTY29wZUZpbGVWaWV3U2NoZW1hLCBSZXNvbHZlV2lraUZpbGVWaWV3U2NoZW1hLCBSZXN0b3JlRGF0YU1vZGVsU2NoZW1hLCBSZXN0b3JlUmVjb3JkU2NoZW1hLCBSZXN0b3JlV2lraVBhZ2VTY2hlbWEsIFJldm9rZVJlY29yZFBlcm1pc3Npb25TY2hlbWEsIFJ1bkFpcnRhYmxlSW1wb3J0U2NoZW1hLCBSdW5Dc3ZJbXBvcnRTY2hlbWEsIFJ1bkdtYWlsSW1wb3J0U2NoZW1hLCBSdW5HaXRodWJJbXBvcnRTY2hlbWEsIFJ1bkppcmFJbXBvcnRTY2hlbWEsIFJ1bkxpbmVhckltcG9ydFNjaGVtYSwgUnVuTm90aW9uSW1wb3J0U2NoZW1hLCBSdW5UcmVsbG9JbXBvcnRTY2hlbWEsIFNhdmVDaGF0U2NoZW1hLCBTYXZlRG9jdW1lbnRTY2hlbWEsIFNhdmVNZXNzYWdlc1NjaGVtYSwgU2F2ZVN1Z2dlc3Rpb25zU2NoZW1hLCBTZWFyY2hEcml2ZUl0ZW1zU2NoZW1hLCBTZWFyY2hSZWNvcmRzU2NoZW1hLCBVcGRhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWEsIFVwZGF0ZUFnZW50Rmxvd1NjaGVtYSwgVXBkYXRlQXNzaXN0YW50Q2hhbm5lbFNjaGVtYSwgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYSwgVXBkYXRlQXNzaXN0YW50U2NoZW1hLCBVcGRhdGVBc3Npc3RhbnRTa2lsbFNjaGVtYSwgVXBkYXRlQ2hhbm5lbFNjaGVtYSwgVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZFNjaGVtYSwgVXBkYXRlQ2hhdFZpc2libGl0eUJ5SWRTY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYSwgVXBkYXRlQ29sbGVjdGlvbkZpZWxkU2NoZW1hLCBVcGRhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWEsIFVwZGF0ZUNvbGxlY3Rpb25WaWV3U2NoZW1hLCBVcGRhdGVDb21tYW5kU2NoZW1hLCBVcGRhdGVDb21wZXRlbmN5U2NoZW1hLCBVcGRhdGVDb25zdHJhaW50U2NoZW1hLCBVcGRhdGVEYXRhTW9kZWxTY2hlbWEsIFVwZGF0ZURhdGFzb3VyY2VTY2hlbWEsIFVwZGF0ZURvbWFpblRvcGljU2NoZW1hLCBVcGRhdGVFbXBsb2lkU2NoZW1hLCBVcGRhdGVJbnB1dFNjaGVtYSwgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWEsIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWEsIFVwZGF0ZUtub3dsZWRnZVNjaGVtYSwgVXBkYXRlT2NjdXBhdGlvblNjaGVtYSwgVXBkYXRlUmVjb3JkU2NoZW1hLCBVcGRhdGVTY29wZVNjaGVtYSwgVXBkYXRlU2tpbGxTY2hlbWEsIFVwZGF0ZVRhc2tUZW1wbGF0ZVNjaGVtYSwgVXBkYXRlVGVhbVNjaGVtYSwgVXBkYXRlVG9waWNTY2hlbWEsIFVwZGF0ZVdpa2lDb21tZW50U2NoZW1hLCBVcGRhdGVXaWtpUGFnZVNjaGVtYSwgVXBkYXRlV29ya2VyU2NoZW1hLCBVcGRhdGVXb3JrZXJUb3BpY1NjaGVtYSwgVXBsb2FkQ29sbGVjdGlvbkZpbGVTY2hlbWEsIFVwbG9hZEVkaXRvckZpbGVTY2hlbWEsIFVwc2VydFJlY29yZFNjaGVtYSwgVmFsaWRhdGVSZWNvcmRTY2hlbWEsIFZvdGVNZXNzYWdlU2NoZW1hIH0gZnJvbSBcIi4vc2NoZW1hXCI7XG5pbXBvcnQgeyBUQWdlbnRGbG93LCBUQWdlbnRGbG93Rm9sZGVyLCBUQXNzaXN0YW50LCBUQXNzaXN0YW50Q2hhbm5lbCwgVEFzc2lzdGFudENvbnN0cmFpbnQsIFRBc3Npc3RhbnREYXRhc291cmNlLCBUQXNzaXN0YW50SW5zdHJ1Y3Rpb24sIFRBc3Npc3RhbnRTa2lsbCwgVENoYW5uZWwsIFRDaGF0LCBUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlLCBUQ29sbGVjdGlvbkJ1dHRvbiwgVENvbGxlY3Rpb25SZWxhdGlvbiwgVENvbGxlY3Rpb25WaWV3LCBUQ29tbWFuZCwgVENvbXBldGVuY3ksIFRDb25zdHJhaW50LCBURGF0YXNvdXJjZSwgVERlbGV0ZUFnZW50Rmxvd1Jlc3VsdCwgVERvY3VtZW50LCBURG9tYWluVG9waWMsIFREcml2ZURlbGV0ZUltcGFjdCwgVERyaXZlSXRlbSwgVERyaXZlVHJlZU5vZGUsIFRFbXBsb2lkLCBURW5oYW5jZVRvcGljLCBURXh0ZW5zaW9uLCBUSW5wdXQsIFRJbnN0cnVjdGlvbiwgVEpvYkRlZmluaXRpb24sIFRLbm93bGVkZ2UsIFRNYXJrZXRTdG9yZUl0ZW0sIFRPY2N1cGF0aW9uLCBUUGFnaW5hdGVkRW1wbG9pZHNSZXN1bHQsIFRQcmVwYXJlZERyaXZlVXBsb2FkLCBUUHVibGlzaEVtcGxvaWQsIFRQdWJsaXNoV29ya2VyVG9NYXJrZXRTdG9yZSwgVFJlbGF0aW9uUmVjb3JkT3B0aW9uLCBUU2NvcGUsIFRTa2lsbCwgVFN0cmVhbUlkLCBUVGFza1RlbXBsYXRlLCBUVGVhbSwgVFRvcGljLCBUVXBsb2FkZWRGaWxlLCBUV2lraUNvbW1lbnQsIFRXaWtpQ29tbWVudFBhZ2luYXRpb24sIFRXaWtpRmlsZVZpZXdSZXNvbHV0aW9uLCBUV29ya2VyLCBUV29ya2VyVG9waWMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgRW1wbG9pZFNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlQ2xpZW50IHtcbiAgICBwcm90ZWN0ZWQgZ2V0U2VydmljZU5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuICdjb20uYXBwY29uZGEuc2VydmljZS5lbXBsb2lkJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzSHR0cFVybCh2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZVN0b3JhZ2VQYXRoKHBhdGhMaWtlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gU3RyaW5nKHBhdGhMaWtlIHx8IFwiXCIpLnRyaW0oKTtcbiAgICAgICAgaWYgKCFub3JtYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZC5zdGFydHNXaXRoKFwiL1wiKSA/IG5vcm1hbGl6ZWQgOiBgLyR7bm9ybWFsaXplZH1gO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzb2x2ZUVudkVuZHBvaW50KCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGVudkNhbmRpZGF0ZXMgPSBbXG4gICAgICAgICAgICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiA/IHByb2Nlc3M/LmVudj8uQVBQQ09OREFfRU5EUE9JTlQgOiBcIlwiLFxuICAgICAgICAgICAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzPy5lbnY/Lk5FWFRfUFVCTElDX0FQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiID8gcHJvY2Vzcz8uZW52Py5fQVBQX0FQUENPTkRBX0VORFBPSU5UIDogXCJcIixcbiAgICAgICAgXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZSBvZiBlbnZDYW5kaWRhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBub3JtYWxpemVkID0gU3RyaW5nKGNhbmRpZGF0ZSB8fCBcIlwiKS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzSHR0cFVybChub3JtYWxpemVkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChzdG9yYWdlUGF0aCk7XG4gICAgICAgIGlmICghbm9ybWFsaXplZFBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNIdHRwVXJsKG5vcm1hbGl6ZWRQYXRoKSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRQYXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW5kcG9pbnQgPSBTdHJpbmcodGhpcy5jbGllbnQuY29uZmlnLmVuZHBvaW50IHx8IFwiXCIpLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICAgICAgICBpZiAodGhpcy5pc0h0dHBVcmwoZW5kcG9pbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7ZW5kcG9pbnR9JHtub3JtYWxpemVkUGF0aH1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3RvY29sID0gd2luZG93Py5sb2NhdGlvbj8ucHJvdG9jb2wgfHwgXCJcIjtcbiAgICAgICAgICAgIGlmIChwcm90b2NvbCAmJiBwcm90b2NvbCAhPT0gXCJmaWxlOlwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ2luID0gU3RyaW5nKHdpbmRvdz8ubG9jYXRpb24/Lm9yaWdpbiB8fCBcIlwiKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmIChvcmlnaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEVuZHBvaW50ID0gZW5kcG9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKGVuZHBvaW50LnN0YXJ0c1dpdGgoXCIvXCIpID8gZW5kcG9pbnQgOiBgLyR7ZW5kcG9pbnR9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke29yaWdpbn0ke25vcm1hbGl6ZWRFbmRwb2ludH0ke25vcm1hbGl6ZWRQYXRofWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZW52RW5kcG9pbnQgPSB0aGlzLnJlc29sdmVFbnZFbmRwb2ludCgpO1xuICAgICAgICBpZiAoZW52RW5kcG9pbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtlbnZFbmRwb2ludH0ke25vcm1hbGl6ZWRQYXRofWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9ybWFsaXplZFBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUVtcGxvaWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRW1wbG9pZFNjaGVtYT4pOiBQcm9taXNlPFRFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlRW1wbG9pZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUVtcGxvaWRTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRW1wbG9pZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VEVtcGxvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVFbXBsb2lkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFB1Ymxpc2hFbXBsb2lkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFB1Ymxpc2hFbXBsb2lkU2NoZW1hPik6IFByb21pc2U8VFB1Ymxpc2hFbXBsb2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnUHVibGlzaEVtcGxvaWQnLCBwYXlsb2FkKTtcbiAgICB9XG4gICAgcHVibGljIGFzeW5jIExpc3RFbXBsb2lkcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNTY2hlbWE+KTogUHJvbWlzZTxURW1wbG9pZFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdEVtcGxvaWRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RFbXBsb2lkc1BhZ2luYXRlZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RW1wbG9pZHNQYWdpbmF0ZWRTY2hlbWE+KTogUHJvbWlzZTxUUGFnaW5hdGVkRW1wbG9pZHNSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0RW1wbG9pZHNQYWdpbmF0ZWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SW5zdHJ1Y3Rpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RJbnN0cnVjdGlvbnNTY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RJbnN0cnVjdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlSW5zdHJ1Y3Rpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSW5zdHJ1Y3Rpb25TY2hlbWE+KTogUHJvbWlzZTxUSW5zdHJ1Y3Rpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVJbnN0cnVjdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVJbnN0cnVjdGlvblNjaGVtYT4pOiBQcm9taXNlPFRJbnN0cnVjdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUluc3RydWN0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbnN0cmFpbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29uc3RyYWludFNjaGVtYT4pOiBQcm9taXNlPFRDb25zdHJhaW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlQ29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29uc3RyYWludHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbnN0cmFpbnRzU2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RDb25zdHJhaW50cycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQ29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUNvbnN0cmFpbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29uc3RyYWludChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb25zdHJhaW50U2NoZW1hPik6IFByb21pc2U8VENvbnN0cmFpbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVDb25zdHJhaW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RTY29wZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFNjb3Blc1NjaGVtYT4pOiBQcm9taXNlPFRTY29wZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnTGlzdFNjb3BlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTY29wZUJ5VHlwZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTY29wZUJ5VHlwZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdHZXRTY29wZUJ5VHlwZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVTY29wZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVTY29wZVNjaGVtYT4pOiBQcm9taXNlPFRTY29wZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0NyZWF0ZVNjb3BlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVNjb3BlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVNjb3BlU2NoZW1hPik6IFByb21pc2U8VFNjb3BlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlU2NvcGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlU2NvcGUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlU2NvcGVTY2hlbWE+KTogUHJvbWlzZTxUU2NvcGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVTY29wZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRTY29wZUZpbGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwbG9hZEVkaXRvckZpbGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUVXBsb2FkZWRGaWxlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwic2NvcGVcIiwgXCJVcGxvYWRGaWxlXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/LmZpbGVJZCB8fCByZXN1bHQ/LmlkIHx8IHBheWxvYWQuYXR0YWNobWVudElkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlU2NvcGVGaWxlVmlldyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzb2x2ZVNjb3BlRmlsZVZpZXdTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUZpbGVWaWV3UmVzb2x1dGlvbj4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmFjdGlvbkNhbGw8YW55PihcInNjb3BlXCIsIFwiUmVzb2x2ZVNjb3BlRmlsZVZpZXdcIiwgcGF5bG9hZCk7XG4gICAgICAgIGNvbnN0IHN0b3JhZ2VQYXRoID1cbiAgICAgICAgICAgIHRoaXMubm9ybWFsaXplU3RvcmFnZVBhdGgoU3RyaW5nKHJlc3VsdD8ucGF0aCB8fCByZXN1bHQ/LmZpbGVQYXRoIHx8IHJlc3VsdD8udXJsIHx8IFwiXCIpKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRVcmwgPSB0aGlzLnJlc29sdmVTdG9yYWdlVmlld1VybChzdG9yYWdlUGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGZpbGVJZDogU3RyaW5nKHJlc3VsdD8uZmlsZUlkIHx8IHBheWxvYWQuZmlsZUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVPY2N1cGF0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZU9jY3VwYXRpb25TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0NyZWF0ZU9jY3VwYXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlT2NjdXBhdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVPY2N1cGF0aW9uU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdVcGRhdGVPY2N1cGF0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZU9jY3VwYXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlT2NjdXBhdGlvblNjaGVtYT4pOiBQcm9taXNlPFRPY2N1cGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnRGVsZXRlT2NjdXBhdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0T2NjdXBhdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdE9jY3VwYXRpb25zU2NoZW1hPik6IFByb21pc2U8VE9jY3VwYXRpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ0xpc3RPY2N1cGF0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQdWJsaXNoRG9tYWluKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFB1Ymxpc2hEb21haW5TY2hlbWE+KTogUHJvbWlzZTxUT2NjdXBhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ1B1Ymxpc2hEb21haW4nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRG9tYWluVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRG9tYWluVG9waWNTY2hlbWE+KTogUHJvbWlzZTxURG9tYWluVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdDcmVhdGVEb21haW5Ub3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVEb21haW5Ub3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEb21haW5Ub3BpY1NjaGVtYT4pOiBQcm9taXNlPFREb21haW5Ub3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdvY2N1cGF0aW9uJywgJ1VwZGF0ZURvbWFpblRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURvbWFpblRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURvbWFpblRvcGljU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ29jY3VwYXRpb24nLCAnRGVsZXRlRG9tYWluVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERvbWFpblRvcGljcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RG9tYWluVG9waWNzU2NoZW1hPik6IFByb21pc2U8VERvbWFpblRvcGljW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnb2NjdXBhdGlvbicsICdMaXN0RG9tYWluVG9waWNzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUpvYkRlZmluaXRpb24ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlSm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnQ3JlYXRlSm9iRGVmaW5pdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVKb2JEZWZpbml0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUpvYkRlZmluaXRpb25TY2hlbWE+KTogUHJvbWlzZTxUSm9iRGVmaW5pdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ1VwZGF0ZUpvYkRlZmluaXRpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlSm9iRGVmaW5pdGlvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVKb2JEZWZpbml0aW9uU2NoZW1hPik6IFByb21pc2U8VEpvYkRlZmluaXRpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVKb2JEZWZpbml0aW9uJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RKb2JEZWZpbml0aW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Sm9iRGVmaW5pdGlvblNjaGVtYT4pOiBQcm9taXNlPFRKb2JEZWZpbml0aW9uW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0Sm9iRGVmaW5pdGlvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29tcGV0ZW5jeShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb21wZXRlbmN5U2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3k+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVDb21wZXRlbmN5JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbXBldGVuY3kocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29tcGV0ZW5jeVNjaGVtYT4pOiBQcm9taXNlPFRDb21wZXRlbmN5PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2VtcGxvaWQnLCAnVXBkYXRlQ29tcGV0ZW5jeScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb21wZXRlbmN5KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbXBldGVuY3lTY2hlbWE+KTogUHJvbWlzZTxUQ29tcGV0ZW5jeT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0RlbGV0ZUNvbXBldGVuY3knLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbXBldGVuY2llcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29tcGV0ZW5jaWVzU2NoZW1hPik6IFByb21pc2U8VENvbXBldGVuY3lbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdlbXBsb2lkJywgJ0xpc3RDb21wZXRlbmNpZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdDcmVhdGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdVcGRhdGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVGFza1RlbXBsYXRlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRhc2tUZW1wbGF0ZVNjaGVtYT4pOiBQcm9taXNlPFRUYXNrVGVtcGxhdGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdEZWxldGVUYXNrVGVtcGxhdGUnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFRhc2tUZW1wbGF0ZXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRhc2tUZW1wbGF0ZXNTY2hlbWE+KTogUHJvbWlzZTxUVGFza1RlbXBsYXRlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZW1wbG9pZCcsICdMaXN0VGFza1RlbXBsYXRlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0NyZWF0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VERlbGV0ZUFnZW50Rmxvd1Jlc3VsdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0RlbGV0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEdXBsaWNhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRHVwbGljYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0R1cGxpY2F0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDaGFuZ2VBZ2VudGZsb3dQcm9qZWN0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENoYW5nZUFnZW50Zmxvd1Byb2plY3RTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnQ2hhbmdlQWdlbnRmbG93UHJvamVjdCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBZ2VudEZsb3cocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQWdlbnRGbG93U2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvdz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ1VwZGF0ZUFnZW50RmxvdycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWdlbnRGbG93cyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWdlbnRGbG93c1NjaGVtYT4pOiBQcm9taXNlPFRBZ2VudEZsb3dbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhZ2VudC1mbG93JywgJ0xpc3RBZ2VudEZsb3dzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnQ3JlYXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnVXBkYXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFnZW50Rmxvd0ZvbGRlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBZ2VudEZsb3dGb2xkZXJTY2hlbWE+KTogUHJvbWlzZTxUQWdlbnRGbG93Rm9sZGVyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnRGVsZXRlQWdlbnRGbG93Rm9sZGVyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBZ2VudEZsb3dGb2xkZXJzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBZ2VudEZsb3dGb2xkZXJzU2NoZW1hPik6IFByb21pc2U8VEFnZW50Rmxvd0ZvbGRlcltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2FnZW50LWZsb3cnLCAnTGlzdEFnZW50Rmxvd0ZvbGRlcnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERyaXZlSXRlbXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZUl0ZW1zU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBjdXJyZW50Rm9sZGVyOiBURHJpdmVJdGVtOyBpdGVtczogVERyaXZlSXRlbVtdIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiTGlzdERyaXZlSXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3REcml2ZVRyZWUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REcml2ZVRyZWVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVUcmVlTm9kZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJMaXN0RHJpdmVUcmVlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTZWFyY2hEcml2ZUl0ZW1zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTZWFyY2hEcml2ZUl0ZW1zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJkcml2ZVwiLCBcIlNlYXJjaERyaXZlSXRlbXNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURyaXZlRm9sZGVyKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEcml2ZUZvbGRlclNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiQ3JlYXRlRHJpdmVGb2xkZXJcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFByZXBhcmVEcml2ZVVwbG9hZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJlcGFyZURyaXZlVXBsb2FkU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFByZXBhcmVkRHJpdmVVcGxvYWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiUHJlcGFyZURyaXZlVXBsb2FkXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZW5hbWVEcml2ZUl0ZW0oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlbmFtZURyaXZlSXRlbVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFREcml2ZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiUmVuYW1lRHJpdmVJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBNb3ZlRHJpdmVJdGVtKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBNb3ZlRHJpdmVJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8VERyaXZlSXRlbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJNb3ZlRHJpdmVJdGVtXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXREcml2ZURlbGV0ZUltcGFjdChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0RHJpdmVEZWxldGVJbXBhY3RTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxURHJpdmVEZWxldGVJbXBhY3Q+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcImRyaXZlXCIsIFwiR2V0RHJpdmVEZWxldGVJbXBhY3RcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZURyaXZlSXRlbShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRHJpdmVJdGVtU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBpZDogc3RyaW5nOyBkZWxldGVkOiBib29sZWFuOyB0b3RhbEl0ZW1zOiBudW1iZXIgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwiZHJpdmVcIiwgXCJEZWxldGVEcml2ZUl0ZW1cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc29sdmVEcml2ZURvd25sb2FkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlRHJpdmVEb3dubG9hZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpRmlsZVZpZXdSZXNvbHV0aW9uPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwiZHJpdmVcIiwgXCJSZXNvbHZlRHJpdmVEb3dubG9hZFwiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5pdGVtSWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUV4dGVuc2lvbihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVFeHRlbnNpb25TY2hlbWE+KTogUHJvbWlzZTxURXh0ZW5zaW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2V4dGVuc2lvbicsICdDcmVhdGVFeHRlbnNpb24nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRXh0ZW5zaW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUV4dGVuc2lvblNjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZXh0ZW5zaW9uJywgJ0RlbGV0ZUV4dGVuc2lvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0RXh0ZW5zaW9ucyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0RXh0ZW5zaW9uc1NjaGVtYT4pOiBQcm9taXNlPFRFeHRlbnNpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdleHRlbnNpb24nLCAnTGlzdEV4dGVuc2lvbnMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLUFzc2lzdGFudC0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVBc3Npc3RhbnQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50U2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnVXBkYXRlQXNzaXN0YW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudHNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudEluc3RydWN0aW9uU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudEluc3RydWN0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnRJbnN0cnVjdGlvbicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50SW5zdHJ1Y3Rpb25zKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRJbnN0cnVjdGlvbnNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50SW5zdHJ1Y3Rpb25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudEluc3RydWN0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVBc3Npc3RhbnRDb25zdHJhaW50KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUFzc2lzdGFudENvbnN0cmFpbnRTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50Q29uc3RyYWludD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnQ3JlYXRlQXNzaXN0YW50Q29uc3RyYWludCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QXNzaXN0YW50Q29uc3RyYWludHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENvbnN0cmFpbnRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnTGlzdEFzc2lzdGFudENvbnN0cmFpbnRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUFzc2lzdGFudERhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdDcmVhdGVBc3Npc3RhbnREYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudERhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnREYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUFzc2lzdGFudERhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQXNzaXN0YW50RGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdEZWxldGVBc3Npc3RhbnREYXRhc291cmNlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RBc3Npc3RhbnREYXRhc291cmNlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXNTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50RGF0YXNvdXJjZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdMaXN0QXNzaXN0YW50RGF0YXNvdXJjZXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50U2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQXNzaXN0YW50U2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUQXNzaXN0YW50U2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudFNraWxsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUFzc2lzdGFudFNraWxsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUFzc2lzdGFudFNraWxsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2Fzc2lzdGFudCcsICdVcGRhdGVBc3Npc3RhbnRTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVBc3Npc3RhbnRTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnRTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdhc3Npc3RhbnQnLCAnRGVsZXRlQXNzaXN0YW50U2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudFNraWxscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QXNzaXN0YW50U2tpbGxzU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudFNraWxsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRTa2lsbHMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQXNzaXN0YW50Q2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0NyZWF0ZUFzc2lzdGFudENoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQXNzaXN0YW50Q2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ1VwZGF0ZUFzc2lzdGFudENoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQXNzaXN0YW50Q2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVBc3Npc3RhbnRDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VEFzc2lzdGFudENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0RlbGV0ZUFzc2lzdGFudENoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdEFzc2lzdGFudENoYW5uZWxzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RBc3Npc3RhbnRDaGFubmVsc1NjaGVtYT4pOiBQcm9taXNlPFRBc3Npc3RhbnRDaGFubmVsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnYXNzaXN0YW50JywgJ0xpc3RBc3Npc3RhbnRDaGFubmVscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tRGF0YXNvdXJjZXMtLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZURhdGFzb3VyY2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlRGF0YXNvdXJjZVNjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2RhdGEtc291cmNlJywgJ0NyZWF0ZURhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRGF0YXNvdXJjZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEYXRhc291cmNlU2NoZW1hPik6IFByb21pc2U8VERhdGFzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1zb3VyY2UnLCAnVXBkYXRlRGF0YXNvdXJjZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEYXRhc291cmNlKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZURhdGFzb3VyY2VTY2hlbWE+KTogUHJvbWlzZTxURGF0YXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdkYXRhLW91cmNlJywgJ0RlbGV0ZURhdGFzb3VyY2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERhdGFzb3VyY2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REYXRhc291cmNlc1NjaGVtYT4pOiBQcm9taXNlPFREYXRhc291cmNlW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnZGF0YS1zb3VyY2UnLCAnTGlzdERhdGFzb3VyY2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVNraWxscy0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlU2tpbGwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlU2tpbGxTY2hlbWE+KTogUHJvbWlzZTxUU2tpbGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnc2tpbGwnLCAnQ3JlYXRlU2tpbGwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFNraWxscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0U2tpbGxzU2NoZW1hPik6IFByb21pc2U8VFNraWxsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnc2tpbGwnLCAnTGlzdFNraWxscycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdVcGRhdGVTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVTa2lsbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVTa2lsbFNjaGVtYT4pOiBQcm9taXNlPFRTa2lsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdza2lsbCcsICdEZWxldGVTa2lsbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1DaGFubmVscy0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ2hhbm5lbChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDaGFubmVsU2NoZW1hPik6IFByb21pc2U8VENoYW5uZWw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhbm5lbCcsICdDcmVhdGVDaGFubmVsJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDaGFubmVscyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q2hhbm5lbHNTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnTGlzdENoYW5uZWxzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNoYW5uZWwocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ2hhbm5lbFNjaGVtYT4pOiBQcm9taXNlPFRDaGFubmVsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYW5uZWwnLCAnVXBkYXRlQ2hhbm5lbCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDaGFubmVsKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNoYW5uZWxTY2hlbWE+KTogUHJvbWlzZTxUQ2hhbm5lbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGFubmVsJywgJ0RlbGV0ZUNoYW5uZWwnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tS25vd2xlZGdlLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVLbm93bGVkZ2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlS25vd2xlZGdlU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdrbm93bGVkZ2UnLCAnQ3JlYXRlS25vd2xlZGdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RLbm93bGVkZ2VzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RLbm93bGVkZ2VzU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdMaXN0S25vd2xlZGdlcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVLbm93bGVkZ2UocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlS25vd2xlZGdlU2NoZW1hPik6IFByb21pc2U8VEtub3dsZWRnZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdrbm93bGVkZ2UnLCAnVXBkYXRlS25vd2xlZGdlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUtub3dsZWRnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVLbm93bGVkZ2VTY2hlbWE+KTogUHJvbWlzZTxUS25vd2xlZGdlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2tub3dsZWRnZScsICdEZWxldGVLbm93bGVkZ2UnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS1XT1JLRVItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV29ya2VyKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdvcmtlclNjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ0NyZWF0ZVdvcmtlcicsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXb3JrZXIocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV29ya2VyU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnVXBkYXRlV29ya2VyJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdvcmtlcihwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXb3JrZXJTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdEZWxldGVXb3JrZXInLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmUocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmVTY2hlbWE+KTogUHJvbWlzZTxUUHVibGlzaFdvcmtlclRvTWFya2V0U3RvcmU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnbWFya2V0LXN0b3JlJywgJ1B1Ymxpc2hXb3JrZXJUb01hcmtldFN0b3JlJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RXb3JrZXJzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXb3JrZXJzU2NoZW1hPik6IFByb21pc2U8VFdvcmtlcltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdMaXN0V29ya2VycycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXb3JrZXJUb3BpYyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXb3JrZXJUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRXb3JrZXJUb3BpYz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnQ3JlYXRlV29ya2VyVG9waWMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV29ya2VyVG9waWMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV29ya2VyVG9waWNTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnd29ya2VyJywgJ1VwZGF0ZVdvcmtlclRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdvcmtlclRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVdvcmtlclRvcGljU2NoZW1hPik6IFByb21pc2U8VFdvcmtlclRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3dvcmtlcicsICdEZWxldGVXb3JrZXJUb3BpYycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V29ya2VyVG9waWNzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RXb3JrZXJUb3BpY3NTY2hlbWE+KTogUHJvbWlzZTxUV29ya2VyVG9waWNbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd3b3JrZXInLCAnTGlzdFdvcmtlclRvcGljcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0TWFya2V0U3RvcmVJdGVtcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0TWFya2V0U3RvcmVJdGVtc1NjaGVtYT4pOiBQcm9taXNlPFRNYXJrZXRTdG9yZUl0ZW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdtYXJrZXQtc3RvcmUnLCAnTGlzdE1hcmtldFN0b3JlSXRlbXMnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TWFya2V0U3RvcmVJdGVtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldE1hcmtldFN0b3JlSXRlbVNjaGVtYT4pOiBQcm9taXNlPFRNYXJrZXRTdG9yZUl0ZW0gfCBudWxsPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ21hcmtldC1zdG9yZScsICdHZXRNYXJrZXRTdG9yZUl0ZW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tVG9waWNzLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVRvcGljU2NoZW1hPik6IFByb21pc2U8VFRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0NyZWF0ZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRvcGljU2NoZW1hPik6IFByb21pc2U8VFRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ1VwZGF0ZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZVRvcGljU2NoZW1hPik6IFByb21pc2U8VFRvcGljPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0RlbGV0ZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RUb3BpY3MocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRvcGljc1NjaGVtYT4pOiBQcm9taXNlPFRUb3BpY1tdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RvcGljJywgJ0xpc3RUb3BpY3MnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRW5oYW5jZVRvcGljKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuaGFuY2VUb3BpY1NjaGVtYT4pOiBQcm9taXNlPFRFbmhhbmNlVG9waWM+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndG9waWMnLCAnRW5oYW5jZVRvcGljJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVJbnB1dChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdpbnB1dC1vdXRwdXQnLCAnQ3JlYXRlSW5wdXQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlSW5wdXQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlSW5wdXRTY2hlbWE+KTogUHJvbWlzZTxUSW5wdXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnaW5wdXQtb3V0cHV0JywgJ1VwZGF0ZUlucHV0JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUlucHV0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUlucHV0U2NoZW1hPik6IFByb21pc2U8VElucHV0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdEZWxldGVJbnB1dCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SW5wdXRzKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RJbnB1dFNjaGVtYT4pOiBQcm9taXNlPFRJbnB1dFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2lucHV0LW91dHB1dCcsICdMaXN0SW5wdXRzJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVRlYW0ocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlVGVhbVNjaGVtYT4pOiBQcm9taXNlPFRUZWFtPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ3RlYW0nLCAnQ3JlYXRlVGVhbScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0VGVhbXMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRlYW1zU2NoZW1hPik6IFByb21pc2U8VFRlYW1bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ0xpc3RUZWFtcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVUZWFtKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVRlYW1TY2hlbWE+KTogUHJvbWlzZTxUVGVhbT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCd0ZWFtJywgJ1VwZGF0ZVRlYW0nLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlVGVhbShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVUZWFtU2NoZW1hPik6IFByb21pc2U8VFRlYW0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgndGVhbScsICdEZWxldGVUZWFtJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVDaGF0KHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFNhdmVDaGF0U2NoZW1hPik6IFByb21pc2U8VENoYXQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdTYXZlQ2hhdCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDaGF0QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDaGF0QnlJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnRGVsZXRlQ2hhdEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q2hhdEJ5SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q2hhdEJ5SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldENoYXRCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldENoYXRzQnlVc2VySWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q2hhdHNCeVVzZXJJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRDaGF0c0J5VXNlcklkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVNZXNzYWdlcyhwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlTWVzc2FnZXNTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZU1lc3NhZ2VzJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TWVzc2FnZXNCeUNoYXRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNZXNzYWdlc0J5Q2hhdElkU2NoZW1hPik6IFByb21pc2U8VENoYXRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldE1lc3NhZ2VzQnlDaGF0SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNZXNzYWdlQnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNZXNzYWdlQnlJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRNZXNzYWdlQnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBWb3RlTWVzc2FnZShwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBWb3RlTWVzc2FnZVNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdWb3RlTWVzc2FnZScsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRWb3Rlc0J5Q2hhdElkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFZvdGVzQnlDaGF0SWRTY2hlbWE+KTogUHJvbWlzZTxUQ2hhdFtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnR2V0Vm90ZXNCeUNoYXRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVEb2N1bWVudHNCeUlkQWZ0ZXJUaW1lc3RhbXAocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlRG9jdW1lbnRzQnlJZEFmdGVyVGltZXN0YW1wU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0RlbGV0ZURvY3VtZW50c0J5SWRBZnRlclRpbWVzdGFtcCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBTYXZlU3VnZ2VzdGlvbnMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2F2ZVN1Z2dlc3Rpb25zU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ1NhdmVTdWdnZXN0aW9ucycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZFNjaGVtYT4pOiBQcm9taXNlPFRDaGF0W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXRTdWdnZXN0aW9uc0J5RG9jdW1lbnRJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVNZXNzYWdlc0J5Q2hhdElkQWZ0ZXJUaW1lc3RhbXAocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlTWVzc2FnZXNCeUNoYXRJZEFmdGVyVGltZXN0YW1wU2NoZW1hPik6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0RlbGV0ZU1lc3NhZ2VzQnlDaGF0SWRBZnRlclRpbWVzdGFtcCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZFNjaGVtYT4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdVcGRhdGVDaGF0VmlzaWJsaXR5QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDaGF0TGFzdENvbnRleHRCeUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNoYXRMYXN0Q29udGV4dEJ5SWRTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnVXBkYXRlQ2hhdExhc3RDb250ZXh0QnlJZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRNZXNzYWdlQ291bnRCeVVzZXJJZFNjaGVtYT4pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldE1lc3NhZ2VDb3VudEJ5VXNlcklkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVN0cmVhbUlkKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVN0cmVhbUlkU2NoZW1hPik6IFByb21pc2U8VFN0cmVhbUlkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnQ3JlYXRlU3RyZWFtSWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0U3RyZWFtSWRzQnlDaGF0SWQocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0U3RyZWFtSWRzQnlDaGF0SWRTY2hlbWE+KTogUHJvbWlzZTxUU3RyZWFtSWRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjaGF0JywgJ0dldFN0cmVhbUlkc0J5Q2hhdElkJywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFNhdmVEb2N1bWVudChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBTYXZlRG9jdW1lbnRTY2hlbWE+KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NoYXQnLCAnU2F2ZURvY3VtZW50JywgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldERvY3VtZW50QnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREb2N1bWVudEJ5SWRTY2hlbWE+KTogUHJvbWlzZTxURG9jdW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXREb2N1bWVudEJ5SWQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RG9jdW1lbnRzQnlJZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXREb2N1bWVudHNCeUlkU2NoZW1hPik6IFByb21pc2U8VERvY3VtZW50W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY2hhdCcsICdHZXREb2N1bWVudHNCeUlkJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb21tYW5kKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZUNvbW1hbmRTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZD4ge1xuICAgICAgICAvKiAgZGVidWdnZXJcbiAgICAgICAgICBpZiAoIHR5cGVvZiBwYXlsb2FkLmlucHV0cyA9PT0gJ29iamVjdCcgKSB7XG4gICAgICAgICAgICAgIHBheWxvYWQuaW5wdXRzID0gSlNPTi5zdHJpbmdpZnkocGF5bG9hZC5pbnB1dHMpIGFzIGFueTtcbiAgICAgICAgICB9ICovXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoJ2NvbW1hbmQnLCAnQ3JlYXRlQ29tbWFuZCcsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29tbWFuZHMocGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbW1hbmRzU2NoZW1hPik6IFByb21pc2U8VENvbW1hbmRbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ0xpc3RDb21tYW5kcycsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVDb21tYW5kKHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbW1hbmRTY2hlbWE+KTogUHJvbWlzZTxUQ29tbWFuZD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKCdjb21tYW5kJywgJ1VwZGF0ZUNvbW1hbmQnLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29tbWFuZChwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb21tYW5kU2NoZW1hPik6IFByb21pc2U8VENvbW1hbmQ+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbCgnY29tbWFuZCcsICdEZWxldGVDb21tYW5kJywgcGF5bG9hZCk7XG4gICAgfVxuXG5cbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLUNvbGxlY3Rpb25zLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlRGF0YU1vZGVsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVEYXRhTW9kZWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0RGF0YU1vZGVsQnlJZChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0RGF0YU1vZGVsQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldERhdGFNb2RlbEJ5SWRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdERhdGFNb2RlbHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3REYXRhTW9kZWxzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdERhdGFNb2RlbHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVzdG9yZURhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzdG9yZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJlc3RvcmVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgSGFyZERlbGV0ZURhdGFNb2RlbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgSGFyZERlbGV0ZURhdGFNb2RlbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkhhcmREZWxldGVEYXRhTW9kZWxcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ3JlYXRlQ29sbGVjdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q29sbGVjdGlvbkJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldENvbGxlY3Rpb25CeUlkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiR2V0Q29sbGVjdGlvbkJ5SWRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRDb2xsZWN0aW9uRmlsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBsb2FkQ29sbGVjdGlvbkZpbGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUVXBsb2FkZWRGaWxlPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYWN0aW9uQ2FsbDxhbnk+KFwiY29sbGVjdGlvblwiLCBcIlVwbG9hZENvbGxlY3Rpb25GaWxlXCIsIHBheWxvYWQpO1xuICAgICAgICBjb25zdCBzdG9yYWdlUGF0aCA9XG4gICAgICAgICAgICB0aGlzLm5vcm1hbGl6ZVN0b3JhZ2VQYXRoKFN0cmluZyhyZXN1bHQ/LnBhdGggfHwgcmVzdWx0Py5maWxlUGF0aCB8fCByZXN1bHQ/LnVybCB8fCBcIlwiKSk7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkVXJsID0gdGhpcy5yZXNvbHZlU3RvcmFnZVZpZXdVcmwoc3RvcmFnZVBhdGgpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBmaWxlSWQ6IFN0cmluZyhyZXN1bHQ/Lml0ZW1JZCB8fCByZXN1bHQ/LmZpbGVJZCB8fCByZXN1bHQ/LmlkIHx8IHBheWxvYWQuaXRlbUlkIHx8IFwiXCIpLFxuICAgICAgICAgICAgcGF0aDogc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICBmaWxlUGF0aDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgICAgICB1cmw6IHJlc29sdmVkVXJsIHx8IHN0b3JhZ2VQYXRoLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlQ29sbGVjdGlvbkZpbGVWaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJjb2xsZWN0aW9uXCIsIFwiUmVzb2x2ZUNvbGxlY3Rpb25GaWxlVmlld1wiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcmVzdWx0Py5pdGVtSWQgfHwgcGF5bG9hZC5pdGVtSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFJlY29yZEJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFJlY29yZEJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRSZWNvcmRCeUlkXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFJlY29yZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8e1xuICAgICAgICB0b3RhbDogbnVtYmVyO1xuICAgICAgICByZWNvcmRzOiBhbnlbXTtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIHB1YmxpYyBhc3luYyBSZXN0b3JlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXN0b3JlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVzdG9yZVJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcHNlcnRSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwc2VydFJlY29yZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwc2VydFJlY29yZFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrQ3JlYXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa0NyZWF0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrQ3JlYXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVBaXJ0YWJsZUltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUFpcnRhYmxlSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0QWlydGFibGVJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEFpcnRhYmxlSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3QWlydGFibGVJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdBaXJ0YWJsZUltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdBaXJ0YWJsZUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5BaXJ0YWJsZUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuQWlydGFibGVJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5BaXJ0YWJsZUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVMaW5lYXJJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlTGluZWFySW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0TGluZWFySW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdExpbmVhckltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0TGluZWFySW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3TGluZWFySW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3TGluZWFySW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0xpbmVhckltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5MaW5lYXJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkxpbmVhckltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkxpbmVhckltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVHbWFpbEltcG9ydENyZWRlbnRpYWwoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkVuc3VyZUdtYWlsSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVHaXRodWJJbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlR2l0aHViSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0R21haWxJbXBvcnRTb3VyY2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0R21haWxJbXBvcnRTb3VyY2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdEdtYWlsSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0R2l0aHViSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdEdpdGh1YkltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0R2l0aHViSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3R21haWxJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdHbWFpbEltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlByZXZpZXdHbWFpbEltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3Q3N2SW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3Q3N2SW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0NzdkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3R2l0aHViSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3R2l0aHViSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld0dpdGh1YkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5HbWFpbEltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUnVuR21haWxJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSdW5HbWFpbEltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5Dc3ZJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkNzdkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkNzdkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5HaXRodWJJbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bkdpdGh1YkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bkdpdGh1YkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVOb3Rpb25JbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlTm90aW9uSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Tm90aW9uSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdE5vdGlvbkltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Tm90aW9uSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3Tm90aW9uSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3Tm90aW9uSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld05vdGlvbkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5Ob3Rpb25JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1bk5vdGlvbkltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1bk5vdGlvbkltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRW5zdXJlSmlyYUltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFbnN1cmVKaXJhSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0SmlyYUltcG9ydFNvdXJjZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RKaXJhSW1wb3J0U291cmNlc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RKaXJhSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3SmlyYUltcG9ydChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUHJldmlld0ppcmFJbXBvcnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJQcmV2aWV3SmlyYUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5KaXJhSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSdW5KaXJhSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUnVuSmlyYUltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFbnN1cmVUcmVsbG9JbXBvcnRDcmVkZW50aWFsU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRW5zdXJlVHJlbGxvSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQ29ubmVjdFRyZWxsb0ltcG9ydENyZWRlbnRpYWxTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDb25uZWN0VHJlbGxvSW1wb3J0Q3JlZGVudGlhbFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0VHJlbGxvSW1wb3J0U291cmNlcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdFRyZWxsb0ltcG9ydFNvdXJjZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0VHJlbGxvSW1wb3J0U291cmNlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBQcmV2aWV3VHJlbGxvSW1wb3J0KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBQcmV2aWV3VHJlbGxvSW1wb3J0U2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld1RyZWxsb0ltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSdW5UcmVsbG9JbXBvcnQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJ1blRyZWxsb0ltcG9ydFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlJ1blRyZWxsb0ltcG9ydFwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrVXBkYXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa1VwZGF0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrVXBkYXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBCdWxrRGVsZXRlUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgQnVsa0RlbGV0ZVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJCdWxrRGVsZXRlUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgRHVwbGljYXRlUmVjb3JkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEdXBsaWNhdGVSZWNvcmRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEdXBsaWNhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUXVlcnlSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBRdWVyeVJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTx7XG4gICAgICAgIHRvdGFsOiBudW1iZXI7XG4gICAgICAgIHJlY29yZHM6IGFueVtdO1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJRdWVyeVJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgU2VhcmNoUmVjb3JkcyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgU2VhcmNoUmVjb3Jkc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgdG90YWw6IG51bWJlcjtcbiAgICAgICAgcmVjb3JkczogYW55W107XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlNlYXJjaFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ291bnRSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDb3VudFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDb3VudFJlY29yZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR3JvdXBSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHcm91cFJlY29yZHNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdyb3VwUmVjb3Jkc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBBZ2dyZWdhdGVSZWNvcmRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBBZ2dyZWdhdGVSZWNvcmRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJBZ2dyZWdhdGVSZWNvcmRzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERpc3RpbmN0RmllbGRWYWx1ZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERpc3RpbmN0RmllbGRWYWx1ZXNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRpc3RpbmN0RmllbGRWYWx1ZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJVcGRhdGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvbkZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJEZWxldGVDb2xsZWN0aW9uRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZXNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGVTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvbkF1dG9tYXRpb25SdWxlU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uQXV0b21hdGlvblJ1bGUoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25BdXRvbWF0aW9uUnVsZVwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q29sbGVjdGlvblZpZXdzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0Q29sbGVjdGlvblZpZXdzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25WaWV3W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJMaXN0Q29sbGVjdGlvblZpZXdzXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uVmlldz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkNyZWF0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBVcGRhdGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPFRDb2xsZWN0aW9uVmlldz4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZUNvbGxlY3Rpb25WaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVDb2xsZWN0aW9uVmlld1NjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25WaWV3XCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIExpc3RDb2xsZWN0aW9uQnV0dG9ucyhcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgTGlzdENvbGxlY3Rpb25CdXR0b25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25CdXR0b25bXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RDb2xsZWN0aW9uQnV0dG9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVDb2xsZWN0aW9uQnV0dG9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25CdXR0b24+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDcmVhdGVDb2xsZWN0aW9uQnV0dG9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZUNvbGxlY3Rpb25CdXR0b25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvbkJ1dHRvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgRGVsZXRlQ29sbGVjdGlvbkJ1dHRvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEV4ZWN1dGVDb2xsZWN0aW9uQnV0dG9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiRXhlY3V0ZUNvbGxlY3Rpb25CdXR0b25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgRXhlY3V0ZUNvbGxlY3Rpb25BaUZpZWxkKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJFeGVjdXRlQ29sbGVjdGlvbkFpRmllbGRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdENvbGxlY3Rpb25SZWxhdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDb2xsZWN0aW9uUmVsYXRpb25zU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25SZWxhdGlvbltdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdENvbGxlY3Rpb25SZWxhdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVDb2xsZWN0aW9uUmVsYXRpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUQ29sbGVjdGlvblJlbGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiQ3JlYXRlQ29sbGVjdGlvblJlbGF0aW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvbihcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlQ29sbGVjdGlvblJlbGF0aW9uU2NoZW1hPlxuICAgICk6IFByb21pc2U8VENvbGxlY3Rpb25SZWxhdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIlVwZGF0ZUNvbGxlY3Rpb25SZWxhdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBEZWxldGVDb2xsZWN0aW9uUmVsYXRpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIERlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkRlbGV0ZUNvbGxlY3Rpb25SZWxhdGlvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0UmVsYXRpb25DYW5kaWRhdGVzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0UmVsYXRpb25DYW5kaWRhdGVzU2NoZW1hPlxuICAgICk6IFByb21pc2U8eyBmaWVsZElkOiBzdHJpbmc7IGl0ZW1zOiBUUmVsYXRpb25SZWNvcmRPcHRpb25bXSB9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiTGlzdFJlbGF0aW9uQ2FuZGlkYXRlc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRSZWNvcmRSZWxhdGlvbnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFJlY29yZFJlbGF0aW9uc1NjaGVtYT5cbiAgICApOiBQcm9taXNlPHtcbiAgICAgICAgcmVjb3JkSWQ6IHN0cmluZztcbiAgICAgICAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBUUmVsYXRpb25SZWNvcmRPcHRpb25bXSB8IFRSZWxhdGlvblJlY29yZE9wdGlvbiB8IG51bGw+O1xuICAgIH0+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJHZXRSZWNvcmRSZWxhdGlvbnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUmVvcmRlckNvbGxlY3Rpb25GaWVsZHMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJlb3JkZXJDb2xsZWN0aW9uRmllbGRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUmVvcmRlckNvbGxlY3Rpb25GaWVsZHNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0Q29sbGVjdGlvblNjaGVtYShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgR2V0Q29sbGVjdGlvblNjaGVtYVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdldENvbGxlY3Rpb25TY2hlbWFcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVmFsaWRhdGVSZWNvcmQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFZhbGlkYXRlUmVjb3JkU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiVmFsaWRhdGVSZWNvcmRcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgUHJldmlld1ZhbGlkYXRpb25FcnJvcnMoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFByZXZpZXdWYWxpZGF0aW9uRXJyb3JzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcImNvbGxlY3Rpb25cIixcbiAgICAgICAgICAgIFwiUHJldmlld1ZhbGlkYXRpb25FcnJvcnNcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgQ2hlY2tSZWNvcmRQZXJtaXNzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDaGVja1JlY29yZFBlcm1pc3Npb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJDaGVja1JlY29yZFBlcm1pc3Npb25cIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgTGlzdFJlY29yZFBlcm1pc3Npb25zKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0UmVjb3JkUGVybWlzc2lvbnNTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkxpc3RSZWNvcmRQZXJtaXNzaW9uc1wiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHcmFudFJlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdyYW50UmVjb3JkUGVybWlzc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFxuICAgICAgICAgICAgXCJjb2xsZWN0aW9uXCIsXG4gICAgICAgICAgICBcIkdyYW50UmVjb3JkUGVybWlzc2lvblwiLFxuICAgICAgICAgICAgcGF5bG9hZFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgcHVibGljIGFzeW5jIFJldm9rZVJlY29yZFBlcm1pc3Npb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFJldm9rZVJlY29yZFBlcm1pc3Npb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcbiAgICAgICAgICAgIFwiY29sbGVjdGlvblwiLFxuICAgICAgICAgICAgXCJSZXZva2VSZWNvcmRQZXJtaXNzaW9uXCIsXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLy0tLXdpa2ktLS0tLS0tLVxuXG5cbiAgICBwdWJsaWMgYXN5bmMgQ3JlYXRlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXG4gICAgICAgICAgICBcIndpa2lcIixcbiAgICAgICAgICAgIFwiQ3JlYXRlV2lraVBhZ2VcIixcbiAgICAgICAgICAgIHBheWxvYWRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgVXBkYXRlV2lraVBhZ2UoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIFVwZGF0ZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiVXBkYXRlV2lraVBhZ2VcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lQYWdlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpUGFnZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V2lraVBhZ2VzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraVBhZ2VzU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJMaXN0V2lraVBhZ2VzXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGxvYWRXaWtpRmlsZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBsb2FkRWRpdG9yRmlsZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRVcGxvYWRlZEZpbGU+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGxvYWRGaWxlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBSZXNvbHZlV2lraUZpbGVWaWV3KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBSZXNvbHZlV2lraUZpbGVWaWV3U2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lGaWxlVmlld1Jlc29sdXRpb24+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5hY3Rpb25DYWxsPGFueT4oXCJ3aWtpXCIsIFwiUmVzb2x2ZVdpa2lGaWxlVmlld1wiLCBwYXlsb2FkKTtcbiAgICAgICAgY29uc3Qgc3RvcmFnZVBhdGggPVxuICAgICAgICAgICAgdGhpcy5ub3JtYWxpemVTdG9yYWdlUGF0aChTdHJpbmcocmVzdWx0Py5wYXRoIHx8IHJlc3VsdD8uZmlsZVBhdGggfHwgcmVzdWx0Py51cmwgfHwgXCJcIikpO1xuICAgICAgICBjb25zdCByZXNvbHZlZFVybCA9IHRoaXMucmVzb2x2ZVN0b3JhZ2VWaWV3VXJsKHN0b3JhZ2VQYXRoKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgZmlsZUlkOiBTdHJpbmcocmVzdWx0Py5maWxlSWQgfHwgcGF5bG9hZC5maWxlSWQgfHwgXCJcIiksXG4gICAgICAgICAgICBwYXRoOiBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIGZpbGVQYXRoOiByZXNvbHZlZFVybCB8fCBzdG9yYWdlUGF0aCxcbiAgICAgICAgICAgIHVybDogcmVzb2x2ZWRVcmwgfHwgc3RvcmFnZVBhdGgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIENyZWF0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBDcmVhdGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPFRXaWtpQ29tbWVudD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lDb21tZW50XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBVcGRhdGVXaWtpQ29tbWVudChcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgVXBkYXRlV2lraUNvbW1lbnRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxUV2lraUNvbW1lbnQ+IHtcbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBheWxvYWQgPSB7XG4gICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgLi4uKHR5cGVvZiBwYXlsb2FkLnJlc29sdmVkID09PSBcImJvb2xlYW5cIlxuICAgICAgICAgICAgICAgID8geyByZXNvbHZlZDogcGF5bG9hZC5yZXNvbHZlZCA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiIH1cbiAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgfSBhcyBhbnk7XG5cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJVcGRhdGVXaWtpQ29tbWVudFwiLCBub3JtYWxpemVkUGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIERlbGV0ZVdpa2lDb21tZW50KFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBEZWxldGVXaWtpQ29tbWVudFNjaGVtYT5cbiAgICApOiBQcm9taXNlPHsgaWQ6IHN0cmluZzsgZGVsZXRlZEF0OiBzdHJpbmcgfT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkRlbGV0ZVdpa2lDb21tZW50XCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0V2lraUNvbW1lbnRzKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBMaXN0V2lraUNvbW1lbnRzU2NoZW1hPlxuICAgICk6IFByb21pc2U8VFdpa2lDb21tZW50UGFnaW5hdGlvbj4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkxpc3RXaWtpQ29tbWVudHNcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIFJlc3RvcmVXaWtpUGFnZShcbiAgICAgICAgcGF5bG9hZDogei5pbmZlcjx0eXBlb2YgUmVzdG9yZVdpa2lQYWdlU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiUmVzdG9yZVdpa2lQYWdlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBHZXRXaWtpUGFnZUJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lQYWdlQnlJZFNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lQYWdlQnlJZFwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0V2lraVBhZ2VCeVNsdWcoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lQYWdlQnlTbHVnU2NoZW1hPlxuICAgICk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFjdGlvbkNhbGwoXCJ3aWtpXCIsIFwiR2V0V2lraVBhZ2VCeVNsdWdcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lUcmVlKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRXaWtpVHJlZVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkdldFdpa2lUcmVlXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIFdpa2kgUmV2aXNpb25cbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuICAgIHB1YmxpYyBhc3luYyBDcmVhdGVXaWtpUmV2aXNpb24oXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIENyZWF0ZVdpa2lSZXZpc2lvblNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5hY3Rpb25DYWxsKFwid2lraVwiLCBcIkNyZWF0ZVdpa2lSZXZpc2lvblwiLCBwYXlsb2FkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgR2V0TGF0ZXN0V2lraVJldmlzaW9uKFxuICAgICAgICBwYXlsb2FkOiB6LmluZmVyPHR5cGVvZiBHZXRMYXRlc3RXaWtpUmV2aXNpb25TY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRMYXRlc3RXaWtpUmV2aXNpb25cIiwgcGF5bG9hZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIEdldFdpa2lSZXZpc2lvbkJ5SWQoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIEdldFdpa2lSZXZpc2lvbkJ5SWRTY2hlbWE+XG4gICAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYWN0aW9uQ2FsbChcIndpa2lcIiwgXCJHZXRXaWtpUmV2aXNpb25CeUlkXCIsIHBheWxvYWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBMaXN0Q2hhdEhpc3RvcnkoXG4gICAgICAgIHBheWxvYWQ6IHouaW5mZXI8dHlwZW9mIExpc3RDaGF0SGlzdG9yeVNjaGVtYT5cbiAgICApOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldChcIi9jaGF0L2hpc3RvcnlcIiwgcGF5bG9hZCk7XG4gICAgfVxuXG59XG4iXX0=
|