vitest 0.5.4 → 0.5.7

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.
Files changed (44) hide show
  1. package/dist/chunk-api-setup.ab3a8330.js +4444 -0
  2. package/dist/chunk-constants.a1a50d89.js +32 -0
  3. package/dist/chunk-defaults.8ca84d7b.js +1833 -0
  4. package/dist/chunk-install-pkg.7ce2052a.js +1643 -0
  5. package/dist/chunk-integrations-globals.9bda85f1.js +24 -0
  6. package/dist/chunk-magic-string.6c8f4a10.js +1361 -0
  7. package/dist/chunk-runtime-chain.d86ab074.js +5946 -0
  8. package/dist/chunk-runtime-hooks.aef17670.js +42 -0
  9. package/dist/chunk-runtime-rpc.1832c38c.js +6 -0
  10. package/dist/chunk-utils-base.39767f3e.js +225 -0
  11. package/dist/chunk-utils-source-map.be2b14e2.js +3407 -0
  12. package/dist/chunk-vite-node-externalize.7a4060a6.js +10515 -0
  13. package/dist/chunk-vite-node-utils.952694b8.js +9451 -0
  14. package/dist/cli.js +13 -15
  15. package/dist/config.cjs +1 -1
  16. package/dist/config.d.ts +6 -0
  17. package/dist/config.js +1 -1
  18. package/dist/entry.js +26 -16
  19. package/dist/index.d.ts +6 -0
  20. package/dist/index.js +5 -5
  21. package/dist/node.d.ts +6 -0
  22. package/dist/node.js +11 -11
  23. package/dist/{_commonjsHelpers-c9e3b764.js → vendor-_commonjsHelpers.91d4f591.js} +1 -1
  24. package/dist/vendor-index.665a6ba4.js +5708 -0
  25. package/dist/vendor-index.76be1f4d.js +187 -0
  26. package/dist/vendor-index.f6809970.js +1111 -0
  27. package/dist/worker.js +5 -5
  28. package/package.json +3 -3
  29. package/dist/cli-api-682b9694.js +0 -10512
  30. package/dist/client-4904f549.js +0 -9451
  31. package/dist/constants-c746dc5b.js +0 -32
  32. package/dist/diff-d3ddd21a.js +0 -1833
  33. package/dist/globals-75ad6839.js +0 -24
  34. package/dist/index-013ecdfe.js +0 -225
  35. package/dist/index-072c45fd.js +0 -5708
  36. package/dist/index-0996637f.js +0 -1111
  37. package/dist/index-0bdb518d.js +0 -42
  38. package/dist/index-1488b423.js +0 -187
  39. package/dist/index-1945a7c3.js +0 -1643
  40. package/dist/magic-string.es-94000aea.js +0 -1361
  41. package/dist/rpc-377d999b.js +0 -6
  42. package/dist/setup-047a81dd.js +0 -4444
  43. package/dist/source-map-b4f7fd10.js +0 -3407
  44. package/dist/vi-a4ac529d.js +0 -5946
