velocious 1.0.162 → 1.0.163
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-files-finder.d.ts","sourceRoot":"","sources":["../../../src/testing/test-files-finder.js"],"names":[],"mappings":"AAUA;IACE,+BAA+C;IAE/C;;;;;OAKG;IACH,kEAJG;QAAqB,SAAS,EAAtB,MAAM;QACU,WAAW,GAA3B,MAAM,EAAE;QACO,WAAW,EAA1B,MAAM,EAAE;KAClB,
|
|
1
|
+
{"version":3,"file":"test-files-finder.d.ts","sourceRoot":"","sources":["../../../src/testing/test-files-finder.js"],"names":[],"mappings":"AAUA;IACE,+BAA+C;IAE/C;;;;;OAKG;IACH,kEAJG;QAAqB,SAAS,EAAtB,MAAM;QACU,WAAW,GAA3B,MAAM,EAAE;QACO,WAAW,EAA1B,MAAM,EAAE;KAClB,EA0CA;IAtCC,kBAAwC;IACxC,eAA8B;IAG5B,sBAAkE;IASpE,qBAAqB;IACrB,sBAA8B;IAE9B,uBAAuB;IACvB,YADW,MAAM,EAAE,CACC;IAEpB,4CAA4C;IAC5C,iBADW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CACf;IAEzB,uBAAuB;IACvB,UADW,MAAM,EAAE,CACuD;IAE1E,uBAAuB;IACvB,eADW,MAAM,EAAE,CACI;IAEvB,uBAAuB;IACvB,oBADW,MAAM,EAAE,CACS;IAE5B,uBAAuB;IACvB,UADW,MAAM,EAAE,CACD;IAElB,uBAAuB;IACvB,eADW,MAAM,EAAE,CACI;IAEvB,uBAA0B;IAG5B;;OAEG;IACH,iBAFa,OAAO,CAAC,MAAM,EAAE,CAAC,CA2B7B;IAED;;OAEG;IACH,yBAFa,MAAM,CAEwD;IAE3E,wCAIC;IAED;;OAEG;IACH,mCAFa,OAAO,CAAC,IAAI,CAAC,CAYzB;IAED;;;OAGG;IACH,2BAHW,MAAa,OAAO,CAAC,IAAI,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAgBzB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAwBzB;IAED;;;;OAIG;IACH,iCAJW,MAAM,aACN,MAAM,GACJ,OAAO,CA2BnB;IAED;;;OAGG;IACH,wBAHW,MAAM,GACJ,OAAO,CAInB;IAED;;OAEG;IACH,eAFa,OAAO,CAAC,IAAI,CAAC,CAqDzB;IAED;;;OAGG;IACH,+BAHW,MAAM,GACJ,MAAM,CAKlB;IAED;;;OAGG;IACH,sBAHW,MAAM,GACJ,MAAM,CAKlB;CACF;uBAjRoB,cAAc"}
|
|
@@ -38,6 +38,8 @@ export default class TestFilesFinder {
|
|
|
38
38
|
/** @type {string[]} */
|
|
39
39
|
this.directoryArgs = [];
|
|
40
40
|
/** @type {string[]} */
|
|
41
|
+
this.directoryFullPaths = [];
|
|
42
|
+
/** @type {string[]} */
|
|
41
43
|
this.fileArgs = [];
|
|
42
44
|
/** @type {string[]} */
|
|
43
45
|
this.explicitFiles = [];
|
|
@@ -52,7 +54,9 @@ export default class TestFilesFinder {
|
|
|
52
54
|
return Array.from(new Set(this.explicitFiles));
|
|
53
55
|
}
|
|
54
56
|
await this.withFindingCount(async () => {
|
|
55
|
-
|
|
57
|
+
const hasExplicitArgs = this.directoryFullPaths.length > 0 || this.fileArgs.length > 0;
|
|
58
|
+
const directoriesToScan = hasExplicitArgs ? this.directoryFullPaths : this.directories;
|
|
59
|
+
for (const directory of directoriesToScan) {
|
|
56
60
|
if (await fileExists(directory)) {
|
|
57
61
|
await this.findTestFilesInDir(directory);
|
|
58
62
|
}
|
|
@@ -178,6 +182,7 @@ export default class TestFilesFinder {
|
|
|
178
182
|
if (forceDirectory) {
|
|
179
183
|
const preferredLocalPath = this.toLocalPath(basePrefixedFullPath || fullPath);
|
|
180
184
|
this.directoryArgs.push(this.ensureTrailingSlash(preferredLocalPath));
|
|
185
|
+
this.directoryFullPaths.push(path.resolve(basePrefixedFullPath || fullPath));
|
|
181
186
|
continue;
|
|
182
187
|
}
|
|
183
188
|
try {
|
|
@@ -198,6 +203,7 @@ export default class TestFilesFinder {
|
|
|
198
203
|
const localPath = this.toLocalPath(resolvedFullPath);
|
|
199
204
|
if (stats.isDirectory()) {
|
|
200
205
|
this.directoryArgs.push(this.ensureTrailingSlash(localPath));
|
|
206
|
+
this.directoryFullPaths.push(resolvedFullPath);
|
|
201
207
|
}
|
|
202
208
|
else if (stats.isFile()) {
|
|
203
209
|
this.fileArgs.push(localPath);
|
|
@@ -229,4 +235,4 @@ export default class TestFilesFinder {
|
|
|
229
235
|
return relativePath.split(path.sep).join("/");
|
|
230
236
|
}
|
|
231
237
|
}
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1maWxlcy1maW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy90ZXN0LWZpbGVzLWZpbmRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUV2QixPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDZCQUE2QixDQUFBO0FBRXZELGlIQUFpSDtBQUNqSCxNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWU7SUFDbEMsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUUvQzs7Ozs7T0FLRztJQUNILFlBQVksRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUM1RCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFOUIsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUNwRSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUc7Z0JBQ2pCLEdBQUcsSUFBSSxDQUFDLFNBQVMsWUFBWTtnQkFDN0IsR0FBRyxJQUFJLENBQUMsU0FBUyxRQUFRO2dCQUN6QixHQUFHLElBQUksQ0FBQyxTQUFTLE9BQU87YUFDekIsQ0FBQTtRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQTtRQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQTtRQUU5Qix1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUE7UUFFcEIsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFBO1FBRXpCLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRTFFLHVCQUF1QjtRQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQTtRQUV2Qix1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFFbEIsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFBO1FBRXZCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxhQUFhO1FBQ2pCLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBRXhCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQTtRQUNoRCxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDckMsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3pDLElBQUksTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDaEMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQzFDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixNQUFNLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1FBRW5DLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDN0MsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxxQkFBcUIsS0FBSyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUM7SUFFM0UsS0FBSyxDQUFDLHNCQUFzQjtRQUMxQixPQUFPLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUE7UUFDOUMsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQywrQkFBK0I7UUFDbkMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUE7UUFFN0IsS0FBSyxNQUFNLGdCQUFnQixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNwRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLENBQUE7WUFFN0Qsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ3pDLENBQUM7UUFFRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsUUFBUTtRQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0IsTUFBTSxjQUFjLEdBQUcsUUFBUSxFQUFFLENBQUE7WUFDakMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQTtZQUV0QyxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQTtZQUN0QixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLGNBQWMsQ0FBQTtZQUVuRCxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDMUIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFBO2dCQUV6QyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDcEIsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRztRQUMxQixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNyQyxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7WUFFbkMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxlQUFlLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNqRCxTQUFRO2dCQUNWLENBQUM7Z0JBRUQsTUFBTSxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7Z0JBQ2pDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7Z0JBQzVELE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7Z0JBRXJELElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUNuQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7d0JBQ3JELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO29CQUNoQyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUEwQixDQUFDLElBQUksRUFBRSxTQUFTO1FBQ3hDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsS0FBSyxNQUFNLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzlDLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFDdkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZ0VBQWdFLEVBQUUsSUFBSSxDQUFDLENBQUE7b0JBQ3pGLE9BQU8sSUFBSSxDQUFBO2dCQUNiLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsS0FBSyxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksT0FBTyxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsRUFBRSxJQUFJLENBQUMsQ0FBQTtvQkFDckUsT0FBTyxJQUFJLENBQUE7Z0JBQ2IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2hHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLCtDQUErQyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hFLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLElBQUk7UUFDcEIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFdBQVc7UUFDZixJQUFJLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTTtRQUU5QixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQyxJQUFJLE9BQU8sS0FBSyxJQUFJO2dCQUFFLFNBQVE7WUFFOUIsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMxRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUMzRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUM5QyxNQUFNLGFBQWEsR0FBRyxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7WUFDaEksTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBQ3RJLE1BQU0sa0JBQWtCLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUVyRixJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLElBQUksUUFBUSxDQUFDLENBQUE7Z0JBQzdFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUE7Z0JBQ3JFLFNBQVE7WUFDVixDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILElBQUksS0FBSyxDQUFBO2dCQUNULElBQUksZ0JBQWdCLENBQUE7Z0JBRXBCLEtBQUssTUFBTSxhQUFhLElBQUksa0JBQWtCLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxDQUFDO3dCQUNILEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUE7d0JBQ3BDLGdCQUFnQixHQUFHLGFBQWEsQ0FBQTt3QkFDaEMsTUFBSztvQkFDUCxDQUFDO29CQUFDLE1BQU0sQ0FBQzt3QkFDUCxpQkFBaUI7b0JBQ25CLENBQUM7Z0JBQ0gsQ0FBQztnQkFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsZ0JBQWdCO29CQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDbEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO2dCQUVwRCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO29CQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtnQkFDOUQsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO29CQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtvQkFDN0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtnQkFDM0MsQ0FBQztZQUNILENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixJQUFJLFFBQVEsQ0FBQyxDQUFBO2dCQUM1RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1lBQ3ZDLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUE7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQixDQUFDLFNBQVM7UUFDM0IsSUFBSSxTQUFTLEtBQUssRUFBRTtZQUFFLE9BQU8sU0FBUyxDQUFBO1FBQ3RDLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFBO0lBQzlELENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsUUFBUTtRQUNsQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDNUQsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgZnMgZnJvbSBcImZzL3Byb21pc2VzXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IGZpbGVFeGlzdHMgZnJvbSBcIi4uL3V0aWxzL2ZpbGUtZXhpc3RzLmpzXCJcbmltcG9ydCB7TG9nZ2VyfSBmcm9tIFwiLi4vbG9nZ2VyLmpzXCJcbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG4vLyBJbmNyZWRpYmx5IGNvbXBsZXggY2xhc3MgdG8gZmluZCBmaWxlcyBpbiBtdWx0aXBsZSBzaW11bHRhbmlvdXMgcnVubmluZyBwcm9taXNlcyB0byBkbyBpdCBhcyBmYXN0IGFzIHBvc3NpYmxlLlxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVzdEZpbGVzRmluZGVyIHtcbiAgc3RhdGljIElHTk9SRURfTkFNRVMgPSBbXCIuZ2l0XCIsIFwibm9kZV9tb2R1bGVzXCJdXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gT3B0aW9ucyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLmRpcmVjdG9yeSAtIERpcmVjdG9yeSBwYXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYXJncy5kaXJlY3Rvcmllc10gLSBEaXJlY3Rvcmllcy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYXJncy5wcm9jZXNzQXJncyAtIFByb2Nlc3MgYXJncy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHtkaXJlY3RvcnksIGRpcmVjdG9yaWVzLCBwcm9jZXNzQXJncywgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcblxuICAgIHRoaXMuZGlyZWN0b3J5ID0gcGF0aC5yZXNvbHZlKGRpcmVjdG9yeSlcbiAgICB0aGlzLmxvZ2dlciA9IG5ldyBMb2dnZXIodGhpcylcblxuICAgIGlmIChkaXJlY3Rvcmllcykge1xuICAgICAgdGhpcy5kaXJlY3RvcmllcyA9IGRpcmVjdG9yaWVzLm1hcCgoZW50cnkpID0+IHBhdGgucmVzb2x2ZShlbnRyeSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlyZWN0b3JpZXMgPSBbXG4gICAgICAgIGAke3RoaXMuZGlyZWN0b3J5fS9fX3Rlc3RzX19gLFxuICAgICAgICBgJHt0aGlzLmRpcmVjdG9yeX0vdGVzdHNgLFxuICAgICAgICBgJHt0aGlzLmRpcmVjdG9yeX0vc3BlY2BcbiAgICAgIF1cbiAgICB9XG5cbiAgICB0aGlzLmZpbmRpbmdDb3VudCA9IDBcbiAgICB0aGlzLnByb2Nlc3NBcmdzID0gcHJvY2Vzc0FyZ3NcblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy5mb3VuZEZpbGVzID0gW11cblxuICAgIC8qKiBAdHlwZSB7UmVjb3JkPG51bWJlciwgUHJvbWlzZTx2b2lkPj59ICovXG4gICAgdGhpcy5maW5kaW5nUHJvbWlzZXMgPSB7fVxuXG4gICAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgICB0aGlzLnRlc3RBcmdzID0gdGhpcy5wcm9jZXNzQXJncy5maWx0ZXIoKHByb2Nlc3NBcmcsIGluZGV4KSA9PiBpbmRleCAhPSAwKVxuXG4gICAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgICB0aGlzLmRpcmVjdG9yeUFyZ3MgPSBbXVxuXG4gICAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgICB0aGlzLmZpbGVBcmdzID0gW11cblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy5leHBsaWNpdEZpbGVzID0gW11cblxuICAgIHRoaXMuX2FyZ3NQcmVwYXJlZCA9IGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggdGhlIHRlc3QgZmlsZXMuXG4gICAqL1xuICBhc3luYyBmaW5kVGVzdEZpbGVzKCkge1xuICAgIGF3YWl0IHRoaXMucHJlcGFyZUFyZ3MoKVxuXG4gICAgaWYgKHRoaXMuZXhwbGljaXRGaWxlcy5sZW5ndGggPiAwICYmIHRoaXMuZGlyZWN0b3J5QXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5leHBsaWNpdEZpbGVzKSlcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLndpdGhGaW5kaW5nQ291bnQoYXN5bmMgKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBkaXJlY3Rvcnkgb2YgdGhpcy5kaXJlY3Rvcmllcykge1xuICAgICAgICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhkaXJlY3RvcnkpKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5maW5kVGVzdEZpbGVzSW5EaXIoZGlyZWN0b3J5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcblxuICAgIGF3YWl0IHRoaXMud2FpdEZvckZpbmRpbmdQcm9taXNlcygpXG5cbiAgICBpZiAodGhpcy5leHBsaWNpdEZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZm91bmRGaWxlcy5wdXNoKC4uLnRoaXMuZXhwbGljaXRGaWxlcylcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMuZm91bmRGaWxlcykpXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge251bWJlcn0gLSBUaGUgaW5nIHByb21pc2VzIGxlbmd0aC5cbiAgICovXG4gIGZpbmRpbmdQcm9taXNlc0xlbmd0aCgpIHsgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZmluZGluZ1Byb21pc2VzKS5sZW5ndGggfVxuXG4gIGFzeW5jIHdhaXRGb3JGaW5kaW5nUHJvbWlzZXMoKSB7XG4gICAgd2hpbGUgKHRoaXMuZmluZGluZ1Byb21pc2VzTGVuZ3RoKCkgPiAwKSB7XG4gICAgICBhd2FpdCB0aGlzLndhaXRGb3JGaW5kaW5nUHJvbWlzZXNJdGVyYXRpb24oKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgd2FpdEZvckZpbmRpbmdQcm9taXNlc0l0ZXJhdGlvbigpIHtcbiAgICBjb25zdCB1bmZpbmlzaGVkUHJvbWlzZXMgPSBbXVxuXG4gICAgZm9yIChjb25zdCBmaW5kaW5nUHJvbWlzZUlkIGluIHRoaXMuZmluZGluZ1Byb21pc2VzKSB7XG4gICAgICBjb25zdCBmaW5kaW5nUHJvbWlzZSA9IHRoaXMuZmluZGluZ1Byb21pc2VzW2ZpbmRpbmdQcm9taXNlSWRdXG5cbiAgICAgIHVuZmluaXNoZWRQcm9taXNlcy5wdXNoKGZpbmRpbmdQcm9taXNlKVxuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKHVuZmluaXNoZWRQcm9taXNlcylcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiBQcm9taXNlPHZvaWQ+fSBjYWxsYmFjayAtIENhbGxiYWNrIGZ1bmN0aW9uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgd2l0aEZpbmRpbmdDb3VudChjYWxsYmFjaykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgZmluZGluZ1Byb21pc2UgPSBjYWxsYmFjaygpXG4gICAgICBjb25zdCBmaW5kaW5nQ291bnQgPSB0aGlzLmZpbmRpbmdDb3VudFxuXG4gICAgICB0aGlzLmZpbmRpbmdDb3VudCArPSAxXG4gICAgICB0aGlzLmZpbmRpbmdQcm9taXNlc1tmaW5kaW5nQ291bnRdID0gZmluZGluZ1Byb21pc2VcblxuICAgICAgZmluZGluZ1Byb21pc2UuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmZpbmRpbmdQcm9taXNlc1tmaW5kaW5nQ291bnRdXG5cbiAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciAtIERpci5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgd2hlbiBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGZpbmRUZXN0RmlsZXNJbkRpcihkaXIpIHtcbiAgICBhd2FpdCB0aGlzLndpdGhGaW5kaW5nQ291bnQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGRpcilcblxuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGlmIChUZXN0RmlsZXNGaW5kZXIuSUdOT1JFRF9OQU1FUy5pbmNsdWRlcyhmaWxlKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IGAke2Rpcn0vJHtmaWxlfWBcbiAgICAgICAgY29uc3QgbG9jYWxQYXRoID0gZnVsbFBhdGgucmVwbGFjZShgJHt0aGlzLmRpcmVjdG9yeX0vYCwgXCJcIilcbiAgICAgICAgY29uc3QgaXNEaXIgPSAoYXdhaXQgZnMuc3RhdChmdWxsUGF0aCkpLmlzRGlyZWN0b3J5KClcblxuICAgICAgICBpZiAoaXNEaXIpIHtcbiAgICAgICAgICB0aGlzLmZpbmRUZXN0RmlsZXNJbkRpcihmdWxsUGF0aClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5pc0ZpbGVNYXRjaGluZ1JlcXVpcmVtZW50cyhmaWxlLCBsb2NhbFBhdGgpKSB7XG4gICAgICAgICAgICB0aGlzLmZvdW5kRmlsZXMucHVzaChmdWxsUGF0aClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlIC0gRmlsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsUGF0aCAtIExvY2FsIHBhdGguXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgZmlsZSBtYXRjaGluZyByZXF1aXJlbWVudHMuXG4gICAqL1xuICBpc0ZpbGVNYXRjaGluZ1JlcXVpcmVtZW50cyhmaWxlLCBsb2NhbFBhdGgpIHtcbiAgICBpZiAodGhpcy5kaXJlY3RvcnlBcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZGlyZWN0b3J5QXJnIG9mIHRoaXMuZGlyZWN0b3J5QXJncykge1xuICAgICAgICBpZiAobG9jYWxQYXRoLnN0YXJ0c1dpdGgoZGlyZWN0b3J5QXJnKSAmJiB0aGlzLmxvb2tzTGlrZVRlc3RGaWxlKGZpbGUpKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJGb3VuZCB0ZXN0IGZpbGUgYmVjYXVzZSBtYXRjaGluZyBkaXIgYW5kIGxvb2tzIGxpa2UgdGhpcyBmaWxlOlwiLCBmaWxlKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWxlQXJncy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpbGVBcmcgb2YgdGhpcy5maWxlQXJncykge1xuICAgICAgICBpZiAoZmlsZUFyZyA9PSBsb2NhbFBhdGgpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkZvdW5kIHRlc3QgZmlsZSBiZWNhdXNlIG1hdGNoaW5nIGZpbGUgYXJnOlwiLCBmaWxlKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWxlQXJncy5sZW5ndGggPT0gMCAmJiB0aGlzLmRpcmVjdG9yeUFyZ3MubGVuZ3RoID09IDAgJiYgdGhpcy5sb29rc0xpa2VUZXN0RmlsZShmaWxlKSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXCJGb3VuZCB0ZXN0IGZpbGUgYmVjYXVzZSBsb29rcyBsaWtlIHRoaXMgZmlsZTpcIiwgZmlsZSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUgLSBGaWxlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBXaGV0aGVyIGxvb2tzIGxpa2UgdGVzdCBmaWxlLlxuICAgKi9cbiAgbG9va3NMaWtlVGVzdEZpbGUoZmlsZSkge1xuICAgIHJldHVybiBCb29sZWFuKGZpbGUubWF0Y2goLy0oc3BlY3x0ZXN0KVxcLihtfClqcyQvKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIHRlc3QgYXJncyBhcmUgcHJlcGFyZWQuXG4gICAqL1xuICBhc3luYyBwcmVwYXJlQXJncygpIHtcbiAgICBpZiAodGhpcy5fYXJnc1ByZXBhcmVkKSByZXR1cm5cblxuICAgIGZvciAoY29uc3QgdGVzdEFyZyBvZiB0aGlzLnRlc3RBcmdzKSB7XG4gICAgICBpZiAodGVzdEFyZyA9PT0gXCItLVwiKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBmb3JjZURpcmVjdG9yeSA9IHRlc3RBcmcuZW5kc1dpdGgoXCIvXCIpIHx8IHRlc3RBcmcuZW5kc1dpdGgocGF0aC5zZXApXG4gICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguaXNBYnNvbHV0ZSh0ZXN0QXJnKSA/IHRlc3RBcmcgOiBwYXRoLnJlc29sdmUodGhpcy5kaXJlY3RvcnksIHRlc3RBcmcpXG4gICAgICBjb25zdCBiYXNlTmFtZSA9IHBhdGguYmFzZW5hbWUodGhpcy5kaXJlY3RvcnkpXG4gICAgICBjb25zdCBoYXNCYXNlUHJlZml4ID0gdGVzdEFyZyA9PT0gYmFzZU5hbWUgfHwgdGVzdEFyZy5zdGFydHNXaXRoKGAke2Jhc2VOYW1lfS9gKSB8fCB0ZXN0QXJnLnN0YXJ0c1dpdGgoYCR7YmFzZU5hbWV9JHtwYXRoLnNlcH1gKVxuICAgICAgY29uc3QgYmFzZVByZWZpeGVkRnVsbFBhdGggPSAoIXBhdGguaXNBYnNvbHV0ZSh0ZXN0QXJnKSAmJiBoYXNCYXNlUHJlZml4KSA/IHBhdGgucmVzb2x2ZShwYXRoLmRpcm5hbWUodGhpcy5kaXJlY3RvcnkpLCB0ZXN0QXJnKSA6IG51bGxcbiAgICAgIGNvbnN0IGZ1bGxQYXRoQ2FuZGlkYXRlcyA9IGJhc2VQcmVmaXhlZEZ1bGxQYXRoID8gW2Jhc2VQcmVmaXhlZEZ1bGxQYXRoXSA6IFtmdWxsUGF0aF1cblxuICAgICAgaWYgKGZvcmNlRGlyZWN0b3J5KSB7XG4gICAgICAgIGNvbnN0IHByZWZlcnJlZExvY2FsUGF0aCA9IHRoaXMudG9Mb2NhbFBhdGgoYmFzZVByZWZpeGVkRnVsbFBhdGggfHwgZnVsbFBhdGgpXG4gICAgICAgIHRoaXMuZGlyZWN0b3J5QXJncy5wdXNoKHRoaXMuZW5zdXJlVHJhaWxpbmdTbGFzaChwcmVmZXJyZWRMb2NhbFBhdGgpKVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBsZXQgc3RhdHNcbiAgICAgICAgbGV0IHJlc29sdmVkRnVsbFBhdGhcblxuICAgICAgICBmb3IgKGNvbnN0IGNhbmRpZGF0ZVBhdGggb2YgZnVsbFBhdGhDYW5kaWRhdGVzKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN0YXRzID0gYXdhaXQgZnMuc3RhdChjYW5kaWRhdGVQYXRoKVxuICAgICAgICAgICAgcmVzb2x2ZWRGdWxsUGF0aCA9IGNhbmRpZGF0ZVBhdGhcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICAvLyBLZWVwIHNlYXJjaGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc3RhdHMgfHwgIXJlc29sdmVkRnVsbFBhdGgpIHRocm93IG5ldyBFcnJvcihcIlBhdGggbm90IGZvdW5kXCIpXG4gICAgICAgIGNvbnN0IGxvY2FsUGF0aCA9IHRoaXMudG9Mb2NhbFBhdGgocmVzb2x2ZWRGdWxsUGF0aClcblxuICAgICAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIHRoaXMuZGlyZWN0b3J5QXJncy5wdXNoKHRoaXMuZW5zdXJlVHJhaWxpbmdTbGFzaChsb2NhbFBhdGgpKVxuICAgICAgICB9IGVsc2UgaWYgKHN0YXRzLmlzRmlsZSgpKSB7XG4gICAgICAgICAgdGhpcy5maWxlQXJncy5wdXNoKGxvY2FsUGF0aClcbiAgICAgICAgICB0aGlzLmV4cGxpY2l0RmlsZXMucHVzaChyZXNvbHZlZEZ1bGxQYXRoKVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgY29uc3QgZmFsbGJhY2tMb2NhbFBhdGggPSB0aGlzLnRvTG9jYWxQYXRoKGJhc2VQcmVmaXhlZEZ1bGxQYXRoIHx8IGZ1bGxQYXRoKVxuICAgICAgICB0aGlzLmZpbGVBcmdzLnB1c2goZmFsbGJhY2tMb2NhbFBhdGgpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fYXJnc1ByZXBhcmVkID0gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbFBhdGggLSBMb2NhbCBwYXRoLlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIE5vcm1hbGl6ZWQgbG9jYWwgcGF0aCB3aXRoIHRyYWlsaW5nIHNsYXNoLlxuICAgKi9cbiAgZW5zdXJlVHJhaWxpbmdTbGFzaChsb2NhbFBhdGgpIHtcbiAgICBpZiAobG9jYWxQYXRoID09PSBcIlwiKSByZXR1cm4gbG9jYWxQYXRoXG4gICAgcmV0dXJuIGxvY2FsUGF0aC5lbmRzV2l0aChcIi9cIikgPyBsb2NhbFBhdGggOiBgJHtsb2NhbFBhdGh9L2BcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZnVsbFBhdGggLSBGdWxsIHBhdGguXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gTG9jYWwgcGF0aCByZWxhdGl2ZSB0byB0aGUgYmFzZSBkaXJlY3RvcnkuXG4gICAqL1xuICB0b0xvY2FsUGF0aChmdWxsUGF0aCkge1xuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUodGhpcy5kaXJlY3RvcnksIGZ1bGxQYXRoKVxuICAgIHJldHVybiByZWxhdGl2ZVBhdGguc3BsaXQocGF0aC5zZXApLmpvaW4oXCIvXCIpXG4gIH1cbn1cbiJdfQ==
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1maWxlcy1maW5kZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy90ZXN0LWZpbGVzLWZpbmRlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUV2QixPQUFPLFVBQVUsTUFBTSx5QkFBeUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDZCQUE2QixDQUFBO0FBRXZELGlIQUFpSDtBQUNqSCxNQUFNLENBQUMsT0FBTyxPQUFPLGVBQWU7SUFDbEMsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQTtJQUUvQzs7Ozs7T0FLRztJQUNILFlBQVksRUFBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUM1RCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFOUIsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUNwRSxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxXQUFXLEdBQUc7Z0JBQ2pCLEdBQUcsSUFBSSxDQUFDLFNBQVMsWUFBWTtnQkFDN0IsR0FBRyxJQUFJLENBQUMsU0FBUyxRQUFRO2dCQUN6QixHQUFHLElB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QWlCLENBQUMsQ0FBQTtZQUN2QyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFBO0lBQzNCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxtQkFBbUIsQ0FBQyxTQUFTO1FBQzNCLElBQUksU0FBUyxLQUFLLEVBQUU7WUFBRSxPQUFPLFNBQVMsQ0FBQTtRQUN0QyxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQTtJQUM5RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFDLFFBQVE7UUFDbEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQzVELE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCBmaWxlRXhpc3RzIGZyb20gXCIuLi91dGlscy9maWxlLWV4aXN0cy5qc1wiXG5pbXBvcnQge0xvZ2dlcn0gZnJvbSBcIi4uL2xvZ2dlci5qc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcblxuLy8gSW5jcmVkaWJseSBjb21wbGV4IGNsYXNzIHRvIGZpbmQgZmlsZXMgaW4gbXVsdGlwbGUgc2ltdWx0YW5pb3VzIHJ1bm5pbmcgcHJvbWlzZXMgdG8gZG8gaXQgYXMgZmFzdCBhcyBwb3NzaWJsZS5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlc3RGaWxlc0ZpbmRlciB7XG4gIHN0YXRpYyBJR05PUkVEX05BTUVTID0gW1wiLmdpdFwiLCBcIm5vZGVfbW9kdWxlc1wiXVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIE9wdGlvbnMgb2JqZWN0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy5kaXJlY3RvcnkgLSBEaXJlY3RvcnkgcGF0aC5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gW2FyZ3MuZGlyZWN0b3JpZXNdIC0gRGlyZWN0b3JpZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFyZ3MucHJvY2Vzc0FyZ3MgLSBQcm9jZXNzIGFyZ3MuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7ZGlyZWN0b3J5LCBkaXJlY3RvcmllcywgcHJvY2Vzc0FyZ3MsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICB0aGlzLmRpcmVjdG9yeSA9IHBhdGgucmVzb2x2ZShkaXJlY3RvcnkpXG4gICAgdGhpcy5sb2dnZXIgPSBuZXcgTG9nZ2VyKHRoaXMpXG5cbiAgICBpZiAoZGlyZWN0b3JpZXMpIHtcbiAgICAgIHRoaXMuZGlyZWN0b3JpZXMgPSBkaXJlY3Rvcmllcy5tYXAoKGVudHJ5KSA9PiBwYXRoLnJlc29sdmUoZW50cnkpKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRpcmVjdG9yaWVzID0gW1xuICAgICAgICBgJHt0aGlzLmRpcmVjdG9yeX0vX190ZXN0c19fYCxcbiAgICAgICAgYCR7dGhpcy5kaXJlY3Rvcnl9L3Rlc3RzYCxcbiAgICAgICAgYCR7dGhpcy5kaXJlY3Rvcnl9L3NwZWNgXG4gICAgICBdXG4gICAgfVxuXG4gICAgdGhpcy5maW5kaW5nQ291bnQgPSAwXG4gICAgdGhpcy5wcm9jZXNzQXJncyA9IHByb2Nlc3NBcmdzXG5cbiAgICAvKiogQHR5cGUge3N0cmluZ1tdfSAqL1xuICAgIHRoaXMuZm91bmRGaWxlcyA9IFtdXG5cbiAgICAvKiogQHR5cGUge1JlY29yZDxudW1iZXIsIFByb21pc2U8dm9pZD4+fSAqL1xuICAgIHRoaXMuZmluZGluZ1Byb21pc2VzID0ge31cblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy50ZXN0QXJncyA9IHRoaXMucHJvY2Vzc0FyZ3MuZmlsdGVyKChwcm9jZXNzQXJnLCBpbmRleCkgPT4gaW5kZXggIT0gMClcblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy5kaXJlY3RvcnlBcmdzID0gW11cblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy5kaXJlY3RvcnlGdWxsUGF0aHMgPSBbXVxuXG4gICAgLyoqIEB0eXBlIHtzdHJpbmdbXX0gKi9cbiAgICB0aGlzLmZpbGVBcmdzID0gW11cblxuICAgIC8qKiBAdHlwZSB7c3RyaW5nW119ICovXG4gICAgdGhpcy5leHBsaWNpdEZpbGVzID0gW11cblxuICAgIHRoaXMuX2FyZ3NQcmVwYXJlZCA9IGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nW10+fSAtIFJlc29sdmVzIHdpdGggdGhlIHRlc3QgZmlsZXMuXG4gICAqL1xuICBhc3luYyBmaW5kVGVzdEZpbGVzKCkge1xuICAgIGF3YWl0IHRoaXMucHJlcGFyZUFyZ3MoKVxuXG4gICAgaWYgKHRoaXMuZXhwbGljaXRGaWxlcy5sZW5ndGggPiAwICYmIHRoaXMuZGlyZWN0b3J5QXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5leHBsaWNpdEZpbGVzKSlcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLndpdGhGaW5kaW5nQ291bnQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaGFzRXhwbGljaXRBcmdzID0gdGhpcy5kaXJlY3RvcnlGdWxsUGF0aHMubGVuZ3RoID4gMCB8fCB0aGlzLmZpbGVBcmdzLmxlbmd0aCA+IDBcbiAgICAgIGNvbnN0IGRpcmVjdG9yaWVzVG9TY2FuID0gaGFzRXhwbGljaXRBcmdzID8gdGhpcy5kaXJlY3RvcnlGdWxsUGF0aHMgOiB0aGlzLmRpcmVjdG9yaWVzXG5cbiAgICAgIGZvciAoY29uc3QgZGlyZWN0b3J5IG9mIGRpcmVjdG9yaWVzVG9TY2FuKSB7XG4gICAgICAgIGlmIChhd2FpdCBmaWxlRXhpc3RzKGRpcmVjdG9yeSkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmZpbmRUZXN0RmlsZXNJbkRpcihkaXJlY3RvcnkpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuXG4gICAgYXdhaXQgdGhpcy53YWl0Rm9yRmluZGluZ1Byb21pc2VzKClcblxuICAgIGlmICh0aGlzLmV4cGxpY2l0RmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5mb3VuZEZpbGVzLnB1c2goLi4udGhpcy5leHBsaWNpdEZpbGVzKVxuICAgIH1cblxuICAgIHJldHVybiBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5mb3VuZEZpbGVzKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSAtIFRoZSBpbmcgcHJvbWlzZXMgbGVuZ3RoLlxuICAgKi9cbiAgZmluZGluZ1Byb21pc2VzTGVuZ3RoKCkgeyByZXR1cm4gT2JqZWN0LmtleXModGhpcy5maW5kaW5nUHJvbWlzZXMpLmxlbmd0aCB9XG5cbiAgYXN5bmMgd2FpdEZvckZpbmRpbmdQcm9taXNlcygpIHtcbiAgICB3aGlsZSAodGhpcy5maW5kaW5nUHJvbWlzZXNMZW5ndGgoKSA+IDApIHtcbiAgICAgIGF3YWl0IHRoaXMud2FpdEZvckZpbmRpbmdQcm9taXNlc0l0ZXJhdGlvbigpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICBhc3luYyB3YWl0Rm9yRmluZGluZ1Byb21pc2VzSXRlcmF0aW9uKCkge1xuICAgIGNvbnN0IHVuZmluaXNoZWRQcm9taXNlcyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGZpbmRpbmdQcm9taXNlSWQgaW4gdGhpcy5maW5kaW5nUHJvbWlzZXMpIHtcbiAgICAgIGNvbnN0IGZpbmRpbmdQcm9taXNlID0gdGhpcy5maW5kaW5nUHJvbWlzZXNbZmluZGluZ1Byb21pc2VJZF1cblxuICAgICAgdW5maW5pc2hlZFByb21pc2VzLnB1c2goZmluZGluZ1Byb21pc2UpXG4gICAgfVxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwodW5maW5pc2hlZFByb21pc2VzKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb24oKSA6IFByb21pc2U8dm9pZD59IGNhbGxiYWNrIC0gQ2FsbGJhY2sgZnVuY3Rpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gY29tcGxldGUuXG4gICAqL1xuICB3aXRoRmluZGluZ0NvdW50KGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBmaW5kaW5nUHJvbWlzZSA9IGNhbGxiYWNrKClcbiAgICAgIGNvbnN0IGZpbmRpbmdDb3VudCA9IHRoaXMuZmluZGluZ0NvdW50XG5cbiAgICAgIHRoaXMuZmluZGluZ0NvdW50ICs9IDFcbiAgICAgIHRoaXMuZmluZGluZ1Byb21pc2VzW2ZpbmRpbmdDb3VudF0gPSBmaW5kaW5nUHJvbWlzZVxuXG4gICAgICBmaW5kaW5nUHJvbWlzZS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgZGVsZXRlIHRoaXMuZmluZGluZ1Byb21pc2VzW2ZpbmRpbmdDb3VudF1cblxuICAgICAgICByZXNvbHZlKHVuZGVmaW5lZClcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyIC0gRGlyLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn0gLSBSZXNvbHZlcyB3aGVuIGNvbXBsZXRlLlxuICAgKi9cbiAgYXN5bmMgZmluZFRlc3RGaWxlc0luRGlyKGRpcikge1xuICAgIGF3YWl0IHRoaXMud2l0aEZpbmRpbmdDb3VudChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoZGlyKVxuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgaWYgKFRlc3RGaWxlc0ZpbmRlci5JR05PUkVEX05BTUVTLmluY2x1ZGVzKGZpbGUpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZ1bGxQYXRoID0gYCR7ZGlyfS8ke2ZpbGV9YFxuICAgICAgICBjb25zdCBsb2NhbFBhdGggPSBmdWxsUGF0aC5yZXBsYWNlKGAke3RoaXMuZGlyZWN0b3J5fS9gLCBcIlwiKVxuICAgICAgICBjb25zdCBpc0RpciA9IChhd2FpdCBmcy5zdGF0KGZ1bGxQYXRoKSkuaXNEaXJlY3RvcnkoKVxuXG4gICAgICAgIGlmIChpc0Rpcikge1xuICAgICAgICAgIHRoaXMuZmluZFRlc3RGaWxlc0luRGlyKGZ1bGxQYXRoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmlzRmlsZU1hdGNoaW5nUmVxdWlyZW1lbnRzKGZpbGUsIGxvY2FsUGF0aCkpIHtcbiAgICAgICAgICAgIHRoaXMuZm91bmRGaWxlcy5wdXNoKGZ1bGxQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZpbGUgLSBGaWxlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxQYXRoIC0gTG9jYWwgcGF0aC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gV2hldGhlciBmaWxlIG1hdGNoaW5nIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIGlzRmlsZU1hdGNoaW5nUmVxdWlyZW1lbnRzKGZpbGUsIGxvY2FsUGF0aCkge1xuICAgIGlmICh0aGlzLmRpcmVjdG9yeUFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBkaXJlY3RvcnlBcmcgb2YgdGhpcy5kaXJlY3RvcnlBcmdzKSB7XG4gICAgICAgIGlmIChsb2NhbFBhdGguc3RhcnRzV2l0aChkaXJlY3RvcnlBcmcpICYmIHRoaXMubG9va3NMaWtlVGVzdEZpbGUoZmlsZSkpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkZvdW5kIHRlc3QgZmlsZSBiZWNhdXNlIG1hdGNoaW5nIGRpciBhbmQgbG9va3MgbGlrZSB0aGlzIGZpbGU6XCIsIGZpbGUpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbGVBcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmlsZUFyZyBvZiB0aGlzLmZpbGVBcmdzKSB7XG4gICAgICAgIGlmIChmaWxlQXJnID09IGxvY2FsUGF0aCkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwiRm91bmQgdGVzdCBmaWxlIGJlY2F1c2UgbWF0Y2hpbmcgZmlsZSBhcmc6XCIsIGZpbGUpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbGVBcmdzLmxlbmd0aCA9PSAwICYmIHRoaXMuZGlyZWN0b3J5QXJncy5sZW5ndGggPT0gMCAmJiB0aGlzLmxvb2tzTGlrZVRlc3RGaWxlKGZpbGUpKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcIkZvdW5kIHRlc3QgZmlsZSBiZWNhdXNlIGxvb2tzIGxpa2UgdGhpcyBmaWxlOlwiLCBmaWxlKVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZSAtIEZpbGUuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSAtIFdoZXRoZXIgbG9va3MgbGlrZSB0ZXN0IGZpbGUuXG4gICAqL1xuICBsb29rc0xpa2VUZXN0RmlsZShmaWxlKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4oZmlsZS5tYXRjaCgvLShzcGVjfHRlc3QpXFwuKG18KWpzJC8pKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gdGVzdCBhcmdzIGFyZSBwcmVwYXJlZC5cbiAgICovXG4gIGFzeW5jIHByZXBhcmVBcmdzKCkge1xuICAgIGlmICh0aGlzLl9hcmdzUHJlcGFyZWQpIHJldHVyblxuXG4gICAgZm9yIChjb25zdCB0ZXN0QXJnIG9mIHRoaXMudGVzdEFyZ3MpIHtcbiAgICAgIGlmICh0ZXN0QXJnID09PSBcIi0tXCIpIGNvbnRpbnVlXG5cbiAgICAgIGNvbnN0IGZvcmNlRGlyZWN0b3J5ID0gdGVzdEFyZy5lbmRzV2l0aChcIi9cIikgfHwgdGVzdEFyZy5lbmRzV2l0aChwYXRoLnNlcClcbiAgICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5pc0Fic29sdXRlKHRlc3RBcmcpID8gdGVzdEFyZyA6IHBhdGgucmVzb2x2ZSh0aGlzLmRpcmVjdG9yeSwgdGVzdEFyZylcbiAgICAgIGNvbnN0IGJhc2VOYW1lID0gcGF0aC5iYXNlbmFtZSh0aGlzLmRpcmVjdG9yeSlcbiAgICAgIGNvbnN0IGhhc0Jhc2VQcmVmaXggPSB0ZXN0QXJnID09PSBiYXNlTmFtZSB8fCB0ZXN0QXJnLnN0YXJ0c1dpdGgoYCR7YmFzZU5hbWV9L2ApIHx8IHRlc3RBcmcuc3RhcnRzV2l0aChgJHtiYXNlTmFtZX0ke3BhdGguc2VwfWApXG4gICAgICBjb25zdCBiYXNlUHJlZml4ZWRGdWxsUGF0aCA9ICghcGF0aC5pc0Fic29sdXRlKHRlc3RBcmcpICYmIGhhc0Jhc2VQcmVmaXgpID8gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZSh0aGlzLmRpcmVjdG9yeSksIHRlc3RBcmcpIDogbnVsbFxuICAgICAgY29uc3QgZnVsbFBhdGhDYW5kaWRhdGVzID0gYmFzZVByZWZpeGVkRnVsbFBhdGggPyBbYmFzZVByZWZpeGVkRnVsbFBhdGhdIDogW2Z1bGxQYXRoXVxuXG4gICAgICBpZiAoZm9yY2VEaXJlY3RvcnkpIHtcbiAgICAgICAgY29uc3QgcHJlZmVycmVkTG9jYWxQYXRoID0gdGhpcy50b0xvY2FsUGF0aChiYXNlUHJlZml4ZWRGdWxsUGF0aCB8fCBmdWxsUGF0aClcbiAgICAgICAgdGhpcy5kaXJlY3RvcnlBcmdzLnB1c2godGhpcy5lbnN1cmVUcmFpbGluZ1NsYXNoKHByZWZlcnJlZExvY2FsUGF0aCkpXG4gICAgICAgIHRoaXMuZGlyZWN0b3J5RnVsbFBhdGhzLnB1c2gocGF0aC5yZXNvbHZlKGJhc2VQcmVmaXhlZEZ1bGxQYXRoIHx8IGZ1bGxQYXRoKSlcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgbGV0IHN0YXRzXG4gICAgICAgIGxldCByZXNvbHZlZEZ1bGxQYXRoXG5cbiAgICAgICAgZm9yIChjb25zdCBjYW5kaWRhdGVQYXRoIG9mIGZ1bGxQYXRoQ2FuZGlkYXRlcykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGF0cyA9IGF3YWl0IGZzLnN0YXQoY2FuZGlkYXRlUGF0aClcbiAgICAgICAgICAgIHJlc29sdmVkRnVsbFBhdGggPSBjYW5kaWRhdGVQYXRoXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gS2VlcCBzZWFyY2hpbmdcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXN0YXRzIHx8ICFyZXNvbHZlZEZ1bGxQYXRoKSB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG5vdCBmb3VuZFwiKVxuICAgICAgICBjb25zdCBsb2NhbFBhdGggPSB0aGlzLnRvTG9jYWxQYXRoKHJlc29sdmVkRnVsbFBhdGgpXG5cbiAgICAgICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICB0aGlzLmRpcmVjdG9yeUFyZ3MucHVzaCh0aGlzLmVuc3VyZVRyYWlsaW5nU2xhc2gobG9jYWxQYXRoKSlcbiAgICAgICAgICB0aGlzLmRpcmVjdG9yeUZ1bGxQYXRocy5wdXNoKHJlc29sdmVkRnVsbFBhdGgpXG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdHMuaXNGaWxlKCkpIHtcbiAgICAgICAgICB0aGlzLmZpbGVBcmdzLnB1c2gobG9jYWxQYXRoKVxuICAgICAgICAgIHRoaXMuZXhwbGljaXRGaWxlcy5wdXNoKHJlc29sdmVkRnVsbFBhdGgpXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBjb25zdCBmYWxsYmFja0xvY2FsUGF0aCA9IHRoaXMudG9Mb2NhbFBhdGgoYmFzZVByZWZpeGVkRnVsbFBhdGggfHwgZnVsbFBhdGgpXG4gICAgICAgIHRoaXMuZmlsZUFyZ3MucHVzaChmYWxsYmFja0xvY2FsUGF0aClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9hcmdzUHJlcGFyZWQgPSB0cnVlXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsUGF0aCAtIExvY2FsIHBhdGguXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IC0gTm9ybWFsaXplZCBsb2NhbCBwYXRoIHdpdGggdHJhaWxpbmcgc2xhc2guXG4gICAqL1xuICBlbnN1cmVUcmFpbGluZ1NsYXNoKGxvY2FsUGF0aCkge1xuICAgIGlmIChsb2NhbFBhdGggPT09IFwiXCIpIHJldHVybiBsb2NhbFBhdGhcbiAgICByZXR1cm4gbG9jYWxQYXRoLmVuZHNXaXRoKFwiL1wiKSA/IGxvY2FsUGF0aCA6IGAke2xvY2FsUGF0aH0vYFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmdWxsUGF0aCAtIEZ1bGwgcGF0aC5cbiAgICogQHJldHVybnMge3N0cmluZ30gLSBMb2NhbCBwYXRoIHJlbGF0aXZlIHRvIHRoZSBiYXNlIGRpcmVjdG9yeS5cbiAgICovXG4gIHRvTG9jYWxQYXRoKGZ1bGxQYXRoKSB7XG4gICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5yZWxhdGl2ZSh0aGlzLmRpcmVjdG9yeSwgZnVsbFBhdGgpXG4gICAgcmV0dXJuIHJlbGF0aXZlUGF0aC5zcGxpdChwYXRoLnNlcCkuam9pbihcIi9cIilcbiAgfVxufVxuIl19
|