@vivliostyle/cli 10.2.1 → 10.3.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.
Files changed (45) hide show
  1. package/README.md +7 -4
  2. package/dist/{chunk-CKXFRCPH.js → chunk-7GIJVX4M.js} +143 -11
  3. package/dist/chunk-7GIJVX4M.js.map +1 -0
  4. package/dist/{chunk-BR2V7MHE.js → chunk-C4HQHRXQ.js} +227 -58
  5. package/dist/chunk-C4HQHRXQ.js.map +1 -0
  6. package/dist/{chunk-T2VWLU2I.js → chunk-DBK27BAR.js} +22 -13
  7. package/dist/chunk-DBK27BAR.js.map +1 -0
  8. package/dist/{chunk-E6QVHS6D.js → chunk-ECEGM36O.js} +2 -1
  9. package/dist/chunk-ECEGM36O.js.map +1 -0
  10. package/dist/{chunk-5MEUINC4.js → chunk-ERDN47XG.js} +524 -52
  11. package/dist/chunk-ERDN47XG.js.map +1 -0
  12. package/dist/{chunk-37OLZSNI.js → chunk-LGOHUEEQ.js} +5 -5
  13. package/dist/{chunk-62AC6XGJ.js → chunk-LWMSAGHL.js} +4 -4
  14. package/dist/{chunk-XMCTTVR7.js → chunk-MU7JCDMK.js} +2 -2
  15. package/dist/{chunk-ZEBXHUJX.js → chunk-OAFXM4ES.js} +4 -4
  16. package/dist/chunk-OAFXM4ES.js.map +1 -0
  17. package/dist/{chunk-O3CBPX4R.js → chunk-PYPAYBFL.js} +170 -112
  18. package/dist/chunk-PYPAYBFL.js.map +1 -0
  19. package/dist/cli.js +1 -1
  20. package/dist/commands/build.js +15 -9
  21. package/dist/commands/build.js.map +1 -1
  22. package/dist/commands/create.js +11 -5
  23. package/dist/commands/create.js.map +1 -1
  24. package/dist/commands/init.js +4 -4
  25. package/dist/commands/preview.js +14 -8
  26. package/dist/commands/preview.js.map +1 -1
  27. package/dist/config/schema.d.ts +21152 -21165
  28. package/dist/config/schema.js +2 -2
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.js +17 -11
  31. package/dist/index.js.map +1 -1
  32. package/dist/node-modules.d.ts +3 -1
  33. package/dist/node-modules.js +1 -1
  34. package/dist/vite-adapter.js +6 -6
  35. package/package.json +5 -4
  36. package/dist/chunk-5MEUINC4.js.map +0 -1
  37. package/dist/chunk-BR2V7MHE.js.map +0 -1
  38. package/dist/chunk-CKXFRCPH.js.map +0 -1
  39. package/dist/chunk-E6QVHS6D.js.map +0 -1
  40. package/dist/chunk-O3CBPX4R.js.map +0 -1
  41. package/dist/chunk-T2VWLU2I.js.map +0 -1
  42. package/dist/chunk-ZEBXHUJX.js.map +0 -1
  43. /package/dist/{chunk-37OLZSNI.js.map → chunk-LGOHUEEQ.js.map} +0 -0
  44. /package/dist/{chunk-62AC6XGJ.js.map → chunk-LWMSAGHL.js.map} +0 -0
  45. /package/dist/{chunk-XMCTTVR7.js.map → chunk-MU7JCDMK.js.map} +0 -0
@@ -30,8 +30,8 @@ import {
30
30
  VivliostylePackageMetadata,
31
31
  VivliostyleTemplateMetadata,
32
32
  VivliostyleThemeMetadata
33
- } from "../chunk-CKXFRCPH.js";
34
- import "../chunk-ZEBXHUJX.js";
33
+ } from "../chunk-7GIJVX4M.js";
34
+ import "../chunk-OAFXM4ES.js";
35
35
  import "../chunk-I7BWSAN6.js";
36
36
  export {
37
37
  ArticleEntryConfig,
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as vite from 'vite';
2
2
  import { VivliostyleConfigSchema, ParsedVivliostyleInlineConfig, ThemeSpecifier, VivliostylePackageMetadata, VivliostyleInlineConfig } from './config/schema.js';
3
3
  export { StructuredDocument, StructuredDocumentSection } from './config/schema.js';
4
+ export { Metadata, StringifyMarkdownOptions, VFM, readMetadata } from '@vivliostyle/vfm';
4
5
  export { createVitePlugin } from './vite-adapter.js';
5
6
  import 'stream';
6
- import '@vivliostyle/vfm';
7
7
  import 'unified';
8
8
  import 'valibot';
9
9
 
package/dist/index.js CHANGED
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  createVitePlugin
3
- } from "./chunk-62AC6XGJ.js";
3
+ } from "./chunk-LWMSAGHL.js";
4
4
  import {
5
5
  build
6
- } from "./chunk-5MEUINC4.js";
6
+ } from "./chunk-ERDN47XG.js";
7
7
  import {
8
8
  create
9
- } from "./chunk-O3CBPX4R.js";
9
+ } from "./chunk-PYPAYBFL.js";
10
10
  import {
11
11
  preview
12
- } from "./chunk-37OLZSNI.js";
13
- import "./chunk-XMCTTVR7.js";
14
- import "./chunk-BR2V7MHE.js";
15
- import "./chunk-E6QVHS6D.js";
16
- import "./chunk-T2VWLU2I.js";
12
+ } from "./chunk-LGOHUEEQ.js";
13
+ import "./chunk-MU7JCDMK.js";
14
+ import "./chunk-C4HQHRXQ.js";
15
+ import "./chunk-ECEGM36O.js";
16
+ import "./chunk-DBK27BAR.js";
17
17
  import {
18
18
  VivliostyleInlineConfig
19
- } from "./chunk-CKXFRCPH.js";
20
- import "./chunk-ZEBXHUJX.js";
19
+ } from "./chunk-7GIJVX4M.js";
20
+ import "./chunk-OAFXM4ES.js";
21
21
  import "./chunk-I7BWSAN6.js";
22
22
 
23
23
  // src/index.ts
@@ -29,6 +29,10 @@ function defineConfig(config) {
29
29
  }
30
30
 
31
31
  // src/index.ts