@@ -1,42 +0,0 @@
1
- import { g as getCurrentSuite, w as withTimeout, a as getDefaultHookTimeout, b as getState, s as setState, c as suite, t as test, d as describe, i as it, v as vitest, e as vi } from './vi-a4ac529d.js';
2
- import chai, { assert, should } from 'chai';
3
- import { spies, isMockFunction, spyOn, fn } from './jest-mock.js';
4
-
5
- const beforeAll = (fn, timeout) => getCurrentSuite().on("beforeAll", withTimeout(fn, timeout ?? getDefaultHookTimeout(), true));
6
- const afterAll = (fn, timeout) => getCurrentSuite().on("afterAll", withTimeout(fn, timeout ?? getDefaultHookTimeout(), true));
7
- const beforeEach = (fn, timeout) => getCurrentSuite().on("beforeEach", withTimeout(fn, timeout ?? getDefaultHookTimeout(), true));
8
- const afterEach = (fn, timeout) => getCurrentSuite().on("afterEach", withTimeout(fn, timeout ?? getDefaultHookTimeout(), true));
9
-
10
- const expect = (value, message) => {
11
- const { assertionCalls } = getState();
12
- setState({ assertionCalls: assertionCalls + 1 });
13
- return chai.expect(value, message);
14
- };
15
- expect.getState = getState;
16
- expect.setState = setState;
17
- Object.assign(expect, chai.expect);
18
-
19
- var index = /*#__PURE__*/Object.freeze({
20
- __proto__: null,
21
- suite: suite,
22
- test: test,
23
- describe: describe,
24
- it: it,
25
- beforeAll: beforeAll,
26
- afterAll: afterAll,
27
- beforeEach: beforeEach,
28
- afterEach: afterEach,
29
- assert: assert,
30
- should: should,
31
- chai: chai,
32
- expect: expect,
33
- spies: spies,
34
- isMockFunction: isMockFunction,
35
- spyOn: spyOn,
36
- fn: fn,
37
- vitest: vitest,
38
- vi: vi
39
- });
40
-
41
- export { afterAll as a, beforeAll as b, beforeEach as c, afterEach as d, expect as e, index as i };
42
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtMGJkYjUxOGQuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lL2hvb2tzLnRzIiwiLi4vc3JjL2ludGVncmF0aW9ucy9jaGFpL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3VpdGVIb29rcyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEhvb2tUaW1lb3V0LCB3aXRoVGltZW91dCB9IGZyb20gJy4vY29udGV4dCdcbmltcG9ydCB7IGdldEN1cnJlbnRTdWl0ZSB9IGZyb20gJy4vc3VpdGUnXG5cbi8vIHN1aXRlIGhvb2tzXG5leHBvcnQgY29uc3QgYmVmb3JlQWxsID0gKGZuOiBTdWl0ZUhvb2tzWydiZWZvcmVBbGwnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2JlZm9yZUFsbCcsIHdpdGhUaW1lb3V0KGZuLCB0aW1lb3V0ID8/IGdldERlZmF1bHRIb29rVGltZW91dCgpLCB0cnVlKSlcbmV4cG9ydCBjb25zdCBhZnRlckFsbCA9IChmbjogU3VpdGVIb29rc1snYWZ0ZXJBbGwnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2FmdGVyQWxsJywgd2l0aFRpbWVvdXQoZm4sIHRpbWVvdXQgPz8gZ2V0RGVmYXVsdEhvb2tUaW1lb3V0KCksIHRydWUpKVxuZXhwb3J0IGNvbnN0IGJlZm9yZUVhY2ggPSAoZm46IFN1aXRlSG9va3NbJ2JlZm9yZUVhY2gnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2JlZm9yZUVhY2gnLCB3aXRoVGltZW91dChmbiwgdGltZW91dCA/PyBnZXREZWZhdWx0SG9va1RpbWVvdXQoKSwgdHJ1ZSkpXG5leHBvcnQgY29uc3QgYWZ0ZXJFYWNoID0gKGZuOiBTdWl0ZUhvb2tzWydhZnRlckVhY2gnXVswXSwgdGltZW91dD86IG51bWJlcikgPT4gZ2V0Q3VycmVudFN1aXRlKCkub24oJ2FmdGVyRWFjaCcsIHdpdGhUaW1lb3V0KGZuLCB0aW1lb3V0ID8/IGdldERlZmF1bHRIb29rVGltZW91dCgpLCB0cnVlKSlcbiIsImltcG9ydCBjaGFpIGZyb20gJ2NoYWknXG5pbXBvcnQgeyBnZXRTdGF0ZSwgc2V0U3RhdGUgfSBmcm9tICcuL2plc3QtZXhwZWN0J1xuXG5leHBvcnQgeyBhc3NlcnQsIHNob3VsZCB9IGZyb20gJ2NoYWknXG5cbmNvbnN0IGV4cGVjdCA9ICgodmFsdWU6IGFueSwgbWVzc2FnZT86IHN0cmluZyk6IFZpLkFzc2VydGlvbiA9PiB7XG4gIGNvbnN0IHsgYXNzZXJ0aW9uQ2FsbHMgfSA9IGdldFN0YXRlKClcbiAgc2V0U3RhdGUoeyBhc3NlcnRpb25DYWxsczogYXNzZXJ0aW9uQ2FsbHMgKyAxIH0pXG4gIHJldHVybiBjaGFpLmV4cGVjdCh2YWx1ZSwgbWVzc2FnZSkgYXMgdW5rbm93biBhcyBWaS5Bc3NlcnRpb25cbn0pIGFzIFZpLkV4cGVjdFN0YXRpY1xuZXhwZWN0LmdldFN0YXRlID0gZ2V0U3RhdGVcbmV4cGVjdC5zZXRTdGF0ZSA9IHNldFN0YXRlXG5cbk9iamVjdC5hc3NpZ24oZXhwZWN0LCBjaGFpLmV4cGVjdClcblxuZXhwb3J0IHsgY2hhaSwgZXhwZWN0IH1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRVksTUFBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUkscUJBQXFCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtBQUMzSCxNQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssZUFBZSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO0FBQ3pILE1BQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDN0gsTUFBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLGVBQWUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUkscUJBQXFCLEVBQUUsRUFBRSxJQUFJLENBQUM7O0FDRmhJLE1BQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sS0FBSztBQUNuQyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUN4QyxFQUFFLFFBQVEsQ0FBQyxFQUFFLGNBQWMsRUFBRSxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRCxFQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckMsRUFBRTtBQUNGLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
@@ -1,187 +0,0 @@
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, relative as r };
187
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtMTQ4OGI0MjMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wYXRoZUAwLjIuMC9ub2RlX21vZHVsZXMvcGF0aGUvZGlzdC9pbmRleC5tanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVdpbmRvd3NQYXRoKGlucHV0ID0gXCJcIikge1xuICBpZiAoIWlucHV0LmluY2x1ZGVzKFwiXFxcXFwiKSkge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG59XG5cbmNvbnN0IF9VTkNfUkVHRVggPSAvXlsvXVsvXS87XG5jb25zdCBfVU5DX0RSSVZFX1JFR0VYID0gL15bL11bL10oWy5dezEsMn1bL10pPyhbYS16QS1aXSk6Wy9dLztcbmNvbnN0IF9JU19BQlNPTFVURV9SRSA9IC9eXFwvfF5cXFxcfF5bYS16QS1aXTpbL1xcXFxdLztcbmNvbnN0IHNlcCA9IFwiL1wiO1xuY29uc3QgZGVsaW1pdGVyID0gXCI6XCI7XG5jb25zdCBub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoMikge1xuICBpZiAocGF0aDIubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIHBhdGgyID0gbm9ybWFsaXplV2luZG93c1BhdGgocGF0aDIpO1xuICBjb25zdCBpc1VOQ1BhdGggPSBwYXRoMi5tYXRjaChfVU5DX1JFR0VYKTtcbiAgY29uc3QgaGFzVU5DRHJpdmUgPSBpc1VOQ1BhdGggJiYgcGF0aDIubWF0Y2goX1VOQ19EUklWRV9SRUdFWCk7XG4gIGNvbnN0IGlzUGF0aEFic29sdXRlID0gaXNBYnNvbHV0ZShwYXRoMik7XG4gIGNvbnN0IHRyYWlsaW5nU2VwYXJhdG9yID0gcGF0aDJbcGF0aDIubGVuZ3RoIC0gMV0gPT09IFwiL1wiO1xuICBwYXRoMiA9IG5vcm1hbGl6ZVN0cmluZyhwYXRoMiwgIWlzUGF0aEFic29sdXRlKTtcbiAgaWYgKHBhdGgyLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChpc1BhdGhBYnNvbHV0ZSkge1xuICAgICAgcmV0dXJuIFwiL1wiO1xuICAgIH1cbiAgICByZXR1cm4gdHJhaWxpbmdTZXBhcmF0b3IgPyBcIi4vXCIgOiBcIi5cIjtcbiAgfVxuICBpZiAodHJhaWxpbmdTZXBhcmF0b3IpIHtcbiAgICBwYXRoMiArPSBcIi9cIjtcbiAgfVxuICBpZiAoaXNVTkNQYXRoKSB7XG4gICAgaWYgKGhhc1VOQ0RyaXZlKSB7XG4gICAgICByZXR1cm4gYC8vLi8ke3BhdGgyfWA7XG4gICAgfVxuICAgIHJldHVybiBgLy8ke3BhdGgyfWA7XG4gIH1cbiAgcmV0dXJuIGlzUGF0aEFic29sdXRlICYmICFpc0Fic29sdXRlKHBhdGgyKSA/IGAvJHtwYXRoMn1gIDogcGF0aDI7XG59O1xuY29uc3Qgam9pbiA9IGZ1bmN0aW9uKC4uLmFyZ3MpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIGxldCBqb2luZWQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoam9pbmVkID09PSB2b2lkIDApIHtcbiAgICAgICAgam9pbmVkID0gYXJnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgam9pbmVkICs9IGAvJHthcmd9YDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGpvaW5lZCA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIFwiLlwiO1xuICB9XG4gIHJldHVybiBub3JtYWxpemUoam9pbmVkKTtcbn07XG5jb25zdCByZXNvbHZlID0gZnVuY3Rpb24oLi4uYXJncykge1xuICBhcmdzID0gYXJncy5tYXAoKGFyZykgPT4gbm9ybWFsaXplV2luZG93c1BhdGgoYXJnKSk7XG4gIGxldCByZXNvbHZlZFBhdGggPSBcIlwiO1xuICBsZXQgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuICBmb3IgKGxldCBpID0gYXJncy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICBjb25zdCBwYXRoMiA9IGkgPj0gMCA/IGFyZ3NbaV0gOiBwcm9jZXNzLmN3ZCgpO1xuICAgIGlmIChwYXRoMi5sZW5ndGggPT09IDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICByZXNvbHZlZFBhdGggPSBgJHtwYXRoMn0vJHtyZXNvbHZlZFBhdGh9YDtcbiAgICByZXNvbHZlZEFic29sdXRlID0gaXNBYnNvbHV0ZShwYXRoMik7XG4gIH1cbiAgcmVzb2x2ZWRQYXRoID0gbm9ybWFsaXplU3RyaW5nKHJlc29sdmVkUGF0aCwgIXJlc29sdmVkQWJzb2x1dGUpO1xuICBpZiAocmVzb2x2ZWRBYnNvbHV0ZSAmJiAhaXNBYnNvbHV0ZShyZXNvbHZlZFBhdGgpKSB7XG4gICAgcmV0dXJuIGAvJHtyZXNvbHZlZFBhdGh9YDtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZWRQYXRoLmxlbmd0aCA+IDAgPyByZXNvbHZlZFBhdGggOiBcIi5cIjtcbn07XG5mdW5jdGlvbiBub3JtYWxpemVTdHJpbmcocGF0aDIsIGFsbG93QWJvdmVSb290KSB7XG4gIGxldCByZXMgPSBcIlwiO1xuICBsZXQgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICBsZXQgbGFzdFNsYXNoID0gLTE7XG4gIGxldCBkb3RzID0gMDtcbiAgbGV0IGNoYXIgPSBudWxsO1xuICBmb3IgKGxldCBpID0gMDsgaSA8PSBwYXRoMi5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgcGF0aDIubGVuZ3RoKSB7XG4gICAgICBjaGFyID0gcGF0aDJbaV07XG4gICAgfSBlbHNlIGlmIChjaGFyID09PSBcIi9cIikge1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNoYXIgPSBcIi9cIjtcbiAgICB9XG4gICAgaWYgKGNoYXIgPT09IFwiL1wiKSB7XG4gICAgICBpZiAobGFzdFNsYXNoID09PSBpIC0gMSB8fCBkb3RzID09PSAxKSA7IGVsc2UgaWYgKGRvdHMgPT09IDIpIHtcbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPCAyIHx8IGxhc3RTZWdtZW50TGVuZ3RoICE9PSAyIHx8IHJlc1tyZXMubGVuZ3RoIC0gMV0gIT09IFwiLlwiIHx8IHJlc1tyZXMubGVuZ3RoIC0gMl0gIT09IFwiLlwiKSB7XG4gICAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IHJlcy5sYXN0SW5kZXhPZihcIi9cIik7XG4gICAgICAgICAgICBpZiAobGFzdFNsYXNoSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlcyA9IFwiXCI7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcyA9IHJlcy5zbGljZSgwLCBsYXN0U2xhc2hJbmRleCk7XG4gICAgICAgICAgICAgIGxhc3RTZWdtZW50TGVuZ3RoID0gcmVzLmxlbmd0aCAtIDEgLSByZXMubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICByZXMgPSBcIlwiO1xuICAgICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAwO1xuICAgICAgICAgICAgbGFzdFNsYXNoID0gaTtcbiAgICAgICAgICAgIGRvdHMgPSAwO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgICAgICAgIHJlcyArPSByZXMubGVuZ3RoID4gMCA/IFwiLy4uXCIgOiBcIi4uXCI7XG4gICAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSAyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXMgKz0gYC8ke3BhdGgyLnNsaWNlKGxhc3RTbGFzaCArIDEsIGkpfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzID0gcGF0aDIuc2xpY2UobGFzdFNsYXNoICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdFNlZ21lbnRMZW5ndGggPSBpIC0gbGFzdFNsYXNoIC0gMTtcbiAgICAgIH1cbiAgICAgIGxhc3RTbGFzaCA9IGk7XG4gICAgICBkb3RzID0gMDtcbiAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiLlwiICYmIGRvdHMgIT09IC0xKSB7XG4gICAgICArK2RvdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvdHMgPSAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmNvbnN0IGlzQWJzb2x1dGUgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBfSVNfQUJTT0xVVEVfUkUudGVzdChwKTtcbn07XG5jb25zdCB0b05hbWVzcGFjZWRQYXRoID0gZnVuY3Rpb24ocCkge1xuICByZXR1cm4gbm9ybWFsaXplV2luZG93c1BhdGgocCk7XG59O1xuY29uc3QgZXh0bmFtZSA9IGZ1bmN0aW9uKHApIHtcbiAgcmV0dXJuIHBhdGgucG9zaXguZXh0bmFtZShub3JtYWxpemVXaW5kb3dzUGF0aChwKSk7XG59O1xuY29uc3QgcmVsYXRpdmUgPSBmdW5jdGlvbihmcm9tLCB0bykge1xuICByZXR1cm4gcGF0aC5wb3NpeC5yZWxhdGl2ZShub3JtYWxpemVXaW5kb3dzUGF0aChmcm9tKSwgbm9ybWFsaXplV2luZG93c1BhdGgodG8pKTtcbn07XG5jb25zdCBkaXJuYW1lID0gZnVuY3Rpb24ocCkge1xuICByZXR1cm4gcGF0aC5wb3NpeC5kaXJuYW1lKG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHApKTtcbn07XG5jb25zdCBmb3JtYXQgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBub3JtYWxpemVXaW5kb3dzUGF0aChwYXRoLnBvc2l4LmZvcm1hdChwKSk7XG59O1xuY29uc3QgYmFzZW5hbWUgPSBmdW5jdGlvbihwLCBleHQpIHtcbiAgcmV0dXJuIHBhdGgucG9zaXguYmFzZW5hbWUobm9ybWFsaXplV2luZG93c1BhdGgocCksIGV4dCk7XG59O1xuY29uc3QgcGFyc2UgPSBmdW5jdGlvbihwKSB7XG4gIHJldHVybiBwYXRoLnBvc2l4LnBhcnNlKG5vcm1hbGl6ZVdpbmRvd3NQYXRoKHApKTtcbn07XG5cbmNvbnN0IF9wYXRoID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIHNlcDogc2VwLFxuICBkZWxpbWl0ZXI6IGRlbGltaXRlcixcbiAgbm9ybWFsaXplOiBub3JtYWxpemUsXG4gIGpvaW46IGpvaW4sXG4gIHJlc29sdmU6IHJlc29sdmUsXG4gIG5vcm1hbGl6ZVN0cmluZzogbm9ybWFsaXplU3RyaW5nLFxuICBpc0Fic29sdXRlOiBpc0Fic29sdXRlLFxuICB0b05hbWVzcGFjZWRQYXRoOiB0b05hbWVzcGFjZWRQYXRoLFxuICBleHRuYW1lOiBleHRuYW1lLFxuICByZWxhdGl2ZTogcmVsYXRpdmUsXG4gIGRpcm5hbWU6IGRpcm5hbWUsXG4gIGZvcm1hdDogZm9ybWF0LFxuICBiYXNlbmFtZTogYmFzZW5hbWUsXG4gIHBhcnNlOiBwYXJzZVxufSk7XG5cbmNvbnN0IGluZGV4ID0ge1xuICAuLi5fcGF0aFxufTtcblxuZXhwb3J0IHsgYmFzZW5hbWUsIGluZGV4IGFzIGRlZmF1bHQsIGRlbGltaXRlciwgZGlybmFtZSwgZXh0bmFtZSwgZm9ybWF0LCBpc0Fic29sdXRlLCBqb2luLCBub3JtYWxpemUsIG5vcm1hbGl6ZVN0cmluZywgcGFyc2UsIHJl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