punctilio 5.4.8 → 5.4.9

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/README.md CHANGED
@@ -225,6 +225,16 @@ Two caveats before pointing the CLI (or the [pre-commit hook](#pre-commit) below
225
225
 
226
226
  Second, non-breaking spaces (U+00A0) are invisible in source files: they render fine, but they aren’t regular spaces, so Ctrl+F and `grep` matches against the source can miss. Markdown files therefore default to `nbsp` off; pass `--nbsp` (or set `nbsp: true` in config) to opt in. HTML files keep the default of `nbsp` on; pass `--no-nbsp` to keep them ASCII-spaced.
227
227
 
228
+ File handling follows a few rules:
229
+
230
+ - Globs skip `node_modules` and `.git`, and `.punctilioignore` (gitignore syntax) applies to files named explicitly as well as to glob matches, so a hook that passes every staged file by name still honors it.
231
+ - Every glob must match at least one file: a glob that matches nothing is a usage error (exit 2) in every mode, even when another glob matches, so a typo in one pattern can't hide behind the rest; so is an unsupported file extension, which is detected before any file is rewritten. `--stdin-filepath` cannot be combined with file arguments.
232
+ - `--write` follows symlinks and rewrites the target, keeps its permissions, and leaves no temporary file behind on failure.
233
+ - A leading UTF-8 byte order mark is preserved. Markdown front matter (YAML between `---` fences, or TOML between `+++` fences) is passed through untouched.
234
+ - HTML input that begins with `<!doctype` or `<html` is parsed as a complete document, so the doctype, `<head>`, and `<body>` survive; anything else is parsed as a fragment. `--no-fragment` (or `fragment: false`) forces the document parse, and `fragment: true` forces the fragment parse.
235
+ - Config values are type-checked, so a wrong type such as `"nbsp": "false"` or `"skipTags": "code"` exits 2 with a message naming the key.
236
+ - `unified` and the `remark-*` or `rehype-*` packages are optional peers, loaded only for the file type being processed. When one is missing, the CLI exits 2 with the package names and the `npm install` command to run.
237
+
228
238
  ### pre-commit
229
239
 
230
240
  A `.pre-commit-hooks.yaml` ships in the package, so [pre-commit](https://pre-commit.com) users can wire `punctilio` in directly:
@@ -233,7 +243,7 @@ A `.pre-commit-hooks.yaml` ships in the package, so [pre-commit](https://pre-com
233
243
  # .pre-commit-config.yaml
234
244
  repos:
235
245
  - repo: https://github.com/AlexanderMattTurner/punctilio
236
- rev: v5.4.7
246
+ rev: v5.4.8
237
247
  hooks:
238
248
  - id: punctilio # rewrites *.md / *.html in place
239
249
  - id: punctilio-check # or: fail without writing (CI-friendly)
package/dist/cli.d.ts CHANGED
@@ -1,10 +1,15 @@
1
1
  #!/usr/bin/env node
2
+ import { type PeerImporter } from "./peer-dependencies.js";
2
3
  interface CliIO {
3
4
  stdin: AsyncIterable<string | Buffer>;
4
5
  stdout: NodeJS.WritableStream;
5
6
  stderr: NodeJS.WritableStream;
7
+ /** Overrides how optional peer dependencies are imported; tests use it to simulate one being absent. */
8
+ importPeer?: PeerImporter;
6
9
  }
10
+ export declare function atomicWriteFile(path: string, contents: string): Promise<void>;
7
11
  /** Returns exit code: 0 success, 1 `--check` saw changes, 2 usage error. */
8
12
  export declare function runCli(args: string[], io: CliIO): Promise<number>;
13
+ export declare function isMainModule(moduleUrl: string, entryPath: string | undefined): boolean;
9
14
  export {};
10
15
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAuBA,UAAU,KAAK;IACb,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAA;CAC9B;AAkZD,4EAA4E;AAC5E,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBvE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAgBA,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAQzG,UAAU,KAAK;IACb,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAA;IACrC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAA;IAC7B,wGAAwG;IACxG,UAAU,CAAC,EAAE,YAAY,CAAA;CAC1B;AA8ZD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnF;AAwFD,4EAA4E;AAC5E,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBvE;AA8GD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAQtF"}
package/dist/cli.js CHANGED
@@ -1,14 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { createHash } from "node:crypto";
3
3
  import { existsSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
4
- import { readFile, rename, writeFile } from "node:fs/promises";
4
+ import { chmod, readFile, realpath, rename, rm, stat, writeFile } from "node:fs/promises";
5
5
  import { dirname, extname, isAbsolute, join, relative, resolve } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
7
  import { parseArgs } from "node:util";
8
8
  import { cosmiconfig } from "cosmiconfig";
9
9
  import ignore from "ignore";
10
10
  import { glob } from "tinyglobby";
11
- import { HTML_ONLY_OPTION_KEYS, HTML_OPTION_KEYS, MARKDOWN_ONLY_OPTION_KEYS, MARKDOWN_OPTION_KEYS } from "./sink-option-keys.js";
11
+ import { HTML_ONLY_OPTION_KEYS, MARKDOWN_ONLY_OPTION_KEYS } from "./sink-option-keys.js";
12
+ import { loadSinkTransform, MissingPeerDependencyError } from "./peer-dependencies.js";
12
13
  import { PUNCTUATION_STYLES } from "./quotes.js";
13
14
  import { DASH_STYLES } from "./dashes.js";
14
15
  import { assertKnownOptionKeys, omitKeys, stableStringify } from "./utils.js";
@@ -86,7 +87,7 @@ Options:
86
87
  --rule-marker <char> markdown thematic break character (choices: ${RULE_MARKERS.join(", ")})
87
88
  --skip-tag <tag> HTML tag whose contents are left alone (repeatable)
88
89
  --skip-class <class> HTML class name whose elements are skipped (repeatable)
89
- --no-fragment parse input as a full HTML document
90
+ --no-fragment always parse HTML as a full document (default: a full document is detected from a leading <!doctype> or <html>)
90
91
  -h, --help display help for command
91
92
  `;
92
93
  function parseRawArgs(args) {
@@ -173,11 +174,64 @@ function inferFileType(path, override) {
173
174
  return "html";
174
175
  throw new UsageError(`Cannot infer file type from extension "${ext}" for ${path}. Pass --type md|html.`);
175
176
  }
177
+ const BOOLEAN_RULE = {
178
+ expected: "a boolean",
179
+ isValid: (value) => typeof value === "boolean",
180
+ };
181
+ const STRING_ARRAY_RULE = {
182
+ expected: "an array of strings",
183
+ isValid: (value) => Array.isArray(value) && value.every((item) => typeof item === "string"),
184
+ };
185
+ const FUNCTION_RULE = {
186
+ expected: "a function",
187
+ isValid: (value) => typeof value === "function",
188
+ };
189
+ function oneOfRule(choices) {
190
+ return {
191
+ expected: `one of ${choices.join(", ")}`,
192
+ isValid: (value) => typeof value === "string" && choices.includes(value),
193
+ };
194
+ }
195
+ // `satisfies` makes the compiler flag any option key that lacks a rule.
196
+ const CONFIG_VALUE_RULES = {
197
+ symbols: BOOLEAN_RULE,
198
+ collapseSpaces: BOOLEAN_RULE,
199
+ includeArrows: BOOLEAN_RULE,
200
+ fractions: BOOLEAN_RULE,
201
+ degrees: BOOLEAN_RULE,
202
+ superscript: BOOLEAN_RULE,
203
+ ligatures: BOOLEAN_RULE,
204
+ nbsp: BOOLEAN_RULE,
205
+ fragment: BOOLEAN_RULE,
206
+ transformAllElements: BOOLEAN_RULE,
207
+ punctuationStyle: oneOfRule(PUNCTUATION_STYLES),
208
+ dashStyle: oneOfRule(DASH_STYLES),
209
+ emphasisMarker: oneOfRule(EMPHASIS_MARKERS),
210
+ strongMarker: oneOfRule(EMPHASIS_MARKERS),
211
+ bulletMarker: oneOfRule(BULLET_MARKERS),
212
+ ruleMarker: oneOfRule(RULE_MARKERS),
213
+ skipTags: STRING_ARRAY_RULE,
214
+ skipClasses: STRING_ARRAY_RULE,
215
+ shouldSkipText: FUNCTION_RULE,
216
+ };
176
217
  // A config file may legitimately mix markdown-only and HTML-only keys for use
177
218
  // across file types; transformContent strips the keys the sink doesn't accept.
178
- const CLI_CONFIG_KEYS = [
179
- ...new Set([...MARKDOWN_OPTION_KEYS, ...HTML_OPTION_KEYS]),
180
- ];
219
+ const CLI_CONFIG_KEYS = Object.keys(CONFIG_VALUE_RULES);
220
+ // Keys are checked first, so every key present has a rule.
221
+ function assertValidConfig(config, source) {
222
+ if (typeof config !== "object" || config === null || Array.isArray(config)) {
223
+ throw new UsageError(`${source} must contain an object of options.`);
224
+ }
225
+ assertKnownOptionKeys(config, CLI_CONFIG_KEYS, source);
226
+ for (const [key, value] of Object.entries(config)) {
227
+ if (value === undefined)
228
+ continue;
229
+ const rule = CONFIG_VALUE_RULES[key];
230
+ if (!rule.isValid(value)) {
231
+ throw new UsageError(`Invalid value for "${key}" in ${source}: expected ${rule.expected}, got ${JSON.stringify(value)}.`);
232
+ }
233
+ }
234
+ }
181
235
  // Config keys must match library option names (punctuationStyle, skipTags, …),
182
236
  // not the kebab-cased CLI flag names.
183
237
  async function loadConfig(cwd, configPath, disabled) {
@@ -188,10 +242,10 @@ async function loadConfig(cwd, configPath, disabled) {
188
242
  if (!result || result.isEmpty)
189
243
  return {};
190
244
  try {
191
- assertKnownOptionKeys(result.config, CLI_CONFIG_KEYS, `config file ${result.filepath}`);
245
+ assertValidConfig(result.config, `config file ${result.filepath}`);
192
246
  }
193
247
  catch (err) {
194
- throw new UsageError(err.message);
248
+ throw err instanceof UsageError ? err : new UsageError(err.message);
195
249
  }
196
250
  return result.config;
197
251
  }
@@ -211,23 +265,47 @@ function hasGlobMetacharacters(pattern) {
211
265
  function isLiteralPath(pattern, cwd) {
212
266
  return !hasGlobMetacharacters(pattern) || existsSync(resolve(cwd, pattern));
213
267
  }
214
- // Literal positionals pass through untouched so they error loudly if missing and
215
- // bypass ignore rules (naming a file explicitly is an intent to format it).
216
- // Ignore rules and the zero-match warning apply only to glob-expanded paths.
268
+ // Dependency and VCS trees are never project sources; glob expansion skips them.
269
+ const DEFAULT_GLOB_IGNORES = ["**/node_modules/**", "**/.git/**"];
270
+ function isIgnored(file, cwd, ig) {
271
+ const rel = relative(cwd, file);
272
+ return !rel.startsWith("..") && ig.ignores(rel);
273
+ }
274
+ // Literal positionals pass through to the read step so a missing file errors
275
+ // loudly. Ignore rules apply to literals and glob expansions alike, because
276
+ // tools like pre-commit pass every staged file by name. Each glob is expanded
277
+ // on its own, so one that matches nothing is a usage error even when another
278
+ // glob matches; one whose matches are all ignored only warns. Negated globs
279
+ // (`!pattern`) exclude from every other glob rather than matching on their own.
217
280
  async function discoverFiles(patterns, cwd, ig, stderr) {
218
281
  const literals = patterns.filter((p) => isLiteralPath(p, cwd));
219
282
  const globs = patterns.filter((p) => !isLiteralPath(p, cwd));
220
- const expanded = globs.length > 0
221
- ? await glob(globs, { cwd, absolute: true, onlyFiles: true })
222
- : [];
223
- const kept = expanded.filter((file) => {
224
- const rel = relative(cwd, file);
225
- return rel.startsWith("..") || !ig.ignores(rel);
226
- });
227
- if (globs.length > 0 && kept.length === 0) {
228
- stderr.write(`Warning: no files matched: ${globs.join(" ")}\n`);
283
+ const negatedGlobs = globs.filter((pattern) => pattern.startsWith("!"));
284
+ const positiveGlobs = globs.filter((pattern) => !pattern.startsWith("!"));
285
+ const expansions = await Promise.all(positiveGlobs.map(async (pattern) => ({
286
+ pattern,
287
+ files: await glob([pattern, ...negatedGlobs], {
288
+ cwd,
289
+ absolute: true,
290
+ onlyFiles: true,
291
+ ignore: DEFAULT_GLOB_IGNORES,
292
+ }),
293
+ })));
294
+ const unmatched = positiveGlobs.length === 0
295
+ ? globs
296
+ : expansions.filter(({ files }) => files.length === 0).map(({ pattern }) => pattern);
297
+ if (unmatched.length > 0) {
298
+ throw new UsageError(`no files matched: ${unmatched.join(" ")}`);
229
299
  }
230
- return [...new Set([...literals.map((p) => resolve(cwd, p)), ...kept])];
300
+ const keptExpanded = [];
301
+ for (const { pattern, files } of expansions) {
302
+ const kept = files.filter((file) => !isIgnored(file, cwd, ig));
303
+ if (kept.length === 0)
304
+ stderr.write(`Warning: every file matched by ${pattern} is ignored\n`);
305
+ keptExpanded.push(...kept);
306
+ }
307
+ const keptLiterals = literals.map((p) => resolve(cwd, p)).filter((file) => !isIgnored(file, cwd, ig));
308
+ return [...new Set([...keptLiterals, ...keptExpanded])];
231
309
  }
232
310
  const DEFAULT_CACHE_LOCATION = join("node_modules", ".cache", "punctilio", "cache.json");
233
311
  function hashString(s) {
@@ -266,10 +344,21 @@ function saveCache(location, cache) {
266
344
  }
267
345
  // Replace a file's contents atomically: write a sibling temp file, then rename
268
346
  // it over the target so an interrupted run can never leave a half-written file.
269
- async function atomicWriteFile(path, contents) {
270
- const tmpPath = `${path}.${process.pid}.tmp`;
271
- await writeFile(tmpPath, contents);
272
- await rename(tmpPath, path);
347
+ // The temp file replaces the symlink's target (not the link itself) and takes
348
+ // over the original file's permission bits; it is removed if anything fails.
349
+ export async function atomicWriteFile(path, contents) {
350
+ const targetPath = await realpath(path);
351
+ const { mode } = await stat(targetPath);
352
+ const tmpPath = `${targetPath}.${process.pid}.tmp`;
353
+ try {
354
+ await writeFile(tmpPath, contents, { mode: mode & 0o7777 });
355
+ await chmod(tmpPath, mode & 0o7777);
356
+ await rename(tmpPath, targetPath);
357
+ }
358
+ catch (err) {
359
+ await rm(tmpPath, { force: true });
360
+ throw err;
361
+ }
273
362
  }
274
363
  // cwd-relative so the cache survives directory moves and cross-machine syncs.
275
364
  function cacheKey(filePath, cwd) {
@@ -315,30 +404,31 @@ function buildOptions(flags) {
315
404
  }
316
405
  // The merged options may carry keys for the other sink (e.g. emphasisMarker
317
406
  // alongside skipTags from one shared config); strip the inapplicable ones so
318
- // each sink's strict key validation only sees keys it understands. The sinks
319
- // load lazily because they import the optional unified peers, which --help,
320
- // --version and usage errors must not need.
321
- async function transformContent(input, type, opts) {
407
+ // each sink's strict key validation only sees keys it understands.
408
+ async function transformContent(input, type, opts, importPeer) {
322
409
  if (type === "md") {
323
- const { transformMarkdown } = await import("./markdown.js");
410
+ const transformMarkdown = await loadSinkTransform("md", importPeer);
324
411
  return transformMarkdown(input, omitKeys(opts, HTML_ONLY_OPTION_KEYS));
325
412
  }
326
- const { transformHtml } = await import("./html.js");
413
+ const transformHtml = await loadSinkTransform("html", importPeer);
327
414
  return transformHtml(input, omitKeys(opts, MARKDOWN_ONLY_OPTION_KEYS));
328
415
  }
329
- // The unified pipelines emit LF-only output and unconditionally append a
330
- // trailing newline. Restore the source's line-ending style and trailing-newline
331
- // presence so a CRLF file doesn't gain mixed endings (which would make --check
332
- // report a change forever and --write churn on every run).
416
+ async function formatDocument(original, type, opts, importPeer) {
417
+ return matchLineEndings(original, await transformContent(original, type, opts, importPeer));
418
+ }
419
+ // The unified pipelines emit LF-only output. Markdown always ends in a newline;
420
+ // a full HTML document may end without one (its final newline can be dropped
421
+ // or sit inside <body>). Restore the source's line-ending style and
422
+ // trailing-newline presence so a CRLF file doesn't gain mixed endings (which
423
+ // would make --check report a change forever and --write churn on every run).
333
424
  function matchLineEndings(original, formatted) {
334
- // Normalize the LF output back to CRLF when the source used it.
335
- let out = original.includes("\r\n")
425
+ const lineEnding = original.includes("\r\n") ? "\r\n" : "\n";
426
+ const out = lineEnding === "\r\n"
336
427
  ? formatted.replace(/\r\n/g, "\n").replace(/\n/g, "\r\n")
337
428
  : formatted;
338
- // Drop the appended trailing newline if the original had none.
339
- if (!/\n$/.test(original))
340
- out = out.replace(/\r?\n$/, "");
341
- return out;
429
+ if (!original.endsWith("\n"))
430
+ return out.replace(/\r?\n$/, "");
431
+ return out.endsWith("\n") ? out : out + lineEnding;
342
432
  }
343
433
  async function readStdin(stdin) {
344
434
  const chunks = [];
@@ -374,7 +464,7 @@ export async function runCli(args, io) {
374
464
  return await runValidated(buildFlags(values, tokens), positionals, io, version);
375
465
  }
376
466
  catch (err) {
377
- if (err instanceof UsageError) {
467
+ if (err instanceof UsageError || err instanceof MissingPeerDependencyError) {
378
468
  io.stderr.write(`Error: ${err.message}\n`);
379
469
  return 2;
380
470
  }
@@ -395,6 +485,9 @@ async function runValidated(flags, positionals, io, version) {
395
485
  if (check && write) {
396
486
  throw new UsageError("--write and --check are mutually exclusive.");
397
487
  }
488
+ if (flags.stdinFilepath !== undefined && positionals.some((p) => p !== "-")) {
489
+ throw new UsageError("--stdin-filepath cannot be combined with file arguments.");
490
+ }
398
491
  if (readsStdin(positionals, flags)) {
399
492
  if (write) {
400
493
  throw new UsageError("--write cannot be used when reading from stdin.");
@@ -408,7 +501,7 @@ async function runValidated(flags, positionals, io, version) {
408
501
  throw new UsageError("Reading from stdin requires --type md|html or --stdin-filepath <path>.");
409
502
  }
410
503
  const input = await readStdin(io.stdin);
411
- const output = matchLineEndings(input, await transformContent(input, type, opts));
504
+ const output = await formatDocument(input, type, opts, io.importPeer);
412
505
  if (check)
413
506
  return input === output ? 0 : 1;
414
507
  io.stdout.write(output);
@@ -420,6 +513,9 @@ async function runValidated(flags, positionals, io, version) {
420
513
  }
421
514
  const ig = loadIgnore(cwd, flags.ignorePath);
422
515
  const files = await discoverFiles(positionals, cwd, ig, io.stderr);
516
+ // Resolve every file's type up front so an unsupported extension fails
517
+ // before any file has been rewritten.
518
+ const types = files.map((file) => inferFileType(file, flags.type));
423
519
  // In stdout mode every file's content must be produced, so a cache hit
424
520
  // could never skip work; only --write and --check use the cache.
425
521
  const cacheLocation = flags.cache === false || (!write && !check)
@@ -428,8 +524,8 @@ async function runValidated(flags, positionals, io, version) {
428
524
  const cache = cacheLocation ? loadCache(cacheLocation, io.stderr) : undefined;
429
525
  const optionsHash = cache ? hashOptions(opts) : "";
430
526
  let anyChanged = false;
431
- for (const path of files) {
432
- const type = inferFileType(path, flags.type);
527
+ for (const [index, path] of files.entries()) {
528
+ const type = types[index];
433
529
  const original = await readFile(path, "utf8");
434
530
  const key = cache ? cacheKey(path, cwd) : "";
435
531
  if (cache) {
@@ -441,7 +537,7 @@ async function runValidated(flags, positionals, io, version) {
441
537
  entry.version === version)
442
538
  continue;
443
539
  }
444
- const formatted = matchLineEndings(original, await transformContent(original, type, opts));
540
+ const formatted = await formatDocument(original, type, opts, io.importPeer);
445
541
  if (!write && !check) {
446
542
  io.stdout.write(formatted);
447
543
  continue;
@@ -465,9 +561,21 @@ async function runValidated(flags, positionals, io, version) {
465
561
  saveCache(cacheLocation, cache);
466
562
  return check && anyChanged ? 1 : 0;
467
563
  }
564
+ // npm links bins through symlinks, so argv[1] is the link, not the module file.
565
+ export function isMainModule(moduleUrl, entryPath) {
566
+ if (entryPath === undefined)
567
+ return false;
568
+ try {
569
+ return realpathSync(fileURLToPath(moduleUrl)) === realpathSync(entryPath);
570
+ }
571
+ catch (err) {
572
+ if (err.code === "ENOENT")
573
+ return false;
574
+ throw err;
575
+ }
576
+ }
468
577
  /* istanbul ignore next -- entry-point bootstrap; logic is covered via runCli */
469
- // npm runs the bin through a node_modules/.bin symlink, so compare real paths.
470
- if (process.argv[1] && fileURLToPath(import.meta.url) === realpathSync(process.argv[1])) {
578
+ if (isMainModule(import.meta.url, process.argv[1])) {
471
579
  runCli(process.argv.slice(2), {
472
580
  stdin: process.stdin,
473
581
  stdout: process.stdout,
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC1F,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACzF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,MAAuB,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEjC,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AAGxF,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAqB,MAAM,wBAAwB,CAAA;AACzG,OAAO,EAAE,kBAAkB,EAAyB,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAa7E,MAAM,UAAW,SAAQ,KAAK;CAAG;AAEjC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,CAAwC,CAAA;AACxE,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAU,CAAA;AAC5C,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAC/C,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAA;AAE7C,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAA;AACzD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AA+BlD,MAAM,kBAAkB,GAAG;IACzB,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC5B,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9B,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;IACrC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IACzB,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAChC,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC/B,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IACzC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAChC,aAAa,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9B,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IACjC,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChD,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9C,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAChC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE;IACxC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;CAClB,CAAA;AAEV,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;8FAiB4E,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;sEAC7C,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;qDAC9C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;sEAUL,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;6EACpB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;yEAC/B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;4EACtB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;CAKlG,CAAA;AAED,SAAS,YAAY,CAAC,IAAc;IAClC,IAAI,CAAC;QACH,OAAO,SAAS,CAAC;YACf,IAAI;YACJ,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,iEAAiE;QACjE,MAAM,IAAI,UAAU,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC;AAKD,SAAS,WAAW,CAClB,IAAY,EACZ,KAAyB,EACzB,OAAqB;IAErB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,CAAE,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,UAAU,CAClB,WAAW,IAAI,eAAe,KAAK,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9F,CAAA;IACH,CAAC;IACD,OAAO,KAAU,CAAA;AACnB,CAAC;AAED,oFAAoF;AACpF,SAAS,OAAO,CAAC,MAA2B;IAC1C,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACnC,CAAC;AAED,iFAAiF;AACjF,SAAS,aAAa,CAAC,MAAoB,EAAE,KAAwB;IACnE,IAAI,QAA4B,CAAA;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAA;IAClF,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,MAAoB,EAAE,MAAoB;IAC5D,MAAM,KAAK,GAAgB;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAClC,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC;QACvC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC;QACjC,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC;QACvC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;QACpD,gBAAgB,EAAE,WAAW,CAAC,qBAAqB,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,kBAAkB,CAAC;QACrG,SAAS,EAAE,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC;QACzE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,cAAc,EAAE,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;QAC7F,YAAY,EAAE,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,gBAAgB,CAAC;QACvF,YAAY,EAAE,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,cAAc,CAAC;QACrF,UAAU,EAAE,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC;QAC7E,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC;QAC/B,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KACzC,CAAA;IACD,uEAAuE;IACvE,sEAAsE;IACtE,iDAAiD;IACjD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IAC5D,IAAI,SAAS,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,GAAG,SAAS,KAAK,MAAM,CAAA;IAC9D,4EAA4E;IAC5E,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;IAClE,IAAI,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,MAAM,GAAG,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IAC9F,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,QAAmB;IACtD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;IACvC,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAC7C,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAA;IAC3C,MAAM,IAAI,UAAU,CAClB,0CAA0C,GAAG,SAAS,IAAI,wBAAwB,CACnF,CAAA;AACH,CAAC;AAOD,MAAM,YAAY,GAAoB;IACpC,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,SAAS;CAC/C,CAAA;AACD,MAAM,iBAAiB,GAAoB;IACzC,QAAQ,EAAE,qBAAqB;IAC/B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;CAC5F,CAAA;AACD,MAAM,aAAa,GAAoB;IACrC,QAAQ,EAAE,YAAY;IACtB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,UAAU;CAChD,CAAA;AAED,SAAS,SAAS,CAAC,OAA0B;IAC3C,OAAO;QACL,QAAQ,EAAE,UAAU,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;KACzE,CAAA;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,kBAAkB,GAAG;IACzB,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,YAAY;IAC5B,aAAa,EAAE,YAAY;IAC3B,SAAS,EAAE,YAAY;IACvB,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,YAAY;IACzB,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,YAAY;IACtB,oBAAoB,EAAE,YAAY;IAClC,gBAAgB,EAAE,SAAS,CAAC,kBAAkB,CAAC;IAC/C,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC;IACjC,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC;IAC3C,YAAY,EAAE,SAAS,CAAC,gBAAgB,CAAC;IACzC,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC;IACvC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC;IACnC,QAAQ,EAAE,iBAAiB;IAC3B,WAAW,EAAE,iBAAiB;IAC9B,cAAc,EAAE,aAAa;CAC+B,CAAA;AAE9D,8EAA8E;AAC9E,+EAA+E;AAC/E,MAAM,eAAe,GAAsB,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;AAE1E,2DAA2D;AAC3D,SAAS,iBAAiB,CAAC,MAAe,EAAE,MAAc;IACxD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,UAAU,CAAC,GAAG,MAAM,qCAAqC,CAAC,CAAA;IACtE,CAAC;IACD,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,CAAA;IACtD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAQ;QACjC,MAAM,IAAI,GAAoB,kBAAkB,CAAC,GAAuB,CAAC,CAAA;QACzE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,UAAU,CAClB,sBAAsB,GAAG,QAAQ,MAAM,cAAc,IAAI,CAAC,QAAQ,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CACpG,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,sCAAsC;AACtC,KAAK,UAAU,UAAU,CACvB,GAAW,EACX,UAA8B,EAC9B,QAAiB;IAEjB,IAAI,QAAQ;QAAE,OAAO,EAAE,CAAA;IACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACxF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACxC,IAAI,CAAC;QACH,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,CAAE,GAAa,CAAC,OAAO,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAA;AACtB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,UAA8B;IAC7D,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;IACnB,MAAM,SAAS,GAAG,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAA;IAC7D,IAAI,UAAU,CAAC,SAAS,CAAC;QAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IAClE,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAClC,CAAC;AAED,+EAA+E;AAC/E,8EAA8E;AAC9E,+BAA+B;AAC/B,SAAS,aAAa,CAAC,OAAe,EAAE,GAAW;IACjD,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,iFAAiF;AACjF,MAAM,oBAAoB,GAAG,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAA;AAEjE,SAAS,SAAS,CAAC,IAAY,EAAE,GAAW,EAAE,EAAU;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAC/B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;AACjD,CAAC;AAED,6EAA6E;AAC7E,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,4EAA4E;AAC5E,gFAAgF;AAChF,KAAK,UAAU,aAAa,CAC1B,QAAkB,EAClB,GAAW,EACX,EAAU,EACV,MAA6B;IAE7B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IACvE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IACzE,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACpC,OAAO;QACP,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,YAAY,CAAC,EAAE;YAC5C,GAAG;YACH,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,oBAAoB;SAC7B,CAAC;KACH,CAAC,CAAC,CACJ,CAAA;IACD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC;QAC1C,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;IACtF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAAC,qBAAqB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAClE,CAAC;IACD,MAAM,YAAY,GAAa,EAAE,CAAA;IACjC,KAAK,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,eAAe,CAAC,CAAA;QAC7F,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;IAC5B,CAAC;IACD,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;IACrG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AACzD,CAAC;AAaD,MAAM,sBAAsB,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAA;AAExF,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,IAAgB;IACnC,OAAO,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,MAA6B;IAChE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAU,CAAA;QAClE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,CAAC,qBAAqB,QAAQ,4CAA4C,CAAC,CAAA;YACvF,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;QACtB,CAAC;QACD,uEAAuE;QACvE,iEAAiE;QACjE,yDAAyD;QACzD,MAAM,KAAK,GAA+B,EAAE,CAAA;QAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAClC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,CAAA;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,KAAK,CAAC,qBAAqB,QAAQ,qCAAqC,CAAC,CAAA;QAChF,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;IACtB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,KAAY;IAC/C,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACjD,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAChD,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,8EAA8E;AAC9E,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAClE,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAA;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,GAAG,UAAU,IAAI,OAAO,CAAC,GAAG,MAAM,CAAA;IAClD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC,CAAA;QAC3D,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,GAAG,MAAM,CAAC,CAAA;QACnC,MAAM,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QAClC,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,QAAQ,CAAC,QAAgB,EAAE,GAAW;IAC7C,OAAO,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,YAAY,CAAC,KAAkB;IACtC,MAAM,IAAI,GAAe,EAAE,CAAA;IAC3B,IAAI,KAAK,CAAC,gBAAgB;QAAE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAA;IAC1E,IAAI,KAAK,CAAC,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;IACrD,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK;QAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACjD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACpD,IAAI,KAAK,CAAC,cAAc,KAAK,KAAK;QAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;IAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK;QAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;IACtD,IAAI,KAAK,CAAC,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IAC1C,IAAI,KAAK,CAAC,OAAO;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACtC,IAAI,KAAK,CAAC,WAAW;QAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;IAC9C,IAAI,KAAK,CAAC,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IAC1C,IAAI,KAAK,CAAC,cAAc;QAAE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAA;IACpE,IAAI,KAAK,CAAC,YAAY;QAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;IAC9D,IAAI,KAAK,CAAC,YAAY;QAAE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;IAC9D,IAAI,KAAK,CAAC,UAAU;QAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;IACxD,IAAI,KAAK,CAAC,OAAO;QAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAA;IAChD,IAAI,KAAK,CAAC,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAA;IACvD,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK;QAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;IACnD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,4EAA4E;AAC5E,6EAA6E;AAC7E,mEAAmE;AACnE,KAAK,UAAU,gBAAgB,CAC7B,KAAa,EACb,IAAc,EACd,IAAgB,EAChB,UAAoC;IAEpC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACnE,OAAO,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAoB,CAAC,CAAA;IAC3F,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACjE,OAAO,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAgB,CAAC,CAAA;AACvF,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,QAAgB,EAChB,IAAc,EACd,IAAgB,EAChB,UAAoC;IAEpC,OAAO,gBAAgB,CAAC,QAAQ,EAAE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAA;AAC7F,CAAC;AAED,gFAAgF;AAChF,6EAA6E;AAC7E,oEAAoE;AACpE,6EAA6E;AAC7E,8EAA8E;AAC9E,SAAS,gBAAgB,CAAC,QAAgB,EAAE,SAAiB;IAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5D,MAAM,GAAG,GAAG,UAAU,KAAK,MAAM;QAC/B,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;QACzD,CAAC,CAAC,SAAS,CAAA;IACb,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAC9D,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,UAAU,CAAA;AACpD,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAqC;IAC5D,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC/C,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3D,6FAA6F;IAC7F,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,SAAS,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc,EAAE,EAAS;IACpD,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAA;IAE1C,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAC1D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAC1B,OAAO,CAAC,CAAA;QACV,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;YAC/B,OAAO,CAAC,CAAA;QACV,CAAC;QACD,OAAO,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,YAAY,0BAA0B,EAAE,CAAC;YAC3E,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;YAC1C,OAAO,CAAC,CAAA;QACV,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,WAAqB,EAAE,KAAkB;IAC3D,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAC1C,OAAO,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,CAAA;AACtE,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,KAAkB,EAClB,WAAqB,EACrB,EAAS,EACT,OAAe;IAEf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,MAAM,GAAG,MAAM,UAAU,CAC7B,GAAG,EACH,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC3D,KAAK,CAAC,MAAM,KAAK,KAAK,CACvB,CAAA;IACD,MAAM,IAAI,GAAe,EAAE,GAAG,MAAM,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,EAAE,CAAA;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAA;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAA;IAClC,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAA;IACrE,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,UAAU,CAAC,0DAA0D,CAAC,CAAA;IAClF,CAAC;IAED,IAAI,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;QACnC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,UAAU,CAAC,iDAAiD,CAAC,CAAA;QACzE,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAA;QACrD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAA;QACrE,CAAC;QACD,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACpG,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,UAAU,CAAC,wEAAwE,CAAC,CAAA;QAChG,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAA;QACrE,IAAI,KAAK;YAAE,OAAO,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1C,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACvB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC1B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;IAC5C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;IAClE,uEAAuE;IACvE,sCAAsC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAElE,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC;QAC/D,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa,IAAI,sBAAsB,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC7E,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAElD,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QACzB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9B,IACE,KAAK,KAAK,SAAS;gBACnB,KAAK,CAAC,WAAW,KAAK,UAAU,CAAC,QAAQ,CAAC;gBAC1C,KAAK,CAAC,WAAW,KAAK,WAAW;gBACjC,KAAK,CAAC,IAAI,KAAK,IAAI;gBACnB,KAAK,CAAC,OAAO,KAAK,OAAO;gBACzB,SAAQ;QACZ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAA;QAC3E,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;YAC1B,SAAQ;QACV,CAAC;QACD,MAAM,SAAS,GAAG,QAAQ,KAAK,SAAS,CAAA;QACxC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,UAAU,GAAG,IAAI,CAAA;YACjB,IAAI,KAAK,EAAE,CAAC;gBACV,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,IAAI,CAAC,CAAA;YAC9C,CAAC;iBAAM,CAAC;gBACN,MAAM,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBACtC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QACD,IAAI,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;QACvF,CAAC;IACH,CAAC;IAED,IAAI,aAAa,IAAI,KAAK;QAAE,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;IAC3D,OAAO,KAAK,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,SAA6B;IAC3E,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,YAAY,CAAC,SAAS,CAAC,CAAA;IAC3E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAClE,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC;SACC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,IAAI,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACN,CAAC"}
package/dist/html.d.ts CHANGED
@@ -1,14 +1,15 @@
1
1
  import { type RehypePunctilioOptions } from "./rehype.js";
2
- import { HTML_ONLY_OPTION_KEYS, HTML_OPTION_KEYS } from "./sink-option-keys.js";
2
+ export { HTML_ONLY_OPTION_KEYS, HTML_OPTION_KEYS } from "./sink-option-keys.js";
3
3
  export interface HtmlOptions extends RehypePunctilioOptions {
4
4
  /**
5
5
  * Whether to parse the input as an HTML fragment (no implicit `<html>`,
6
6
  * `<head>`, or `<body>` wrapping). Set to `false` to parse a complete
7
- * document. Default: `true`.
7
+ * document. When unset, input that begins with `<!doctype` or `<html`
8
+ * (after optional whitespace and comments) is parsed as a complete
9
+ * document and anything else as a fragment.
8
10
  */
9
11
  fragment?: boolean;
10
12
  }
11
- export { HTML_ONLY_OPTION_KEYS, HTML_OPTION_KEYS };
12
13
  /** @internal */
13
14
  export declare function clearProcessorCache(): void;
14
15
  export declare function transformHtml(input: string, options?: HtmlOptions): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../src/html.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAG/E,MAAM,WAAW,WAAY,SAAQ,sBAAsB;IACzD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAA;AAgBlD,gBAAgB;AAChB,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../src/html.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAI1E,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE/E,MAAM,WAAW,WAAY,SAAQ,sBAAsB;IACzD;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AA6CD,gBAAgB;AAChB,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,MAAM,CAAC,CAGjB"}
package/dist/html.js CHANGED
@@ -1,15 +1,42 @@
1
+ import { Tokenizer } from "parse5";
1
2
  import { unified } from "unified";
2
3
  import rehypeParse from "rehype-parse";
3
4
  import rehypeStringify from "rehype-stringify";
4
5
  import QuickLRU from "quick-lru";
5
6
  import { rehypePunctilio } from "./rehype.js";
6
- import { HTML_ONLY_OPTION_KEYS, HTML_OPTION_KEYS } from "./sink-option-keys.js";
7
- import { assertKnownOptionKeys, stableStringify } from "./utils.js";
8
- export { HTML_ONLY_OPTION_KEYS, HTML_OPTION_KEYS };
9
- function createProcessor(options) {
10
- const { fragment, ...punctilioOptions } = options;
7
+ import { HTML_OPTION_KEYS } from "./sink-option-keys.js";
8
+ import { assertKnownOptionKeys, omitKeys, stableStringify, transformPreservingBom } from "./utils.js";
9
+ export { HTML_ONLY_OPTION_KEYS, HTML_OPTION_KEYS } from "./sink-option-keys.js";
10
+ /** True when the first token that is not whitespace or a comment is a doctype
11
+ * or an `<html>` start tag. Stops tokenizing at that token. */
12
+ function startsFullDocument(input) {
13
+ let isFullDocument;
14
+ // Pausing takes effect after the current token, so a token the tokenizer
15
+ // emits in the same step (a doctype flushed behind text) must not overwrite
16
+ // the first verdict.
17
+ const decide = (verdict) => {
18
+ if (isFullDocument !== undefined)
19
+ return;
20
+ isFullDocument = verdict;
21
+ tokenizer.pause();
22
+ };
23
+ const tokenizer = new Tokenizer({}, {
24
+ onComment: () => { },
25
+ onWhitespaceCharacter: () => { },
26
+ onEof: () => { },
27
+ onDoctype: () => decide(true),
28
+ onStartTag: (token) => decide(token.tagName === "html"),
29
+ onEndTag: () => decide(false),
30
+ onCharacter: () => decide(false),
31
+ onNullCharacter: () => decide(false),
32
+ });
33
+ tokenizer.write(input, true);
34
+ return isFullDocument === true;
35
+ }
36
+ function createProcessor(options, fragment) {
37
+ const punctilioOptions = omitKeys(options, ["fragment"]);
11
38
  return unified()
12
- .use(rehypeParse, { fragment: fragment ?? true })
39
+ .use(rehypeParse, { fragment })
13
40
  .use(rehypePunctilio, punctilioOptions)
14
41
  .use(rehypeStringify);
15
42
  }
@@ -23,20 +50,31 @@ export function clearProcessorCache() {
23
50
  }
24
51
  export async function transformHtml(input, options = {}) {
25
52
  assertKnownOptionKeys(options, HTML_OPTION_KEYS, "transformHtml");
26
- // Function-valued options aren't JSON-serializable, so the cache key
27
- // can't distinguish them. Bypass the cache to avoid returning a
28
- // processor wired to a different shouldSkipText.
29
- if (typeof options.shouldSkipText === "function") {
30
- const result = await createProcessor(options).process(input);
31
- return String(result);
32
- }
33
- const optionsKey = stableStringify(options);
53
+ return transformPreservingBom(input, (text) => processHtml(text, options));
54
+ }
55
+ /** Function-valued options aren't JSON-serializable, so the cache key
56
+ * can't distinguish them; those bypass the cache to avoid returning a
57
+ * processor wired to a different shouldSkipText. */
58
+ function getProcessor(options, fragment) {
59
+ if (typeof options.shouldSkipText === "function")
60
+ return createProcessor(options, fragment);
61
+ const optionsKey = stableStringify({ ...options, fragment });
34
62
  let processor = processorCache.get(optionsKey);
35
63
  if (!processor) {
36
- processor = createProcessor(options);
64
+ processor = createProcessor(options, fragment);
37
65
  processorCache.set(optionsKey, processor);
38
66
  }
39
- const result = await processor.process(input);
40
- return String(result);
67
+ return processor;
68
+ }
69
+ // The HTML parser files whitespace after `</html>` inside <body>. Moving the
70
+ // input's final newline back out keeps repeated runs from adding a newline
71
+ // inside <body> each time.
72
+ const NEWLINE_INSIDE_DOCUMENT_END_RE = /\n(?<documentEnd><\/body><\/html>)$/;
73
+ async function processHtml(input, options) {
74
+ const fragment = options.fragment ?? !startsFullDocument(input);
75
+ const output = String(await getProcessor(options, fragment).process(input));
76
+ if (fragment || !input.endsWith("\n"))
77
+ return output;
78
+ return output.replace(NEWLINE_INSIDE_DOCUMENT_END_RE, "$<documentEnd>\n");
41
79
  }
42
80
  //# sourceMappingURL=html.js.map
package/dist/html.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../src/html.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,WAAW,MAAM,cAAc,CAAA;AACtC,OAAO,eAAe,MAAM,kBAAkB,CAAA;AAC9C,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,eAAe,EAA+B,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC/E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAWnE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,CAAA;AAElD,SAAS,eAAe,CAAC,OAAoB;IAC3C,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,CAAA;IACjD,OAAO,OAAO,EAAE;SACb,GAAG,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC;SAChD,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC;SACtC,GAAG,CAAC,eAAe,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAElC,MAAM,cAAc,GAAG,IAAI,QAAQ,CAA6C;IAC9E,OAAO,EAAE,wBAAwB;CAClC,CAAC,CAAA;AAEF,gBAAgB;AAChB,MAAM,UAAU,mBAAmB;IACjC,cAAc,CAAC,KAAK,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,UAAuB,EAAE;IAEzB,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAA;IAEjE,qEAAqE;IACrE,gEAAgE;IAChE,iDAAiD;IACjD,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC5D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IAE3C,IAAI,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACpC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAA;AACvB,CAAC"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../src/html.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type RemarkPunctilioOptions } from "./remark.js";
2
- import { MARKDOWN_ONLY_OPTION_KEYS, MARKDOWN_OPTION_KEYS } from "./sink-option-keys.js";
2
+ export { MARKDOWN_ONLY_OPTION_KEYS, MARKDOWN_OPTION_KEYS } from "./sink-option-keys.js";
3
3
  /**
4
4
  * Options for `transformMarkdown`. Inherits the Markdown-sink default of
5
5
  * `nbsp: false` from {@link RemarkPunctilioOptions}; pass `nbsp: true` to
@@ -21,7 +21,6 @@ export interface MarkdownOptions extends RemarkPunctilioOptions {
21
21
  /** Thematic break marker. Default: "-" */
22
22
  ruleMarker?: "-" | "*" | "_";
23
23
  }
24
- export { MARKDOWN_ONLY_OPTION_KEYS, MARKDOWN_OPTION_KEYS };
25
24
  /** @internal */
26
25
  export declare function clearProcessorCache(): void;
27
26
  export declare function transformMarkdown(input: string, options?: MarkdownOptions): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAGvF;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,sBAAsB;IAC7D;;;OAGG;IACH,cAAc,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IAExB,yDAAyD;IACzD,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IAE9B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;CAC7B;AAED,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,CAAA;AAoC1D,gBAAgB;AAChB,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAajB"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../src/markdown.ts"],"names":[],"mappings":"AAOA,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAG1E,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAEvF;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,sBAAsB;IAC7D;;;OAGG;IACH,cAAc,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IAExB,yDAAyD;IACzD,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;IAE9B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;CAC7B;AAoCD,gBAAgB;AAChB,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAiDD,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAGjB"}