vitest 0.0.136 → 0.0.140
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/LICENSE.md +24 -0
- package/dist/cli.js +10 -9
- package/dist/{constants-d24b670d.js → constants-124522a1.js} +2 -2
- package/dist/{diff-04ac7bc9.js → diff-deb11fa7.js} +4 -5
- package/dist/entry.js +204 -22
- package/dist/global-7907d87d.js +22 -0
- package/dist/index-1b2eb03b.js +187 -0
- package/dist/index-3faf3d6e.js +8807 -0
- package/dist/{index-6397bdab.js → index-4a8eca63.js} +3 -3
- package/dist/index-53aca3c1.js +205 -0
- package/dist/index-c037b40c.js +9272 -0
- package/dist/index.d.ts +47 -23
- package/dist/index.js +5 -7
- package/dist/jest-mock-6c629944.js +95 -0
- package/dist/node.d.ts +31 -8
- package/dist/node.js +12 -11
- package/dist/{setup-6bff359f.js → setup-901b91d4.js} +68 -83
- package/dist/{vi-2509fe43.js → vi-8e5d0623.js} +3 -3
- package/dist/worker.js +227 -215
- package/package.json +10 -8
- package/dist/externalize-b979f524.js +0 -9259
- package/dist/global-3d90eb55.js +0 -21
- package/dist/index-0b823579.js +0 -8588
- package/dist/index-64aafe4b.js +0 -396
- package/dist/index-e909c175.js +0 -63
- package/dist/jest-mock-30625866.js +0 -94
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { g as globalApis } from './constants-124522a1.js';
|
|
2
|
+
import { i as index } from './index-4a8eca63.js';
|
|
3
|
+
import 'url';
|
|
4
|
+
import './index-1b2eb03b.js';
|
|
5
|
+
import 'path';
|
|
6
|
+
import './vi-8e5d0623.js';
|
|
7
|
+
import './index-53aca3c1.js';
|
|
8
|
+
import 'tty';
|
|
9
|
+
import 'local-pkg';
|
|
10
|
+
import './jest-mock-6c629944.js';
|
|
11
|
+
import 'chai';
|
|
12
|
+
import 'tinyspy';
|
|
13
|
+
import './_commonjsHelpers-c9e3b764.js';
|
|
14
|
+
|
|
15
|
+
function registerApiGlobally() {
|
|
16
|
+
globalApis.forEach((api) => {
|
|
17
|
+
globalThis[api] = index[api];
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { registerApiGlobally };
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLTc5MDdkODdkLmpzIiwic291cmNlcyI6WyIuLi9zcmMvaW50ZWdyYXRpb25zL2dsb2JhbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnbG9iYWxBcGlzIH0gZnJvbSAnLi4vY29uc3RhbnRzJ1xuaW1wb3J0ICogYXMgaW5kZXggZnJvbSAnLi4vaW5kZXgnXG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckFwaUdsb2JhbGx5KCkge1xuICBnbG9iYWxBcGlzLmZvckVhY2goKGFwaSkgPT4ge1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgSSBrbm93IHdoYXQgSSBhbSBkb2luZyA6UFxuICAgIGdsb2JhbFRoaXNbYXBpXSA9IGluZGV4W2FwaV1cbiAgfSlcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUVPLFNBQVMsbUJBQW1CLEdBQUc7QUFDdEMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLO0FBQzlCLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQyxHQUFHLENBQUMsQ0FBQztBQUNMOzsifQ==
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
|
|
3
|
+
function normalizeWindowsPath(input = "") {
|
|
4
|
+
if (!input.includes("\\")) {
|
|
5
|
+
return input;
|
|
6
|
+
}
|
|
7
|
+
return input.replace(/\\/g, "/");
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const _UNC_REGEX = /^[/][/]/;
|
|
11
|
+
const _UNC_DRIVE_REGEX = /^[/][/]([.]{1,2}[/])?([a-zA-Z]):[/]/;
|
|
12
|
+
const _IS_ABSOLUTE_RE = /^\/|^\\|^[a-zA-Z]:[/\\]/;
|
|
13
|
+
const sep = "/";
|
|
14
|
+
const delimiter = ":";
|
|
15
|
+
const normalize = function(path2) {
|
|
16
|
+
if (path2.length === 0) {
|
|
17
|
+
return ".";
|
|
18
|
+
}
|
|
19
|
+
path2 = normalizeWindowsPath(path2);
|
|
20
|
+
const isUNCPath = path2.match(_UNC_REGEX);
|
|
21
|
+
const hasUNCDrive = isUNCPath && path2.match(_UNC_DRIVE_REGEX);
|
|
22
|
+
const isPathAbsolute = isAbsolute(path2);
|
|
23
|
+
const trailingSeparator = path2[path2.length - 1] === "/";
|
|
24
|
+
path2 = normalizeString(path2, !isPathAbsolute);
|
|
25
|
+
if (path2.length === 0) {
|
|
26
|
+
if (isPathAbsolute) {
|
|
27
|
+
return "/";
|
|
28
|
+
}
|
|
29
|
+
return trailingSeparator ? "./" : ".";
|
|
30
|
+
}
|
|
31
|
+
if (trailingSeparator) {
|
|
32
|
+
path2 += "/";
|
|
33
|
+
}
|
|
34
|
+
if (isUNCPath) {
|
|
35
|
+
if (hasUNCDrive) {
|
|
36
|
+
return `//./${path2}`;
|
|
37
|
+
}
|
|
38
|
+
return `//${path2}`;
|
|
39
|
+
}
|
|
40
|
+
return isPathAbsolute && !isAbsolute(path2) ? `/${path2}` : path2;
|
|
41
|
+
};
|
|
42
|
+
const join = function(...args) {
|
|
43
|
+
if (args.length === 0) {
|
|
44
|
+
return ".";
|
|
45
|
+
}
|
|
46
|
+
let joined;
|
|
47
|
+
for (let i = 0; i < args.length; ++i) {
|
|
48
|
+
const arg = args[i];
|
|
49
|
+
if (arg.length > 0) {
|
|
50
|
+
if (joined === void 0) {
|
|
51
|
+
joined = arg;
|
|
52
|
+
} else {
|
|
53
|
+
joined += `/${arg}`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (joined === void 0) {
|
|
58
|
+
return ".";
|
|
59
|
+
}
|
|
60
|
+
return normalize(joined);
|
|
61
|
+
};
|
|
62
|
+
const resolve = function(...args) {
|
|
63
|
+
args = args.map((arg) => normalizeWindowsPath(arg));
|
|
64
|
+
let resolvedPath = "";
|
|
65
|
+
let resolvedAbsolute = false;
|
|
66
|
+
for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {
|
|
67
|
+
const path2 = i >= 0 ? args[i] : process.cwd();
|
|
68
|
+
if (path2.length === 0) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
resolvedPath = `${path2}/${resolvedPath}`;
|
|
72
|
+
resolvedAbsolute = isAbsolute(path2);
|
|
73
|
+
}
|
|
74
|
+
resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);
|
|
75
|
+
if (resolvedAbsolute && !isAbsolute(resolvedPath)) {
|
|
76
|
+
return `/${resolvedPath}`;
|
|
77
|
+
}
|
|
78
|
+
return resolvedPath.length > 0 ? resolvedPath : ".";
|
|
79
|
+
};
|
|
80
|
+
function normalizeString(path2, allowAboveRoot) {
|
|
81
|
+
let res = "";
|
|
82
|
+
let lastSegmentLength = 0;
|
|
83
|
+
let lastSlash = -1;
|
|
84
|
+
let dots = 0;
|
|
85
|
+
let char = null;
|
|
86
|
+
for (let i = 0; i <= path2.length; ++i) {
|
|
87
|
+
if (i < path2.length) {
|
|
88
|
+
char = path2[i];
|
|
89
|
+
} else if (char === "/") {
|
|
90
|
+
break;
|
|
91
|
+
} else {
|
|
92
|
+
char = "/";
|
|
93
|
+
}
|
|
94
|
+
if (char === "/") {
|
|
95
|
+
if (lastSlash === i - 1 || dots === 1) ; else if (dots === 2) {
|
|
96
|
+
if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
|
|
97
|
+
if (res.length > 2) {
|
|
98
|
+
const lastSlashIndex = res.lastIndexOf("/");
|
|
99
|
+
if (lastSlashIndex === -1) {
|
|
100
|
+
res = "";
|
|
101
|
+
lastSegmentLength = 0;
|
|
102
|
+
} else {
|
|
103
|
+
res = res.slice(0, lastSlashIndex);
|
|
104
|
+
lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
|
|
105
|
+
}
|
|
106
|
+
lastSlash = i;
|
|
107
|
+
dots = 0;
|
|
108
|
+
continue;
|
|
109
|
+
} else if (res.length !== 0) {
|
|
110
|
+
res = "";
|
|
111
|
+
lastSegmentLength = 0;
|
|
112
|
+
lastSlash = i;
|
|
113
|
+
dots = 0;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
if (allowAboveRoot) {
|
|
118
|
+
res += res.length > 0 ? "/.." : "..";
|
|
119
|
+
lastSegmentLength = 2;
|
|
120
|
+
}
|
|
121
|
+
} else {
|
|
122
|
+
if (res.length > 0) {
|
|
123
|
+
res += `/${path2.slice(lastSlash + 1, i)}`;
|
|
124
|
+
} else {
|
|
125
|
+
res = path2.slice(lastSlash + 1, i);
|
|
126
|
+
}
|
|
127
|
+
lastSegmentLength = i - lastSlash - 1;
|
|
128
|
+
}
|
|
129
|
+
lastSlash = i;
|
|
130
|
+
dots = 0;
|
|
131
|
+
} else if (char === "." && dots !== -1) {
|
|
132
|
+
++dots;
|
|
133
|
+
} else {
|
|
134
|
+
dots = -1;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return res;
|
|
138
|
+
}
|
|
139
|
+
const isAbsolute = function(p) {
|
|
140
|
+
return _IS_ABSOLUTE_RE.test(p);
|
|
141
|
+
};
|
|
142
|
+
const toNamespacedPath = function(p) {
|
|
143
|
+
return normalizeWindowsPath(p);
|
|
144
|
+
};
|
|
145
|
+
const extname = function(p) {
|
|
146
|
+
return path.posix.extname(normalizeWindowsPath(p));
|
|
147
|
+
};
|
|
148
|
+
const relative = function(from, to) {
|
|
149
|
+
return path.posix.relative(normalizeWindowsPath(from), normalizeWindowsPath(to));
|
|
150
|
+
};
|
|
151
|
+
const dirname = function(p) {
|
|
152
|
+
return path.posix.dirname(normalizeWindowsPath(p));
|
|
153
|
+
};
|
|
154
|
+
const format = function(p) {
|
|
155
|
+
return normalizeWindowsPath(path.posix.format(p));
|
|
156
|
+
};
|
|
157
|
+
const basename = function(p, ext) {
|
|
158
|
+
return path.posix.basename(normalizeWindowsPath(p), ext);
|
|
159
|
+
};
|
|
160
|
+
const parse = function(p) {
|
|
161
|
+
return path.posix.parse(normalizeWindowsPath(p));
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
const _path = /*#__PURE__*/Object.freeze({
|
|
165
|
+
__proto__: null,
|
|
166
|
+
sep: sep,
|
|
167
|
+
delimiter: delimiter,
|
|
168
|
+
normalize: normalize,
|
|
169
|
+
join: join,
|
|
170
|
+
resolve: resolve,
|
|
171
|
+
normalizeString: normalizeString,
|
|
172
|
+
isAbsolute: isAbsolute,
|
|
173
|
+
toNamespacedPath: toNamespacedPath,
|
|
174
|
+
extname: extname,
|
|
175
|
+
relative: relative,
|
|
176
|
+
dirname: dirname,
|
|
177
|
+
format: format,
|
|
178
|
+
basename: basename,
|
|
179
|
+
parse: parse
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
const index = {
|
|
183
|
+
..._path
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
export { resolve as a, basename as b, index as c, dirname as d, isAbsolute as i, join as j, relative as r };
|
|
187
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtMWIyZWIwM2IuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wYXRoZUAwLjIuMC9ub2RlX21vZHVsZXMvcGF0aGUvZGlzdC9pbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGlucHV0ID0gXCJcIikge1xuICBpZiAoIWlucHV0LmluY2x1ZGVzKFwiXFxcXFwiKSkge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG59XG5cbmNvbnN0IF9VTkNfUkVHRVggPSAvXlsvXVsvXS87XG5jb25zdCBfVU5DX0RSSVZFX1JFR0VYID0gL15bL11bL10oWy5dezEsMn1bL10pPyhbYS16QS1aXSk6Wy9dLztcbmNvbnN0IF9JU19BQlNPTFVURV9SRSA9IC9eXFwvfF5cXFxcfF5bYS16QS1aXTpbL1xcXFxdLztcbmNvbnN0IHNlcCA9IFwiL1wiO1xuY29uc3QgZGVsaW1pdGVyID0gXCI6XCI7XG5jb25zdCBub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoMikge1xuICBpZiAocGF0aDIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIHBhdGgyID0gbm9ybWFsaXplV2luZG93c1BhdGgocGF0aDIpO1xuICBjb25zdCBpc1VOQ1BhdGggPSBwYXRoMi5tYXRjaChfVU5DX1JFR0VYKTtcbiAgY29uc3QgaGFzVU5DRHJpdmUgPSBpc1VOQ1BhdGggJiYgcGF0aDIubWF0Y2goX1VOQ19EUklWRV9SRUdFWCk7XG4gIGNvbnN0IGlzUGF0aEFic29sdXRlID0gaXNBYnNvbHV0ZShwYXRoMik7XG4gIGNvbnN0IHRyYWlsaW5nU2VwYXJhdG9yID0gcGF0aDJbcGF0aDIubGVuZ3RoIC0gMV0gPT09IFwiL1wiO1xuICBwYXRoMiA9IG5vcm1hbGl6ZVN0cmluZyhwYXRoMiwgIWlzUGF0aEFic29sdXRlKTtcbiAgaWYgKHBhdGgyLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChpc1BhdGhBYnNvbHV0ZSkge1xuICAgICAgcmV0dXJuIFwiL1wiO1xuICAgIH1cbiAgICByZXR1cm4gdHJhaWxpbmdTZXBhcmF0b3IgPyBcIi4vXCIgOiBcIi5cIjtcbiAgfVxuICBpZiAodHJhaWxpbmdTZXBhcmF0b3IpIHtcbiAgICBwYXRoMiArPSBcIi9cIjtcbiAgfVxuICBpZiAoaXNVTkNQYXRoKSB7XG4gICAgaWYgKGhhc1VOQ0RyaXZlKSB7XG4gICAgICByZXR1cm4gYC8vLi8ke3BhdGgyfWA7XG4gICAgfVxuICAgIHJldHVybiBgLy8ke3BhdGgyfWA7XG4gIH1cbiAgcmV0dXJuIGlzUGF0aEFic29sdXRlICYmICFpc0Fic29sdXRlKHBhdGgyKSA/IGAvJHtwYXRoMn1gIDogcGF0aDI7XG59O1xuY29uc3Qgam9pbiA9IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIGxldCBqb2luZWQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoam9pbmVkID09PSB2b2lkIDApIHtcbiAgICAgICAgam9pbmVkID0gYXJnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgam9pbmVkICs9IGAvJHthcmd9YDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGpvaW5lZCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIHJldHVybiBub3JtYWxpemUoam9pbmVkKTtcbn07XG5jb25zdCByZXNvbHZlID0gZnVuY3Rpb24oLi4uYXJncykge1xuICBhcmdzID0gYXJncy5tYXAoKGFyZykgPT4gbm9ybWFsaXplV2luZG93c1BhdGgoYXJnKSk7XG4gIGxldCByZXNvbHZlZFBhdGggPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gYXJncy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICBjb25zdCBwYXRoMiA9IGkgPj0gMCA/IGFyZ3NbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuICAgIGlmIChwYXRoMi5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXNvbHZlZFBhdGggPSBgJHtwYXRoMn0vJHtyZXNvbHZlZFBhdGh9YDtcbiAgICByZXNvbHZlZEFic29sdXRlID0gaXNBYnNvbHV0ZShwYXRoMik7XG4gIH1cbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplU3RyaW5nKHJlc29sdmVkUGF0aCwgIXJlc29sdmVkQWJzb2x1dGUpO1xuICBpZiAocmVzb2x2ZWRBYnNvbHV0ZSAmJiAhaXNBYnNvbHV0ZShyZXNvbHZlZFBhdGgpKSB7XG4gICAgcmV0dXJuIGAvJHtyZXNvbHZlZFBhdGh9YDtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDAgPyByZXNvbHZlZFBhdGggOiBcIi5cIjtcbn07XG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmcocGF0aDIsIGFsbG93QWJvdmVSb290KSB7XG4gIGxldCByZXMgPSBcIlwiO1xuICBsZXQgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICBsZXQgbGFzdFNsYXNoID0gLTE7XG4gIGxldCBkb3RzID0gMDtcbiAgbGV0IGNoYXIgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8PSBwYXRoMi5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgcGF0aDIubGVuZ3RoKSB7XG4gICAgICBjaGFyID0gcGF0aDJbaV07XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoYXIgPSBcIi9cIjtcbiAgICB9XG4gICAgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICBpZiAobGFzdFNsYXNoID09PSBpIC0gMSB8fCBkb3RzID09PSAxKSA7IGVsc2UgaWYgKGRvdHMgPT09IDIpIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPCAyIHx8IGxhc3RTZWdtZW50TGVuZ3RoICE9PSAyIHx8IHJlc1tyZXMubGVuZ3RoIC0gMV0gIT09IFwiLlwiIHx8IHJlc1tyZXMubGVuZ3RoIC0gMl0gIT09IFwiLlwiKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHJlcy5sYXN0SW5kZXhPZihcIi9cIik7XG4gICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlcyA9IFwiXCI7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcyA9IHJlcy5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCk7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIHJlcyArPSByZXMubGVuZ3RoID4gMCA/IFwiLy4uXCIgOiBcIi4uXCI7XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXMgKz0gYC8ke3BhdGgyLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzID0gcGF0aDIuc2xpY2UobGFzdFNsYXNoICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSBpIC0gbGFzdFNsYXNoIC0gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICBkb3RzID0gMDtcbiAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiLlwiICYmIGRvdHMgIT09IC0xKSB7XG4gICAgICArK2RvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmNvbnN0IGlzQWJzb2x1dGUgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBfSVNfQUJTT0xVVEVfUkUudGVzdChwKTtcbn07XG5jb25zdCB0b05hbWVzcGFjZWRQYXRoID0gZnVuY3Rpb24ocCkge1xuICByZXR1cm4gbm9ybWFsaXplV2luZG93c1BhdGgocCk7XG59O1xuY29uc3QgZXh0bmFtZSA9IGZ1bmN0aW9uKHApIHtcbiAgcmV0dXJuIHBhdGgucG9zaXguZXh0bmFtZShub3JtYWxpemVXaW5kb3dzUGF0aChwKSk7XG59O1xuY29uc3QgcmVsYXRpdmUgPSBmdW5jdGlvbihmcm9tLCB0bykge1xuICByZXR1cm4gcGF0aC5wb3NpeC5yZWxhdGl2ZShub3JtYWxpemVXaW5kb3dzUGF0aChmcm9tKSwgbm9ybWFsaXplV2luZG93c1BhdGgodG8pKTtcbn07XG5jb25zdCBkaXJuYW1lID0gZnVuY3Rpb24ocCkge1xuICByZXR1cm4gcGF0aC5wb3NpeC5kaXJuYW1lKG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHApKTtcbn07XG5jb25zdCBmb3JtYXQgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBub3JtYWxpemVXaW5kb3dzUGF0aChwYXRoLnBvc2l4LmZvcm1hdChwKSk7XG59O1xuY29uc3QgYmFzZW5hbWUgPSBmdW5jdGlvbihwLCBleHQpIHtcbiAgcmV0dXJuIHBhdGgucG9zaXguYmFzZW5hbWUobm9ybWFsaXplV2luZG93c1BhdGgocCksIGV4dCk7XG59O1xuY29uc3QgcGFyc2UgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBwYXRoLnBvc2l4LnBhcnNlKG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHApKTtcbn07XG5cbmNvbnN0IF9wYXRoID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIHNlcDogc2VwLFxuICBkZWxpbWl0ZXI6IGRlbGltaXRlcixcbiAgbm9ybWFsaXplOiBub3JtYWxpemUsXG4gIGpvaW46IGpvaW4sXG4gIHJlc29sdmU6IHJlc29sdmUsXG4gIG5vcm1hbGl6ZVN0cmluZzogbm9ybWFsaXplU3RyaW5nLFxuICBpc0Fic29sdXRlOiBpc0Fic29sdXRlLFxuICB0b05hbWVzcGFjZWRQYXRoOiB0b05hbWVzcGFjZWRQYXRoLFxuICBleHRuYW1lOiBleHRuYW1lLFxuICByZWxhdGl2ZTogcmVsYXRpdmUsXG4gIGRpcm5hbWU6IGRpcm5hbWUsXG4gIGZvcm1hdDogZm9ybWF0LFxuICBiYXNlbmFtZTogYmFzZW5hbWUsXG4gIHBhcnNlOiBwYXJzZVxufSk7XG5cbmNvbnN0IGluZGV4ID0ge1xuICAuLi5fcGF0aFxufTtcblxuZXhwb3J0IHsgYmFzZW5hbWUsIGluZGV4IGFzIGRlZmF1bHQsIGRlbGltaXRlciwgZGlybmFtZSwgZXh0bmFtZSwgZm9ybWF0LCBpc0Fic29sdXRlLCBqb2luLCBub3JtYWxpemUsIG5vcm1hbGl6ZVN0cmluZywgcGFyc2UsIHJl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
|