32
+ import {
33
+ VFM,
34
+ readMetadata
35
+ } from "@vivliostyle/vfm";
32
36
  async function build2(options) {
33
37
  const parsed = v.parse(VivliostyleInlineConfig, options);
34
38
  return await build(parsed);
@@ -42,10 +46,12 @@ async function create2(options) {
42
46
  return await create(parsed);
43
47
  }
44
48
  export {
49
+ VFM,
45
50
  build2 as build,
46
51
  create2 as create,
47
52
  createVitePlugin,
48
53
  defineConfig,
49
- preview2 as preview
54
+ preview2 as preview,
55
+ readMetadata
50
56
  };
51
57
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/config/define.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { VivliostyleInlineConfig } from './config/schema.js';\nimport { build as _build } from './core/build.js';\nimport { create as _create } from './core/create.js';\nimport { preview as _preview } from './core/preview.js';\nimport type { PublicationManifest as _PublicationManifest } from './schema/publication.schema.js';\n\nexport { defineConfig } from './config/define.js';\nexport type {\n StructuredDocument,\n StructuredDocumentSection,\n VivliostyleConfigSchema,\n VivliostylePackageMetadata,\n} from './config/schema.js';\nexport type { TemplateVariable } from './create-template.js';\nexport { createVitePlugin } from './vite-adapter.js';\n/** @hidden */\nexport type PublicationManifest = _PublicationManifest;\n\n/**\n * Build publication file(s) from the given configuration.\n *\n * ```ts\n * import { build } from '@vivliostyle/cli';\n * build({\n * configPath: './vivliostyle.config.js',\n * logLevel: 'silent',\n * });\n * ```\n *\n * @param options\n * @returns\n */\nexport async function build(options: VivliostyleInlineConfig) {\n const parsed = v.parse(VivliostyleInlineConfig, options);\n return await _build(parsed);\n}\n\n/**\n * Open a browser for previewing the publication.\n *\n * @param options\n * @returns\n */\nexport async function preview(options: VivliostyleInlineConfig) {\n const parsed = v.parse(VivliostyleInlineConfig, options);\n return await _preview(parsed);\n}\n\n/**\n * Scaffold a new Vivliostyle project.\n *\n * @param options\n * @returns\n */\nexport async function create(options: VivliostyleInlineConfig) {\n const parsed = v.parse(VivliostyleInlineConfig, options);\n return await _create(parsed);\n}\n","import { VivliostyleConfigSchema } from './schema.js';\n\n/**\n * Define the configuration for Vivliostyle CLI.\n */\nexport function defineConfig(\n config: VivliostyleConfigSchema,\n): VivliostyleConfigSchema {\n return config;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,YAAY,OAAO;;;ACKZ,SAAS,aACd,QACyB;AACzB,SAAO;AACT;;;ADwBA,eAAsBA,OAAM,SAAkC;AAC5D,QAAM,SAAW,QAAM,yBAAyB,OAAO;AACvD,SAAO,MAAM,MAAO,MAAM;AAC5B;AAQA,eAAsBC,SAAQ,SAAkC;AAC9D,QAAM,SAAW,QAAM,yBAAyB,OAAO;AACvD,SAAO,MAAM,QAAS,MAAM;AAC9B;AAQA,eAAsBC,QAAO,SAAkC;AAC7D,QAAM,SAAW,QAAM,yBAAyB,OAAO;AACvD,SAAO,MAAM,OAAQ,MAAM;AAC7B;","names":["build","preview","create"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/config/define.ts"],"sourcesContent":["import * as v from 'valibot';\nimport { VivliostyleInlineConfig } from './config/schema.js';\nimport { build as _build } from './core/build.js';\nimport { create as _create } from './core/create.js';\nimport { preview as _preview } from './core/preview.js';\nimport type { PublicationManifest as _PublicationManifest } from './schema/publication.schema.js';\n\nexport { defineConfig } from './config/define.js';\nexport {\n VFM,\n readMetadata,\n type Metadata,\n type StringifyMarkdownOptions,\n} from '@vivliostyle/vfm';\nexport type {\n StructuredDocument,\n StructuredDocumentSection,\n VivliostyleConfigSchema,\n VivliostylePackageMetadata,\n} from './config/schema.js';\nexport type { TemplateVariable } from './create-template.js';\nexport { createVitePlugin } from './vite-adapter.js';\n/** @hidden */\nexport type PublicationManifest = _PublicationManifest;\n\n/**\n * Build publication file(s) from the given configuration.\n *\n * ```ts\n * import { build } from '@vivliostyle/cli';\n * build({\n * configPath: './vivliostyle.config.js',\n * logLevel: 'silent',\n * });\n * ```\n *\n * @param options\n * @returns\n */\nexport async function build(options: VivliostyleInlineConfig) {\n const parsed = v.parse(VivliostyleInlineConfig, options);\n return await _build(parsed);\n}\n\n/**\n * Open a browser for previewing the publication.\n *\n * @param options\n * @returns\n */\nexport async function preview(options: VivliostyleInlineConfig) {\n const parsed = v.parse(VivliostyleInlineConfig, options);\n return await _preview(parsed);\n}\n\n/**\n * Scaffold a new Vivliostyle project.\n *\n * @param options\n * @returns\n */\nexport async function create(options: VivliostyleInlineConfig) {\n const parsed = v.parse(VivliostyleInlineConfig, options);\n return await _create(parsed);\n}\n","import { VivliostyleConfigSchema } from './schema.js';\n\n/**\n * Define the configuration for Vivliostyle CLI.\n */\nexport function defineConfig(\n config: VivliostyleConfigSchema,\n): VivliostyleConfigSchema {\n return config;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,YAAY,OAAO;;;ACKZ,SAAS,aACd,QACyB;AACzB,SAAO;AACT;;;ADDA;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AA0BP,eAAsBA,OAAM,SAAkC;AAC5D,QAAM,SAAW,QAAM,yBAAyB,OAAO;AACvD,SAAO,MAAM,MAAO,MAAM;AAC5B;AAQA,eAAsBC,SAAQ,SAAkC;AAC9D,QAAM,SAAW,QAAM,yBAAyB,OAAO;AACvD,SAAO,MAAM,QAAS,MAAM;AAC9B;AAQA,eAAsBC,QAAO,SAAkC;AAC7D,QAAM,SAAW,QAAM,yBAAyB,OAAO;AACvD,SAAO,MAAM,OAAQ,MAAM;AAC7B;","names":["build","preview","create"]}
@@ -1,15 +1,17 @@
1
1
  import * as puppeteer_core from 'puppeteer-core';
2
2
  import * as pdf_lib from 'pdf-lib';
3
3
  import * as press_ready from 'press-ready';
4
+ import * as mupdf from 'mupdf';
4
5
  import * as command_exists from 'command-exists';
5
6
  import * as _puppeteer_browsers from '@puppeteer/browsers';
6
7
  import * as _napi_rs_canvas from '@napi-rs/canvas';
7
8
 
8
- declare const nodeExternalModules: readonly ["@napi-rs/canvas", "@puppeteer/browsers", "command-exists", "press-ready", "pdf-lib", "puppeteer-core"];
9
+ declare const nodeExternalModules: readonly ["@napi-rs/canvas", "@puppeteer/browsers", "command-exists", "mupdf", "press-ready", "pdf-lib", "puppeteer-core"];
9
10
  type NodeExternalModules = {
10
11
  '@napi-rs/canvas': typeof _napi_rs_canvas;
11
12
  '@puppeteer/browsers': typeof _puppeteer_browsers;
12
13
  'command-exists': typeof command_exists;
14
+ mupdf: typeof mupdf;
13
15
  'press-ready': typeof press_ready;
14
16
  'pdf-lib': typeof pdf_lib;
15
17
  'puppeteer-core': typeof puppeteer_core;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  importNodeModule,
3
3
  nodeExternalModules
4
- } from "./chunk-E6QVHS6D.js";
4
+ } from "./chunk-ECEGM36O.js";
5
5
  import "./chunk-I7BWSAN6.js";
6
6
  export {
7
7
  importNodeModule,
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  createVitePlugin
3
- } from "./chunk-62AC6XGJ.js";
4
- import "./chunk-BR2V7MHE.js";
5
- import "./chunk-E6QVHS6D.js";
6
- import "./chunk-T2VWLU2I.js";
7
- import "./chunk-CKXFRCPH.js";
8
- import "./chunk-ZEBXHUJX.js";
3
+ } from "./chunk-LWMSAGHL.js";
4
+ import "./chunk-C4HQHRXQ.js";
5
+ import "./chunk-ECEGM36O.js";
6
+ import "./chunk-DBK27BAR.js";
7
+ import "./chunk-7GIJVX4M.js";
8
+ import "./chunk-OAFXM4ES.js";
9
9
  import "./chunk-I7BWSAN6.js";
