@plugjs/plug 0.3.5 → 0.4.1
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/asserts.cjs +10 -12
- package/dist/asserts.cjs.map +1 -1
- package/dist/asserts.d.ts +1 -2
- package/dist/asserts.mjs +9 -10
- package/dist/asserts.mjs.map +1 -1
- package/dist/async.cjs +5 -20
- package/dist/async.cjs.map +2 -2
- package/dist/async.mjs +5 -20
- package/dist/async.mjs.map +2 -2
- package/dist/build.cjs +113 -64
- package/dist/build.cjs.map +2 -2
- package/dist/build.d.ts +9 -7
- package/dist/build.mjs +110 -63
- package/dist/build.mjs.map +2 -2
- package/dist/cli.d.mts +12 -0
- package/dist/cli.mjs +266 -0
- package/dist/cli.mjs.map +6 -0
- package/dist/files.cjs +5 -3
- package/dist/files.cjs.map +1 -1
- package/dist/files.d.ts +2 -1
- package/dist/files.mjs +11 -4
- package/dist/files.mjs.map +1 -1
- package/dist/fork.cjs +30 -12
- package/dist/fork.cjs.map +1 -1
- package/dist/fork.d.ts +10 -0
- package/dist/fork.mjs +31 -13
- package/dist/fork.mjs.map +1 -1
- package/dist/helpers.cjs +32 -13
- package/dist/helpers.cjs.map +2 -2
- package/dist/helpers.d.ts +12 -0
- package/dist/helpers.mjs +37 -14
- package/dist/helpers.mjs.map +2 -2
- package/dist/index.cjs +5 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.mjs +4 -1
- package/dist/index.mjs.map +1 -1
- package/dist/logging/emit.cjs +4 -4
- package/dist/logging/emit.cjs.map +1 -1
- package/dist/logging/emit.mjs +4 -4
- package/dist/logging/emit.mjs.map +1 -1
- package/dist/logging/logger.cjs +43 -2
- package/dist/logging/logger.cjs.map +1 -1
- package/dist/logging/logger.d.ts +36 -3
- package/dist/logging/logger.mjs +43 -3
- package/dist/logging/logger.mjs.map +1 -1
- package/dist/logging/options.cjs +8 -12
- package/dist/logging/options.cjs.map +1 -1
- package/dist/logging/options.d.ts +44 -1
- package/dist/logging/options.mjs +8 -12
- package/dist/logging/options.mjs.map +1 -1
- package/dist/logging.cjs +14 -3
- package/dist/logging.cjs.map +1 -1
- package/dist/logging.d.ts +2 -0
- package/dist/logging.mjs +13 -3
- package/dist/logging.mjs.map +1 -1
- package/dist/plugs/build.cjs +63 -0
- package/dist/plugs/build.cjs.map +6 -0
- package/dist/plugs/build.d.ts +13 -0
- package/dist/plugs/build.mjs +37 -0
- package/dist/plugs/build.mjs.map +6 -0
- package/dist/plugs/debug.cjs +7 -9
- package/dist/plugs/debug.cjs.map +1 -1
- package/dist/plugs/debug.mjs +8 -10
- package/dist/plugs/debug.mjs.map +1 -1
- package/dist/types.cjs +12 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +35 -9
- package/dist/types.mjs +5 -0
- package/dist/types.mjs.map +2 -2
- package/dist/utils/diff.cjs +1 -4
- package/dist/utils/diff.cjs.map +1 -1
- package/dist/utils/diff.mjs +1 -4
- package/dist/utils/diff.mjs.map +1 -1
- package/dist/utils/exec.cjs +5 -12
- package/dist/utils/exec.cjs.map +2 -2
- package/dist/utils/exec.d.ts +0 -2
- package/dist/utils/exec.mjs +6 -13
- package/dist/utils/exec.mjs.map +1 -1
- package/dist/utils/{types.cjs → singleton.cjs} +14 -13
- package/dist/utils/singleton.cjs.map +6 -0
- package/dist/utils/singleton.d.ts +12 -0
- package/dist/utils/singleton.mjs +13 -0
- package/dist/utils/singleton.mjs.map +6 -0
- package/dist/utils.cjs +2 -2
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +7 -9
- package/src/asserts.ts +10 -12
- package/src/async.ts +6 -29
- package/src/build.ts +169 -106
- package/{extra/plug.mts → src/cli.mts} +115 -141
- package/src/files.ts +14 -6
- package/src/fork.ts +42 -16
- package/src/helpers.ts +56 -5
- package/src/index.ts +2 -1
- package/src/logging/emit.ts +4 -4
- package/src/logging/logger.ts +60 -7
- package/src/logging/options.ts +9 -14
- package/src/logging.ts +20 -5
- package/src/plugs/build.ts +45 -0
- package/src/plugs/debug.ts +10 -9
- package/src/types.ts +54 -23
- package/src/utils/diff.ts +1 -6
- package/src/utils/exec.ts +6 -20
- package/src/utils/singleton.ts +19 -0
- package/src/utils.ts +1 -1
- package/cli/plug.mjs +0 -1385
- package/cli/ts-loader.mjs +0 -275
- package/cli/tsrun.mjs +0 -1204
- package/dist/utils/types.cjs.map +0 -6
- package/dist/utils/types.d.ts +0 -4
- package/dist/utils/types.mjs +0 -12
- package/dist/utils/types.mjs.map +0 -6
- package/extra/ts-loader.mts +0 -546
- package/extra/tsrun.mts +0 -127
- package/extra/utils.ts +0 -150
- package/src/utils/types.ts +0 -11
package/cli/ts-loader.mjs
DELETED
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
// ts-loader.mts
|
|
2
|
-
import _fs2 from "node:fs";
|
|
3
|
-
import _module from "node:module";
|
|
4
|
-
import _path from "node:path";
|
|
5
|
-
import _url from "node:url";
|
|
6
|
-
import _util from "node:util";
|
|
7
|
-
import _esbuild from "esbuild";
|
|
8
|
-
|
|
9
|
-
// utils.ts
|
|
10
|
-
import _fs from "node:fs";
|
|
11
|
-
var $rst = process.stdout.isTTY ? "\x1B[0m" : "";
|
|
12
|
-
var $und = process.stdout.isTTY ? "\x1B[4m" : "";
|
|
13
|
-
var $gry = process.stdout.isTTY ? "\x1B[38;5;240m" : "";
|
|
14
|
-
var $blu = process.stdout.isTTY ? "\x1B[38;5;69m" : "";
|
|
15
|
-
var $wht = process.stdout.isTTY ? "\x1B[1;38;5;255m" : "";
|
|
16
|
-
var $tsk = process.stdout.isTTY ? "\x1B[38;5;141m" : "";
|
|
17
|
-
function isFile(path) {
|
|
18
|
-
try {
|
|
19
|
-
return _fs.statSync(path).isFile();
|
|
20
|
-
} catch (error) {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function isDirectory(path) {
|
|
25
|
-
try {
|
|
26
|
-
return _fs.statSync(path).isDirectory();
|
|
27
|
-
} catch (error) {
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// ts-loader.mts
|
|
33
|
-
var CJS = "commonjs";
|
|
34
|
-
var ESM = "module";
|
|
35
|
-
var _debugLog = _util.debuglog("plug:ts-loader");
|
|
36
|
-
var _debug = _debugLog.enabled;
|
|
37
|
-
function _log(type, arg, ...args) {
|
|
38
|
-
if (!_debug)
|
|
39
|
-
return;
|
|
40
|
-
const t = type === ESM ? "esm" : type === CJS ? "cjs" : "---";
|
|
41
|
-
_debugLog(`[${t}] ${arg}`, ...args);
|
|
42
|
-
}
|
|
43
|
-
function _throw(type, message, options = {}) {
|
|
44
|
-
const t = type === ESM ? "esm" : type === CJS ? "cjs" : "---";
|
|
45
|
-
const prefix = `[ts-loader|${t}|pid=${process.pid}]`;
|
|
46
|
-
const { start = _throw, ...extra } = options;
|
|
47
|
-
const error = new Error(`${prefix} ${message}`);
|
|
48
|
-
Error.captureStackTrace(error, start);
|
|
49
|
-
Object.assign(error, extra);
|
|
50
|
-
throw error;
|
|
51
|
-
}
|
|
52
|
-
function _checkType(type) {
|
|
53
|
-
if (type === CJS)
|
|
54
|
-
return CJS;
|
|
55
|
-
if (type === ESM)
|
|
56
|
-
return ESM;
|
|
57
|
-
_throw(null, `Invalid type "${process.env.__TS_LOADER_FORCE_TYPE}"`);
|
|
58
|
-
}
|
|
59
|
-
var _type = (() => {
|
|
60
|
-
if (process.env.__TS_LOADER_FORCE_TYPE) {
|
|
61
|
-
const type = process.env.__TS_LOADER_FORCE_TYPE;
|
|
62
|
-
_log(null, `Forcing type to "${type}" from environment`);
|
|
63
|
-
return _checkType(type);
|
|
64
|
-
}
|
|
65
|
-
const findType = (directory) => {
|
|
66
|
-
const packageFile = _path.join(directory, "package.json");
|
|
67
|
-
try {
|
|
68
|
-
const packageData = _fs2.readFileSync(packageFile, "utf-8");
|
|
69
|
-
const packageJson = JSON.parse(packageData);
|
|
70
|
-
const packageType = packageJson.type;
|
|
71
|
-
switch (packageType) {
|
|
72
|
-
case void 0:
|
|
73
|
-
_log(null, `File "${packageFile}" does not declare a default type`);
|
|
74
|
-
return CJS;
|
|
75
|
-
case CJS:
|
|
76
|
-
case ESM:
|
|
77
|
-
_log(null, `File "${packageFile}" declares type as "${CJS}"`);
|
|
78
|
-
return packageType;
|
|
79
|
-
default:
|
|
80
|
-
_log(null, `File "${packageFile}" specifies unknown type "${packageType}"`);
|
|
81
|
-
return CJS;
|
|
82
|
-
}
|
|
83
|
-
} catch (cause) {
|
|
84
|
-
if (cause.code !== "ENOENT" && cause.code !== "EISDIR") {
|
|
85
|
-
_throw(null, `Unable to read or parse "${packageFile}"`, { cause, start: findType });
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
const parent = _path.dirname(directory);
|
|
89
|
-
if (directory !== parent)
|
|
90
|
-
return findType(directory);
|
|
91
|
-
_log(null, `Type defaulted to "${CJS}"`);
|
|
92
|
-
return CJS;
|
|
93
|
-
};
|
|
94
|
-
return findType(process.cwd());
|
|
95
|
-
})();
|
|
96
|
-
var tsLoaderMarker = Symbol.for("plugjs:tsLoader");
|
|
97
|
-
Object.defineProperty(globalThis, tsLoaderMarker, {
|
|
98
|
-
set(type) {
|
|
99
|
-
_log(null, `Setting type to "${type}"`);
|
|
100
|
-
process.env.__TS_LOADER_FORCE_TYPE = _type = _checkType(type);
|
|
101
|
-
},
|
|
102
|
-
get() {
|
|
103
|
-
return _type;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
function _esbReport(kind, messages = []) {
|
|
107
|
-
const output = process.stderr;
|
|
108
|
-
const options = { color: !!output.isTTY, terminalWidth: output.columns || 80 };
|
|
109
|
-
const array = _esbuild.formatMessagesSync(messages, { kind, ...options });
|
|
110
|
-
array.forEach((message) => output.write(`${message}
|
|
111
|
-
`));
|
|
112
|
-
}
|
|
113
|
-
function _esbTranpile(filename, type) {
|
|
114
|
-
_log(type, `Transpiling "${filename}`);
|
|
115
|
-
const [format, __fileurl] = type === ESM ? ["esm", "import.meta.url"] : ["cjs", "__filename"];
|
|
116
|
-
const options = {
|
|
117
|
-
sourcefile: filename,
|
|
118
|
-
// the original filename we're parsing
|
|
119
|
-
format,
|
|
120
|
-
// what are we actually transpiling to???
|
|
121
|
-
loader: "ts",
|
|
122
|
-
// the format is always "typescript"
|
|
123
|
-
sourcemap: "inline",
|
|
124
|
-
// always inline source maps
|
|
125
|
-
sourcesContent: false,
|
|
126
|
-
// do not include sources content in sourcemap
|
|
127
|
-
platform: "node",
|
|
128
|
-
// d'oh! :-)
|
|
129
|
-
minifyWhitespace: true,
|
|
130
|
-
// https://github.com/evanw/esbuild/releases/tag/v0.16.14
|
|
131
|
-
logLevel: "silent",
|
|
132
|
-
// catching those in our _esbReport below
|
|
133
|
-
target: `node${process.versions["node"]}`,
|
|
134
|
-
// target _this_ version
|
|
135
|
-
define: { __fileurl }
|
|
136
|
-
// from "globals.d.ts"
|
|
137
|
-
};
|
|
138
|
-
if (_debug) {
|
|
139
|
-
if (format === "esm") {
|
|
140
|
-
options.banner = `;(await import('node:util')).debuglog('plug:ts-loader')('[esm] Loaded "%s"', ${__fileurl});`;
|
|
141
|
-
} else if (format === "cjs") {
|
|
142
|
-
options.banner = `;require('node:util').debuglog('plug:ts-loader')('[cjs] Loaded "%s"', ${__fileurl});`;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
let result;
|
|
146
|
-
try {
|
|
147
|
-
const source = _fs2.readFileSync(filename, "utf-8");
|
|
148
|
-
result = _esbuild.transformSync(source, options);
|
|
149
|
-
} catch (cause) {
|
|
150
|
-
_esbReport("error", cause.errors);
|
|
151
|
-
_esbReport("warning", cause.warnings);
|
|
152
|
-
_throw(type, `ESBuild error transpiling "${filename}"`, { cause, start: _esbTranpile });
|
|
153
|
-
}
|
|
154
|
-
if (_debug)
|
|
155
|
-
_esbReport("warning", result.warnings);
|
|
156
|
-
return result.code;
|
|
157
|
-
}
|
|
158
|
-
var resolve = (specifier, context, nextResolve) => {
|
|
159
|
-
_log(ESM, `Resolving "${specifier}" from "${context.parentURL}"`);
|
|
160
|
-
if (!specifier.match(/^\.\.?\//))
|
|
161
|
-
return nextResolve(specifier, context);
|
|
162
|
-
const parentURL = context.parentURL;
|
|
163
|
-
if (!parentURL)
|
|
164
|
-
return nextResolve(specifier, context);
|
|
165
|
-
if (!parentURL.startsWith("file:"))
|
|
166
|
-
return nextResolve(specifier, context);
|
|
167
|
-
if (!parentURL.match(/\.m?ts$/))
|
|
168
|
-
return nextResolve(specifier, context);
|
|
169
|
-
const url = new URL(specifier, parentURL).href;
|
|
170
|
-
const path = _url.fileURLToPath(url);
|
|
171
|
-
if (isFile(path)) {
|
|
172
|
-
_log(ESM, `Positive match for "${specifier}" as "${path}" (1)`);
|
|
173
|
-
return nextResolve(specifier, context);
|
|
174
|
-
}
|
|
175
|
-
const match = specifier.match(/(.*)(\.[mc]?js$)/);
|
|
176
|
-
if (match) {
|
|
177
|
-
const [, base, ext] = match;
|
|
178
|
-
const tsspecifier = base + ext.replace("js", "ts");
|
|
179
|
-
const tsurl = new URL(tsspecifier, parentURL).href;
|
|
180
|
-
const tspath = _url.fileURLToPath(tsurl);
|
|
181
|
-
if (isFile(tspath)) {
|
|
182
|
-
_log(ESM, `Positive match for "${specifier}" as "${tspath}" (2)`);
|
|
183
|
-
return nextResolve(tsspecifier, context);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
if (isFile(`${path}.ts`)) {
|
|
187
|
-
_log(ESM, `Positive match for "${specifier}.ts" as "${path}.ts" (3)`);
|
|
188
|
-
return nextResolve(`${specifier}.ts`, context);
|
|
189
|
-
}
|
|
190
|
-
if (isDirectory(path)) {
|
|
191
|
-
const file = _path.resolve(path, "index.ts");
|
|
192
|
-
if (isFile(file)) {
|
|
193
|
-
_log(ESM, `Positive match for "${specifier}" as "${file}" (4)`);
|
|
194
|
-
const spec = _url.pathToFileURL(file).pathname;
|
|
195
|
-
return nextResolve(spec, context);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return nextResolve(specifier, context);
|
|
199
|
-
};
|
|
200
|
-
var load = (url, context, nextLoad) => {
|
|
201
|
-
_log(ESM, `Attempting to load "${url}"`);
|
|
202
|
-
if (!url.startsWith("file:"))
|
|
203
|
-
return nextLoad(url, context);
|
|
204
|
-
const ext = url.match(/\.[cm]?ts$/)?.[0];
|
|
205
|
-
if (!ext)
|
|
206
|
-
return nextLoad(url, context);
|
|
207
|
-
if (ext === ".cts") {
|
|
208
|
-
if (_debug) {
|
|
209
|
-
_log(null, `Switching type from "module" to "commonjs" for "${url}"`);
|
|
210
|
-
_log(null, "Please note that named import WILL NOT WORK in this case, as Node.js performs a");
|
|
211
|
-
_log(null, "static analisys on the CommonJS source code, and this file is transpiled from.");
|
|
212
|
-
_log(null, "TypeScript to CommonJS dynamically.");
|
|
213
|
-
}
|
|
214
|
-
return { format: CJS, shortCircuit: true };
|
|
215
|
-
}
|
|
216
|
-
const filename = _url.fileURLToPath(url);
|
|
217
|
-
if (ext === ".ts") {
|
|
218
|
-
if (_type === CJS) {
|
|
219
|
-
if (_debug) {
|
|
220
|
-
_log(null, `Switching type from "module" to "commonjs" for "${url}"`);
|
|
221
|
-
_log(null, "Please note that named import WILL NOT WORK in this case, as Node.js performs a");
|
|
222
|
-
_log(null, "static analisys on the CommonJS source code, and this file is transpiled from.");
|
|
223
|
-
_log(null, "TypeScript to CommonJS dynamically.");
|
|
224
|
-
}
|
|
225
|
-
return { format: CJS, shortCircuit: true };
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
const source = _esbTranpile(filename, ESM);
|
|
229
|
-
return { source, format: ESM, shortCircuit: true };
|
|
230
|
-
};
|
|
231
|
-
var loader = (module, filename) => {
|
|
232
|
-
_log(CJS, `Attempting to load "${filename}"`);
|
|
233
|
-
const ext = _path.extname(filename);
|
|
234
|
-
if (ext === ".ts") {
|
|
235
|
-
if (_type === ESM) {
|
|
236
|
-
_throw(CJS, `Must use import to load ES Module: ${filename}`, { code: "ERR_REQUIRE_ESM" });
|
|
237
|
-
}
|
|
238
|
-
} else if (ext !== ".cts") {
|
|
239
|
-
_throw(CJS, `Unsupported filename "${filename}"`);
|
|
240
|
-
}
|
|
241
|
-
const source = _esbTranpile(filename, CJS);
|
|
242
|
-
try {
|
|
243
|
-
module._compile(source, filename);
|
|
244
|
-
} catch (cause) {
|
|
245
|
-
console.error(`Error compiling module "${filename}"`, cause);
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
_module._extensions[".ts"] = _module._extensions[".cts"] = loader;
|
|
249
|
-
var _oldResolveFilename = _module._resolveFilename;
|
|
250
|
-
_module._resolveFilename = function(request, parent, ...args) {
|
|
251
|
-
try {
|
|
252
|
-
return _oldResolveFilename.call(this, request, parent, ...args);
|
|
253
|
-
} catch (error) {
|
|
254
|
-
if (error.code !== "MODULE_NOT_FOUND")
|
|
255
|
-
throw error;
|
|
256
|
-
const match = request.match(/(.*)(\.[mc]?js$)/);
|
|
257
|
-
if (parent && match) {
|
|
258
|
-
const [, name, ext] = match;
|
|
259
|
-
const tsrequest = name + ext.replace("js", "ts");
|
|
260
|
-
try {
|
|
261
|
-
const result = _oldResolveFilename.call(this, tsrequest, parent, ...args);
|
|
262
|
-
_log(CJS, `Resolution for "${request}" intercepted as "${tsrequest}`);
|
|
263
|
-
return result;
|
|
264
|
-
} catch (discard) {
|
|
265
|
-
throw error;
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
throw error;
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
export {
|
|
272
|
-
load,
|
|
273
|
-
resolve
|
|
274
|
-
};
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vZXh0cmEvdHMtbG9hZGVyLm10cyIsICIuLi9leHRyYS91dGlscy50cyJdLAogICJtYXBwaW5ncyI6ICI7QUFxQkEsT0FBT0EsVUFBUztBQUNoQixPQUFPLGFBQWE7QUFDcEIsT0FBTyxXQUFXO0FBQ2xCLE9BQU8sVUFBVTtBQUNqQixPQUFPLFdBQVc7QUFHbEIsT0FBTyxjQUFjOzs7QUMxQnJCLE9BQU8sU0FBUztBQVNULElBQU0sT0FBTyxRQUFRLE9BQU8sUUFBUSxZQUFjO0FBQ2xELElBQU0sT0FBTyxRQUFRLE9BQU8sUUFBUSxZQUFjO0FBQ2xELElBQU0sT0FBTyxRQUFRLE9BQU8sUUFBUSxtQkFBcUI7QUFDekQsSUFBTSxPQUFPLFFBQVEsT0FBTyxRQUFRLGtCQUFvQjtBQUN4RCxJQUFNLE9BQU8sUUFBUSxPQUFPLFFBQVEscUJBQXVCO0FBQzNELElBQU0sT0FBTyxRQUFRLE9BQU8sUUFBUSxtQkFBcUI7QUF5QnpELFNBQVMsT0FBTyxNQUF1QjtBQUM1QyxNQUFJO0FBQ0YsV0FBTyxJQUFJLFNBQVMsSUFBSSxFQUFFLE9BQU87QUFBQSxFQUNuQyxTQUFTLE9BQVA7QUFDQSxXQUFPO0FBQUEsRUFDVDtBQUNGO0FBR08sU0FBUyxZQUFZLE1BQXVCO0FBQ2pELE1BQUk7QUFDRixXQUFPLElBQUksU0FBUyxJQUFJLEVBQUUsWUFBWTtBQUFBLEVBQ3hDLFNBQVMsT0FBUDtBQUNBLFdBQU87QUFBQSxFQUNUO0FBQ0Y7OztBRGhCQSxJQUFNLE1BQU07QUFFWixJQUFNLE1BQU07QUFHWixJQUFNLFlBQVksTUFBTSxTQUFTLGdCQUFnQjtBQUNqRCxJQUFNLFNBQVMsVUFBVTtBQUd6QixTQUFTLEtBQUssTUFBbUIsUUFBZ0IsTUFBb0I7QUFDbkUsTUFBSSxDQUFFO0FBQVE7QUFFZCxRQUFNLElBQUksU0FBUyxNQUFNLFFBQVEsU0FBUyxNQUFNLFFBQVE7QUFDeEQsWUFBVSxJQUFJLE1BQU0sT0FBTyxHQUFHLElBQUk7QUFDcEM7QUFHQSxTQUFT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
|