10
10
  export {
11
11
  createVitePlugin
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vivliostyle/cli",
3
3
  "description": "Save the pdf file via headless browser and Vivliostyle.",
4
- "version": "10.2.1",
4
+ "version": "10.3.1",
5
5
  "author": "spring_raining <harusamex.com@gmail.com>",
6
6
  "type": "module",
7
7
  "peerDependencies": {
@@ -18,7 +18,7 @@
18
18
  "@puppeteer/browsers": "2.10.5",
19
19
  "@vivliostyle/jsdom": "25.0.1-vivliostyle-cli.1",
20
20
  "@vivliostyle/vfm": "2.5.0",
21
- "@vivliostyle/viewer": "2.39.1",
21
+ "@vivliostyle/viewer": "2.40.0",
22
22
  "ajv": "8.17.1",
23
23
  "ajv-formats": "3.0.1",
24
24
  "archiver": "7.0.1",
@@ -31,7 +31,7 @@
31
31
  "dompurify": "3.2.5",
32
32
  "escape-string-regexp": "5.0.0",
33
33
  "fast-wrap-ansi": "0.1.3",
34
- "fast-xml-parser": "5.2.1",
34
+ "fast-xml-parser": "5.3.4",
35
35
  "fs-extra": "11.2.0",
36
36
  "github-slugger": "2.0.0",
37
37
  "handlebars": "4.7.8",
@@ -39,6 +39,7 @@
39
39
  "hastscript": "9.0.1",
40
40
  "lcid": "5.0.0",
41
41
  "mime-types": "3.0.1",
42
+ "mupdf": "1.26.4",
42
43
  "node-fetch-native": "1.6.7",
43
44
  "node-stream-zip": "1.15.0",
44
45
  "npm-package-arg": "12.0.2",
@@ -95,7 +96,7 @@
95
96
  "husky": "9.1.7",
96
97
  "json-schema-to-typescript": "15.0.4",
97
98
  "memfs": "4.17.0",
98
- "pnpm": "10.25.0",
99
+ "pnpm": "10.28.2",
99
100
  "prettier": "3.5.3",
100
101
  "prettier-plugin-astro": "0.14.1",
101
102
  "pretty-quick": "4.1.1",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/core/build.ts","../src/container.ts","../src/output/pdf.ts","../src/output/pdf-postprocess.ts"],"sourcesContent":["import { pathToFileURL } from 'node:url';\nimport terminalLink from 'terminal-link';\nimport upath from 'upath';\nimport { type PreviewServer, build as viteBuild } from 'vite';\nimport { cyan, gray } from 'yoctocolors';\nimport { setupConfigFromFlags } from '../commands/cli-flags.js';\nimport { loadVivliostyleConfig, warnDeprecatedConfig } from '../config/load.js';\nimport { mergeConfig, mergeInlineConfig } from '../config/merge.js';\nimport { isWebPubConfig, resolveTaskConfig } from '../config/resolve.js';\nimport type { ParsedVivliostyleInlineConfig } from '../config/schema.js';\nimport { resolveViteConfig } from '../config/vite.js';\nimport { buildPDFWithContainer } from '../container.js';\nimport { isUnicodeSupported, Logger, randomBookSymbol } from '../logger.js';\nimport { buildPDF } from '../output/pdf.js';\nimport { buildWebPublication } from '../output/webbook.js';\nimport { copyAssets } from '../processor/asset.js';\nimport {\n cleanupWorkspace,\n compile,\n prepareThemeDirectory,\n} from '../processor/compile.js';\nimport { createViteServer } from '../server.js';\nimport { cwd, runExitHandlers } from '../util.js';\n\nexport async function build(\n inlineConfig: ParsedVivliostyleInlineConfig,\n { containerForkMode = false }: { containerForkMode?: boolean } = {},\n) {\n Logger.setLogOptions(inlineConfig);\n if (containerForkMode) {\n Logger.setLogPrefix(gray('[Docker]'));\n }\n Logger.debug('build > inlineConfig %O', inlineConfig);\n\n let vivliostyleConfig =\n (await loadVivliostyleConfig(inlineConfig)) ??\n setupConfigFromFlags(inlineConfig);\n warnDeprecatedConfig(vivliostyleConfig);\n vivliostyleConfig = mergeInlineConfig(vivliostyleConfig, {\n ...inlineConfig,\n quick: false,\n });\n const { inlineOptions } = vivliostyleConfig;\n Logger.debug('build > vivliostyleConfig %O', vivliostyleConfig);\n\n for (let [i, task] of vivliostyleConfig.tasks.entries()) {\n using _ = Logger.startLogging('Start building');\n\n let config = resolveTaskConfig(task, inlineOptions);\n Logger.debug('build > config %O', config);\n const viteConfig = await resolveViteConfig({\n ...config,\n mode: 'build',\n });\n\n let server: PreviewServer | undefined;\n if (!containerForkMode) {\n // build dependents first\n Logger.debug('build > viteConfig.configFile %s', viteConfig.configFile);\n if (viteConfig.configFile && typeof config.serverRootDir === 'string') {\n using _ = Logger.suspendLogging('Building Vite project');\n await viteBuild({\n configFile: viteConfig.configFile,\n root: config.serverRootDir,\n });\n }\n\n if (!inlineConfig.disableServerStartup) {\n server = await createViteServer({\n config,\n viteConfig,\n inlineConfig,\n mode: 'build',\n });\n\n if (server.httpServer) {\n const addressInfo = server.httpServer.address();\n if (addressInfo && typeof addressInfo !== 'string') {\n const actualPort = addressInfo.port;\n vivliostyleConfig = mergeConfig(vivliostyleConfig, {\n temporaryFilePrefix: config.temporaryFilePrefix,\n server: {\n ...server.config.preview,\n port: actualPort,\n },\n });\n config = resolveTaskConfig(\n vivliostyleConfig.tasks[i],\n vivliostyleConfig.inlineOptions,\n );\n }\n }\n }\n\n // build artifacts\n if (isWebPubConfig(config)) {\n await cleanupWorkspace(config);\n await prepareThemeDirectory(config);\n await compile(config);\n await copyAssets(config);\n }\n }\n\n // generate files\n for (const target of config.outputs) {\n let output: string | null = null;\n const { format } = target;\n if (format === 'pdf') {\n if (!containerForkMode && target.renderMode === 'docker') {\n output = await buildPDFWithContainer({\n target,\n config,\n inlineConfig,\n });\n } else {\n output = await buildPDF({ target, config });\n }\n } else if (format === 'webpub' || format === 'epub') {\n output = await buildWebPublication({ target, config });\n }\n if (output && !containerForkMode) {\n const formattedOutput = cyan(\n upath.relative(inlineConfig.cwd ?? cwd, output),\n );\n Logger.logSuccess(\n `Finished building ${terminalLink(\n formattedOutput,\n pathToFileURL(output).href,\n {\n fallback: () => formattedOutput,\n },\n )}`,\n );\n }\n }\n\n await server?.close();\n }\n\n runExitHandlers();\n if (!containerForkMode) {\n const num = vivliostyleConfig.tasks.flatMap((t) => t.output ?? []).length;\n const symbol = isUnicodeSupported\n ? `${num > 1 ? '📚' : randomBookSymbol} `\n : '';\n Logger.log(`${symbol}Built successfully!`);\n }\n}\n","import process from 'node:process';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { x } from 'tinyexec';\nimport upath from 'upath';\nimport type { PdfOutput, ResolvedTaskConfig } from './config/resolve.js';\nimport type { ParsedVivliostyleInlineConfig } from './config/schema.js';\nimport { CONTAINER_LOCAL_HOSTNAME, CONTAINER_ROOT_DIR } from './const.js';\nimport { Logger } from './logger.js';\nimport { importNodeModule } from './node-modules.js';\nimport { getSourceUrl } from './server.js';\nimport { exec, isValidUri, pathEquals } from './util.js';\n\nexport function toContainerPath(urlOrAbsPath: string): string {\n if (isValidUri(urlOrAbsPath)) {\n if (urlOrAbsPath.toLowerCase().startsWith('file')) {\n return pathToFileURL(\n upath.posix.join(\n CONTAINER_ROOT_DIR,\n upath.toUnix(fileURLToPath(urlOrAbsPath)).replace(/^\\w:/, ''),\n ),\n ).href;\n } else {\n return urlOrAbsPath;\n }\n }\n return upath.posix.join(\n CONTAINER_ROOT_DIR,\n upath.toUnix(urlOrAbsPath).replace(/^\\w:/, ''),\n );\n}\n\nexport function collectVolumeArgs(mountPoints: string[]): string[] {\n return mountPoints\n .filter((p, i, array) => {\n if (i !== array.indexOf(p)) {\n // duplicated path\n return false;\n }\n let parent = p;\n while (!pathEquals(parent, upath.dirname(parent))) {\n parent = upath.dirname(parent);\n if (array.includes(parent)) {\n // other mount point contains its directory\n return false;\n }\n }\n return true;\n })\n .map((p) => `${p}:${toContainerPath(p)}`);\n}\n\nexport async function runContainer({\n image,\n userVolumeArgs,\n commandArgs,\n entrypoint,\n env,\n workdir,\n}: {\n image: string;\n userVolumeArgs: string[];\n commandArgs: string[];\n entrypoint?: string;\n env?: [string, string][];\n workdir?: string;\n}) {\n const { default: commandExists } = await importNodeModule('command-exists');\n if (!(await commandExists('docker'))) {\n throw new Error(\n `Docker isn't be installed. To use this feature, you'll need to install Docker.`,\n );\n }\n const version = (\n await exec('docker', ['version', '--format', '{{.Server.Version}}'])\n ).stdout;\n const [major, minor] = version.split('.').map(Number);\n if (major < 20 || (major === 20 && minor < 10)) {\n throw new Error(\n `Docker version ${version} is not supported. Please upgrade to Docker 20.10.0 or later.`,\n );\n }\n\n try {\n using _ = Logger.suspendLogging('Launching docker container');\n const args = [\n 'run',\n ...(Logger.isInteractive ? ['-it'] : []),\n '--rm',\n ...(entrypoint ? ['--entrypoint', entrypoint] : []),\n ...(env ? env.flatMap(([k, v]) => ['-e', `${k}=${v}`]) : []),\n ...(process.env.DEBUG\n ? ['-e', `DEBUG=${process.env.DEBUG}`] // escape seems to work well\n : []),\n ...userVolumeArgs.flatMap((arg) => ['-v', arg]),\n ...(workdir ? ['-w', workdir] : []),\n image,\n ...commandArgs,\n ];\n Logger.debug(`docker ${args.join(' ')}`);\n const proc = x('docker', args, {\n throwOnError: true,\n nodeOptions: {\n stdio: Logger.isInteractive ? 'inherit' : undefined,\n },\n });\n if (Logger.isInteractive) {\n await proc;\n } else {\n for await (const line of proc) {\n Logger.log(line);\n }\n }\n } catch (error) {\n throw new Error(\n 'An error occurred on the running container. Please see logs above.',\n );\n }\n}\n\nexport async function buildPDFWithContainer({\n target,\n config,\n inlineConfig,\n}: {\n target: PdfOutput;\n config: ResolvedTaskConfig;\n inlineConfig: ParsedVivliostyleInlineConfig;\n}): Promise<string | null> {\n const sourceUrl = new URL(await getSourceUrl(config));\n if (sourceUrl.origin === config.rootUrl) {\n sourceUrl.hostname = CONTAINER_LOCAL_HOSTNAME;\n }\n const bypassedOption = {\n ...inlineConfig,\n input: {\n format: 'webbook',\n entry: sourceUrl.href,\n },\n output: [\n {\n ...target,\n path: toContainerPath(target.path),\n },\n ],\n host: CONTAINER_LOCAL_HOSTNAME,\n } satisfies ParsedVivliostyleInlineConfig;\n\n await runContainer({\n image: config.image,\n userVolumeArgs: collectVolumeArgs([\n ...(typeof config.serverRootDir === 'string'\n ? [config.serverRootDir]\n : []),\n upath.dirname(target.path),\n ]),\n env: [['VS_CLI_BUILD_PDF_OPTIONS', JSON.stringify(bypassedOption)]],\n commandArgs: ['build'],\n workdir:\n typeof config.serverRootDir === 'string'\n ? toContainerPath(config.serverRootDir)\n : undefined,\n });\n\n return target.path;\n}\n","import fs from 'node:fs';\nimport { URL } from 'node:url';\nimport type { Browser, Page } from 'puppeteer-core';\nimport terminalLink from 'terminal-link';\nimport upath from 'upath';\nimport { cyan, gray, green, red } from 'yoctocolors';\nimport { launchPreview } from '../browser.js';\nimport type {\n ManuscriptEntry,\n PdfOutput,\n ResolvedTaskConfig,\n} from '../config/resolve.js';\nimport type { Meta, Payload, TOCItem } from '../global-viewer.js';\nimport { Logger } from '../logger.js';\nimport { getViewerFullUrl } from '../server.js';\nimport { pathEquals } from '../util.js';\nimport { type PageSizeData, PostProcess } from './pdf-postprocess.js';\n\nexport async function buildPDF({\n target,\n config,\n}: {\n target: PdfOutput;\n config: ResolvedTaskConfig;\n}): Promise<string | null> {\n Logger.logUpdate(`Launching PDF build environment`);\n\n const viewerFullUrl = await getViewerFullUrl(config);\n Logger.debug('viewerFullUrl', viewerFullUrl);\n\n let lastEntry: ManuscriptEntry | undefined;\n\n function stringifyEntry(entry: ManuscriptEntry) {\n const formattedSourcePath = cyan(\n entry.source.type === 'file'\n ? upath.relative(config.entryContextDir, entry.source.pathname)\n : entry.source.href,\n );\n return `${terminalLink(\n formattedSourcePath,\n entry.source.type === 'file'\n ? `file://${entry.source.pathname}`\n : entry.source.href,\n {\n fallback: () => formattedSourcePath,\n },\n )} ${entry.title ? gray(entry.title) : ''}`;\n }\n\n function handleEntry(response: any) {\n const entry = config.entries.find((entry): entry is ManuscriptEntry => {\n if (!('source' in entry)) {\n return false;\n }\n const url = new URL(response.url());\n return url.protocol === 'file:'\n ? pathEquals(entry.target, url.pathname)\n : pathEquals(\n upath.relative(config.workspaceDir, entry.target),\n url.pathname.substring(1),\n );\n });\n if (entry) {\n if (!lastEntry) {\n lastEntry = entry;\n Logger.logUpdate(stringifyEntry(entry));\n return;\n }\n Logger.logSuccess(stringifyEntry(lastEntry));\n Logger.startLogging(stringifyEntry(entry));\n lastEntry = entry;\n }\n }\n\n const { browser, page } = await launchPreview({\n mode: 'build',\n url: viewerFullUrl,\n config,\n onBrowserOpen: () => {\n Logger.logUpdate('Building pages');\n },\n onPageOpen: async (page) => {\n page.on('pageerror', (error) => {\n Logger.logError(red((error as Error).message));\n });\n\n page.on('console', (msg) => {\n switch (msg.type()) {\n case 'error':\n if (/\\/vivliostyle-viewer\\.js$/.test(msg.location().url ?? '')) {\n Logger.logError(msg.text());\n throw msg.text();\n }\n return;\n case 'debug':\n if (/time slice/.test(msg.text())) {\n return;\n }\n break;\n }\n if (msg.type() === 'error') {\n Logger.logVerbose(red('console.error()'), msg.text());\n } else {\n Logger.logVerbose(gray(`console.${msg.type()}()`), msg.text());\n }\n });\n\n page.on('response', (response) => {\n Logger.debug(\n gray('viewer:response'),\n green(response.status().toString()),\n response.url(),\n );\n\n handleEntry(response);\n\n if (300 > response.status() && 200 <= response.status()) return;\n // file protocol doesn't have status code\n if (response.url().startsWith('file://') && response.ok()) return;\n\n Logger.logError(red(`${response.status()}`), response.url());\n });\n\n await page.setDefaultTimeout(config.timeout);\n },\n });\n\n const browserVersion = await browser.version();\n Logger.debug(green('success'), `browserVersion=${browserVersion}`);\n\n let remainTime = config.timeout;\n const startTime = Date.now();\n\n await page.waitForNetworkIdle();\n await page.waitForFunction(() => !!window.coreViewer);\n\n const { protocol } = browser as Browser & {\n protocol: 'cdp' | 'webDriverBiDi';\n };\n // Only CDP supports emulateMediaType\n if (protocol === 'cdp') {\n await page.emulateMediaType('print');\n }\n await page.waitForFunction(\n /* v8 ignore next */\n () => window.coreViewer.readyState === 'complete',\n { polling: 1000 },\n );\n\n if (lastEntry) {\n Logger.logSuccess(stringifyEntry(lastEntry));\n }\n\n const pageProgression = await page.evaluate(() =>\n /* v8 ignore next 5 */\n document\n .querySelector('#vivliostyle-viewer-viewport')\n ?.getAttribute('data-vivliostyle-page-progression') === 'rtl'\n ? 'rtl'\n : 'ltr',\n );\n const viewerCoreVersion = await page.evaluate(() =>\n /* v8 ignore next 3 */\n document\n .querySelector('#vivliostyle-menu_settings .version')\n ?.textContent?.replace(/^.*?: (\\d[-+.\\w]+).*$/, '$1'),\n );\n const metadata = await loadMetadata(page);\n const toc = await loadTOC(page);\n const pageSizeData = await loadPageSizeData(page);\n\n remainTime -= Date.now() - startTime;\n if (remainTime <= 0) {\n throw new Error('Typesetting process timed out');\n }\n Logger.debug('Remaining timeout:', remainTime);\n\n Logger.logUpdate('Building PDF');\n\n // For Firefox WebDriver BiDi, explicitly set width and height\n // because page.pdf() doesn't support for the preferCSSPageSize option.\n // Use a sufficiently large value to accommodate user-defined page sizes.\n const dimensionSizeForWebDriverBiDi =\n parseInt(process.env.VS_CLI_PDF_BUILD_PDF_PAGE_SIZE || '', 10) || 3780; // 1000mm\n const pdf = await page.pdf({\n margin: {\n top: 0,\n bottom: 0,\n right: 0,\n left: 0,\n },\n printBackground: true,\n tagged: true,\n // timeout: remainTime,\n ...(protocol === 'webDriverBiDi'\n ? {\n width: dimensionSizeForWebDriverBiDi,\n height: dimensionSizeForWebDriverBiDi,\n }\n : {\n preferCSSPageSize: true,\n }),\n });\n\n await browser.close();\n\n Logger.logUpdate('Processing PDF');\n fs.mkdirSync(upath.dirname(target.path), { recursive: true });\n\n const post = await PostProcess.load(pdf);\n await post.metadata(metadata, {\n pageProgression,\n browserVersion,\n viewerCoreVersion,\n // If custom viewer is set and its version info is not available,\n // there is no guarantee that the default creator option is correct.\n disableCreatorOption: !!config.viewer && !viewerCoreVersion,\n });\n await post.toc(toc);\n await post.setPageBoxes(pageSizeData);\n await post.save(target.path, {\n preflight: target.preflight,\n preflightOption: target.preflightOption,\n image: config.image,\n });\n\n return target.path;\n}\n\nasync function loadMetadata(page: Page): Promise<Meta> {\n return page.evaluate(() => window.coreViewer.getMetadata());\n}\n\n// Show and hide the TOC in order to read its contents.\n// Chromium needs to see the TOC links in the DOM to add\n// the PDF destinations used during postprocessing.\nasync function loadTOC(page: Page): Promise<TOCItem[]> {\n /* v8 ignore start */\n return page.evaluate(\n () =>\n new Promise<TOCItem[]>((resolve) => {\n function listener(payload: Payload) {\n if (payload.a !== 'toc') {\n return;\n }\n window.coreViewer.removeListener('done', listener);\n window.coreViewer.showTOC(false);\n resolve(window.coreViewer.getTOC());\n }\n window.coreViewer.addListener('done', listener);\n window.coreViewer.showTOC(true);\n }),\n );\n /* v8 ignore stop */\n}\n\nasync function loadPageSizeData(page: Page): Promise<PageSizeData[]> {\n /* v8 ignore start */\n return page.evaluate(() => {\n const sizeData: PageSizeData[] = [];\n const pageContainers = document.querySelectorAll(\n '#vivliostyle-viewer-viewport > div > div > div[data-vivliostyle-page-container]',\n ) as NodeListOf<HTMLElement>;\n\n for (const pageContainer of pageContainers) {\n const bleedBox = pageContainer.querySelector(\n 'div[data-vivliostyle-bleed-box]',\n ) as HTMLElement;\n sizeData.push({\n mediaWidth: parseFloat(pageContainer.style.width) * 0.75,\n mediaHeight: parseFloat(pageContainer.style.height) * 0.75,\n bleedOffset: parseFloat(bleedBox?.style.left) * 0.75,\n bleedSize: parseFloat(bleedBox?.style.paddingLeft) * 0.75,\n });\n }\n return sizeData;\n });\n /* v8 ignore stop */\n}\n","import decamelize from 'decamelize';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport type { PDFDocument, PDFRef } from 'pdf-lib';\nimport upath from 'upath';\nimport { v1 as uuid } from 'uuid';\nimport type { PdfOutput, ResolvedTaskConfig } from '../config/resolve.js';\nimport { coreVersion } from '../const.js';\nimport {\n collectVolumeArgs,\n runContainer,\n toContainerPath,\n} from '../container.js';\nimport type { Meta, TOCItem } from '../global-viewer.js';\nimport { Logger } from '../logger.js';\nimport { importNodeModule } from '../node-modules.js';\nimport { isInContainer } from '../util.js';\n\nexport type SaveOption = Pick<PdfOutput, 'preflight' | 'preflightOption'> &\n Pick<ResolvedTaskConfig, 'image'>;\n\nconst prefixes = {\n dcterms: 'http://purl.org/dc/terms/',\n meta: 'http://idpf.org/epub/vocab/package/meta/#',\n};\n\nconst metaTerms = {\n title: `${prefixes.dcterms}title`,\n creator: `${prefixes.dcterms}creator`,\n description: `${prefixes.dcterms}description`,\n subject: `${prefixes.dcterms}subject`,\n contributor: `${prefixes.dcterms}contributor`,\n language: `${prefixes.dcterms}language`,\n role: `${prefixes.meta}role`,\n created: `${prefixes.meta}created`,\n date: `${prefixes.meta}date`,\n};\n\ninterface PDFTocItem extends TOCItem {\n children: PDFTocItem[];\n ref: PDFRef;\n parentRef: PDFRef;\n}\n\nexport interface PageSizeData {\n mediaWidth: number;\n mediaHeight: number;\n bleedOffset: number;\n bleedSize: number;\n}\n\nexport async function pressReadyWithContainer({\n input,\n output,\n preflightOption,\n image,\n}: {\n input: string;\n output: string;\n preflightOption: string[];\n image: string;\n}) {\n await runContainer({\n image,\n entrypoint: 'press-ready',\n userVolumeArgs: collectVolumeArgs([\n upath.dirname(input),\n upath.dirname(output),\n ]),\n commandArgs: [\n 'build',\n '-i',\n toContainerPath(input),\n '-o',\n toContainerPath(output),\n ...preflightOption\n .map((opt) => `--${decamelize(opt, { separator: '-' })}`)\n .filter((str) => /^[\\w-]+/.test(str)),\n ],\n });\n}\n\nexport class PostProcess {\n protected readonly document: PDFDocument;\n\n static async load(pdf: Uint8Array): Promise<PostProcess> {\n const { PDFDocument } = await importNodeModule('pdf-lib');\n const document = await PDFDocument.load(pdf, { updateMetadata: false });\n return new PostProcess(document);\n }\n\n protected constructor(document: PDFDocument) {\n this.document = document;\n }\n\n async save(\n output: string,\n { preflight, preflightOption, image }: SaveOption,\n ) {\n const input = preflight\n ? upath.join(os.tmpdir(), `vivliostyle-cli-${uuid()}.pdf`)\n : output;\n\n const pdf = await this.document.save();\n await fs.promises.writeFile(input, pdf);\n\n if (\n preflight === 'press-ready-local' ||\n (preflight === 'press-ready' && isInContainer())\n ) {\n using _ = Logger.suspendLogging('Running press-ready');\n const { build } = await importNodeModule('press-ready');\n await build({\n ...preflightOption.reduce((acc, opt) => {\n const optName = decamelize(opt, { separator: '-' });\n return optName.startsWith('no-')\n ? {\n ...acc,\n [optName.slice(3)]: false,\n }\n : {\n ...acc,\n [optName]: true,\n };\n }, {}),\n input,\n output,\n });\n } else if (preflight === 'press-ready') {\n using _ = Logger.suspendLogging('Running press-ready');\n await pressReadyWithContainer({\n input,\n output,\n preflightOption,\n image,\n });\n }\n }\n\n async metadata(\n tree: Meta,\n {\n pageProgression,\n browserVersion,\n viewerCoreVersion,\n disableCreatorOption,\n }: {\n pageProgression?: 'ltr' | 'rtl';\n browserVersion?: string;\n viewerCoreVersion?: string;\n disableCreatorOption?: boolean;\n } = {},\n ) {\n const { ReadingDirection } = await importNodeModule('pdf-lib');\n const title = tree[metaTerms.title]?.[0].v;\n if (title) {\n this.document.setTitle(title);\n }\n\n const author = tree[metaTerms.creator]?.map((item) => item.v)?.join('; ');\n if (author) {\n this.document.setAuthor(author);\n }\n\n const subject = tree[metaTerms.description]?.[0].v;\n if (subject) {\n this.document.setSubject(subject);\n }\n\n const keywords = tree[metaTerms.subject]?.map((item) => item.v);\n if (keywords) {\n this.document.setKeywords(keywords);\n }\n\n let creatorOpt = `Vivliostyle.js ${viewerCoreVersion ?? coreVersion}`;\n if (browserVersion) {\n creatorOpt += `; ${browserVersion}`;\n }\n this.document.setCreator(\n disableCreatorOption ? 'Vivliostyle' : `Vivliostyle (${creatorOpt})`,\n );\n\n const language = tree[metaTerms.language]?.[0].v;\n if (language) {\n this.document.setLanguage(language);\n }\n\n const creation = (tree[metaTerms.created] || tree[metaTerms.date])?.[0].v;\n const creationDate = creation && new Date(creation);\n if (creationDate) {\n this.document.setCreationDate(creationDate);\n }\n if (pageProgression === 'rtl') {\n const viewerPrefs = this.document.catalog.getOrCreateViewerPreferences();\n viewerPrefs.setReadingDirection(ReadingDirection.R2L);\n }\n }\n\n async toc(items: TOCItem[]) {\n const { PDFDict, PDFHexString, PDFName, PDFNumber } =\n await importNodeModule('pdf-lib');\n if (!items || !items.length) {\n return;\n }\n\n const addRefs = (items: TOCItem[], parentRef: PDFRef): PDFTocItem[] =>\n items.map((item) => {\n const ref = this.document.context.nextRef();\n return {\n ...item,\n parentRef,\n ref,\n children: addRefs(item.children, ref),\n };\n });\n const countAll = (items: PDFTocItem[]): number =>\n items.reduce((sum, item) => sum + countAll(item.children), items.length);\n const addObjectsToPDF = (items: PDFTocItem[]) => {\n for (const [i, item] of items.entries()) {\n const child = PDFDict.withContext(this.document.context);\n child.set(PDFName.of('Title'), PDFHexString.fromText(item.title));\n child.set(PDFName.of('Dest'), PDFName.of(item.id));\n child.set(PDFName.of('Parent'), item.parentRef);\n const prev = items[i - 1];\n if (prev) {\n child.set(PDFName.of('Prev'), prev.ref);\n }\n const next = items[i + 1];\n if (next) {\n child.set(PDFName.of('Next'), next.ref);\n }\n if (item.children.length) {\n child.set(PDFName.of('First'), item.children[0].ref);\n child.set(\n PDFName.of('Last'),\n item.children[item.children.length - 1].ref,\n );\n child.set(PDFName.of('Count'), PDFNumber.of(countAll(item.children)));\n }\n this.document.context.assign(item.ref, child);\n addObjectsToPDF(item.children);\n }\n };\n\n const outlineRef = this.document.context.nextRef();\n const itemsWithRefs = addRefs(items, outlineRef);\n addObjectsToPDF(itemsWithRefs);\n\n const outline = PDFDict.withContext(this.document.context);\n outline.set(PDFName.of('First'), itemsWithRefs[0].ref);\n outline.set(\n PDFName.of('Last'),\n itemsWithRefs[itemsWithRefs.length - 1].ref,\n );\n outline.set(PDFName.of('Count'), PDFNumber.of(countAll(itemsWithRefs)));\n this.document.context.assign(outlineRef, outline);\n this.document.catalog.set(PDFName.of('Outlines'), outlineRef);\n }\n\n async setPageBoxes(pageSizeData: PageSizeData[]) {\n if (pageSizeData.length + 1 === this.document.getPageCount()) {\n // fix issue #312: Chromium LayoutNGPrinting adds unnecessary blank page\n this.document.removePage(pageSizeData.length);\n }\n if (pageSizeData.length !== this.document.getPageCount()) {\n return;\n }\n for (let i = 0; i < pageSizeData.length; i++) {\n const page = this.document.getPage(i);\n const sizeData = pageSizeData[i];\n if (\n !sizeData.mediaWidth ||\n !sizeData.mediaHeight ||\n isNaN(sizeData.bleedOffset) ||\n isNaN(sizeData.bleedSize)\n ) {\n continue;\n }\n const yOffset = page.getHeight() - sizeData.mediaHeight;\n page.setMediaBox(0, yOffset, sizeData.mediaWidth, sizeData.mediaHeight);\n if (!sizeData.bleedOffset && !sizeData.bleedSize) {\n continue;\n }\n page.setBleedBox(\n sizeData.bleedOffset,\n yOffset + sizeData.bleedOffset,\n sizeData.mediaWidth - sizeData.bleedOffset * 2,\n sizeData.mediaHeight - sizeData.bleedOffset * 2,\n );\n const trimOffset = sizeData.bleedOffset + sizeData.bleedSize;\n page.setTrimBox(\n trimOffset,\n yOffset + trimOffset,\n sizeData.mediaWidth - trimOffset * 2,\n sizeData.mediaHeight - trimOffset * 2,\n );\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,iBAAAA,sBAAqB;AAC9B,OAAOC,mBAAkB;AACzB,OAAOC,YAAW;AAClB,SAA6B,SAAS,iBAAiB;AACvD,SAAS,QAAAC,OAAM,QAAAC,aAAY;;;ACJ3B,OAAOC,cAAa;AACpB,SAAS,eAAe,qBAAqB;AAC7C,SAAS,SAAS;AAClB,OAAO,WAAW;AASX,SAAS,gBAAgB,cAA8B;AAC5D,MAAI,WAAW,YAAY,GAAG;AAC5B,QAAI,aAAa,YAAY,EAAE,WAAW,MAAM,GAAG;AACjD,aAAO;AAAA,QACL,MAAM,MAAM;AAAA,UACV;AAAA,UACA,MAAM,OAAO,cAAc,YAAY,CAAC,EAAE,QAAQ,QAAQ,EAAE;AAAA,QAC9D;AAAA,MACF,EAAE;AAAA,IACJ,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,MAAM,MAAM;AAAA,IACjB;AAAA,IACA,MAAM,OAAO,YAAY,EAAE,QAAQ,QAAQ,EAAE;AAAA,EAC/C;AACF;AAEO,SAAS,kBAAkB,aAAiC;AACjE,SAAO,YACJ,OAAO,CAAC,GAAG,GAAG,UAAU;AACvB,QAAI,MAAM,MAAM,QAAQ,CAAC,GAAG;AAE1B,aAAO;AAAA,IACT;AACA,QAAI,SAAS;AACb,WAAO,CAAC,WAAW,QAAQ,MAAM,QAAQ,MAAM,CAAC,GAAG;AACjD,eAAS,MAAM,QAAQ,MAAM;AAC7B,UAAI,MAAM,SAAS,MAAM,GAAG;AAE1B,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT,CAAC,EACA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE;AAC5C;AAEA,eAAsB,aAAa;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,EAAE,SAAS,cAAc,IAAI,MAAM,iBAAiB,gBAAgB;AAC1E,MAAI,CAAE,MAAM,cAAc,QAAQ,GAAI;AACpC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,WACJ,MAAM,KAAK,UAAU,CAAC,WAAW,YAAY,qBAAqB,CAAC,GACnE;AACF,QAAM,CAAC,OAAO,KAAK,IAAI,QAAQ,MAAM,GAAG,EAAE,IAAI,MAAM;AACpD,MAAI,QAAQ,MAAO,UAAU,MAAM,QAAQ,IAAK;AAC9C,UAAM,IAAI;AAAA,MACR,kBAAkB,OAAO;AAAA,IAC3B;AAAA,EACF;AAEA,MAAI;AACF;AAAA;AAAA,YAAMC,KAAI,uBAAO,eAAe,4BAA4B;AAC5D,YAAM,OAAO;AAAA,QACX;AAAA,QACA,GAAI,OAAO,gBAAgB,CAAC,KAAK,IAAI,CAAC;AAAA,QACtC;AAAA,QACA,GAAI,aAAa,CAAC,gBAAgB,UAAU,IAAI,CAAC;AAAA,QACjD,GAAI,MAAM,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AAAA,QAC1D,GAAIC,SAAQ,IAAI,QACZ,CAAC,MAAM,SAASA,SAAQ,IAAI,KAAK,EAAE,IACnC,CAAC;AAAA,QACL,GAAG,eAAe,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;AAAA,QAC9C,GAAI,UAAU,CAAC,MAAM,OAAO,IAAI,CAAC;AAAA,QACjC;AAAA,QACA,GAAG;AAAA,MACL;AACA,aAAO,MAAM,UAAU,KAAK,KAAK,GAAG,CAAC,EAAE;AACvC,YAAM,OAAO,EAAE,UAAU,MAAM;AAAA,QAC7B,cAAc;AAAA,QACd,aAAa;AAAA,UACX,OAAO,OAAO,gBAAgB,YAAY;AAAA,QAC5C;AAAA,MACF,CAAC;AACD,UAAI,OAAO,eAAe;AACxB,cAAM;AAAA,MACR,OAAO;AACL,yBAAiB,QAAQ,MAAM;AAC7B,iBAAO,IAAI,IAAI;AAAA,QACjB;AAAA,MACF;AAAA,aA5BA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6BF,SAAS,OAAO;AACd,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEA,eAAsB,sBAAsB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACF,GAI2B;AACzB,QAAM,YAAY,IAAI,IAAI,MAAM,aAAa,MAAM,CAAC;AACpD,MAAI,UAAU,WAAW,OAAO,SAAS;AACvC,cAAU,WAAW;AAAA,EACvB;AACA,QAAM,iBAAiB;AAAA,IACrB,GAAG;AAAA,IACH,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,OAAO,UAAU;AAAA,IACnB;AAAA,IACA,QAAQ;AAAA,MACN;AAAA,QACE,GAAG;AAAA,QACH,MAAM,gBAAgB,OAAO,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,IACA,MAAM;AAAA,EACR;AAEA,QAAM,aAAa;AAAA,IACjB,OAAO,OAAO;AAAA,IACd,gBAAgB,kBAAkB;AAAA,MAChC,GAAI,OAAO,OAAO,kBAAkB,WAChC,CAAC,OAAO,aAAa,IACrB,CAAC;AAAA,MACL,MAAM,QAAQ,OAAO,IAAI;AAAA,IAC3B,CAAC;AAAA,IACD,KAAK,CAAC,CAAC,4BAA4B,KAAK,UAAU,cAAc,CAAC,CAAC;AAAA,IAClE,aAAa,CAAC,OAAO;AAAA,IACrB,SACE,OAAO,OAAO,kBAAkB,WAC5B,gBAAgB,OAAO,aAAa,IACpC;AAAA,EACR,CAAC;AAED,SAAO,OAAO;AAChB;;;ACpKA,OAAOC,SAAQ;AACf,SAAS,OAAAC,YAAW;AAEpB,OAAO,kBAAkB;AACzB,OAAOC,YAAW;AAClB,SAAS,MAAM,MAAM,OAAO,WAAW;;;ACLvC,OAAO,gBAAgB;AACvB,OAAO,QAAQ;AACf,OAAO,QAAQ;AAEf,OAAOC,YAAW;AAClB,SAAS,MAAM,YAAY;AAgB3B,IAAM,WAAW;AAAA,EACf,SAAS;AAAA,EACT,MAAM;AACR;AAEA,IAAM,YAAY;AAAA,EAChB,OAAO,GAAG,SAAS,OAAO;AAAA,EAC1B,SAAS,GAAG,SAAS,OAAO;AAAA,EAC5B,aAAa,GAAG,SAAS,OAAO;AAAA,EAChC,SAAS,GAAG,SAAS,OAAO;AAAA,EAC5B,aAAa,GAAG,SAAS,OAAO;AAAA,EAChC,UAAU,GAAG,SAAS,OAAO;AAAA,EAC7B,MAAM,GAAG,SAAS,IAAI;AAAA,EACtB,SAAS,GAAG,SAAS,IAAI;AAAA,EACzB,MAAM,GAAG,SAAS,IAAI;AACxB;AAeA,eAAsB,wBAAwB;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,QAAM,aAAa;AAAA,IACjB;AAAA,IACA,YAAY;AAAA,IACZ,gBAAgB,kBAAkB;AAAA,MAChCC,OAAM,QAAQ,KAAK;AAAA,MACnBA,OAAM,QAAQ,MAAM;AAAA,IACtB,CAAC;AAAA,IACD,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA,gBAAgB,KAAK;AAAA,MACrB;AAAA,MACA,gBAAgB,MAAM;AAAA,MACtB,GAAG,gBACA,IAAI,CAAC,QAAQ,KAAK,WAAW,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC,EAAE,EACvD,OAAO,CAAC,QAAQ,UAAU,KAAK,GAAG,CAAC;AAAA,IACxC;AAAA,EACF,CAAC;AACH;AAEO,IAAM,cAAN,MAAM,aAAY;AAAA,EACJ;AAAA,EAEnB,aAAa,KAAK,KAAuC;AACvD,UAAM,EAAE,YAAY,IAAI,MAAM,iBAAiB,SAAS;AACxD,UAAMC,YAAW,MAAM,YAAY,KAAK,KAAK,EAAE,gBAAgB,MAAM,CAAC;AACtE,WAAO,IAAI,aAAYA,SAAQ;AAAA,EACjC;AAAA,EAEU,YAAYA,WAAuB;AAC3C,SAAK,WAAWA;AAAA,EAClB;AAAA,EAEA,MAAM,KACJ,QACA,EAAE,WAAW,iBAAiB,MAAM,GACpC;AACA,UAAM,QAAQ,YACVD,OAAM,KAAK,GAAG,OAAO,GAAG,mBAAmB,KAAK,CAAC,MAAM,IACvD;AAEJ,UAAM,MAAM,MAAM,KAAK,SAAS,KAAK;AACrC,UAAM,GAAG,SAAS,UAAU,OAAO,GAAG;AAEtC,QACE,cAAc,uBACb,cAAc,iBAAiB,cAAc,GAC9C;AACA;AAAA;AAAA,cAAME,KAAI,uBAAO,eAAe,qBAAqB;AACrD,cAAM,EAAE,OAAAC,OAAM,IAAI,MAAM,iBAAiB,aAAa;AACtD,cAAMA,OAAM;AAAA,UACV,GAAG,gBAAgB,OAAO,CAAC,KAAK,QAAQ;AACtC,kBAAM,UAAU,WAAW,KAAK,EAAE,WAAW,IAAI,CAAC;AAClD,mBAAO,QAAQ,WAAW,KAAK,IAC3B;AAAA,cACE,GAAG;AAAA,cACH,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG;AAAA,YACtB,IACA;AAAA,cACE,GAAG;AAAA,cACH,CAAC,OAAO,GAAG;AAAA,YACb;AAAA,UACN,GAAG,CAAC,CAAC;AAAA,UACL;AAAA,UACA;AAAA,QACF,CAAC;AAAA,eAjBD;AAAA;AAAA;AAAA;AAAA;AAAA,IAkBF,WAAW,cAAc,eAAe;AACtC,UAAAC,UAAA;AAAA;AAAA,cAAMF,KAAI,QAAAE,SAAA,OAAO,eAAe,qBAAqB;AACrD,cAAM,wBAAwB;AAAA,UAC5B;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,eANDF,IAAA;AAAA,YAAAG,UAAAH,IAAAI,aAAA;AAAA;AAAA,sBAAAF,SAAAC,SAAAC;AAAA;AAAA,IAOF;AAAA,EACF;AAAA,EAEA,MAAM,SACJ,MACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAKI,CAAC,GACL;AACA,UAAM,EAAE,iBAAiB,IAAI,MAAM,iBAAiB,SAAS;AAC7D,UAAM,QAAQ,KAAK,UAAU,KAAK,IAAI,CAAC,EAAE;AACzC,QAAI,OAAO;AACT,WAAK,SAAS,SAAS,KAAK;AAAA,IAC9B;AAEA,UAAM,SAAS,KAAK,UAAU,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,GAAG,KAAK,IAAI;AACxE,QAAI,QAAQ;AACV,WAAK,SAAS,UAAU,MAAM;AAAA,IAChC;AAEA,UAAM,UAAU,KAAK,UAAU,WAAW,IAAI,CAAC,EAAE;AACjD,QAAI,SAAS;AACX,WAAK,SAAS,WAAW,OAAO;AAAA,IAClC;AAEA,UAAM,WAAW,KAAK,UAAU,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC;AAC9D,QAAI,UAAU;AACZ,WAAK,SAAS,YAAY,QAAQ;AAAA,IACpC;AAEA,QAAI,aAAa,kBAAkB,qBAAqB,WAAW;AACnE,QAAI,gBAAgB;AAClB,oBAAc,KAAK,cAAc;AAAA,IACnC;AACA,SAAK,SAAS;AAAA,MACZ,uBAAuB,gBAAgB,gBAAgB,UAAU;AAAA,IACnE;AAEA,UAAM,WAAW,KAAK,UAAU,QAAQ,IAAI,CAAC,EAAE;AAC/C,QAAI,UAAU;AACZ,WAAK,SAAS,YAAY,QAAQ;AAAA,IACpC;AAEA,UAAM,YAAY,KAAK,UAAU,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,EAAE;AACxE,UAAM,eAAe,YAAY,IAAI,KAAK,QAAQ;AAClD,QAAI,cAAc;AAChB,WAAK,SAAS,gBAAgB,YAAY;AAAA,IAC5C;AACA,QAAI,oBAAoB,OAAO;AAC7B,YAAM,cAAc,KAAK,SAAS,QAAQ,6BAA6B;AACvE,kBAAY,oBAAoB,iBAAiB,GAAG;AAAA,IACtD;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,OAAkB;AAC1B,UAAM,EAAE,SAAS,cAAc,SAAS,UAAU,IAChD,MAAM,iBAAiB,SAAS;AAClC,QAAI,CAAC,SAAS,CAAC,MAAM,QAAQ;AAC3B;AAAA,IACF;AAEA,UAAM,UAAU,CAACC,QAAkB,cACjCA,OAAM,IAAI,CAAC,SAAS;AAClB,YAAM,MAAM,KAAK,SAAS,QAAQ,QAAQ;AAC1C,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA;AAAA,QACA,UAAU,QAAQ,KAAK,UAAU,GAAG;AAAA,MACtC;AAAA,IACF,CAAC;AACH,UAAM,WAAW,CAACA,WAChBA,OAAM,OAAO,CAAC,KAAK,SAAS,MAAM,SAAS,KAAK,QAAQ,GAAGA,OAAM,MAAM;AACzE,UAAM,kBAAkB,CAACA,WAAwB;AAC/C,iBAAW,CAAC,GAAG,IAAI,KAAKA,OAAM,QAAQ,GAAG;AACvC,cAAM,QAAQ,QAAQ,YAAY,KAAK,SAAS,OAAO;AACvD,cAAM,IAAI,QAAQ,GAAG,OAAO,GAAG,aAAa,SAAS,KAAK,KAAK,CAAC;AAChE,cAAM,IAAI,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC;AACjD,cAAM,IAAI,QAAQ,GAAG,QAAQ,GAAG,KAAK,SAAS;AAC9C,cAAM,OAAOA,OAAM,IAAI,CAAC;AACxB,YAAI,MAAM;AACR,gBAAM,IAAI,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG;AAAA,QACxC;AACA,cAAM,OAAOA,OAAM,IAAI,CAAC;AACxB,YAAI,MAAM;AACR,gBAAM,IAAI,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG;AAAA,QACxC;AACA,YAAI,KAAK,SAAS,QAAQ;AACxB,gBAAM,IAAI,QAAQ,GAAG,OAAO,GAAG,KAAK,SAAS,CAAC,EAAE,GAAG;AACnD,gBAAM;AAAA,YACJ,QAAQ,GAAG,MAAM;AAAA,YACjB,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC,EAAE;AAAA,UAC1C;AACA,gBAAM,IAAI,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,KAAK,QAAQ,CAAC,CAAC;AAAA,QACtE;AACA,aAAK,SAAS,QAAQ,OAAO,KAAK,KAAK,KAAK;AAC5C,wBAAgB,KAAK,QAAQ;AAAA,MAC/B;AAAA,IACF;AAEA,UAAM,aAAa,KAAK,SAAS,QAAQ,QAAQ;AACjD,UAAM,gBAAgB,QAAQ,OAAO,UAAU;AAC/C,oBAAgB,aAAa;AAE7B,UAAM,UAAU,QAAQ,YAAY,KAAK,SAAS,OAAO;AACzD,YAAQ,IAAI,QAAQ,GAAG,OAAO,GAAG,cAAc,CAAC,EAAE,GAAG;AACrD,YAAQ;AAAA,MACN,QAAQ,GAAG,MAAM;AAAA,MACjB,cAAc,cAAc,SAAS,CAAC,EAAE;AAAA,IAC1C;AACA,YAAQ,IAAI,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,aAAa,CAAC,CAAC;AACtE,SAAK,SAAS,QAAQ,OAAO,YAAY,OAAO;AAChD,SAAK,SAAS,QAAQ,IAAI,QAAQ,GAAG,UAAU,GAAG,UAAU;AAAA,EAC9D;AAAA,EAEA,MAAM,aAAa,cAA8B;AAC/C,QAAI,aAAa,SAAS,MAAM,KAAK,SAAS,aAAa,GAAG;AAE5D,WAAK,SAAS,WAAW,aAAa,MAAM;AAAA,IAC9C;AACA,QAAI,aAAa,WAAW,KAAK,SAAS,aAAa,GAAG;AACxD;AAAA,IACF;AACA,aAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,YAAM,OAAO,KAAK,SAAS,QAAQ,CAAC;AACpC,YAAM,WAAW,aAAa,CAAC;AAC/B,UACE,CAAC,SAAS,cACV,CAAC,SAAS,eACV,MAAM,SAAS,WAAW,KAC1B,MAAM,SAAS,SAAS,GACxB;AACA;AAAA,MACF;AACA,YAAM,UAAU,KAAK,UAAU,IAAI,SAAS;AAC5C,WAAK,YAAY,GAAG,SAAS,SAAS,YAAY,SAAS,WAAW;AACtE,UAAI,CAAC,SAAS,eAAe,CAAC,SAAS,WAAW;AAChD;AAAA,MACF;AACA,WAAK;AAAA,QACH,SAAS;AAAA,QACT,UAAU,SAAS;AAAA,QACnB,SAAS,aAAa,SAAS,cAAc;AAAA,QAC7C,SAAS,cAAc,SAAS,cAAc;AAAA,MAChD;AACA,YAAM,aAAa,SAAS,cAAc,SAAS;AACnD,WAAK;AAAA,QACH;AAAA,QACA,UAAU;AAAA,QACV,SAAS,aAAa,aAAa;AAAA,QACnC,SAAS,cAAc,aAAa;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AACF;;;ADxRA,eAAsB,SAAS;AAAA,EAC7B;AAAA,EACA;AACF,GAG2B;AACzB,SAAO,UAAU,iCAAiC;AAElD,QAAM,gBAAgB,MAAM,iBAAiB,MAAM;AACnD,SAAO,MAAM,iBAAiB,aAAa;AAE3C,MAAI;AAEJ,WAAS,eAAe,OAAwB;AAC9C,UAAM,sBAAsB;AAAA,MAC1B,MAAM,OAAO,SAAS,SAClBC,OAAM,SAAS,OAAO,iBAAiB,MAAM,OAAO,QAAQ,IAC5D,MAAM,OAAO;AAAA,IACnB;AACA,WAAO,GAAG;AAAA,MACR;AAAA,MACA,MAAM,OAAO,SAAS,SAClB,UAAU,MAAM,OAAO,QAAQ,KAC/B,MAAM,OAAO;AAAA,MACjB;AAAA,QACE,UAAU,MAAM;AAAA,MAClB;AAAA,IACF,CAAC,IAAI,MAAM,QAAQ,KAAK,MAAM,KAAK,IAAI,EAAE;AAAA,EAC3C;AAEA,WAAS,YAAY,UAAe;AAClC,UAAM,QAAQ,OAAO,QAAQ,KAAK,CAACC,WAAoC;AACrE,UAAI,EAAE,YAAYA,SAAQ;AACxB,eAAO;AAAA,MACT;AACA,YAAM,MAAM,IAAIC,KAAI,SAAS,IAAI,CAAC;AAClC,aAAO,IAAI,aAAa,UACpB,WAAWD,OAAM,QAAQ,IAAI,QAAQ,IACrC;AAAA,QACED,OAAM,SAAS,OAAO,cAAcC,OAAM,MAAM;AAAA,QAChD,IAAI,SAAS,UAAU,CAAC;AAAA,MAC1B;AAAA,IACN,CAAC;AACD,QAAI,OAAO;AACT,UAAI,CAAC,WAAW;AACd,oBAAY;AACZ,eAAO,UAAU,eAAe,KAAK,CAAC;AACtC;AAAA,MACF;AACA,aAAO,WAAW,eAAe,SAAS,CAAC;AAC3C,aAAO,aAAa,eAAe,KAAK,CAAC;AACzC,kBAAY;AAAA,IACd;AAAA,EACF;AAEA,QAAM,EAAE,SAAS,KAAK,IAAI,MAAM,cAAc;AAAA,IAC5C,MAAM;AAAA,IACN,KAAK;AAAA,IACL;AAAA,IACA,eAAe,MAAM;AACnB,aAAO,UAAU,gBAAgB;AAAA,IACnC;AAAA,IACA,YAAY,OAAOE,UAAS;AAC1B,MAAAA,MAAK,GAAG,aAAa,CAAC,UAAU;AAC9B,eAAO,SAAS,IAAK,MAAgB,OAAO,CAAC;AAAA,MAC/C,CAAC;AAED,MAAAA,MAAK,GAAG,WAAW,CAAC,QAAQ;AAC1B,gBAAQ,IAAI,KAAK,GAAG;AAAA,UAClB,KAAK;AACH,gBAAI,4BAA4B,KAAK,IAAI,SAAS,EAAE,OAAO,EAAE,GAAG;AAC9D,qBAAO,SAAS,IAAI,KAAK,CAAC;AAC1B,oBAAM,IAAI,KAAK;AAAA,YACjB;AACA;AAAA,UACF,KAAK;AACH,gBAAI,aAAa,KAAK,IAAI,KAAK,CAAC,GAAG;AACjC;AAAA,YACF;AACA;AAAA,QACJ;AACA,YAAI,IAAI,KAAK,MAAM,SAAS;AAC1B,iBAAO,WAAW,IAAI,iBAAiB,GAAG,IAAI,KAAK,CAAC;AAAA,QACtD,OAAO;AACL,iBAAO,WAAW,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC;AAAA,QAC/D;AAAA,MACF,CAAC;AAED,MAAAA,MAAK,GAAG,YAAY,CAAC,aAAa;AAChC,eAAO;AAAA,UACL,KAAK,iBAAiB;AAAA,UACtB,MAAM,SAAS,OAAO,EAAE,SAAS,CAAC;AAAA,UAClC,SAAS,IAAI;AAAA,QACf;AAEA,oBAAY,QAAQ;AAEpB,YAAI,MAAM,SAAS,OAAO,KAAK,OAAO,SAAS,OAAO,EAAG;AAEzD,YAAI,SAAS,IAAI,EAAE,WAAW,SAAS,KAAK,SAAS,GAAG,EAAG;AAE3D,eAAO,SAAS,IAAI,GAAG,SAAS,OAAO,CAAC,EAAE,GAAG,SAAS,IAAI,CAAC;AAAA,MAC7D,CAAC;AAED,YAAMA,MAAK,kBAAkB,OAAO,OAAO;AAAA,IAC7C;AAAA,EACF,CAAC;AAED,QAAM,iBAAiB,MAAM,QAAQ,QAAQ;AAC7C,SAAO,MAAM,MAAM,SAAS,GAAG,kBAAkB,cAAc,EAAE;AAEjE,MAAI,aAAa,OAAO;AACxB,QAAM,YAAY,KAAK,IAAI;AAE3B,QAAM,KAAK,mBAAmB;AAC9B,QAAM,KAAK,gBAAgB,MAAM,CAAC,CAAC,OAAO,UAAU;AAEpD,QAAM,EAAE,SAAS,IAAI;AAIrB,MAAI,aAAa,OAAO;AACtB,UAAM,KAAK,iBAAiB,OAAO;AAAA,EACrC;AACA,QAAM,KAAK;AAAA;AAAA,IAET,MAAM,OAAO,WAAW,eAAe;AAAA,IACvC,EAAE,SAAS,IAAK;AAAA,EAClB;AAEA,MAAI,WAAW;AACb,WAAO,WAAW,eAAe,SAAS,CAAC;AAAA,EAC7C;AAEA,QAAM,kBAAkB,MAAM,KAAK;AAAA,IAAS;AAAA;AAAA,MAE1C,SACG,cAAc,8BAA8B,GAC3C,aAAa,mCAAmC,MAAM,QACtD,QACA;AAAA;AAAA,EACN;AACA,QAAM,oBAAoB,MAAM,KAAK;AAAA,IAAS;AAAA;AAAA,MAE5C,SACG,cAAc,qCAAqC,GAClD,aAAa,QAAQ,yBAAyB,IAAI;AAAA;AAAA,EACxD;AACA,QAAM,WAAW,MAAM,aAAa,IAAI;AACxC,QAAM,MAAM,MAAM,QAAQ,IAAI;AAC9B,QAAM,eAAe,MAAM,iBAAiB,IAAI;AAEhD,gBAAc,KAAK,IAAI,IAAI;AAC3B,MAAI,cAAc,GAAG;AACnB,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AACA,SAAO,MAAM,sBAAsB,UAAU;AAE7C,SAAO,UAAU,cAAc;AAK/B,QAAM,gCACJ,SAAS,QAAQ,IAAI,kCAAkC,IAAI,EAAE,KAAK;AACpE,QAAM,MAAM,MAAM,KAAK,IAAI;AAAA,IACzB,QAAQ;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,iBAAiB;AAAA,IACjB,QAAQ;AAAA;AAAA,IAER,GAAI,aAAa,kBACb;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,IACA;AAAA,MACE,mBAAmB;AAAA,IACrB;AAAA,EACN,CAAC;AAED,QAAM,QAAQ,MAAM;AAEpB,SAAO,UAAU,gBAAgB;AACjC,EAAAC,IAAG,UAAUJ,OAAM,QAAQ,OAAO,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAE5D,QAAM,OAAO,MAAM,YAAY,KAAK,GAAG;AACvC,QAAM,KAAK,SAAS,UAAU;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA,IAGA,sBAAsB,CAAC,CAAC,OAAO,UAAU,CAAC;AAAA,EAC5C,CAAC;AACD,QAAM,KAAK,IAAI,GAAG;AAClB,QAAM,KAAK,aAAa,YAAY;AACpC,QAAM,KAAK,KAAK,OAAO,MAAM;AAAA,IAC3B,WAAW,OAAO;AAAA,IAClB,iBAAiB,OAAO;AAAA,IACxB,OAAO,OAAO;AAAA,EAChB,CAAC;AAED,SAAO,OAAO;AAChB;AAEA,eAAe,aAAa,MAA2B;AACrD,SAAO,KAAK,SAAS,MAAM,OAAO,WAAW,YAAY,CAAC;AAC5D;AAKA,eAAe,QAAQ,MAAgC;AAErD,SAAO,KAAK;AAAA,IACV,MACE,IAAI,QAAmB,CAAC,YAAY;AAClC,eAAS,SAAS,SAAkB;AAClC,YAAI,QAAQ,MAAM,OAAO;AACvB;AAAA,QACF;AACA,eAAO,WAAW,eAAe,QAAQ,QAAQ;AACjD,eAAO,WAAW,QAAQ,KAAK;AAC/B,gBAAQ,OAAO,WAAW,OAAO,CAAC;AAAA,MACpC;AACA,aAAO,WAAW,YAAY,QAAQ,QAAQ;AAC9C,aAAO,WAAW,QAAQ,IAAI;AAAA,IAChC,CAAC;AAAA,EACL;AAEF;AAEA,eAAe,iBAAiB,MAAqC;AAEnE,SAAO,KAAK,SAAS,MAAM;AACzB,UAAM,WAA2B,CAAC;AAClC,UAAM,iBAAiB,SAAS;AAAA,MAC9B;AAAA,IACF;AAEA,eAAW,iBAAiB,gBAAgB;AAC1C,YAAM,WAAW,cAAc;AAAA,QAC7B;AAAA,MACF;AACA,eAAS,KAAK;AAAA,QACZ,YAAY,WAAW,cAAc,MAAM,KAAK,IAAI;AAAA,QACpD,aAAa,WAAW,cAAc,MAAM,MAAM,IAAI;AAAA,QACtD,aAAa,WAAW,UAAU,MAAM,IAAI,IAAI;AAAA,QAChD,WAAW,WAAW,UAAU,MAAM,WAAW,IAAI;AAAA,MACvD,CAAC;AAAA,IACH;AACA,WAAO;AAAA,EACT,CAAC;AAEH;;;AF9PA,eAAsB,MACpB,cACA,EAAE,oBAAoB,MAAM,IAAqC,CAAC,GAClE;AACA,SAAO,cAAc,YAAY;AACjC,MAAI,mBAAmB;AACrB,WAAO,aAAaK,MAAK,UAAU,CAAC;AAAA,EACtC;AACA,SAAO,MAAM,2BAA2B,YAAY;AAEpD,MAAI,oBACD,MAAM,sBAAsB,YAAY,KACzC,qBAAqB,YAAY;AACnC,uBAAqB,iBAAiB;AACtC,sBAAoB,kBAAkB,mBAAmB;AAAA,IACvD,GAAG;AAAA,IACH,OAAO;AAAA,EACT,CAAC;AACD,QAAM,EAAE,cAAc,IAAI;AAC1B,SAAO,MAAM,gCAAgC,iBAAiB;AAE9D,WAAS,CAAC,GAAG,IAAI,KAAK,kBAAkB,MAAM,QAAQ,GAAG;AACvD,QAAAC,UAAA;AAAA;AAAA,YAAMC,KAAI,QAAAD,SAAA,OAAO,aAAa,gBAAgB;AAE9C,UAAI,SAAS,kBAAkB,MAAM,aAAa;AAClD,aAAO,MAAM,qBAAqB,MAAM;AACxC,YAAM,aAAa,MAAM,kBAAkB;AAAA,QACzC,GAAG;AAAA,QACH,MAAM;AAAA,MACR,CAAC;AAED,UAAI;AACJ,UAAI,CAAC,mBAAmB;AAEtB,eAAO,MAAM,oCAAoC,WAAW,UAAU;AACtE,YAAI,WAAW,cAAc,OAAO,OAAO,kBAAkB,UAAU;AACrE;AAAA;AAAA,kBAAMC,KAAI,uBAAO,eAAe,uBAAuB;AACvD,kBAAM,UAAU;AAAA,cACd,YAAY,WAAW;AAAA,cACvB,MAAM,OAAO;AAAA,YACf,CAAC;AAAA,mBAJD;AAAA;AAAA;AAAA;AAAA;AAAA,QAKF;AAEA,YAAI,CAAC,aAAa,sBAAsB;AACtC,mBAAS,MAAM,iBAAiB;AAAA,YAC9B;AAAA,YACA;AAAA,YACA;AAAA,YACA,MAAM;AAAA,UACR,CAAC;AAED,cAAI,OAAO,YAAY;AACrB,kBAAM,cAAc,OAAO,WAAW,QAAQ;AAC9C,gBAAI,eAAe,OAAO,gBAAgB,UAAU;AAClD,oBAAM,aAAa,YAAY;AAC/B,kCAAoB,YAAY,mBAAmB;AAAA,gBACjD,qBAAqB,OAAO;AAAA,gBAC5B,QAAQ;AAAA,kBACN,GAAG,OAAO,OAAO;AAAA,kBACjB,MAAM;AAAA,gBACR;AAAA,cACF,CAAC;AACD,uBAAS;AAAA,gBACP,kBAAkB,MAAM,CAAC;AAAA,gBACzB,kBAAkB;AAAA,cACpB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAGA,YAAI,eAAe,MAAM,GAAG;AAC1B,gBAAM,iBAAiB,MAAM;AAC7B,gBAAM,sBAAsB,MAAM;AAClC,gBAAM,QAAQ,MAAM;AACpB,gBAAM,WAAW,MAAM;AAAA,QACzB;AAAA,MACF;AAGA,iBAAW,UAAU,OAAO,SAAS;AACnC,YAAI,SAAwB;AAC5B,cAAM,EAAE,OAAO,IAAI;AACnB,YAAI,WAAW,OAAO;AACpB,cAAI,CAAC,qBAAqB,OAAO,eAAe,UAAU;AACxD,qBAAS,MAAM,sBAAsB;AAAA,cACnC;AAAA,cACA;AAAA,cACA;AAAA,YACF,CAAC;AAAA,UACH,OAAO;AACL,qBAAS,MAAM,SAAS,EAAE,QAAQ,OAAO,CAAC;AAAA,UAC5C;AAAA,QACF,WAAW,WAAW,YAAY,WAAW,QAAQ;AACnD,mBAAS,MAAM,oBAAoB,EAAE,QAAQ,OAAO,CAAC;AAAA,QACvD;AACA,YAAI,UAAU,CAAC,mBAAmB;AAChC,gBAAM,kBAAkBC;AAAA,YACtBC,OAAM,SAAS,aAAa,OAAO,KAAK,MAAM;AAAA,UAChD;AACA,iBAAO;AAAA,YACL,qBAAqBC;AAAA,cACnB;AAAA,cACAC,eAAc,MAAM,EAAE;AAAA,cACtB;AAAA,gBACE,UAAU,MAAM;AAAA,cAClB;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAEA,YAAM,QAAQ,MAAM;AAAA,aA1FpBJ,IAAA;AAAA,UAAAK,UAAAL,IAAAM,aAAA;AAAA;AAAA,oBAAAP,SAAAM,SAAAC;AAAA;AAAA,EA2FF;AAEA,kBAAgB;AAChB,MAAI,CAAC,mBAAmB;AACtB,UAAM,MAAM,kBAAkB,MAAM,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE;AACnE,UAAM,SAAS,qBACX,GAAG,MAAM,IAAI,cAAO,gBAAgB,MACpC;AACJ,WAAO,IAAI,GAAG,MAAM,qBAAqB;AAAA,EAC3C;AACF;","names":["pathToFileURL","terminalLink","upath","cyan","gray","process","_","process","fs","URL","upath","upath","upath","document","_","build","_stack","_error","_hasError","items","upath","entry","URL","page","fs","gray","_stack","_","cyan","upath","terminalLink","pathToFileURL","_error","_hasError"]}