From 078c2f0e452695a9e19196ba47828bdab6600fc7 Mon Sep 17 00:00:00 2001 From: Marcel Maier Date: Tue, 20 Oct 2026 02:31:40 +0200 Subject: [PATCH] Improve document authoring with validation, bundled types and development tooling --- .github/workflows/node.js.yml | 20 +- .github/workflows/npm-publish.yml | 17 +- .gitignore | 4 +- .npmignore | 4 + AGENTS.md | 42 + README.md | 206 +- benchmarks/document.cjs | 39 + benchmarks/text-flatten.cjs | 28 + dev-playground/README.md | 36 +- dev-playground/editor.mjs | 62 + dev-playground/package-lock.json | 1009 + dev-playground/package.json | 21 +- dev-playground/public/ace.js | 14 - dev-playground/public/app.js | 291 + dev-playground/public/brand/icon-16.png | Bin 0 -> 623 bytes dev-playground/public/brand/icon-180.png | Bin 0 -> 36722 bytes dev-playground/public/brand/icon-32.png | Bin 0 -> 1696 bytes dev-playground/public/brand/pdfmake-icon.png | Bin 0 -> 200398 bytes dev-playground/public/brand/pdfmake-logo.png | Bin 0 -> 181235 bytes dev-playground/public/examples.js | 109 + dev-playground/public/index.html | 157 +- dev-playground/public/mode-javascript.js | 1 - dev-playground/public/pdfmake.css | 258 - dev-playground/public/playground.css | 12 + dev-playground/public/playground.js | 10 - dev-playground/public/samples/attachments | 57 - dev-playground/public/samples/basics | 4 - dev-playground/public/samples/columns | 148 - dev-playground/public/samples/images | 42 - dev-playground/public/samples/inline-styling | 46 - dev-playground/public/samples/lists | 386 - dev-playground/public/samples/margins | 70 - dev-playground/public/samples/named-styles | 40 - dev-playground/public/samples/style-overrides | 23 - dev-playground/public/samples/svgs | 21 - dev-playground/public/samples/tables | 603 - dev-playground/public/standalone.js | 2 + dev-playground/public/theme-monokai.js | 1 - dev-playground/public/theme.js | 24 + dev-playground/public/typed-examples.js | 12 + dev-playground/public/typescript-check.js | 24 + dev-playground/public/worker-javascript.js | 1 - dev-playground/public/worker.js | 40 + dev-playground/server.js | 78 +- fonts/Roboto.d.ts | 3 + interfaces.d.ts | 1 + package-lock.json | 8248 ++++++ package.json | 42 +- scripts/build-document-schema.cjs | 57 + scripts/build-playground.cjs | 22 + scripts/build-tasks.cjs | 51 + scripts/build-types.cjs | 8 + scripts/check-release.cjs | 6 + scripts/file-saver-loader.cjs | 8 + scripts/prepare-typescript.mjs | 50 + scripts/test-package.cjs | 76 + scripts/test-typescript.cjs | 34 + src/DocPreprocessor.js | 66 +- src/DocumentValidator.js | 224 + src/OutputDocument.js | 5 + src/OutputDocumentServer.js | 22 +- src/TextInlines.js | 47 +- src/base.js | 14 +- src/document-schema.js | 23159 ++++++++++++++++ standard-fonts/Courier.d.ts | 3 + standard-fonts/Helvetica.d.ts | 3 + standard-fonts/Symbol.d.ts | 3 + standard-fonts/Times.d.ts | 3 + standard-fonts/ZapfDingbats.d.ts | 3 + tests/typescript/browser.ts | 19 + tests/typescript/invalid.cts | 17 + tests/typescript/node.cts | 15 + tests/typescript/node.mts | 11 + tests/unit/DocumentValidator.spec.js | 70 + tests/unit/TextInlines.flatten.spec.js | 57 + tests/unit/diagnostics.spec.js | 75 + tests/unit/playground-server.spec.js | 37 + types/LICENSE | 21 + types/browser.d.ts | 109 + types/index.d.ts | 108 + types/interfaces.d.ts | 2664 ++ webpack.config.js | 13 +- 82 files changed, 37298 insertions(+), 2038 deletions(-) create mode 100644 AGENTS.md create mode 100644 benchmarks/document.cjs create mode 100644 benchmarks/text-flatten.cjs create mode 100644 dev-playground/editor.mjs create mode 100644 dev-playground/package-lock.json delete mode 100644 dev-playground/public/ace.js create mode 100644 dev-playground/public/app.js create mode 100644 dev-playground/public/brand/icon-16.png create mode 100644 dev-playground/public/brand/icon-180.png create mode 100644 dev-playground/public/brand/icon-32.png create mode 100644 dev-playground/public/brand/pdfmake-icon.png create mode 100644 dev-playground/public/brand/pdfmake-logo.png create mode 100644 dev-playground/public/examples.js delete mode 100644 dev-playground/public/mode-javascript.js delete mode 100644 dev-playground/public/pdfmake.css create mode 100644 dev-playground/public/playground.css delete mode 100644 dev-playground/public/playground.js delete mode 100644 dev-playground/public/samples/attachments delete mode 100644 dev-playground/public/samples/basics delete mode 100644 dev-playground/public/samples/columns delete mode 100644 dev-playground/public/samples/images delete mode 100644 dev-playground/public/samples/inline-styling delete mode 100644 dev-playground/public/samples/lists delete mode 100644 dev-playground/public/samples/margins delete mode 100644 dev-playground/public/samples/named-styles delete mode 100644 dev-playground/public/samples/style-overrides delete mode 100644 dev-playground/public/samples/svgs delete mode 100644 dev-playground/public/samples/tables create mode 100644 dev-playground/public/standalone.js delete mode 100644 dev-playground/public/theme-monokai.js create mode 100644 dev-playground/public/theme.js create mode 100644 dev-playground/public/typed-examples.js create mode 100644 dev-playground/public/typescript-check.js delete mode 100644 dev-playground/public/worker-javascript.js create mode 100644 dev-playground/public/worker.js create mode 100644 fonts/Roboto.d.ts create mode 100644 interfaces.d.ts create mode 100644 package-lock.json create mode 100644 scripts/build-document-schema.cjs create mode 100644 scripts/build-playground.cjs create mode 100644 scripts/build-tasks.cjs create mode 100644 scripts/build-types.cjs create mode 100644 scripts/check-release.cjs create mode 100644 scripts/file-saver-loader.cjs create mode 100644 scripts/prepare-typescript.mjs create mode 100644 scripts/test-package.cjs create mode 100644 scripts/test-typescript.cjs create mode 100644 src/DocumentValidator.js create mode 100644 src/document-schema.js create mode 100644 standard-fonts/Courier.d.ts create mode 100644 standard-fonts/Helvetica.d.ts create mode 100644 standard-fonts/Symbol.d.ts create mode 100644 standard-fonts/Times.d.ts create mode 100644 standard-fonts/ZapfDingbats.d.ts create mode 100644 tests/typescript/browser.ts create mode 100644 tests/typescript/invalid.cts create mode 100644 tests/typescript/node.cts create mode 100644 tests/typescript/node.mts create mode 100644 tests/unit/DocumentValidator.spec.js create mode 100644 tests/unit/TextInlines.flatten.spec.js create mode 100644 tests/unit/diagnostics.spec.js create mode 100644 tests/unit/playground-server.spec.js create mode 100644 types/LICENSE create mode 100644 types/browser.d.ts create mode 100644 types/index.d.ts create mode 100644 types/interfaces.d.ts diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 3c36dee6d..c6137204d 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -5,6 +5,13 @@ name: Node.js CI on: [push, pull_request] +permissions: + contents: read + +concurrency: + group: ci-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: build: @@ -22,6 +29,17 @@ jobs: uses: actions/setup-node@v7 with: node-version: ${{ matrix.node-version }} - - run: npm install + cache: npm + - run: npm ci + - run: npm audit --audit-level=low + if: matrix.os == 'ubuntu-latest' && matrix.node-version == '24.x' - run: npm test - run: npm run build:examples + - run: npm run test:typescript + - run: npm run test:package + - name: Build standalone playground + if: matrix.os == 'ubuntu-latest' && matrix.node-version == '24.x' + run: npm run build:playground + - name: Audit standalone playground tooling + if: matrix.os == 'ubuntu-latest' && matrix.node-version == '24.x' + run: npm --prefix dev-playground audit --audit-level=low diff --git a/.github/workflows/npm-publish.yml b/.github/workflows/npm-publish.yml index 72cab4385..1647994d0 100644 --- a/.github/workflows/npm-publish.yml +++ b/.github/workflows/npm-publish.yml @@ -16,6 +16,17 @@ jobs: with: node-version: '24.x' registry-url: 'https://registry.npmjs.org' - - run: npm install - - run: npm run build - - run: npm publish --provenance --access public + cache: npm + - run: npm ci + - run: npm audit --audit-level=low + - run: npm run release:check + env: + RELEASE_TAG: ${{ github.event.release.tag_name }} + - run: npm test + - run: npm run build:examples + - run: npm run test:typescript + - run: npm run test:package + env: + PDFMAKE_PACK_DEST: release-package + - name: Publish the tested tarball + run: npm publish release-package/pdfmake-*.tgz --provenance --access public diff --git a/.gitignore b/.gitignore index 7761e034d..b7f1ecef9 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,9 @@ doc *.ipr *.iws nbproject -package-lock.json yarn.lock /build /js +/dev-playground/public/editor.js +/dev-playground/public/vendor/ +/release-package/ diff --git a/.npmignore b/.npmignore index 94d00c813..b6f024f09 100644 --- a/.npmignore +++ b/.npmignore @@ -4,6 +4,10 @@ dev-playground/ docs/ examples/ tests/ +scripts/ +benchmarks/ +AGENTS.md +release-package/ package-lock.json yarn.lock .editorconfig diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..3ff853dca --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,42 @@ +# Working on pdfmake + +This branch targets the **0.3 API**. Do not copy the 0.1/0.2 `PdfPrinter` +constructor or callback output methods into 0.3 examples. + +## Source map + +- `src/base.js`: shared public API and resource policies; `src/index.js`: Node entry. +- `src/browser-extensions/`: browser entry, font containers and output helpers. +- `DocPreprocessor` → `DocMeasure`/`TextInlines` → `LayoutBuilder`/`TableProcessor` + → `Renderer` → PDFKit is the main document pipeline. +- `src/OutputDocument*.js`: asynchronous buffer, stream and file output. +- `tests/unit/` and `tests/integration/`: Mocha tests against compiled `js/`. +- `examples/`: runnable feature examples; `fonts/` and `standard-fonts/`: font assets. +- Developer website and documentation MCP: separate `pdfmake/docs` repository, + `master` branch. Canonical docs: https://pdfmake.github.io/docs/0.3/. + +## Validation + +Library runtime remains Node >=20. Development tools require Node >=20.19 on 20.x or >=22.12 on newer lines (CI covers 20, 22 and 24). Run `npm ci` from the committed lockfile. +Run `npm test` after source changes: this builds both Node and browser artifacts, +runs all Mocha tests and ESLint. A focused loop is `npm run build:node` followed by +`npx mocha tests/unit/.spec.js`. Never edit generated `js/` or `build/`. +Run `npm run build:examples` and `npm run test:package` before proposing a release. +`npm run benchmark:text` compares the text flattener to its former implementation; +timings are diagnostic, not a CI pass/fail threshold. + +## Compatibility and boundaries + +Document definitions are processed and mutated during layout. Construct a fresh +definition for each independent document. Preserve font/style/line-break behavior +when optimizing; add regression cases before changing pagination or measurement. +Policies passed to `setUrlAccessPolicy` and `setLocalAccessPolicy` must return a +synchronous boolean. Do not add network fetching, telemetry, LLM providers or new +runtime dependencies for documentation tooling. Keep documentation tooling out of +the library's browser bundle. Do not rewrite vendored third-party sources. + +Run `npm run test:typescript` after public API/package changes. It tests real packed +consumers using the bundled declarations and no @types/pdfmake dependency. Keep native declarations +in types/ aligned with the runtime; preserve the MIT attribution. Do not add broad +ambient module shims or claim a native ESM runtime. Keep CJS, Node ESM and browser +imports working and retain negative type assertions. diff --git a/README.md b/README.md index 69729a973..6e456e03b 100644 --- a/README.md +++ b/README.md @@ -1,76 +1,174 @@ -# pdfmake [![Node.js CI][githubactions_img]][githubactions_url] [![GitHub][github_img]][github_url] [![npm][npm_img]][npm_url] +# pdfmake -[githubactions_img]: https://github.com/bpampuch/pdfmake/actions/workflows/node.js.yml/badge.svg?branch=master -[githubactions_url]: https://github.com/bpampuch/pdfmake/actions +**Create PDFs from structured JavaScript or TypeScript document definitions.** -[github_img]: https://img.shields.io/github/release/bpampuch/pdfmake.svg?colorB=0E7FBF -[github_url]: https://github.com/bpampuch/pdfmake/releases/latest +[![CI](https://github.com/bpampuch/pdfmake/actions/workflows/node.js.yml/badge.svg?branch=master)](https://github.com/bpampuch/pdfmake/actions/workflows/node.js.yml) +[![npm](https://img.shields.io/npm/v/pdfmake)](https://www.npmjs.com/package/pdfmake) +[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](LICENSE) -[npm_img]: https://img.shields.io/npm/v/pdfmake.svg?colorB=0E7FBF -[npm_url]: https://www.npmjs.com/package/pdfmake +[Documentation](https://pdfmake.github.io/docs/0.3/) · [Interactive examples](https://pdfmake.github.io/docs/0.3/playground/) · [Migration to 0.3](https://pdfmake.github.io/docs/0.3/migration-from-0.1/) · [Report an issue](https://github.com/bpampuch/pdfmake/issues) +pdfmake runs in Node.js and the browser. Describe text, tables, images and page +layout in a document definition, then write a file, return a buffer from an API, +or let a browser download the result. No browser process is needed on the server. -PDF document generation library for server-side and client-side in pure JavaScript. +> **Development branch:** this checkout targets 0.3.x and includes unreleased +> bundled TypeScript declarations and document preflight validation. The published +> 0.3.12 package does not include those additions. Build and pack this checkout to +> try them locally; do not assume installing 0.3.12 from npm installs this branch. -Check out [the playground](http://bpampuch.github.io/pdfmake/playground.html) and [examples](https://github.com/bpampuch/pdfmake/tree/master/examples). +## Start with a PDF -### Features +The library requires **Node.js 20 or later**. All 0.3 output helpers return Promises. -* line-wrapping, -* text-alignments (left, right, centered, justified), -* numbered and bulleted lists, -* tables and columns - * auto/fixed/star-sized widths, - * col-spans and row-spans, - * headers automatically repeated in case of a page-break, - * snaking columns (newspaper-style layout where content flows column-to-column), -* images and vector graphics, -* convenient styling and style inheritance, -* page headers and footers: - * static or dynamic content, - * access to current page number and page count, -* background-layer, -* page dimensions and orientations, -* margins, -* document sections, -* custom page breaks, -* font embedding, -* support for complex, multi-level (nested) structures, -* table of contents, -* helper methods for opening/printing/downloading the generated PDF, -* setting of PDF metadata (e.g. author, subject). +```sh +npm install pdfmake +``` -## Documentation +Save as `document.cjs`, then run `node document.cjs`: + +```js +const pdfmake = require('pdfmake'); +const fonts = require('pdfmake/standard-fonts/Helvetica'); + +pdfmake.addFonts(fonts); +pdfmake.setUrlAccessPolicy(() => false); +pdfmake.setLocalAccessPolicy(name => Object.values(fonts.Helvetica).includes(name)); + +async function main() { + const definition = { + content: [ + { text: 'Hello, pdfmake', fontSize: 22, bold: true }, + 'A document definition works in Node.js and the browser.', + { table: { body: [['Item', 'Quantity'], ['Documents', 3]] } } + ], + defaultStyle: { font: 'Helvetica' } + }; + await pdfmake.createPdf(definition).write('document.pdf'); +} + +main().catch(error => { + console.error(error.message); + process.exitCode = 1; +}); +``` -**Documentation URL: https://pdfmake.github.io/docs/** +Helvetica is a standard PDF font. Use an embedded font such as Roboto when your +content needs characters outside its supported encoding. Configure access policies +for the actual resources your application needs; document input can reference files +and URLs. See [fonts](https://pdfmake.github.io/docs/0.3/fonts/) and +[resource access](https://pdfmake.github.io/docs/0.3/guides/resource-security/). -Source of documentation: https://github.com/pdfmake/docs **Improvements are welcome!** +For a browser bundler: -## Building from sources +```js +import pdfmake from 'pdfmake/build/pdfmake.js'; +import vfs from 'pdfmake/build/vfs_fonts.js'; -using npm: +pdfmake.addVirtualFileSystem(vfs); +pdfmake.setUrlAccessPolicy(() => false); +await pdfmake.createPdf({ content: ['Hello from the browser'] }).download('hello.pdf'); ``` -git clone https://github.com/bpampuch/pdfmake.git -cd pdfmake -npm install -npm run build + +Use `getBuffer()` / `getStream()` for server integrations; `getBlob()`, `download()`, +`open()` and `print()` belong to the browser entry. Construct a fresh definition +for each generation: layout processing mutates the definition. + +## TypeScript + +This branch ships its own declarations. **Do not install `@types/pdfmake` alongside +the locally built package.** The declarations are based on the MIT-licensed +DefinitelyTyped 0.3 definitions, maintained here with environment-specific APIs. +Attribution is retained in [types/LICENSE](types/LICENSE). + +```ts +import pdfmake from 'pdfmake'; +import type { TDocumentDefinitions } from 'pdfmake'; + +const definition = { + content: [{ text: 'Checked by TypeScript', fontSize: 18 }] +} satisfies TDocumentDefinitions; ``` -using yarn: +Use `module: "NodeNext"`, `moduleResolution: "NodeNext"`, `strict: true` and +`esModuleInterop: true` for Node ESM. TypeScript CommonJS can use +`import pdfmake = require('pdfmake')`. For browser bundlers, use the explicit +browser imports above with `module: "ESNext"` and `moduleResolution: "Bundler"`. +`pdfmake/interfaces` and `pdfmake/interfaces.js` remain supported type paths. +The runtime is CommonJS/UMD; bundled declarations do not turn it into native ESM. + +## Validate document input + +The unreleased preflight API checks the complete declared document structure and +adds semantic checks for table shapes/spans, IDs, style/layout/font references, +numeric ranges and cycles. It collects diagnostics without changing input, +executing callbacks, fetching resources or evaluating source code. + +```js +const result = pdfmake.validateDocument(definition, { strict: true }); +if (!result.valid) { + for (const issue of result.errors) console.error(issue.path, issue.message); +} + +// Alternatively, reject invalid input before starting PDF generation. +const buffer = await pdfmake.createPdf(definition, { validation: true }).getBuffer(); ``` -git clone https://github.com/bpampuch/pdfmake.git -cd pdfmake -yarn -yarn run build + +Unknown properties produce warnings by default, allowing application metadata; +`strict: true` turns them into errors. Results include `errors`, `warnings`, +`deferred` checks and `truncated`. Defaults limit diagnostics to 100, nesting to +100 levels and inspected values to 50,000. Exhausted validation never reports success. +Callbacks and resource decoding still need rendering; always await output and +handle its rejection. JavaScript syntax errors happen before this object API runs. +See [diagnostics](https://pdfmake.github.io/docs/0.3/guides/errors/). + +## What you can build + +- Flowing text with named styles, wrapping, alignment and embedded fonts. +- Tables with repeated headers, row/column spans, borders and custom layouts. +- Columns, nested lists, page sections, backgrounds, headers and footers. +- Images, SVG, canvas vectors, QR codes, links and a table of contents. +- Metadata, encryption, attachments and supported archival/accessibility options. + +Start with [your first PDF](https://pdfmake.github.io/docs/0.3/learn/first-pdf/), +then explore the [document definition reference](https://pdfmake.github.io/docs/0.3/document-definition-object/). + +## Develop and contribute + +Development tools require Node >=20.19 on 20.x or >=22.12 on newer lines. +The optional standalone playground requires Node >=22.13. + +```sh +npm ci +npm test +npm run test:typescript +npm run build:examples +npm run test:package ``` -## License -MIT +`npm test` verifies the generated validation contract, builds both environments, +runs the test suite and lints source. Consumer tests install the real npm tarball +without `@types/pdfmake`, compile strict Node/browser fixtures and render PDFs. +CI runs these checks on Linux, macOS and Windows with Node 20, 22 and 24. + +After editing `types/interfaces.d.ts`, run `npm run schema:generate` and commit +the generated contract with the declaration change. Never edit `js/` or `build/`. +See [AGENTS.md](AGENTS.md) for the source map and compatibility expectations. + +```sh +npm run playground +# http://127.0.0.1:1234/playground/ + +npm pack +# Install the resulting .tgz in an isolated project to review unreleased changes. +``` -## Authors -* [@bpampuch](https://github.com/bpampuch) (founder) -* [@liborm85](https://github.com/liborm85) +Documentation, translations, Markdown exports and the read-only documentation MCP +server live in [pdfmake/docs](https://github.com/pdfmake/docs). +For bugs, include a minimal definition, pdfmake version, runtime and expected PDF. -pdfmake is based on a truly amazing library [pdfkit](https://github.com/devongovett/pdfkit) (credits to [@devongovett](https://github.com/devongovett)). +## License and acknowledgments -Thanks to all contributors. +[MIT](LICENSE). Founded by [Bartek Pampuch](https://github.com/bpampuch), maintained +with [liborm85](https://github.com/liborm85) and the contributor community. +PDF generation builds on [PDFKit](https://github.com/foliojs/pdfkit). diff --git a/benchmarks/document.cjs b/benchmarks/document.cjs new file mode 100644 index 000000000..889808656 --- /dev/null +++ b/benchmarks/document.cjs @@ -0,0 +1,39 @@ +const { performance } = require('node:perf_hooks'); +const rewire = require('rewire'); +const textModule = rewire('../js/TextInlines'); + +function previous(array) { + function flatten(items) { + return items.reduce((prev, cur) => { + const current = Array.isArray(cur.text) ? flatten(cur.text) : cur; + return prev.concat([].concat(current).some(Array.isArray) ? flatten(current) : current); + }, []); + } + return flatten(Array.isArray(array) ? array : [array]); +} +if (process.argv.includes('--previous')) textModule.__set__('flattenTextArray', previous); +require('../js/TextInlines').default = textModule.default; +const pdfmake = require('../js/index'); +const fonts = require('../standard-fonts/Helvetica'); +pdfmake.addFonts(fonts); +pdfmake.setUrlAccessPolicy(() => false); +pdfmake.setLocalAccessPolicy(name => Object.values(fonts.Helvetica).includes(name)); + +(async () => { + for (const size of [1000, 5000, 15000]) { + const times = []; + let bytes; + for (let run = 0; run < 4; run++) { + const definition = { defaultStyle: { font: 'Helvetica', fontSize: 10 }, content: [{ text: + Array.from({ length: size }, (_, i) => ({ text: `word${i} `, bold: i % 3 === 0 })) + }] }; + const start = performance.now(); + bytes = await pdfmake.createPdf(definition).getBuffer(); + if (run) times.push(performance.now() - start); + } + times.sort((a, b) => a - b); + console.log(JSON.stringify({ algorithm: process.argv.includes('--previous') ? 'previous' : 'optimized', node: process.version, + platform: process.platform, inlines: size, medianMs: +times[1].toFixed(2), bytes: bytes.length, + pages: Number(bytes.toString('latin1').match(/\/Count (\d+)/)[1]) })); + } +})().catch(error => { console.error(error); process.exitCode = 1; }); diff --git a/benchmarks/text-flatten.cjs b/benchmarks/text-flatten.cjs new file mode 100644 index 000000000..bac846e97 --- /dev/null +++ b/benchmarks/text-flatten.cjs @@ -0,0 +1,28 @@ +const assert = require('node:assert/strict'); +const { performance } = require('node:perf_hooks'); +const flatten = require('rewire')('../js/TextInlines').__get__('flattenTextArray'); + +function previous(array) { + return array.reduce((prev, cur) => { + const current = Array.isArray(cur.text) ? previous(cur.text) : cur; + return prev.concat([].concat(current).some(Array.isArray) ? previous(current) : current); + }, []); +} +function medianTime(fn, input) { + fn(input); + const times = Array.from({ length: 7 }, () => { + const start = performance.now(); + fn(input); + return performance.now() - start; + }).sort((a, b) => a - b); + return times[3]; +} +console.log(`Node ${process.version}, ${process.platform}/${process.arch}; median of 7, milliseconds`); +for (const size of [1000, 5000, 15000]) { + const input = Array.from({ length: size }, (_, i) => i % 3 ? { text: String(i), bold: true } : [{ text: [String(i)] }]); + assert.deepEqual(flatten(input), previous(input)); + const before = medianTime(previous, input); + const after = medianTime(flatten, input); + console.log(JSON.stringify({ inlines: size, previousMs: +before.toFixed(3), optimizedMs: +after.toFixed(3), speedup: +(before / after).toFixed(2) })); +} +console.log('Measures text flattening only; this is not an end-to-end PDF speedup.'); diff --git a/dev-playground/README.md b/dev-playground/README.md index a87ae02eb..b0641e07e 100644 --- a/dev-playground/README.md +++ b/dev-playground/README.md @@ -1,11 +1,31 @@ -## Dev Playground +# Development playground -Start from pdfmake ROOT directory with nodemon if you want server to restart with every change you make in pdfmake/src: +From the **library root**, with Node.js >=22.13: +```sh +npm ci +npm run build +npm run playground ``` -cd dev-playground -npm install # or: yarn -npm install -g nodemon -cd .. -nodemon ./dev-playground/server.js -``` + +Open http://127.0.0.1:1234/playground/. The command installs separate locked build +tools, compiles CodeMirror, and copies the local engine, Roboto and PDF.js assets +before starting a static localhost server. No Express, AngularJS or CDN is needed. +Set `PORT` to choose another port. + +After changing engine sources, rebuild the library, run `npm run build:playground` +again and reload. Definitions run in a fresh browser worker, terminated on Cancel +or a ten-second timeout. Custom code is trusted user code, not a security sandbox. +The current workspace, undo history and Live preview preference are autosaved locally. When Live preview is enabled, reloading, restoring a saved document and importing code update the PDF automatically. Turn Live preview off before importing code you want to inspect first; this preference also survives reloads. Named documents and quick drafts are stored separately. + +The editor supports highlighting, completions, Tab indentation and Ctrl/Command + +Enter. Ten examples cover tables, spans, styles, headers/footers, lists, columns, +embedded images, SVG and QR. PDF.js provides page navigation, zoom and extracted +page text. Live preview uses a typing delay and an offscreen canvas to keep the previous PDF visible until the replacement is ready. Code import/export and PDF downloads stay local. + +The docs repository mirrors the authored UI and tests it in Chromium. Update both +copies with its `scripts/sync-playground.mjs ` and verify using +`--check`. The two repositories have no runtime dependency on one another. + +Core CI retains Node 20/22/24 coverage. The playground toolchain is built on Node +24; its higher Node requirement does not apply to consumers of the npm library. diff --git a/dev-playground/editor.mjs b/dev-playground/editor.mjs new file mode 100644 index 000000000..3ef2ffccb --- /dev/null +++ b/dev-playground/editor.mjs @@ -0,0 +1,62 @@ +import { EditorView, basicSetup } from 'codemirror'; +import { javascript } from '@codemirror/lang-javascript'; +import { keymap } from '@codemirror/view'; +import { indentWithTab, undo, redo, undoDepth, redoDepth, historyField } from '@codemirror/commands'; +import { Compartment, EditorState } from '@codemirror/state'; +import { linter, lintGutter, setDiagnostics } from '@codemirror/lint'; +import { HighlightStyle, syntaxHighlighting } from '@codemirror/language'; +import { tags } from '@lezer/highlight'; +import { parse } from 'acorn'; + +const properties = ['content', 'text', 'style', 'styles', 'defaultStyle', 'fontSize', 'bold', 'italics', 'color', 'alignment', + 'margin', 'pageSize', 'pageMargins', 'pageOrientation', 'pageBreak', 'header', 'footer', 'columns', 'columnGap', + 'stack', 'table', 'body', 'widths', 'headerRows', 'layout', 'colSpan', 'rowSpan', 'fillColor', 'image', 'images', + 'width', 'height', 'fit', 'svg', 'qr', 'ul', 'ol', 'link', 'info']; + +export function createEditor(parent, source, onChange, onRun, options = {}) { + let language = options.language || "javascript"; + const languageSlot = new Compartment(); + const inspect = source => language === "typescript" ? [] : inspectSource(source, options.sourceType || 'script'); + const extensions = [basicSetup, syntaxHighlighting(HighlightStyle.define([{ tag: tags.keyword, color: 'var(--syntax-keyword, #ae273e)' }, { tag: tags.string, color: 'var(--syntax-string, #286341)' }, { tag: [tags.number, tags.bool], color: 'var(--syntax-number, #7440a8)' }])), languageSlot.of(javascript({ typescript: language === "typescript" })), lintGutter(), linter(view => inspect(view.state.doc.toString())), keymap.of([indentWithTab, { key: 'Mod-Enter', run: () => { onRun(); return true; } }]), + EditorView.contentAttributes.of({ 'aria-label': 'Editable code example', spellcheck: 'false' }), + javascript().language.data.of({ autocomplete: context => { + const word = context.matchBefore(/[\w$]*/); + if (!word || (!context.explicit && word.from === word.to)) return null; + return { from: word.from, options: properties.map(label => ({ label, type: 'property', info: 'pdfmake document field — see reference for context and valid values' })) }; + } }), + EditorView.updateListener.of(update => { if (update.docChanged) onChange(); }), + EditorView.theme({ '&': { height: '100%', fontSize: '13px', color: 'var(--ink, #202124)', backgroundColor: 'var(--surface, white)' }, '.cm-gutters': { color: 'var(--muted, #606770)', backgroundColor: 'var(--wash, #f7f7f8)', borderRight: '1px solid var(--line, #ddd)' }, '.cm-activeLine, .cm-activeLineGutter': { backgroundColor: 'var(--wash, #f7f7f8)' }, '.cm-cursor': { borderLeftColor: 'var(--ink, #202124)' }, '.cm-selectionBackground': { backgroundColor: 'var(--selection, #f9cbd0) !important' }, '.cm-scroller': { overflow: 'auto', fontFamily: 'Consolas, monospace' }, '.cm-content': { padding: '18px 0' } })]; + const view = new EditorView({ parent, doc: source, extensions }); + return { + getValue: () => view.state.doc.toString(), + setValue: value => view.dispatch({ changes: { from: 0, to: view.state.doc.length, insert: value } }), + setLanguage: value => { language = value; view.dispatch({ effects: languageSlot.reconfigure(javascript({ typescript: value === 'typescript' })) }); }, + reportDiagnostics: diagnostics => view.dispatch(setDiagnostics(view.state, diagnostics)), + resetValue: value => view.setState(EditorState.create({ doc: value, extensions })), + focus: () => view.focus(), destroy: () => view.destroy(), undo: () => undo(view), redo: () => redo(view), + canUndo: () => undoDepth(view.state) > 0, canRedo: () => redoDepth(view.state) > 0, + serialize: () => ({ state: view.state.toJSON({ history: historyField }), scrollTop: view.scrollDOM.scrollTop }), + restore: saved => { + view.setState(EditorState.fromJSON(saved.state, { extensions }, { history: historyField })); + view.scrollDOM.scrollTop = Number(saved.scrollTop) || 0; + }, + diagnose: () => { + const diagnostics = inspect(view.state.doc.toString()); + view.dispatch(setDiagnostics(view.state, diagnostics)); + return diagnostics; + }, + goTo: position => { + const anchor = Math.max(0, Math.min(view.state.doc.length, position)); + view.dispatch({ selection: { anchor }, effects: EditorView.scrollIntoView(anchor, { y: 'center' }) }); view.focus(); + } + }; +} + +export function inspectSource(source, sourceType = 'script') { + try { parse(source, { ecmaVersion: 'latest', sourceType, allowReturnOutsideFunction: true, allowAwaitOutsideFunction: true }); return []; } + catch (error) { + const from = Math.max(0, Math.min(source.length, error.pos || 0)); + return [{ from, to: Math.min(source.length, from + 1), severity: 'error', + message: `Line ${error.loc.line}, column ${error.loc.column + 1}: ${error.message}`, line: error.loc.line, column: error.loc.column + 1 }]; + } +} diff --git a/dev-playground/package-lock.json b/dev-playground/package-lock.json new file mode 100644 index 000000000..25135c598 --- /dev/null +++ b/dev-playground/package-lock.json @@ -0,0 +1,1009 @@ +{ + "name": "pdfmake-server-playground", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "pdfmake-server-playground", + "version": "0.0.0", + "devDependencies": { + "@codemirror/commands": "^6.11.1", + "@codemirror/lang-javascript": "^6.2.5", + "@codemirror/language": "^6.13.1", + "@codemirror/lint": "^6.9.7", + "@codemirror/state": "^6.7.6", + "@lezer/highlight": "^1.2.5", + "acorn": "^8.19.0", + "codemirror": "^6.0.2", + "esbuild": "^0.25.12", + "pdfjs-dist": "6.4.299" + }, + "engines": { + "node": ">=22.13.0" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.20.4", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.4.tgz", + "integrity": "sha512-yF8RhOf2SXlg00+qtupzLhrglcas61boqaONiNcbPIebHCpJocpqTBA6dyrtUrQO47hqyTdeob/3XnYilT7TaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.11.1.tgz", + "integrity": "sha512-O/4hG3SC1YwcmQ0d2UVNDs+AsaNWd1iHVxbTeEBuqH+6bExAiPK3iS/BvpY6rZGURALv4ZD3sIgcCmRvw3ehBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.7.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.5.tgz", + "integrity": "sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.13.1.tgz", + "integrity": "sha512-zfvU2r3TyylQLMj/te+5CnQ0rSqZi8B1oTCBbQkagcLW4Xc6imab6qN+pEJhsuNOLaJqiRyBXp9UhWA1DhVvDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/streamparser": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.5.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.7.tgz", + "integrity": "sha512-28/+iWLYxKxsvGYhSYL7zaCZqLz5+FFFDq9tVsvGv9kv8RY4fFAchJ5WX9M3YrrRlTIsECjsXPqeNgnSmNP2dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.42.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.7.2.tgz", + "integrity": "sha512-gUYkYhT2+n/+VGZ+8EzE5WFkYZUZYm1VOKDudIsNqh42uRVQJ0a6Yss9sdKT3MeOYfuL1N6AZA57oza0Oyr0LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.37.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.7.6", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.7.6.tgz", + "integrity": "sha512-kAz+AncRtKuIknedxT1bq4XwXv4UowhbkHU1myPrtVb/jZtImWuV5BXzv5vK6i3kYACsdiZiQKFQQ5Mq7elW8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/streamparser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@codemirror/streamparser/-/streamparser-6.0.0.tgz", + "integrity": "sha512-JTFPF6xrfjt0mnfGPgzcLiMwYmvIyNaoizp8BYzv8FE8KrT6GBGDZ190rtt+O7Wke3gG/MFHyiY9YGNeimof4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@codemirror/view": { + "version": "6.43.15", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.15.tgz", + "integrity": "sha512-HHsfpqFeHyXLs983pSRe38Xajs0vFWZQ2BuX0m7Ki8w3jZ5iD8cuR3lBz2/5/X53Dhf32SBHKh6rtSTB6tKeGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.7.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@lezer/common": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.3.tgz", + "integrity": "sha512-H0iErY4e43LpXbYDyBci5W4v/RwTgGV3YzYOlJPiGZ8RY8w51kVE+xLn1tg3Z6UmSfyETvtsUK3r7YsgDQEI7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@lezer/highlight": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.5.tgz", + "integrity": "sha512-O1GMVKgtf5YspFaRzpmqkVgMtIk2HG9uMAbH6wdAIdNh3TVzCsch/+cRi+6l2//UGDKe6NB9BW3cvuR5ezMQ0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.3.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.5.6.tgz", + "integrity": "sha512-sEvOqpl4vJQca0NugSQK02vQPbc5KrvoojnYGoqqFgFO0MtcYhwGiHKVEB+LuXYJnfyXo4QPA8ztbrEa4Fw5NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.11.tgz", + "integrity": "sha512-UwgZcl1R66H2hDzBrA7kWyYmX6s8p5TQ+e/t7CuvgCtBEPxbEPaHYHu+pJBvTvDotEJpuQkJjbXuHiw5Cixxgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.4.tgz", + "integrity": "sha512-Wy0V7+SGUjnF9/TkiM1hKVDPj7jKXduPNboMVtHTA8dySMURWqfg/JZ9E2Sq8JgSJmkl7k7Qe9FLeMSrSraWmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@napi-rs/canvas": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-1.0.11.tgz", + "integrity": "sha512-vt5tog1cr+QKadIddGe+3LrcX0EmjEd0izF717Uwf92mBmgYfq2XRmL2r4bZU40spB69exxhrBn9I91HYEr/7w==", + "dev": true, + "license": "MIT", + "optional": true, + "workspaces": [ + "e2e/*" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/canvas-android-arm64": "1.0.11", + "@napi-rs/canvas-darwin-arm64": "1.0.11", + "@napi-rs/canvas-darwin-x64": "1.0.11", + "@napi-rs/canvas-linux-arm-gnueabihf": "1.0.11", + "@napi-rs/canvas-linux-arm64-gnu": "1.0.11", + "@napi-rs/canvas-linux-arm64-musl": "1.0.11", + "@napi-rs/canvas-linux-riscv64-gnu": "1.0.11", + "@napi-rs/canvas-linux-x64-gnu": "1.0.11", + "@napi-rs/canvas-linux-x64-musl": "1.0.11", + "@napi-rs/canvas-win32-arm64-msvc": "1.0.11", + "@napi-rs/canvas-win32-x64-msvc": "1.0.11" + } + }, + "node_modules/@napi-rs/canvas-android-arm64": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-1.0.11.tgz", + "integrity": "sha512-dtJS4FQEfH9OwSYLtMrEnj7T8DzBbJc/97LI/OkiWOYpW/iW5t6R/gcxVrUXS8l45gCVpwMufgucRe/pe0ISqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-arm64": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-1.0.11.tgz", + "integrity": "sha512-J/JylWoJTG8OQqZaiqly4IODyAxNofUlZo0wtSBJtHk6AdymbdIkPynAM1JvQaZpPaG5h+msk9QuK8y4i1ooqw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-darwin-x64": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-1.0.11.tgz", + "integrity": "sha512-nlecCk3xy06eAGC7krZtzNDm9UNTHKuHQYK8ZYegdjzgSL8anGt/eLJZm86OWaNgZkwQwvDqfSmG8Nqe6MPZNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-1.0.11.tgz", + "integrity": "sha512-DKImmG+sTPolE0kGPsYPBxTtOjb3INALp32O2lW2CfSr0bAzSEKKuu+GrQbtilClyoPOahUErS3OrznFDraoWA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-1.0.11.tgz", + "integrity": "sha512-55sykACGENj5j1rhj+81AO8JbR9HYgGjRZ7/H+pNr4VE1DvINKYNMTcutk8ZmWxk276jAQvUKJ3+Kdj9GXU3lQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-1.0.11.tgz", + "integrity": "sha512-6Jz6jys17yXydO+WdJgu7JhoB4K7/w9sWHByzzTmLjQghUx3TDMWvLv+UcCdnWhg4oprET67EMymnrETdeGNAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-1.0.11.tgz", + "integrity": "sha512-lf2XeEebWiUYVOVEjLXxF7dfXrBBSEOBn9AqBh39VYXrPt5cDqI+1t58IFSjn8npqkg5jIOs8TQbjKABbFW1gQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-1.0.11.tgz", + "integrity": "sha512-iDapw7nFSE5tsmQxcH2+KotJhyfVPmHd6vUOQN/Em+8WNbkZJwJ/rDowlJMFnMl0SYSDSfgKCNUGi6Sn5++Smg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-1.0.11.tgz", + "integrity": "sha512-26q26AyITo3CGZX4HWFIMgBMA1lu3YN07gxzBm4tW6Hglq/OVyTP50kDrmWuKybCX6dh3m8Ly+c7YhI+sqCgCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-arm64-msvc": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-arm64-msvc/-/canvas-win32-arm64-msvc-1.0.11.tgz", + "integrity": "sha512-cUO96IdsfvIj2S+2PNcDSkTcLhjPj8pIOEWRV1Kj70MOP4wnE9zSk7N4C1EKHlFGRcgdR5AkbnBZj0dfHK9nbQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-1.0.11.tgz", + "integrity": "sha512-DFYp/ZQRdKunI/LPc0UkRXG1vlNjJKOJf8O8Ctb8+wm2Nt2ELg9Eamc31D2VoakkfGo8L+z0Iejz6WtFbQwyGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + } + }, + "node_modules/acorn": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.19.0.tgz", + "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/codemirror": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", + "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/crelt": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.7.tgz", + "integrity": "sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/pdfjs-dist": { + "version": "6.4.299", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-6.4.299.tgz", + "integrity": "sha512-AVl138zALtfaAPvADulE0PZThbYzCBS79nL4pOSL/6Sm/4AH5A21BD9VHt97OlCuzJuCpmeZtAtkinisF4Vb1g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=22.13.0 || >=24" + }, + "optionalDependencies": { + "@napi-rs/canvas": "^1.0.10" + } + }, + "node_modules/style-mod": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.4.tgz", + "integrity": "sha512-XXWIQt633/EpAFx8aZDOTjBzrCaGmhvEQlQo6MVPfa2OzO2cWo+4hV9h+6UkHYlXGfy+ODXKUdP7Pthmcu5ATw==", + "dev": true, + "license": "MIT" + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/dev-playground/package.json b/dev-playground/package.json index 9da1eb817..6760d25a1 100644 --- a/dev-playground/package.json +++ b/dev-playground/package.json @@ -1,8 +1,23 @@ { "name": "pdfmake-server-playground", "version": "0.0.0", - "dependencies": { - "body-parser": "^1.20.2", - "express": "^4.18.2" + "private": true, + "engines": { + "node": ">=22.13.0" + }, + "scripts": { + "start": "node ../scripts/build-playground.cjs && node server.js" + }, + "devDependencies": { + "@codemirror/commands": "^6.11.1", + "@codemirror/lang-javascript": "^6.2.5", + "@codemirror/language": "^6.13.1", + "@codemirror/lint": "^6.9.7", + "@codemirror/state": "^6.7.6", + "@lezer/highlight": "^1.2.5", + "acorn": "^8.19.0", + "codemirror": "^6.0.2", + "esbuild": "^0.25.12", + "pdfjs-dist": "6.4.299" } } diff --git a/dev-playground/public/ace.js b/dev-playground/public/ace.js deleted file mode 100644 index b4b7a55cb..000000000 --- a/dev-playground/public/ace.js +++ /dev/null @@ -1,14 +0,0 @@ -(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(e,t,n){var a=u(t);if(!i.isMac&&s){t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(a|=8);if(s.altGr){if((3&a)==3)return;s.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)s[n]==1&&(o=t.timeStamp);else if(n===18&&a===3&&f===2){var l=t.timeStamp-o;l<50&&(s.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),a&8&&n>=91&&n<=93&&(n=-1);if(!a&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,a,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&a&8){e(t,a,n);if(t.defaultPrevented)return;a&=-9}return!!a||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,a,n):!1}function f(){s=Object.create(null)}var r=e("./keys"),i=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){if("ontouchmove"in e){var r,i;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];r=t.clientX,i=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,s=e.changedTouches[0];e.wheelX=-(s.clientX-r)/t,e.wheelY=-(s.clientY-i)/t,r=s.clientX,i=s.clientY,n(e)})}},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){function c(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}function h(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)}var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",c),i.isOldIE&&t.addListener(e,"dblclick",h)})};var u=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[u(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var o=null;r(e,"keydown",function(e){o=e.keyCode}),r(e,"keypress",function(e){return a(n,e,o)})}else{var u=null;r(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=a(n,e,e.keyCode);return u=e.defaultPrevented,t}),r(e,"keypress",function(e){u&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),u=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n=53&&O()},I=o.delayedCall(j,50);r.addListener(n,"compositionstart",B),i.isGecko?r.addListener(n,"text",function(){I.schedule()}):(r.addListener(n,"keyup",function(){I.schedule()}),r.addListener(n,"keydown",function(){I.schedule()})),r.addListener(n,"compositionend",F),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){if(!o&&i.isOldIE)return;p||(p=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+"height:"+n.style.height+";"+(i.isIE?"opacity:0.1;":"");var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(q),i.isWin&&!i.isOldIE&&r.capture(t.container,h,R)},this.onContextMenuClose=R;var q,U=function(e){t.textInput.onContextMenu(e),R()};r.addListener(n,"mouseup",U),r.addListener(n,"mousedown",function(e){e.preventDefault(),R()}),r.addListener(t.renderer.scroller,"contextmenu",U),r.addListener(n,"contextmenu",U)};t.TextInput=f}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function u(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function f(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=0;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();r.$blockScrolling++,(o||i==1)&&r.selection.moveToPosition(n),r.$blockScrolling--,i==2&&r.textInput.onContextMenu(e.domEvent);return}this.mousedownEvent.time=Date.now();if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);n.$blockScrolling++;if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t._signal("showGutterTooltip",i),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=u.domEvent.target,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t._signal("hideGutterTooltip",i),t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener([u,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",n),i.isIE&&e.renderer.scrollBarV&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return!o&&e==-1&&(s={command:"insertstring"},o=u.exec("insertstring",this.$editor,t)),o&&this.$editor._signal&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&(r.row>0||e>0)&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(r.prototype),t.TokenIterator=r}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){if(this.lineCommentStart&&this.lineCommentStart.indexOf(i)!=-1)return;c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g,y&&/string\.end/.test(v.type)&&(y=!1);else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";function r(e){var n=/\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n,"\\u$&")}t.packages={},r({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour/cstyle").CstyleBehaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i};(function(){this.$defaultBehaviour=new s,this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowr)break;l.start.row==r&&l.start.column>=t.column&&(l.start.column!=t.column||!this.$insertRight)&&(l.start.column+=o,l.start.row+=s);if(l.end.row==r&&l.end.column>=t.column){if(l.end.column==t.column&&this.$insertRight)continue;l.end.column==t.column&&o>0&&al.start.column&&l.end.column==u[a+1].start.column&&(l.end.column-=o),l.end.column+=o,l.end.row+=s}}if(s!=0&&a=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range))return this.removeFold(s),s}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,s){var o;if(e!=null){o=this.$getDisplayTokens(e,a.length),o[0]=n;for(var f=1;fr-b){var w=a+r-b;if(e[w-1]>=p&&e[w]>=p){y(w);continue}if(e[w]==n||e[w]==u){for(w;w!=a-1;w--)if(e[w]==n)break;if(w>a){y(w);continue}w=a+r;for(w;w>2)),a-1);while(w>E&&e[w]E&&e[w]E&&e[w]==l)w--}else while(w>E&&e[w]E){y(++w);continue}w=a+r,e[w]==t&&w--,y(w-b)}return s},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(l):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}var v=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){var g=Math.floor(e-o);s=m[g],g>0&&m.length&&(v=m.indent,i=m[g-1]||m[m.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t-v)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;sn)break}return[r,s]}},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function u(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}return n(e[0])+e+n(e[e.length-1])}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i){if(!e.start){var o=e.offset+(i||0);r=new s(n,o,n,o+e.length);if(!e.length&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start))return r=null,!1}else r=e;return!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=0;u--)if(i(o[u],t,s))return!0};else var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r||n.isDefault?r=-100:r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var r=this.selection.getRange(),i=this.renderer.layerConfig;(r.start.row>=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){typeof e=="string"&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&np+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines.length==1?null:e.lines,text:e.lines.length==1?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){var n=new Array(e.length);for(var r=0;r0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(r.prototype),t.UndoManager=r}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}this.element.innerHTML=t.join("")},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,i,s,o){var u=this.session,a=n.start.row,f=n.end.row,l=a,c=0,h=0,p=u.getScreenLastRowColumn(l),d=new r(l,n.start.column,l,h);for(;l<=f;l++)d.start.row=d.end.row=l,d.start.column=l==a?n.start.column:u.getRowWrapIndent(l),d.end.column=p,c=h,h=p,p=l+1p,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"",e.push("
"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var l=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
")}}).call(s.prototype),t.Marker=s}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+s.stringRepeat(this.TAB_CHAR,n)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=s.stringRepeat(this.TAB_CHAR,this.tabSize)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;uf&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("
"),i++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":e;if(e=="&")return"&";if(e=="<")return"<";if(e==">")return">";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,o=0,u=n[0],a=0;for(var f=0;f=u)a=this.$renderToken(e,a,l,c.substring(0,u-i)),c=c.substring(u-i),i=u,r||e.push("","
"),e.push(s.stringRepeat("\u00a0",n.indent)),o++,a=0,u=n[o]||Number.MAX_VALUE;c.length!=0&&(i+=c.length,a=this.$renderToken(e,a,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=32768,a=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var f=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(f,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>u?(this.coeff=u/e,e=u):this.coeff!=1&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(f.prototype);var l=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(l,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=f,t.ScrollBarV=f,t.ScrollBarH=l,t.VScrollBar=f,t.HScrollBar=l}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}';i.importCssString(m,"ace_editor.css");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=this.scrollTop%this.lineHeight,l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var h=this.scrollMargin;this.session.setScrollTop(Math.max(-h.top,Math.min(this.scrollTop,i-t.scrollerHeight+h.bottom))),this.session.setScrollLeft(Math.max(-h.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+h.right)));var p=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>h.top),d=a!==p;d&&(this.$vScroll=p,this.scrollBarV.setVisible(p));var v=Math.ceil(l/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-f)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(g)*w+b,f=this.scrollTop-y*w;var S=0;this.layerConfig.width!=s&&(S=this.CHANGE_H_SCROLL);if(u||d)S=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:f,gutterOffset:w?Math.max(0,Math.ceil((f+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},S},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r||!r.cssClass)throw new Error("couldn't load module "+e+" or it didn't call define");i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),e.action=="insert"?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(!n||!e.action)return;var r=e.data,i=r.start.row,s=r.end.row,o=e.action=="add";for(var u=i+1;u0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,typeof define=="function"&&(t.define=define),t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else e&&(o=r.getInnerText(e),e.innerHTML="");var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u,t.version="1.2.6"}); - (function() { - window.require(["ace/ace"], function(a) { - if (a) { - a.config.init(true); - a.define = window.define; - } - if (!window.ace) - window.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; - }); - })(); - \ No newline at end of file diff --git a/dev-playground/public/app.js b/dev-playground/public/app.js new file mode 100644 index 000000000..a11420bb3 --- /dev/null +++ b/dev-playground/public/app.js @@ -0,0 +1,291 @@ +import { createEditor } from './editor.js'; +import { typedExamples } from './typed-examples.js'; +import { examples } from './examples.js'; +import * as pdfjs from './vendor/pdf.mjs'; +pdfjs.GlobalWorkerOptions.workerSrc = new URL('./vendor/pdf.worker.mjs', import.meta.url).href; + +export function mountPlayground(root = document, options = {}) { + const $ = id => root.querySelector('#' + id); + let suspended = false; + const events = new AbortController(); + const onWindow = (name, callback) => window.addEventListener(name, callback, { signal: events.signal }); + const docsBase = new URL('../', import.meta.url); + const route = new URL(options.url || location.href); + const docsHref = path => options.docLinks?.[path] || new URL(path, docsBase).href; + const series = options.version || docsBase.pathname.match(/\/docs\/(\d+\.\d+)\//)?.[1] || '0.3'; + const storagePrefix = series === '0.3' ? 'pdfmake-playground' : `pdfmake-playground-${series}`; + const workspaceKey = storagePrefix + '-workspace-v2'; + const documentsKey = storagePrefix + '-documents-v1'; + const draftKey = `pdfmake-playground-${series}-draft`; + const explicitExample = route.searchParams.get('example'); + const embedded = route.searchParams.get('embed') === '1'; + if (embedded) document.documentElement.classList.add('embedded'); + let selected = examples.find(example => example.id === explicitExample) || examples[0]; + let editor, worker, timeout, liveTimer, saveTimer, pendingPreview, previewLoad, previewDocument, renderTask; + let pdfUrl, renderedSource, pageNumber = 1, revision = 0, pageRevision = 0, dirty = false, loading = false, syntaxPosition; + let persistWorkspace = true; + let storageFailed = false; + let documents = readStorage(documentsKey, []); + if (!Array.isArray(documents)) documents = []; + documents = documents.filter(doc => doc && typeof doc.id === 'string' && typeof doc.name === 'string' && typeof doc.source === 'string' && doc.source.length <= 500000).slice(0, 30); + const cachedWorkspace = readStorage(workspaceKey, null); + const saved = !explicitExample || cachedWorkspace?.example === explicitExample ? cachedWorkspace : null; + let language = saved?.language === 'typescript' ? 'typescript' : 'javascript'; + let languageDrafts = {}; + for (const name of ['javascript', 'typescript']) { + const draft = saved?.languageDrafts?.[name]; + if (typeof draft?.source === 'string' && draft.source.length <= 500000) languageDrafts[name] = draft; + } + const sourceFor = example => language === 'typescript' ? typedExamples[example.id] : example.source; + function useLanguage(value) { + language = value === 'typescript' ? 'typescript' : 'javascript'; + $('code-language').value = language; editor?.setLanguage(language); + } + function switchLanguage(value) { + languageDrafts[language] = { source: editor.getValue(), editor: editor.serialize() }; + cancelPending(); loading = true; useLanguage(value); + const draft = languageDrafts[language]; + try { if (draft?.editor?.state?.doc === draft?.source) editor.restore(draft.editor); else editor.resetValue(draft?.source ?? sourceFor(selected)); } + catch { editor.resetValue(draft?.source ?? sourceFor(selected)); } + editor.setLanguage(language); loading = false; changed(); + } + + function readStorage(key, fallback) { if (embedded) return fallback; try { return JSON.parse(localStorage.getItem(key)) ?? fallback; } catch { return fallback; } } + function status(message, error = false) { $('status').textContent = message; $('status').dataset.error = String(error); } + function historyButtons() { $('undo').disabled = !editor.canUndo(); $('redo').disabled = !editor.canRedo(); } + function saveWorkspace() { + if (!editor || embedded || !persistWorkspace) return; + try { + localStorage.setItem(workspaceKey, JSON.stringify({ version: 2, example: selected.id, editor: editor.serialize(), + source: editor.getValue(), language, languageDrafts, autoRun: $('auto-run').checked, zoom: $('zoom').value, page: pageNumber, name: $('document-name').value })); + storageFailed = false; + $('draft-state').textContent = 'Workspace saved automatically'; + } catch { storageFailed = true; $('draft-state').textContent = 'Storage unavailable or full — export code to keep it'; } + } + function stop(message) { + worker?.terminate(); worker = undefined; + clearTimeout(timeout); $('run').disabled = false; $('cancel').hidden = true; + if (message) status(message); + } + function cancelPending() { + revision++; stop(); clearTimeout(liveTimer); + pendingPreview?.destroy(); pendingPreview = undefined; + } + function markStale() { + $('download').disabled = renderedSource !== editor.getValue(); + $('preview').dataset.stale = String(renderedSource !== editor.getValue()); + $('open-pdf').hidden = renderedSource !== editor.getValue(); + } + function schedule() { + clearTimeout(liveTimer); + if (!suspended && $('auto-run').checked) liveTimer = setTimeout(() => run(), 650); + } + function changed() { + if (!editor || loading) return; + persistWorkspace = true; + dirty = true; cancelPending(); markStale(); historyButtons(); + $('metrics').textContent = pdfUrl ? 'Previous successful render · updating…' : 'Run to update preview'; + status($('auto-run').checked ? 'Waiting for typing to pause…' : 'Code changed. Select Run to update the PDF.'); + clearTimeout(saveTimer); saveTimer = setTimeout(saveWorkspace, 200); + schedule(); + } + function showError(message, details = {}) { + syntaxPosition = details.position; + const context = [details.phase && `Phase: ${details.phase}`, details.code && `Code: ${details.code}`, details.path && `Document path: ${details.path}`].filter(Boolean); + $('error').textContent = [message, ...context].join('\n'); $('error').hidden = false; + $('go-error').hidden = syntaxPosition === undefined; + $('metrics').textContent = pdfUrl ? 'Previous successful render · current code has errors' : 'No generated PDF'; + status(pdfUrl ? 'Could not update the PDF. The previous successful preview is kept.' : 'Could not generate the PDF. See the error below.', true); + markStale(); + } + async function stagePage(doc, number, current) { + const page = await doc.getPage(number); + const width = $('preview-panel')?.clientWidth || $('preview').clientWidth || $('preview-empty').clientWidth; + const scale = $('zoom').value === 'fit' ? Math.max(0.2, (width - 36) / page.getViewport({ scale: 1 }).width) : Number($('zoom').value); + const viewport = page.getViewport({ scale }); + const canvas = document.createElement('canvas'); canvas.id = 'pdf-canvas'; canvas.setAttribute('role', 'img'); + canvas.setAttribute('aria-label', `PDF preview page ${number} of ${doc.numPages}`); + const ratio = Math.min(devicePixelRatio || 1, 2); + canvas.width = Math.floor(viewport.width * ratio); canvas.height = Math.floor(viewport.height * ratio); + canvas.style.width = viewport.width + 'px'; canvas.style.height = viewport.height + 'px'; + const task = page.render({ canvasContext: canvas.getContext('2d'), viewport, transform: [ratio, 0, 0, ratio, 0, 0] }); + renderTask = task; + await task.promise; + const text = await page.getTextContent(); + if (!current()) return null; + return { canvas, text: text.items.map(item => item.str).join(' ') }; + } + function commitPage(page, doc) { + $('pdf-canvas').replaceWith(page.canvas); + $('page-text').textContent = page.text; + $('page-count').textContent = `${pageNumber} / ${doc.numPages}`; + $('previous-page').disabled = pageNumber <= 1; $('next-page').disabled = pageNumber >= doc.numPages; + $('preview').hidden = false; $('preview-empty').hidden = true; + } + async function renderPage() { + if (!previewDocument) return; + const doc = previewDocument, current = ++pageRevision; + renderTask?.cancel(); + try { + const page = await stagePage(doc, pageNumber, () => current === pageRevision && doc === previewDocument); + if (page) commitPage(page, doc); + } catch (error) { if (error.name !== 'RenderingCancelledException') showError('Preview: ' + error.message); } + } + async function acceptResult(data, source, current) { + const blob = new Blob([data.buffer], { type: 'application/pdf' }); + const task = pdfjs.getDocument({ data: new Uint8Array(data.buffer), password: data.password }); pendingPreview = task; + try { + const doc = await task.promise; + const number = Math.min(pageNumber, doc.numPages); + const page = await stagePage(doc, number, () => current === revision); + if (!page || current !== revision) { await task.destroy(); return; } + const old = previewLoad, oldUrl = pdfUrl; + previewDocument = doc; previewLoad = task; pendingPreview = undefined; pageNumber = number; + pdfUrl = URL.createObjectURL(blob); renderedSource = source; + commitPage(page, doc); markStale(); + $('open-pdf').href = pdfUrl; $('metrics').textContent = `${Math.round(data.elapsed)} ms · ${(blob.size / 1024).toFixed(1)} KB`; + $('error').hidden = true; $('go-error').hidden = true; + status('PDF ready. Preview, open or download your document.'); + old?.destroy(); if (oldUrl) URL.revokeObjectURL(oldUrl); + saveWorkspace(); + } catch (error) { + if (current === revision) showError('Preview: ' + error.message, { phase: 'preview' }); + if (task !== previewLoad) await task.destroy(); + } + } + function run() { + if (suspended) return; + cancelPending(); const current = revision; + $('error').hidden = true; $('go-error').hidden = true; + const source = editor.getValue(); + if (source.length > 500000) return showError('Definition exceeds the 500 KB limit.'); + const [syntax] = editor.diagnose(); + if (syntax) return showError('Syntax error: ' + syntax.message, { phase: 'JavaScript parsing', code: 'JAVASCRIPT_SYNTAX_ERROR', position: syntax.from }); + $('run').disabled = true; $('cancel').hidden = false; status('Rendering in a local worker…'); + const active = worker = new Worker(new URL('./worker.js', import.meta.url)); + worker.onmessage = async ({ data }) => { + if (worker !== active || current !== revision) return; + stop(); + if (data.diagnostics) editor.reportDiagnostics(data.diagnostics); + if (data.error) { showError(data.error, { ...data, position: data.position ?? data.diagnostics?.[0]?.from }); return; } + await acceptResult(data, source, current); + }; + worker.onerror = event => { if (worker !== active) return; stop(); showError(event.message || 'PDF worker could not start.', { phase: 'worker' }); }; + timeout = setTimeout(() => { if (current !== revision) return; stop(); showError('Rendering stopped after 10 seconds. Check for an infinite loop or reduce the document size.', { phase: 'render', code: 'RENDER_TIMEOUT' }); }, 10000); + worker.postMessage({ source, language }); saveWorkspace(); + } + function load(example) { + cancelPending(); selected = example; languageDrafts = {}; loading = true; editor.resetValue(sourceFor(example)); editor.setLanguage(language); loading = false; + dirty = false; historyButtons(); markStale(); $('error').hidden = true; $('go-error').hidden = true; + $('example-docs').href = docsHref(example.docs); $('saved-documents').value = ''; $('document-name').value = ''; + const url = new URL(location.href); url.searchParams.set('example', example.id); history.replaceState(history.state, '', url); + saveWorkspace(); if ($('auto-run').checked) run(); else status('Example loaded. Select Run.'); + } + function download(url, name) { const link = document.createElement('a'); link.href = url; link.download = name; link.click(); } + function draftButtons() { try { $('restore-draft').disabled = $('clear-draft').disabled = localStorage.getItem(draftKey) === null; } catch {} } + function documentOptions() { + const select = $('saved-documents'); select.replaceChildren(new Option('Choose a saved document…', '')); + for (const doc of documents) select.append(new Option(doc.name, doc.id)); + $('delete-document').disabled = true; + } + for (const example of examples) $('example').append(new Option(example.title, example.id)); + if (saved?.version === 2 && typeof saved.source === 'string' && saved.source.length <= 500000) { + selected = examples.find(example => example.id === saved.example) || selected; + } + editor = createEditor($('editor'), sourceFor(selected), changed, run, { language }); + useLanguage(language); + $('code-language').addEventListener('change', () => switchLanguage($('code-language').value)); + $('example').value = selected.id; $('example-docs').href = docsHref(selected.docs); + if (saved?.version === 2 && typeof saved.source === 'string' && saved.source.length <= 500000) { + loading = true; + try { if (saved.editor?.state?.doc === saved.source) editor.restore(saved.editor); else editor.setValue(saved.source); } + catch { editor.setValue(saved.source); } + editor.setLanguage(language); + loading = false; + $('auto-run').checked = saved.autoRun !== false; + if (['fit', '1', '1.5', '2'].includes(saved.zoom)) $('zoom').value = saved.zoom; + pageNumber = Number.isSafeInteger(saved.page) && saved.page > 0 ? saved.page : 1; + $('document-name').value = typeof saved.name === 'string' ? saved.name.slice(0, 80) : ''; + status('Last workspace and undo history restored.'); + } + $('example').addEventListener('change', () => { + if (dirty && !confirm('Replace current edits with this example? Your workspace is autosaved; save a named document to keep a separate copy.')) { $('example').value = selected.id; return; } + load(examples.find(example => example.id === $('example').value)); + }); + $('undo').addEventListener('click', () => { editor.undo(); historyButtons(); }); + $('redo').addEventListener('click', () => { editor.redo(); historyButtons(); }); + $('reset').addEventListener('click', () => { if (!dirty || confirm('Reset this example and replace current edits?')) load(selected); }); + $('auto-run').addEventListener('change', () => { saveWorkspace(); if ($('auto-run').checked) run(); else clearTimeout(liveTimer); }); + $('run').addEventListener('click', run); + $('cancel').addEventListener('click', () => { cancelPending(); status('Rendering cancelled. Your code and previous preview are kept.'); }); + $('go-error').addEventListener('click', () => editor.goTo(syntaxPosition)); + for (const [id, change] of [['previous-page', -1], ['next-page', 1]]) $(id).addEventListener('click', () => { + if (!previewDocument) return; pageNumber = Math.max(1, Math.min(previewDocument.numPages, pageNumber + change)); renderPage(); saveWorkspace(); + }); + $('zoom').addEventListener('change', () => { renderPage(); saveWorkspace(); }); + $('download').addEventListener('click', () => { if (pdfUrl && renderedSource === editor.getValue()) download(pdfUrl, ($('document-name').value.trim() || selected.id) + '.pdf'); }); + $('export').addEventListener('click', () => { const url = URL.createObjectURL(new Blob([editor.getValue()], { type: 'text/javascript' })); download(url, ($('document-name').value.trim() || selected.id) + (language === 'typescript' ? '.ts' : '.js')); setTimeout(() => URL.revokeObjectURL(url), 1000); }); + $('import').addEventListener('change', async event => { + const [file] = event.target.files; event.target.value = ''; if (!file) return; + if (file.size > 500000) return showError('Import is limited to 500 KB.'); + if (dirty && !confirm('Replace current edits with this file?')) return; + try { useLanguage(/\.ts$/i.test(file.name) ? 'typescript' : 'javascript'); languageDrafts = {}; editor.setValue(await file.text()); $('document-name').value = file.name.replace(/\.(js|ts|txt)$/i, '').slice(0, 80); saveWorkspace(); status($('auto-run').checked ? 'Imported and autosaved. Updating preview…' : 'Imported and autosaved. Select Run to update the PDF.'); } + catch { showError('Could not read that file.'); } + }); + $('save-document').addEventListener('click', () => { + const name = $('document-name').value.trim(); if (!name) { $('document-name').focus(); return status('Give this local document a name.', true); } + const existing = documents.find(doc => doc.id === $('saved-documents').value); + const doc = { id: existing?.name === name ? existing.id : crypto.randomUUID(), name, source: editor.getValue(), editor: editor.serialize(), example: selected.id, language }; + const next = [...documents.filter(item => item.id !== doc.id), doc].slice(-30); + try { localStorage.setItem(documentsKey, JSON.stringify(next)); documents = next; documentOptions(); $('saved-documents').value = doc.id; $('delete-document').disabled = false; dirty = false; saveWorkspace(); status('Document saved locally, including undo history.'); } + catch { status('Could not save: browser storage is unavailable or full. Export the code instead.', true); } + }); + $('saved-documents').addEventListener('change', () => { + const doc = documents.find(item => item.id === $('saved-documents').value); $('delete-document').disabled = !doc; if (!doc) return; + if (dirty && !confirm('Replace current edits with this saved document? Save them as a named document first to keep a separate copy.')) { $('saved-documents').value = ''; $('delete-document').disabled = true; return; } + cancelPending(); loading = true; languageDrafts = {}; useLanguage(doc.language); + try { if (doc.editor?.state?.doc === doc.source) editor.restore(doc.editor); else editor.setValue(doc.source); } catch { editor.setValue(doc.source); } + editor.setLanguage(language); loading = false; selected = examples.find(example => example.id === doc.example) || selected; $('example').value = selected.id; + $('example-docs').href = docsHref(selected.docs); + const url = new URL(location.href); url.searchParams.set('example', selected.id); history.replaceState(history.state, '', url); + $('document-name').value = doc.name; dirty = false; historyButtons(); markStale(); saveWorkspace(); if ($('auto-run').checked) run(); else status('Local document restored. Select Run to update the PDF.'); + }); + $('delete-document').addEventListener('click', () => { + const id = $('saved-documents').value; if (!id || !confirm('Delete this saved document? The current editor contents will stay.')) return; + const next = documents.filter(doc => doc.id !== id); + try { localStorage.setItem(documentsKey, JSON.stringify(next)); documents = next; documentOptions(); status('Saved document deleted. Current editor contents are kept.'); } catch { status('Could not update browser storage.', true); } + }); + $('save-draft').addEventListener('click', () => { try { localStorage.setItem(draftKey, JSON.stringify({ source: editor.getValue(), language })); draftButtons(); status('Quick draft saved locally.'); } catch { status('Storage is full or unavailable. Export code instead.', true); } }); + $('restore-draft').addEventListener('click', () => { try { const source = localStorage.getItem(draftKey); if (source !== null) { let draft; try { draft = JSON.parse(source); } catch {} useLanguage(draft?.language); editor.setValue(typeof draft?.source === 'string' ? draft.source : source); saveWorkspace(); if ($('auto-run').checked) schedule(); else status('Quick draft restored. Select Run to update the PDF.'); } } catch { status('Browser storage unavailable.', true); } }); + $('clear-draft').addEventListener('click', () => { try { localStorage.removeItem(draftKey); draftButtons(); status('Quick draft cleared. Workspace autosave remains available.'); } catch {} }); + $('clear-workspace').addEventListener('click', () => { + try { clearTimeout(saveTimer); localStorage.removeItem(workspaceKey); persistWorkspace = false; $('draft-state').textContent = 'Autosave cleared · typing resumes autosave'; status('Saved workspace cleared. Current code and named documents are kept.'); } + catch { status('Could not clear browser storage.', true); } + }); + $('document-name').addEventListener('input', () => { clearTimeout(saveTimer); saveTimer = setTimeout(saveWorkspace, 200); }); + onWindow('pagehide', event => { + saveWorkspace(); cancelPending(); + if (!event.persisted) { previewLoad?.destroy(); if (pdfUrl) URL.revokeObjectURL(pdfUrl); } + }); + onWindow('pageshow', event => { + if (event.persisted) { markStale(); if (renderedSource !== editor.getValue()) schedule(); } + }); + onWindow('beforeunload', event => { if (storageFailed && dirty) { event.preventDefault(); event.returnValue = ''; } }); + let previewResize; + onWindow('resize', () => { clearTimeout(previewResize); if (!suspended) previewResize = setTimeout(() => { if ($('zoom').value === 'fit') renderPage(); }, 150); }); + documentOptions(); draftButtons(); historyButtons(); + fetch(new URL('./vendor/version.json', import.meta.url)).then(response => response.json()).then(data => { $('version').textContent = 'v' + data.version; }).catch(() => {}); + if ($('auto-run').checked) run(); else status('Live preview is off. Select Run to update the PDF.'); + + return { + suspend() { suspended = true; saveWorkspace(); clearTimeout(saveTimer); clearTimeout(previewResize); cancelPending(); pageRevision++; renderTask?.cancel(); }, + resume(url) { + suspended = false; + const id = new URL(url).searchParams.get('example'); + const example = examples.find(item => item.id === id); + if (example && example.id !== selected.id && (!dirty || confirm('Replace current edits with this example? Save a named document to keep a separate copy.'))) load(example); + else { markStale(); if (renderedSource !== editor.getValue()) schedule(); else renderPage(); } + }, + destroy() { this.suspend(); events.abort(); editor.destroy(); previewLoad?.destroy(); if (pdfUrl) URL.revokeObjectURL(pdfUrl); } + }; +} diff --git a/dev-playground/public/brand/icon-16.png b/dev-playground/public/brand/icon-16.png new file mode 100644 index 0000000000000000000000000000000000000000..b99add188490b49b20678e23c8fdc5c50a221b35 GIT binary patch literal 623 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 d=Ifda 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 z%0D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 z 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

o{{Z)ByoU|xu9KK$F)tw2xXB?^u9go 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�R=&?&+D{G&tU#8w1JX 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 XjV!nXku?ho00000NkvXXu0mjf^#K?K literal 0 HcmV?d00001 diff --git a/dev-playground/public/examples.js b/dev-playground/public/examples.js new file mode 100644 index 000000000..bf3d4549a --- /dev/null +++ b/dev-playground/public/examples.js @@ -0,0 +1,109 @@ +export const examples = [ + { id: 'welcome', title: '01 · First document', docs: 'getting-started/client-side/', source: `// Define a fresh document in dd. Ctrl/⌘ + Enter to run. +var dd = { + content: [ + { text: 'Make something clear.', fontSize: 30, bold: true, color: '#08786b', margin: [0, 0, 0, 16] }, + 'A paragraph, a table, a report. Start here and make it yours.', + { text: 'Built with pdfmake', italics: true, color: '#667d73', margin: [0, 20, 0, 0] } + ] +};` }, + { id: 'invoice', title: '02 · Invoice', docs: 'guides/invoice/', source: `var items = [ + ['Design services', 2, 125], + ['Document review', 1, 75] +]; +var total = items.reduce((sum, row) => sum + row[1] * row[2], 0); +var dd = { + info: { title: 'Invoice INV-001' }, + footer: (page, pages) => ({ text: 'Page ' + page + ' of ' + pages, alignment: 'center', fontSize: 9 }), + content: [ + { text: 'INVOICE', style: 'title' }, + { columns: ['Example Studio', { text: 'INV-001', alignment: 'right' }], margin: [0, 0, 0, 24] }, + { layout: 'lightHorizontalLines', table: { + headerRows: 1, widths: ['*', 'auto', 'auto'], + body: [['Service', 'Qty', 'EUR'], ...items.map(row => [row[0], row[1], row[2].toFixed(2)])] + } }, + { text: 'Total: ' + total.toFixed(2) + ' EUR', bold: true, alignment: 'right', margin: [0, 20, 0, 0] } + ], + styles: { title: { fontSize: 28, bold: true, color: '#08786b', margin: [0, 0, 0, 12] } } +};` }, + { id: 'tables', title: '03 · Tables & repeating headers', docs: 'document-definition-object/tables/', source: `var rows = Array.from({ length: 65 }, (_, i) => [ + 'Item ' + (i + 1), 'A row that can continue across pages', String(i + 1) +]); +var dd = { + content: [ + { text: 'A longer table', fontSize: 24, bold: true, margin: [0, 0, 0, 16] }, + { layout: 'lightHorizontalLines', table: { + headerRows: 1, widths: [70, '*', 40], + body: [[{ text: 'Item', bold: true }, { text: 'Description', bold: true }, { text: 'Qty', bold: true }], ...rows] + } } + ] +};` }, + { id: 'styles', title: '04 · Text & named styles', docs: 'document-definition-object/styling/', source: `var dd = { + content: [ + { text: 'Style with intent', style: 'heading' }, + { text: ['One paragraph with ', { text: 'bold', bold: true }, ' and ', { text: 'italic', italics: true }, ' inline text.'] }, + { text: 'A reusable note style.', style: 'note' }, + { ul: ['Readable defaults', 'Small style dictionaries', 'Consistent spacing'], margin: [0, 12, 0, 0] } + ], + defaultStyle: { fontSize: 12, lineHeight: 1.3 }, + styles: { + heading: { fontSize: 26, bold: true, color: '#08786b', margin: [0, 0, 0, 18] }, + note: { fontSize: 10, color: '#536771', margin: [0, 12, 0, 0] } + } +};` }, + { id: 'columns', title: '05 · Columns & stacks', docs: 'document-definition-object/columns/', source: `var dd = { + content: [ + { text: 'Two perspectives', fontSize: 26, bold: true, margin: [0, 0, 0, 20] }, + { columnGap: 24, columns: [ + { width: '*', stack: [{ text: 'The essentials', bold: true }, 'This column takes an equal share of the available width.', { ul: ['Text', 'Lists', 'Nested blocks'] }] }, + { width: '*', stack: [{ text: 'The details', bold: true }, 'Use fixed widths, auto widths or star widths to describe your layout.'] } + ] } + ] +};` }, + { id: 'spans', title: '06 · Merged table cells', docs: 'document-definition-object/tables/', source: `var dd = { + content: [{ table: { + widths: ['*', '*', '*'], + body: [ + [{ text: 'A shared heading', colSpan: 3, bold: true, fillColor: '#e4f2eb' }, {}, {}], + [{ text: 'Two rows', rowSpan: 2 }, 'A', 'B'], + [{}, 'C', 'D'] + ] + } }] +};` }, + { id: 'pages', title: '07 · Headers, footers & page breaks', docs: 'document-definition-object/headers-footers/', source: `var dd = { + pageSize: 'A4', pageMargins: [40, 60, 40, 60], + header: { text: 'EXAMPLE REPORT', margin: [40, 20, 0, 0], color: '#536771', fontSize: 9 }, + footer: (page, pages) => ({ text: page + ' / ' + pages, alignment: 'center', fontSize: 9 }), + content: [ + { text: 'Chapter one', fontSize: 26, bold: true }, + 'Start on the first page.', + { text: 'Chapter two', pageBreak: 'before', fontSize: 26, bold: true }, + 'This block begins on a new page.' + ] +};` }, + { id: 'vectors', title: '08 · SVG & QR codes', docs: 'document-definition-object/svgs/', source: `var dd = { + content: [ + { text: 'Small vectors. Sharp output.', fontSize: 24, bold: true, margin: [0, 0, 0, 20] }, + { svg: '', width: 240 }, + { qr: 'https://pdfmake.github.io/docs/0.3/', fit: 110, margin: [0, 24, 0, 12] }, + 'The QR code encodes a URL; it does not fetch it.' + ] +};` }, + { id: 'images', title: '09 · Embedded images', docs: 'document-definition-object/images/', source: `var dd = { + images: { pixel: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAF0lEQVR4nGPgqMgmCTGMahjVkD1sNQAAjRnrAVbW+rcAAAAASUVORK5CYII=' }, + content: [ + { text: 'One resource, several uses', fontSize: 24, bold: true, margin: [0, 0, 0, 18] }, + 'Use the images dictionary to reuse embedded PNG or JPEG data.', + { image: 'pixel', width: 30, margin: [0, 15, 0, 15] }, + { image: 'pixel', fit: [60, 60] } + ] +};` }, + { id: 'lists', title: '10 · Lists & links', docs: 'document-definition-object/lists/', source: `var dd = { + content: [ + { text: 'A clear sequence', fontSize: 26, bold: true }, + { ol: ['Configure fonts', 'Build a fresh definition', 'Await the output'], margin: [0, 16, 0, 20] }, + { ul: ['No manual text positioning', { stack: ['Nested choices', { ul: ['Tables', 'Columns', 'Stacks'] }] }] }, + { text: 'Read the reference', link: 'https://pdfmake.github.io/docs/0.3/', color: '#08786b', margin: [0, 20, 0, 0] } + ] +};` } +]; diff --git a/dev-playground/public/index.html b/dev-playground/public/index.html index dbc529dee..8398e8466 100644 --- a/dev-playground/public/index.html +++ b/dev-playground/public/index.html @@ -1,136 +1,29 @@ - - - + + - - - - - + + + Playground · pdfmake 0.3 + + + + + + - - - -

- -
-
- -
    -
  • {{e.name}}
  • -
-
-
- -
-
-
-

Playground does not make too much sense when horizontal resolution is below 300px

-
-
-
-
- - -
-
- - - - - - - - - - - - - - + +
PLAYGROUND
+
+

TRY / LEARN / BUILD

A small idea.
A real document.

Edit a definition. Run it locally. See your PDF.
No account. No server-side PDF generation.

+
+
Workspace and undo history are saved automatically in this browser.
+
+

Document definition

+

PDF preview

Your document will appear here.
Choose an example and select Run.
+
+

Ready. Run an example to begin.

10 s render limit · Embedded resources only
+ +
How it works & keyboard shortcuts

Define var dd = { content: [...] };. Use Ctrl/⌘ + Enter to run, Tab to indent, and Ctrl + Space for completions. The engine runs in a disposable worker so Cancel and the time limit can stop a blocked render. PDF.js renders the preview directly, including page navigation, zoom and extracted page text. Open PDF and Download PDF are also available.

Run only JavaScript you trust. Custom code executes in your browser and is not a security sandbox. Live preview updates imports and restored documents automatically when enabled. Turn it off before importing code you want to inspect first. Your current workspace, selection and undo history are autosaved in this browser. Named documents and quick drafts are separate local saves. Clear workspace autosave removes the last workspace until you type again. No code or PDF is uploaded by this playground. URL resources are disabled in the PDF API; use embedded images and bundled fonts.

+
- diff --git a/dev-playground/public/mode-javascript.js b/dev-playground/public/mode-javascript.js deleted file mode 100644 index 39ae9eef4..000000000 --- a/dev-playground/public/mode-javascript.js +++ /dev/null @@ -1 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(l.prototype),t.Mode=l}) diff --git a/dev-playground/public/pdfmake.css b/dev-playground/public/pdfmake.css deleted file mode 100644 index b1ac52bb4..000000000 --- a/dev-playground/public/pdfmake.css +++ /dev/null @@ -1,258 +0,0 @@ -body { - font-family: 'Open Sans', sans-serif; - color: #666; - background: white !important; -} -.navbar { - margin-bottom: 0; - background-color: white; - border-bottom: 0; -} -#top.navbar-default a { - color: #0074c1; -} -#top.navbar-default .navbar-nav a{ - text-transform: uppercase; -} -#top.navbar-default li:hover { - background: rgb(249,249,249); -} -h2 { - font-weight: 300; - color: #0074c1; - font-size: 24px; -} -.keyDescription { - padding-bottom: 80px; -} - -h4 { - opacity: 0.9; -} -.subtitle { - color: white; - margin-top: 30px; -} -.header, .playground { - background: #0074c1; - color: white; -} -.header p { - opacity: 0.7; - font-weight: 300; - font-size: 18px; -} -h1 { - font-size: 36px; - font-weight: 300; -} - -.playground ul { - list-style: none; - padding: 0; - margin-left: -8px; - margin-bottom: 0; -} - -.playground li { - display: none; - padding: 8px; - text-transform: uppercase; - cursor: pointer; - font-size: 12px; - text-overflow: ellipsis; -} - -.playground li:hover { - background: rgba(0,0,0,0.1); -} - -#pdfeViewer { - background-color: #404040; -} - -@media(min-width: 768px) { - h1 { - font-size: 60px; - } - .header { - padding-top: 20px; - padding-bottom: 40px; - margin-bottom: 30px; - height: 400px; - } - .header p { - font-size: 24px; - line-height: 1.4; - } - .page h1 { - font-size: 40px; - } - h2 { - font-size: 30px; - - } - - .subtitle { - margin-top: 90px; - } -} -.pdf { - font-weight: 300; -} -.make { - font-weight: 600 -} - -.playgroundBody .content { - display: none; -} - - -#editor { - position: absolute; - top: 0px; - right: 50%; - left: 0; - width: 50%; - height: 100%; -} - - -#stats { - display: none; - float: right; - position: relative; - top: 6px; - opacity: 0.5; -} -#printThis { - float: right; - top:0; -} - - -@media(min-width: 300px) and (max-width: 1000px) { - .playground .container li { - display: inline-block; - } - - #exampleList li { - width: 60px; - overflow: hidden; - text-overflow: ellipsis; - } - - .playgroundBody .content { - position: fixed; - display: block; - bottom: 0; - left: 0; - right: 0; - top: 83px; - } - - #editor { - position: absolute; - right: 0; - left: 0; - width: 100%; - height: 50%; - top: 0; - bottom: 50%; - } - - #pdfV { - left: 0; - right: 0; - bottom: 0; - top: 50%; - height: 50%; - width: 100%; - position: absolute; - } - - .playgroundBody .notEnoughSpace, #stats { - display: none; - } -} - - -.subpage { - margin-top: 50px; - margin-bottom: 100px; -} -.subpage h1 { - font-size: 48px; - color: #0074c1; -} - -@media(max-width: 767px) { - .banner { - display: none; - } - - .subpage { - margin-top: 40px; - } - .subpage h1 { - font-size: 30px; - font-weight: 400; - } -} - -@media(min-width: 1001px) { - .playground .container li { - display: inline-block; - } - .playgroundBody .content { - position: fixed; - display: block; - bottom: 0; - left: 0; - right: 0; - top: 83px; - } - - #pdfV { - left: 50%; - width: 50%; - height: 100%; - right: 0; - top: 0; - bottom: 0; - position: absolute; - } - .playgroundBody .notEnoughSpace { - display: none; - } - - #stats { - display: block; - } -} - -#pdfeViewer { - position: absolute; - top: 0px; - left: 50%; - bottom: 0; - right: 0; -} - -#toolbarViewerRight, #sidebarToggle, .toolbarButtonSpacer, #viewFind { - display:none; -} - -#toolbarViewerLeft { - width: 100% -} - -.playground { - position: relative; -} - -.banner small { - color: white; - opacity: 0.4; -} diff --git a/dev-playground/public/playground.css b/dev-playground/public/playground.css new file mode 100644 index 000000000..51b1b9f6b --- /dev/null +++ b/dev-playground/public/playground.css @@ -0,0 +1,12 @@ +:root{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#162b35;background:#f5f8f7;line-height:1.5;--accent:#c9252d;--line:#d5e1de}*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-underline-offset:3px}header{height:78px;display:flex;align-items:center;justify-content:space-between;background:white;padding:0 34px;border-bottom:1px solid var(--line)}.brand{font-size:27px;font-weight:800;letter-spacing:-1.4px;text-decoration:none;color:#162b35;line-height:1.1}.brand span,h1 span{color:var(--accent)}.brand small{display:block;font-size:9px;letter-spacing:2px;margin-top:6px}.header-right{display:flex;gap:24px;align-items:center;font-size:12px}.header-right span{border:1px solid #edb8bc;background:#fde8e9;border-radius:4px;padding:3px 9px}main{padding:26px 32px 18px;max-width:1800px;margin:auto}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:750;color:var(--accent);margin:0 0 9px}h1{font-size:36px;line-height:1.05;letter-spacing:-1.4px;margin:0}.intro>p{font-size:13px;color:#536771;line-height:1.8;margin-right:20px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.toolbar label{font-size:12px;font-weight:650;display:flex;align-items:center;gap:12px}select,button,.import{border:1px solid #b9ccc6;background:#fff;color:#25453f;border-radius:5px;padding:8px 11px;font:inherit;font-size:12px;cursor:pointer}.import{font-weight:400!important}.import input{position:absolute;width:1px;height:1px;opacity:0}.import:focus-within{outline:3px solid #db8a30}.actions{display:flex;gap:8px;align-items:center}.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}.primary kbd{font-size:9px;opacity:.8;margin-left:12px}button:disabled{opacity:.45;cursor:default}button:hover:not(:disabled){filter:brightness(.95)}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #db8a30;outline-offset:3px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}.panel{border:1px solid var(--line);background:#fff;border-radius:8px;overflow:hidden;min-width:0;display:flex;flex-direction:column}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 16px;border-bottom:1px solid var(--line);height:56px}.panel-head h2{font-size:12px;margin:0;font-weight:700}.panel-head span{font-size:10px;color:#697d75}.panel-head>div{display:flex;gap:16px;align-items:center;font-size:11px}#editor{height:510px;min-height:250px}.editor-footer,.preview-footer{min-height:44px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;font-size:10px;color:#536771;flex-wrap:wrap}.editor-footer button{padding:3px 6px;font-size:10px}#preview{height:510px;width:100%;border:0;background:#e6eae8}#preview-empty{height:510px;display:grid;align-content:center;text-align:center;font-size:14px;color:#697d75;background:repeating-linear-gradient(135deg,#f8faf9,#f8faf9 9px,#f3f7f5 9px,#f3f7f5 10px)}[hidden]{display:none!important}.status-row{display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:11px;color:#536771}.status-row p{font-weight:600}#error{background:#fff1ee;color:#8f2e1d;border:1px solid #e8bdb3;padding:14px;border-radius:5px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}.help{font-size:11px;color:#536771;border-top:1px solid var(--line);padding-top:15px;margin-top:12px}.help p{max-width:1000px}.help summary{cursor:pointer}code{font-family:Consolas,monospace}#status[data-error=true]{color:#9d321b}@media(min-width:1600px){#editor,#preview,#preview-empty{height:600px}}@media(max-width:950px){.toolbar{align-items:flex-start;flex-direction:column}.actions{flex-wrap:wrap}.workspace{grid-template-columns:1fr}.intro>p{display:none}.panel-head{padding:10px}.header-right{gap:12px;font-size:10px}main{padding:22px 16px}header{padding:0 18px}.status-row{align-items:flex-start;flex-direction:column;gap:0}#editor{height:380px}#preview,#preview-empty{height:480px}.editor-footer{justify-content:flex-start}} + +.preview-controls{display:flex;justify-content:center;align-items:center;gap:12px;padding:8px;font-size:11px;border-bottom:1px solid var(--line);background:#fafcfb}.preview-controls label{display:flex;align-items:center;gap:6px}.preview-controls button{padding:3px 9px}.preview-controls select{padding:3px 6px;font-size:10px}.canvas-scroll{height:416px;overflow:auto;padding:16px;background:#e1e7e4;text-align:center}#pdf-canvas{display:block;margin:auto;box-shadow:0 3px 14px #162b3522;background:white}.page-text{font-size:10px;padding:5px 12px;background:white;max-height:90px;overflow:auto}.page-text p{text-align:left;white-space:pre-wrap}#preview{background:#e1e7e4;overflow:auto}@media(min-width:1600px){.canvas-scroll{height:506px}} + +.saved-documents{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 16px;font-size:11px}.saved-documents label{display:flex;gap:8px;align-items:center}.saved-documents input{border:1px solid var(--line);border-radius:4px;padding:7px;font:inherit;max-width:180px}.saved-documents>span{color:#536771}.saved-documents select{max-width:230px}.actions label{white-space:nowrap}.actions{flex-wrap:wrap}.toolbar{align-items:flex-start}#preview[data-stale=true]{outline:2px solid #d6ac5f;outline-offset:-2px}.cm-diagnostic-error{border-left-color:#b9382a}.embedded header,.embedded .intro,.embedded .toolbar,.embedded .saved-documents,.embedded .editor-panel,.embedded .help,.embedded #go-error{display:none}.embedded main{padding:0}.embedded .workspace{display:block}.embedded .preview-panel{border:0;border-radius:0}.embedded .status-row{padding:0 10px;font-size:10px}.embedded .status-row>span{display:none}.embedded #preview,.embedded #preview-empty{height:410px}.embedded .canvas-scroll{height:320px}.embedded .panel-head{height:40px}.embedded .preview-footer{font-size:9px}.embedded .preview-footer a{display:none}.embedded #error{margin:5px;font-size:10px} + +.brand-logo{display:block;width:180px;height:auto;background:#fff;border-radius:5px;padding:3px 5px;box-sizing:content-box}.brand small{font-size:8px;letter-spacing:1.8px;margin-top:4px}.brand{flex-shrink:0}@media(max-width:950px){.brand-logo{width:132px}.brand small{font-size:7px;letter-spacing:1px}.header-right{gap:10px}} + +:root{--preview-surface:#fff;--preview-wash:#f7f7f8;--preview-ink:#202124;--preview-line:#e5e7eb} +@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--preview-surface:#111b23;--preview-wash:#1b252e;--preview-ink:#e3ecef;--preview-line:#33404b;color-scheme:dark}} +:root[data-theme="dark"]{--preview-surface:#111b23;--preview-wash:#1b252e;--preview-ink:#e3ecef;--preview-line:#33404b;color-scheme:dark} +.embedded,.embedded .panel,.embedded .page-text{background:var(--preview-surface);color:var(--preview-ink)}.embedded .panel-head,.embedded .preview-controls,.embedded .preview-footer{border-color:var(--preview-line)}.embedded .preview-controls,.embedded .canvas-scroll,.embedded #preview,.embedded #preview-empty{background:var(--preview-wash);color:var(--preview-ink)}.embedded .panel-head button,.embedded .preview-controls button,.embedded select{background:var(--preview-surface);color:var(--preview-ink);border-color:var(--preview-line)}.embedded .status-row,.embedded .preview-footer{color:var(--preview-ink)} diff --git a/dev-playground/public/playground.js b/dev-playground/public/playground.js deleted file mode 100644 index 50220dfed..000000000 --- a/dev-playground/public/playground.js +++ /dev/null @@ -1,10 +0,0 @@ -var app = angular.module('pdfmake', ['ngRoute']); - -app.config(function ($routeProvider) { - $routeProvider - .when('/', { - templateUrl: 'index.html', - controller: 'PlaygroundController' - }) - .otherwise({ redirectTo: '/' }); -}); diff --git a/dev-playground/public/samples/attachments b/dev-playground/public/samples/attachments deleted file mode 100644 index eaaf6c310..000000000 --- a/dev-playground/public/samples/attachments +++ /dev/null @@ -1,57 +0,0 @@ -content: [ - 'pdfmake supports attaching files as annotations as well as embedded files.', - 'Embedded files are added in the "files" dictionary and will show up in supported pdf viewers in their respective attachment panels.', - 'File attachments are annotations which link to a file.', - 'Any attachment or embedded file must provide at least a "src", providing a filename through "name" is highly recommended.', - 'The "src" of any attachment can be provided in dataURL format (like the following attachment, taken from http://www.clipartbest.com/clipart-dT7zx5rT9), but local files are allowed as well.', - { - attachment: { - src: 'data:image/png;base64,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', - name: 'testImage.png' - } - }, - 'You can also define an attachment in the "attachments" dictionary and reference it by name.', - { - attachment: 'sampleImage' - }, - 'And there are three different standard icons for attachments, "GraphPush", "Paperclip", and "Push" (the default value). Set them with the "icon" option.', - { - attachment: 'sampleImage', - icon: 'GraphPush' - }, - { - attachment: 'sampleImage', - icon: 'Paperclip' - }, - { - attachment: 'sampleImage', - icon: 'Push' - }, - 'For better customization, add an image and attach a file to it with linkToFile:', - { - image: 'examples/fonts/sampleImage.jpg', - width: 150, - linkToFile: 'sampleImage' - }, - "You can add a description, which will show in your pdf viewer's attachments panel and as a tooltip when hovering over the attachment.", - { - attachment: { - src: 'data:image/png;base64,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', - name: 'withDescription.png', - description: 'file description' - } - }, - 'You can also define the "src" of an attachment or embedded file in the "attachments" and "files" dictionary via URL address.', -], -attachments: { - sampleImage: { - src: 'examples/fonts/sampleImage.jpg', - name: 'sampleImage.png' - } -}, -files: { - README: { - src: 'https://raw.githubusercontent.com/bpampuch/pdfmake/master/README.md', - name: 'pdfmake README.md' - } -} diff --git a/dev-playground/public/samples/basics b/dev-playground/public/samples/basics deleted file mode 100644 index 66690ed8e..000000000 --- a/dev-playground/public/samples/basics +++ /dev/null @@ -1,4 +0,0 @@ -content: [ - 'First paragraph', - 'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines' -] diff --git a/dev-playground/public/samples/columns b/dev-playground/public/samples/columns deleted file mode 100644 index 0ee755901..000000000 --- a/dev-playground/public/samples/columns +++ /dev/null @@ -1,148 +0,0 @@ -content: [ - 'By default paragraphs are stacked one on top of (or actually - below) another. ', - 'It\'s possible however to split any paragraph (or even the whole document) into columns.\n\n', - 'Here we go with 2 star-sized columns, with justified text and gap set to 20:\n\n', - { - alignment: 'justify', - columns: [ - { - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - }, - { - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - } - ] - }, - '\nStar-sized columns have always equal widths, so if we define 3 of those, it\'ll look like this (make sure to scroll to the next page, as we have a couple of more examples):\n\n', - { - columns: [ - { - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - }, - { - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - }, - { - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - } - ] - }, - '\nYou can also specify accurate widths for some (or all columns). Let\'s make the first column and the last one narrow and let the layout engine divide remaining space equally between other star-columns:\n\n', - { - columns: [ - { - width: 90, - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - }, - { - width: '*', - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - }, - { - width: '*', - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - }, - { - width: 90, - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - } - ] - }, - '\nWe also support auto columns. They set their widths based on the content:\n\n', - { - columns: [ - { - width: 'auto', - text: 'auto column' - }, - { - width: '*', - text: 'This is a star-sized column. It should get the remaining space divided by the number of all star-sized columns.' - }, - { - width: 50, - text: 'this one has specific width set to 50' - }, - { - width: 'auto', - text: 'another auto column' - }, - { - width: '*', - text: 'This is a star-sized column. It should get the remaining space divided by the number of all star-sized columns.' - }, - ] - }, - '\nIf all auto columns fit within available width, the table does not occupy whole space:\n\n', - { - columns: [ - { - width: 'auto', - text: 'val1' - }, - { - width: 'auto', - text: 'val2' - }, - { - width: 'auto', - text: 'value3' - }, - { - width: 'auto', - text: 'value 4' - }, - ] - }, - '\nAnother cool feature of pdfmake is the ability to have nested elements. Each column is actually quite similar to the whole document, so we can have inner paragraphs and further divisions, like in the following example:\n\n', - { - columns: [ - { - width: 100, - fontSize: 9, - text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Conveniunt quieti extremum severitatem disseretur virtute locum virtus declarant. Greges telos detrimenti persius possint eripuit appellat democrito suscipere existimant. Facere usus levitatibus confirmavit, provincia rutilius libris accommodare valetudinis ignota fugienda arbitramur falsarum commodius. Voluptas summis arbitrarer cognitio temperantiamque, fuit posidonium pro assueverit animos inferiorem, affecti honestum ferreum cum tot nemo ius partes dissensio opinor, tuum intellegunt numeris ignorant, odia diligenter licet, sublatum repellere, maior ficta severa quantum mortem. Aut evertitur impediri vivamus.' - }, - [ - 'As you can see in the document definition - this column is not defined with an object, but an array, which means it\'s treated as an array of paragraphs rendered one below another.', - 'Just like on the top-level of the document. Let\'s try to divide the remaining space into 3 star-sized columns:\n\n', - { - columns: [ - {text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.'}, - {text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.'}, - {text: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.'}, - ] - } - ] - ] - }, - '\n\nOh, don\'t forget, we can use everything from styling examples (named styles, custom overrides) here as well.\n\n', - 'For instance - our next paragraph will use the \'bigger\' style (with fontSize set to 15 and italics - true). We\'ll split it into three columns and make sure they inherit the style:\n\n', - { - style: 'bigger', - columns: [ - 'First column (BTW - it\'s defined as a single string value. pdfmake will turn it into appropriate structure automatically and make sure it inherits the styles', - { - fontSize: 20, - text: 'In this column, we\'ve overridden fontSize to 20. It means the content should have italics=true (inherited from the style) and be a little bit bigger', - }, - { - style: 'header', - text: 'Last column does not override any styling properties, but applies a new style (header) to itself. Eventually - texts here have italics=true (from bigger) and derive fontSize from the style. OK, but which one? Both styles define it. As we already know from our styling examples, multiple styles can be applied to the element and their order is important. Because \'header\' style has been set after \'bigger\' its fontSize takes precedence over the fontSize from \'bigger\'. This is how it works. You will find more examples in the unit tests.' - } - ] - }, - '\n\nWow, you\'ve read the whole document! Congratulations :D' -], -styles: { - header: { - fontSize: 18, - bold: true - }, - bigger: { - fontSize: 15, - italics: true - } -}, -defaultStyle: { - columnGap: 20 -} diff --git a/dev-playground/public/samples/images b/dev-playground/public/samples/images deleted file mode 100644 index 53bb86918..000000000 --- a/dev-playground/public/samples/images +++ /dev/null @@ -1,42 +0,0 @@ -content: [ - 'pdfmake (since it\'s based on pdfkit) supports JPEG and PNG format', - 'If no width/height/fit is provided, image original size will be used', - { - image: 'examples/fonts/sampleImage.jpg', - }, - 'If you specify width, image will scale proportionally', - { - image: 'examples/fonts/sampleImage.jpg', - width: 150 - }, - 'If you specify both width and height - image will be stretched', - { - image: 'examples/fonts/sampleImage.jpg', - width: 150, - height: 150, - }, - 'You can also fit the image inside a rectangle', - { - image: 'examples/fonts/sampleImage.jpg', - fit: [100, 100], - pageBreak: 'after' - }, - - // Warning! Make sure to copy this definition and paste it to an - // external text editor, as the online AceEditor has some troubles - // with long dataUrl lines and the following image values look like - // they're empty. - 'Images can be also provided in dataURL format...', - { - image: 'data:image/jpeg;base64,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AAGyAAAAEAAAAAEAAAAAABJwcmludE91dHB1dE9wdGlvbnMAAAASAAAAAENwdG5ib29sAAAAAABDbGJyYm9vbAAAAAAAUmdzTWJvb2wAAAAAAENybkNib29sAAAAAABDbnRDYm9vbAAAAAAATGJsc2Jvb2wAAAAAAE5ndHZib29sAAAAAABFbWxEYm9vbAAAAAAASW50cmJvb2wAAAAAAEJja2dPYmpjAAAAAQAAAAAAAFJHQkMAAAADAAAAAFJkICBkb3ViQG/gAAAAAAAAAAAAR3JuIGRvdWJAb+AAAAAAAAAAAABCbCAgZG91YkBv4AAAAAAAAAAAAEJyZFRVbnRGI1JsdAAAAAAAAAAAAAAAAEJsZCBVbnRGI1JsdAAAAAAAAAAAAAAAAFJzbHRVbnRGI1B4bEBSAAAAAAAAAAAACnZlY3RvckRhdGFib29sAQAAAABQZ1BzZW51bQAAAABQZ1BzAAAAAFBnUEMAAAAATGVmdFVudEYjUmx0AAAAAAAAAAAAAAAAVG9wIFVudEYjUmx0AAAAAAAAAAAAAAAAU2NsIFVudEYjUHJjQFkAAAAAAAA4QklNA+0AAAAAABAASAAAAAEAAgBIAAAAAQACOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAB4OEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0EAAAAAAAAAgABOEJJTQQCAAAAAAAEAAAAADhCSU0EMAAAAAAAAgEBOEJJTQQtAAAAAAAGAAEAAAACOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA0sAAAAGAAAA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aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTQtMDMtMTlUMDM6MDI6MjYrMDE6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDI4MDExNzQwNzIwNjgxMTg3MUY4MTMxRkI2RTY4OTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTg3MUY4MTMxRkI2RTY4OTgiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjgxMzFGQjZFNjg5OCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE4NzFGODEzMUZCNkU2ODk4IiBzdEV2dDp3aGVuPSIyMDE0LTAzLTE5VDAzOjAyOjI2KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowMjgwMTE3NDA3MjA2ODExODcxRjgxMzFGQjZFNjg5OCIgc3RFdnQ6d2hlbj0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAA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', - width: 200 - }, - 'or be declared in an "images" dictionary and referenced by name', - { - image: 'building', - width: 200 - }, -], -images: { - building: 'data:image/jpeg;base64,/9j/4RC5RXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAgAAAAcgEyAAIAAAAUAAAAkodpAAQAAAABAAAAqAAAANQACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaAAyMDE0OjAzOjE5IDAzOjAyOjI2AAAAAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAregAwAEAAAAAQAAATYAAAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABIgEbAAUAAAABAAABKgEoAAMAAAABAAIAAAIBAAQAAAABAAABMgICAAQAAAABAAAPfwAAAAAAAABIAAAAAQAAAEgAAAAB/9j/7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAEcAoAMBIgACEQEDEQH/3QAEAAr/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/AO9gJbfNShKFatpsfcPNRJd31RITEJWpGH2A6Ex4KJPkilqbajYRqikpiPLXxRCxNtTrUjIP+1SG8cBPBT7dPPxStCVrslrQ5jdzBzw6FH7VaHSII7wOFCXARJA8FEiU0RHUBcZHoSn+1vPYfM/3qFmW94iI+CFt7dkmhoI3at7gcoiER0VxyPVmy2sCXyT4awpG9rj7Xlo7hQln5o2jxOqi41xLZJHc8flR4RfVXFpuFw92rnu0/NH96Gbn7uyR3Hkp20veJER5p1AbosnZg615/wByGSTyilkHmfgmhOBC031f/9D0X0H+B/BRNTx2VuJGibXwT/cLEcQae1w7JiPEK9BPITGuSj7ngj2uzS0SA3GByrbDXbu9Mts2OLX7TMOH0mP2/n/yU5YD2R9zwR7Xi0oTbJPCtuobOmiQpEzyUfcCPbLWYGQQ5m49j/BRLY5aFc2tA1H8U2yuZiZ7hLj808GjRI+SaFedTVOg7eJ/vUDUBwJThkC04i1NqYtVr0xPh8UtidxrfbLT2+SW1Wy1zR218lAsPgPkiJoMGtt+acNPafvRjWfBMKXeCPEFcJ7MRXqCYPknOODJbB8giCt4HA+9OGxyhxeK4R7h/9H0oOrJ0BkrKt+tf1aqkftKl7hI21v36jT832/9JXMfJqvxq8tocaLam3ca7Ht9SHfu+1ebV9K+vEAOz8MjQCK6NPvwv3ETKu31WgfyD1nUfrl0+7Dvx8O4tttrc1l5urrLCdBYwsdbZ7Vy7uo51vtyeqeuwGWtOXEGNu7+b/e9T/z3/wAIiYPS/rPvsPUcyl1XpONIx2Ywf62noeo63B/mPper/hFa6hg9XdjbenXVY+UXja+2ui2st2nfU5rsc+n7/f63v/0f+EQ4vGP8v8FRjfSX8v8ACaRynwWtzIaXF4aMsD3kbfUftq99n8tEZ1Tr24OZ1na9rmuaXXeq2AWy2ynaxtjH7bWfS/P/AOCV+vAzgykWuY6wCoXlooAc4N/WfT/Vvb6ln82sf6wvb0+thzzb+sY11eB9nc1hbmNLXm/I+zfY/wBV9F+P+js9f3+p+gTgSSBcde3/AKKigNalp3/9GenwfrK7HuvttvrubkHe6uyyGsf7W7qHbXenV6bPdR9D/DfT9b1bbvrphMfse7Ha/TT1XmZIa2HNoc125zmrygdRyw0l2RcWgSYsfMf5y1s7q31n6DRh05FuMx17C6ptNNZb6Iaz0t7m7avV93vZ6Pqf6W23/BGWMxIF3xfT/vlCYIJqq+r6APrv00jd6uOQYg+q/udjf8B+/wC1IfXfpZBd62PGkn1X95j/AAH8hy5vo3Vep5tIs9VucxzKnPvrqNba7X6ZHT3Ctu227EZsust/4VXWZnWDXW77HZvc6tr2fpJYHu2XWT6fubjs/Su/fTSCP/Ro/wDepsfyjJ12/XXpbo2247p4i1x7Od/oP3a3op+tOGOfRkcgXa/jUsO276xPAqxML1LrC1ostn06w71PWyLfWayt7cVlbLPTsf8ApPU/6zdh59HUbOq3VsuvZWAw2OqbY9lTjUyxtThhBzHOs+n+hZ/hEo2TV19YlE5AC6v/AAZPQdU691HJua7EzqsSoNLRWy2JcfznGH7vd/0FUHVOsguI6n7nd/XHA+hzT+7+6sjo7uo2ZIx2utbn12B11d9gLBjt2/bcd7Mh1lf2raf0T/T3s/01a231dXlxaKg0B4AJoJneDX/g/d+g3MTttLj/AIX/AKKs31qX+D/6Mh/afWWOcaupBhedzybgZMMYHH9D/oq9n+vv1em/WO6jGFebfVlW+oXG02iSwx+i+gz6KoCnqQquFjqha994xnA0FoDh/k9lkV/Srf8Azu7/AMGSNPUzdXHpCsPJtbux5dWai1rWONf0vteyz/i/+20r/rQ/l/gpArpL6/8AozvD609NPMsHjvpP4C5EH1gwHAFpJB1BBq/9Lrna6uoAsNoYWgs9QB1APBFv5jXN/SbHLhupY3Sq+qZdHUaX29QrD7sqyq6prHWemcq30mVYzWbXf8G1C+xifLVI8RIeb7FV1Kq8MNYJFhIafb23fuPf+4im0+C4j6o9Qpoqr6fSPTwcKy9ofY7c8Q9+nsrYxzH22vc36di6L9t9PLnMFji5oBPscNHFwb7nhrfzHJQnoeKtD+CZRNiuz//So9P6t9lyvVZYdzWw7ffW6sHIAxq77La273Mp+0faXv2Pr/R/y61rW9Uof0u7Hq610+nqLg4VZLMkOrYd+5jt17rMj+Y/Ru9n01yHoBzrnfaHO+02ltjHs3F1VTD6LtK9m+2/0/0dLdlf6JZ7sKxtRfXjudYWPEtaT9L2Tua33e1yhjkjKJuUeIa1p6lvuAeP1e8t6i111j6vrBgsqdblvrYchntqupbV0ur/ANp+ZuybP+h6yVPUA2yp1v1gwbK2WYLrWjIr1ZRW5nV2/m/8p3/pK/8AwT0FwFXRszc26rFve1jg8ltDnCB7vptDmtRcfp2f6D/8mPe703kuNNhLvUdWx0kfS+zfTq/cUnCLriG29xTx+Bez+15rcQVH6z9P+0/ZfT9U3sg5H2n7T9r1bu2fsv8AUfo/T/wez9Ms/wDxg9SwModOGFfRlAPySfSsbb6YIx9v8y921/8AXXL4+Pa59RGF61T7W+nc+pzt7WN9F7Q4bGur/wAJsQXYWc1jLnY11eOwBrH+m4Md3cN8bfplKFcUSSB9YolOwRSZr5BG0vEGWjkgCXLR+tVmT9k6WMrqOP1O1oui7Gsa8MZtxvTx7BU1np2Vx+cqbcLIZiW5Ty2p1BINFpDbPaBqa3uZZ+dsbtZ9NaZ+qPT7cfbXlWNc0eqS/wBMQXtrcW27jX6fsZ/hXVqTJmx2JcYIhd0jHA0RXzVTd+p2Zk19IeMO3GpJuyTa3KtrDjb9noHT31Nt2foftf8AP/8ABroreo9R3H0Mrp4b+n27rqp/mK/2d+f/AOWXr/af+62xcfT9TulvL9+Y+ahLmudjVvH0tu6qy93q7q632/on2f8AFItv1J6d6DjXdk7thNbnMqDSfcWOc7d9BRGcJeoSBEtQWQAjStnr6uqZLMtrvtmAynfb7zfUNrPSr+yvd7zu2Zn2p13/AAXpLk+rue/qD3PvryXFtc30P31uOxo3V2sDGv8Ab7PooeJ9UacXJrttuBYJaRsDnOkW0xXTFvrPe70/0Xvs9/p/zivt6J0xtftyrxVUIkY73Na2SYL2VbW+47PejCUAdx9iyYMtK/Fn9V8vp2Jm7svZS8iwtzLbRWxjTWR6T22fo3Otd+et93VunHI3N6vhCo21PFf2lk+m1rhfXs1/nbNrvpf9crXP09N6bh9RpvGbacioE14z8Z1jXkhzJOOaX+t9P9z6f/CLHzvqu9nVMmvD+0XYlBcym9oL3OIDfz6WbPd+k3bNnpv+miZxJNHcVsgAgVWxv5v0v3fS9mOq4LWtbZ1nCL2ioPP2pp9zbN2Q76P+Eo/Rf+fP9Ig3dUrdU9tXX+nMsNdja3m0ECx14ux7CB+ZXgbsR/8AwvvWIei9Nx+nY7jj3WZDy9uTYWXFzWNtG+l7aR6fqOwnbX+33/p/T/SIWTi9Jrvx2YvRbcqm7+dt25bTUJj1Nrm/p2bHb/0aackSdfP5YhNVp4dZF6N/WcM2WFvWunitz8g1t9Yghjwz9nsJ93vxnNt+0O/7YXJZlfW39Qz3MutzK7LLXU5NJcWWNspu9I02e3fW2z0WN/4VJrayBP1WtDy/aW7skkN/0n0Vft6N0H7Xv/ZlrsU1vDpx8wOddvbsfJj2ej6nt/fSM4j/AHop+z7VsCy/p+Hm5OZQ47X3Xem/b7g4Ndv/AEgtY79I51n6Suz+aQXfXLCAhmExsN3Of+jBc1w9P/B4zPT99jXfo0+TV07Ccw4uC4Yz6bqvstldzPVvea/TZ6lm29vq07v8J/N1WqtQOmm7FOR0ZtGM+suyHD1niff6FQ3WHfTvbRY2ytD3IjU6691E+IH1f//T5lv7d/SFpyJIA1Do0+jLWt2/R+h6f5ikLetj2tF4siXEtkxHf2Ljklln2uvB/wA1qa+L1zr+pydzX7dd0tgydNf0f7qeh3Uy57i6xhcRIa0nQfR0LPbYuQSQPtUa4f8Amo1e1st6o4PFrrAOHbqwD/1H/f1Oo9TdYfTdYD/JBBn+wxrVw6SjPt1pw/8ANVr4vbi3qpLQPWEiG+0zHj7Wu9iEcnPEw1xAJDj6cDj3ep7P+qXGpJw9rrX/ADVavZi7Oa6WD3RqGMBdB+ju9n/mCduRcWtc4bdCA19bPLwZ/wCYLi0kvR4X9Favb13Zjmba/olx+gwDXvDhXt3JPuubra1jmtjcHsGzy3abVxCSaeG+n9qtXvqM7Elotx2SeIazU6bYhu5v8hWmWYj90MrAH0hAB/tbfztq83SUc6/RXC/B9JD8cPmptLrB9ICNxJ/ejanDmuZu2NYCBoD7QB2hpe3uvNUkxWr6W5w3htgZvj6RHb5u3KJFjhEsaBHplnh+Z9H6f530l5skiFPojxVuJN1Qsc7RvpSOP+i701EV4wc8NsYbDt3eQn9HG0Nf/VXnqSdqj7H/2f/tF+hQaG90b3Nob3AgMy4wADhCSU0EJQAAAAAAEAAAAAAAAAAAAAAAAAAAAAA4QklNBDoAAAAAAJMAAAAQAAAAAQAAAAAAC3ByaW50T3V0cHV0AAAABQAAAABDbHJTZW51bQAAAABDbHJTAAAAAFJHQkMAAAAASW50ZWVudW0AAAAASW50ZQAAAABDbHJtAAAAAE1wQmxib29sAQAAAA9wcmludFNpeHRlZW5CaXRib29sAAAAAAtwcmludGVyTmFtZVRFWFQAAAABAAAAOEJJTQQ7AAAAAAGyAAAAEAAAAAEAAAAAABJwcmludE91dHB1dE9wdGlvbnMAAAASAAAAAENwdG5ib29sAAAAAABDbGJyYm9vbAAAAAAAUmdzTWJvb2wAAAAAAENybkNib29sAAAAAABDbnRDYm9vbAAAAAAATGJsc2Jvb2wAAAAAAE5ndHZib29sAAAAAABFbWxEYm9vbAAAAAAASW50cmJvb2wAAAAAAEJja2dPYmpjAAAAAQAAAAAAAFJHQkMAAAADAAAAAFJkICBkb3ViQG/gAAAAAAAAAAAAR3JuIGRvdWJAb+AAAAAAAAAAAABCbCAgZG91YkBv4AAAAAAAAAAAAEJyZFRVbnRGI1JsdAAAAAAAAAAAAAAAAEJsZCBVbnRGI1JsdAAAAAAAAAAAAAAAAFJzbHRVbnRGI1B4bEBSAAAAAAAAAAAACnZlY3RvckRhdGFib29sAQAAAABQZ1BzZW51bQAAAABQZ1BzAAAAAFBnUEMAAAAATGVmdFVudEYjUmx0AAAAAAAAAAAAAAAAVG9wIFVudEYjUmx0AAAAAAAAAAAAAAAAU2NsIFVudEYjUHJjQFkAAAAAAAA4QklNA+0AAAAAABAASAAAAAEAAgBIAAAAAQACOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD+AAAA4QklNBA0AAAAAAAQAAAB4OEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0EAAAAAAAAAgABOEJJTQQCAAAAAAAEAAAAADhCSU0EMAAAAAAAAgEBOEJJTQQtAAAAAAAGAAEAAAACOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA0sAAAAGAAAA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aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTQtMDMtMTlUMDM6MDI6MjYrMDE6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDI4MDExNzQwNzIwNjgxMTg3MUY4MTMxRkI2RTY4OTgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTg3MUY4MTMxRkI2RTY4OTgiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMTgwMTE3NDA3MjA2ODExODcxRjgxMzFGQjZFNjg5OCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjAxODAxMTc0MDcyMDY4MTE4NzFGODEzMUZCNkU2ODk4IiBzdEV2dDp3aGVuPSIyMDE0LTAzLTE5VDAzOjAyOjI2KzAxOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDowMjgwMTE3NDA3MjA2ODExODcxRjgxMzFGQjZFNjg5OCIgc3RFdnQ6d2hlbj0iMjAxNC0wMy0xOVQwMzowMjoyNiswMTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAA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' -} diff --git a/dev-playground/public/samples/inline-styling b/dev-playground/public/samples/inline-styling deleted file mode 100644 index 551bc0302..000000000 --- a/dev-playground/public/samples/inline-styling +++ /dev/null @@ -1,46 +0,0 @@ -content: [ - { - text: 'This is a header (whole paragraph uses the same header style)\n\n', - style: 'header' - }, - { - text: [ - 'It is however possible to provide an array of texts ', - 'to the paragraph (instead of a single string) and have ', - {text: 'a better ', fontSize: 15, bold: true}, - 'control over it. \nEach inline can be ', - {text: 'styled ', fontSize: 20}, - {text: 'independently ', italics: true, fontSize: 40}, - 'then.\n\n' - ] - }, - {text: 'Mixing named styles and style-overrides', style: 'header'}, - { - style: 'bigger', - italics: false, - text: [ - 'We can also mix named-styles and style-overrides at both paragraph and inline level. ', - 'For example, this paragraph uses the "bigger" style, which changes fontSize to 15 and sets italics to true. ', - 'Texts are not italics though. It\'s because we\'ve overridden italics back to false at ', - 'the paragraph level. \n\n', - 'We can also change the style of a single inline. Let\'s use a named style called header: ', - {text: 'like here.\n', style: 'header'}, - 'It got bigger and bold.\n\n', - 'OK, now we\'re going to mix named styles and style-overrides at the inline level. ', - 'We\'ll use header style (it makes texts bigger and bold), but we\'ll override ', - 'bold back to false: ', - {text: 'wow! it works!', style: 'header', bold: false}, - '\n\nMake sure to take a look into the sources to understand what\'s going on here.' - ] - } -], -styles: { - header: { - fontSize: 18, - bold: true - }, - bigger: { - fontSize: 15, - italics: true - } -} diff --git a/dev-playground/public/samples/lists b/dev-playground/public/samples/lists deleted file mode 100644 index c37b69a8a..000000000 --- a/dev-playground/public/samples/lists +++ /dev/null @@ -1,386 +0,0 @@ -content: [ - {text: 'Unordered list', style: 'header'}, - { - ul: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nUnordered list with longer lines', style: 'header'}, - { - ul: [ - 'item 1', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'item 3' - ] - }, - {text: '\n\nOrdered list', style: 'header'}, - { - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nOrdered list with longer lines', style: 'header'}, - { - ol: [ - 'item 1', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'item 3' - ] - }, - {text: '\n\nOrdered list should be descending', style: 'header'}, - { - reversed: true, - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nOrdered list with start value', style: 'header'}, - { - start: 50, - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nOrdered list with own values', style: 'header'}, - { - ol: [ - {text: 'item 1', counter: 10}, - {text: 'item 2', counter: 20}, - {text: 'item 3', counter: 30}, - {text: 'item 4 without own value'} - ] - }, - {text: '\n\nNested lists (ordered)', style: 'header'}, - { - ol: [ - 'item 1', - [ - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - { - ol: [ - 'subitem 1', - 'subitem 2', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - {text: [ - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - ]}, - - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 4', - 'subitem 5', - ] - } - ], - 'item 3\nsecond line of item3' - ] - }, - {text: '\n\nNested lists (unordered)', style: 'header'}, - { - ol: [ - 'item 1', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - { - ul: [ - 'subitem 1', - 'subitem 2', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - {text: [ - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - ]}, - - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 4', - 'subitem 5', - ] - }, - 'item 3\nsecond line of item3', - ] - }, - {text: '\n\nUnordered lists inside columns', style: 'header'}, - { - columns: [ - { - ul: [ - 'item 1', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - ] - }, - { - ul: [ - 'item 1', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - ] - } - ] - }, - {text: '\n\nOrdered lists inside columns', style: 'header'}, - { - columns: [ - { - ol: [ - 'item 1', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - ] - }, - { - ol: [ - 'item 1', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - ] - } - ] - }, - {text: '\n\nNested lists width columns', style: 'header'}, - { - ul: [ - 'item 1', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - { - ol: [ - [ - { - columns: [ - 'column 1', - { - stack: [ - 'column 2', - { - ul: [ - 'item 1', - 'item 2', - { - ul: [ - 'item', - 'item', - 'item', - ] - }, - 'item 4', - ] - } - ] - }, - 'column 3', - 'column 4', - ] - }, - 'subitem 1 in a vertical container', - 'subitem 2 in a vertical container', - ], - 'subitem 2', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - {text: [ - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - ]}, - - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 3 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit', - 'subitem 4', - 'subitem 5', - ] - }, - 'item 3\nsecond line of item3', - ] - }, - {text: '\n\nUnordered list with square marker type', style: 'header'}, - { - type: 'square', - ul: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nUnordered list with circle marker type', style: 'header'}, - { - type: 'circle', - ul: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nColored unordered list', style: 'header'}, - { - color: 'blue', - ul: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nColored unordered list with own marker color', style: 'header'}, - { - color: 'blue', - markerColor: 'red', - ul: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nColored ordered list', style: 'header'}, - { - color: 'blue', - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nColored ordered list with own marker color', style: 'header'}, - { - color: 'blue', - markerColor: 'red', - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nOrdered list - type: lower-alpha', style: 'header'}, - { - type: 'lower-alpha', - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nOrdered list - type: upper-alpha', style: 'header'}, - { - type: 'upper-alpha', - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - - {text: '\n\nOrdered list - type: upper-roman', style: 'header'}, - { - type: 'upper-roman', - ol: [ - 'item 1', - 'item 2', - 'item 3', - 'item 4', - 'item 5' - ] - }, - {text: '\n\nOrdered list - type: lower-roman', style: 'header'}, - { - type: 'lower-roman', - ol: [ - 'item 1', - 'item 2', - 'item 3', - 'item 4', - 'item 5' - ] - }, - {text: '\n\nOrdered list - type: none', style: 'header'}, - { - type: 'none', - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nUnordered list - type: none', style: 'header'}, - { - type: 'none', - ul: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nOrdered list with own separator', style: 'header'}, - { - separator: ')', - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nOrdered list with own complex separator', style: 'header'}, - { - separator: ['(', ')'], - ol: [ - 'item 1', - 'item 2', - 'item 3' - ] - }, - {text: '\n\nOrdered list with own items type', style: 'header'}, - { - ol: [ - 'item 1', - {text: 'item 2', listType: 'none'}, - {text: 'item 3', listType: 'upper-roman'} - ] - }, - {text: '\n\nUnordered list with own items type', style: 'header'}, - { - ul: [ - 'item 1', - {text: 'item 2', listType: 'none'}, - {text: 'item 3', listType: 'circle'} - ] - }, -], -styles: { - header: { - bold: true, - fontSize: 15 - } -}, -defaultStyle: { - fontSize: 12 -} diff --git a/dev-playground/public/samples/margins b/dev-playground/public/samples/margins deleted file mode 100644 index 46a1b9bdd..000000000 --- a/dev-playground/public/samples/margins +++ /dev/null @@ -1,70 +0,0 @@ -content: [ - { - stack: [ - 'This header has both top and bottom margins defined', - {text: 'This is a subheader', style: 'subheader'}, - ], - style: 'header' - }, - { - text: [ - 'Margins have slightly different behavior than other layout properties. They are not inherited, unlike anything else. They\'re applied only to those nodes which explicitly ', - 'set margin or style property.\n', - ] - }, - { - text: 'This paragraph (consisting of a single line) directly sets top and bottom margin to 20', - margin: [0, 20], - }, - { - stack: [ - {text: [ - 'This line begins a stack of paragraphs. The whole stack uses a ', - {text: 'superMargin', italics: true}, - ' style (with margin and fontSize properties).', - ] - }, - {text: ['When you look at the', {text: ' document definition', italics: true}, ', you will notice that fontSize is inherited by all paragraphs inside the stack.']}, - 'Margin however is only applied once (to the whole stack).' - ], - style: 'superMargin' - }, - { - stack: [ - 'I\'m not sure yet if this is the desired behavior. I find it a better approach however. One thing to be considered in the future is an explicit layout property called inheritMargin which could opt-in the inheritance.\n\n', - { - fontSize: 15, - text: [ - 'Currently margins for ', - /* the following margin definition doesn't change anything */ - {text: 'inlines', margin: 20}, - ' are ignored\n\n' - ], - }, - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.\n', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.\n', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.\n', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.\n', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.\n', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.\n', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.\n', - ], - margin: [0, 20, 0, 0], - alignment: 'justify' - } -], -styles: { - header: { - fontSize: 18, - bold: true, - alignment: 'right', - margin: [0, 190, 0, 80] - }, - subheader: { - fontSize: 14 - }, - superMargin: { - margin: [20, 0, 40, 0], - fontSize: 15 - } -} diff --git a/dev-playground/public/samples/named-styles b/dev-playground/public/samples/named-styles deleted file mode 100644 index 9c309ee3f..000000000 --- a/dev-playground/public/samples/named-styles +++ /dev/null @@ -1,40 +0,0 @@ -content: [ - { - text: 'This is a header, using header style', - style: 'header' - }, - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Confectum ponit legam, perferendis nomine miserum, animi. Moveat nesciunt triari naturam.\n\n', - { - text: 'Subheader 1 - using subheader style', - style: 'subheader' - }, - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Confectum ponit legam, perferendis nomine miserum, animi. Moveat nesciunt triari naturam posset, eveniunt specie deorsus efficiat sermone instituendarum fuisse veniat, eademque mutat debeo. Delectet plerique protervi diogenem dixerit logikh levius probabo adipiscuntur afficitur, factis magistra inprobitatem aliquo andriam obiecta, religionis, imitarentur studiis quam, clamat intereant vulgo admonitionem operis iudex stabilitas vacillare scriptum nixam, reperiri inveniri maestitiam istius eaque dissentias idcirco gravis, refert suscipiet recte sapiens oportet ipsam terentianus, perpauca sedatio aliena video.', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Confectum ponit legam, perferendis nomine miserum, animi. Moveat nesciunt triari naturam posset, eveniunt specie deorsus efficiat sermone instituendarum fuisse veniat, eademque mutat debeo. Delectet plerique protervi diogenem dixerit logikh levius probabo adipiscuntur afficitur, factis magistra inprobitatem aliquo andriam obiecta, religionis, imitarentur studiis quam, clamat intereant vulgo admonitionem operis iudex stabilitas vacillare scriptum nixam, reperiri inveniri maestitiam istius eaque dissentias idcirco gravis, refert suscipiet recte sapiens oportet ipsam terentianus, perpauca sedatio aliena video.', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Confectum ponit legam, perferendis nomine miserum, animi. Moveat nesciunt triari naturam posset, eveniunt specie deorsus efficiat sermone instituendarum fuisse veniat, eademque mutat debeo. Delectet plerique protervi diogenem dixerit logikh levius probabo adipiscuntur afficitur, factis magistra inprobitatem aliquo andriam obiecta, religionis, imitarentur studiis quam, clamat intereant vulgo admonitionem operis iudex stabilitas vacillare scriptum nixam, reperiri inveniri maestitiam istius eaque dissentias idcirco gravis, refert suscipiet recte sapiens oportet ipsam terentianus, perpauca sedatio aliena video.\n\n', - { - text: 'Subheader 2 - using subheader style', - style: 'subheader' - }, - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Confectum ponit legam, perferendis nomine miserum, animi. Moveat nesciunt triari naturam posset, eveniunt specie deorsus efficiat sermone instituendarum fuisse veniat, eademque mutat debeo. Delectet plerique protervi diogenem dixerit logikh levius probabo adipiscuntur afficitur, factis magistra inprobitatem aliquo andriam obiecta, religionis, imitarentur studiis quam, clamat intereant vulgo admonitionem operis iudex stabilitas vacillare scriptum nixam, reperiri inveniri maestitiam istius eaque dissentias idcirco gravis, refert suscipiet recte sapiens oportet ipsam terentianus, perpauca sedatio aliena video.', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Confectum ponit legam, perferendis nomine miserum, animi. Moveat nesciunt triari naturam posset, eveniunt specie deorsus efficiat sermone instituendarum fuisse veniat, eademque mutat debeo. Delectet plerique protervi diogenem dixerit logikh levius probabo adipiscuntur afficitur, factis magistra inprobitatem aliquo andriam obiecta, religionis, imitarentur studiis quam, clamat intereant vulgo admonitionem operis iudex stabilitas vacillare scriptum nixam, reperiri inveniri maestitiam istius eaque dissentias idcirco gravis, refert suscipiet recte sapiens oportet ipsam terentianus, perpauca sedatio aliena video.\n\n', - { - text: 'It is possible to apply multiple styles, by passing an array. This paragraph uses two styles: quote and small. When multiple styles are provided, they are evaluated in the specified order which is important in case they define the same properties', - style: ['quote', 'small'] - } -], -styles: { - header: { - fontSize: 18, - bold: true - }, - subheader: { - fontSize: 15, - bold: true - }, - quote: { - italics: true - }, - small: { - fontSize: 8 - } -} diff --git a/dev-playground/public/samples/style-overrides b/dev-playground/public/samples/style-overrides deleted file mode 100644 index c96af6bf5..000000000 --- a/dev-playground/public/samples/style-overrides +++ /dev/null @@ -1,23 +0,0 @@ -content: [ - { - text: 'This paragraph uses header style and extends the alignment property', - style: 'header', - alignment: 'center' - }, - { - text: [ - 'This paragraph uses header style and overrides bold value setting it back to false.\n', - 'Header style in this example sets alignment to justify, so this paragraph should be rendered \n', - 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Malit profecta versatur nomine ocurreret multavit, officiis viveremus aeternum superstitio suspicor alia nostram, quando nostros congressus susceperant concederetur leguntur iam, vigiliae democritea tantopere causae, atilii plerumque ipsas potitur pertineant multis rem quaeri pro, legendum didicisse credere ex maluisset per videtis. Cur discordans praetereat aliae ruinae dirigentur orestem eodem, praetermittenda divinum. Collegisti, deteriora malint loquuntur officii cotidie finitas referri doleamus ambigua acute. Adhaesiones ratione beate arbitraretur detractis perdiscere, constituant hostis polyaeno. Diu concederetur.' - ], - style: 'header', - bold: false - } -], -styles: { - header: { - fontSize: 18, - bold: true, - alignment: 'justify' - } -} diff --git a/dev-playground/public/samples/svgs b/dev-playground/public/samples/svgs deleted file mode 100644 index fd76e0177..000000000 --- a/dev-playground/public/samples/svgs +++ /dev/null @@ -1,21 +0,0 @@ - content: [ - 'SVG nodes behave similar to images by supporting width/height or fit', - 'It is however not yet possible to use svg files or to have a library of svgs in the document definition', - '\n', - 'Note that before you can use SVG nodes you must install svg-to-pdfkit as it is not included with pdfmake to keep bundle size down', - { - svg: 'Created with Highcharts 7.1.2DistanceSaint-ClaudeChassalBonlieuMont-sur-MonnetMontrondArboisMontée de la Combede Laisia Les MolunesCôte de ViryCol de la Joux11.7 km climb6.4% on avg.11.7 km climb6.4% on avg.7.6 km climb5.2% on avg.7.6 km climb5.2% on avg.6.1 km climb4.6% on avg.6.1 km climb4.6% on avg.0 km25 km50 km75 km100 km125 km150 km175 kmDistance: 179.8 km1 153 m a. s. l.', - width: 450, - height: 400 - }, - 'If you specify width, svg will scale proportionally', - { - svg: 'Created with Highcharts 7.1.2DistanceSaint-ClaudeChassalBonlieuMont-sur-MonnetMontrondArboisMontée de la Combede Laisia Les MolunesCôte de ViryCol de la Joux11.7 km climb6.4% on avg.11.7 km climb6.4% on avg.7.6 km climb5.2% on avg.7.6 km climb5.2% on avg.6.1 km climb4.6% on avg.6.1 km climb4.6% on avg.0 km25 km50 km75 km100 km125 km150 km175 kmDistance: 179.8 km1 153 m a. s. l.', - width: 200 - }, - 'You can also fit the svg inside a rectangle', - { - svg: 'Created with Highcharts 7.1.2DistanceSaint-ClaudeChassalBonlieuMont-sur-MonnetMontrondArboisMontée de la Combede Laisia Les MolunesCôte de ViryCol de la Joux11.7 km climb6.4% on avg.11.7 km climb6.4% on avg.7.6 km climb5.2% on avg.7.6 km climb5.2% on avg.6.1 km climb4.6% on avg.6.1 km climb4.6% on avg.0 km25 km50 km75 km100 km125 km150 km175 kmDistance: 179.8 km1 153 m a. s. l.', - fit: [100, 100], - }, - ] diff --git a/dev-playground/public/samples/tables b/dev-playground/public/samples/tables deleted file mode 100644 index ac157a1ad..000000000 --- a/dev-playground/public/samples/tables +++ /dev/null @@ -1,603 +0,0 @@ -content: [ - {text: 'Tables', style: 'header'}, - 'Official documentation is in progress, this document is just a glimpse of what is possible with pdfmake and its layout engine.', - {text: 'A simple table (no headers, no width specified, no spans, no styling)', style: 'subheader'}, - 'The following table has nothing more than a body array', - { - style: 'tableExample', - table: { - body: [ - ['Column 1', 'Column 2', 'Column 3'], - ['One value goes here', 'Another one here', 'OK?'] - ] - } - }, - {text: 'A simple table with nested elements', style: 'subheader'}, - 'It is of course possible to nest any other type of nodes available in pdfmake inside table cells', - { - style: 'tableExample', - table: { - body: [ - ['Column 1', 'Column 2', 'Column 3'], - [ - { - stack: [ - 'Let\'s try an unordered list', - { - ul: [ - 'item 1', - 'item 2' - ] - } - ] - }, - [ - 'or a nested table', - { - table: { - body: [ - ['Col1', 'Col2', 'Col3'], - ['1', '2', '3'], - ['1', '2', '3'] - ] - }, - } - ], - {text: [ - 'Inlines can be ', - {text: 'styled\n', italics: true}, - {text: 'easily as everywhere else', fontSize: 10}] - } - ] - ] - } - }, - {text: 'Defining column widths', style: 'subheader'}, - 'Tables support the same width definitions as standard columns:', - { - bold: true, - ul: [ - 'auto', - 'star', - 'fixed value' - ] - }, - { - style: 'tableExample', - table: { - widths: [100, '*', 200, '*'], - body: [ - ['width=100', 'star-sized', 'width=200', 'star-sized'], - ['fixed-width cells have exactly the specified width', {text: 'nothing interesting here', italics: true, color: 'gray'}, {text: 'nothing interesting here', italics: true, color: 'gray'}, {text: 'nothing interesting here', italics: true, color: 'gray'}] - ] - } - }, - { - style: 'tableExample', - table: { - widths: ['*', 'auto'], - body: [ - ['This is a star-sized column. The next column over, an auto-sized column, will wrap to accommodate all the text in this cell.', 'I am auto sized.'], - ] - } - }, - { - style: 'tableExample', - table: { - widths: ['*', 'auto'], - body: [ - ['This is a star-sized column. The next column over, an auto-sized column, will not wrap to accommodate all the text in this cell, because it has been given the noWrap style.', {text: 'I am auto sized.', noWrap: true}], - ] - } - }, - {text: 'Defining row heights', style: 'subheader'}, - { - style: 'tableExample', - table: { - heights: [20, 50, 70], - body: [ - ['row 1 with height 20', 'column B'], - ['row 2 with height 50', 'column B'], - ['row 3 with height 70', 'column B'] - ] - } - }, - 'With same height:', - { - style: 'tableExample', - table: { - heights: 40, - body: [ - ['row 1', 'column B'], - ['row 2', 'column B'], - ['row 3', 'column B'] - ] - } - }, - 'With height from function:', - { - style: 'tableExample', - table: { - heights: function (row) { - return (row + 1) * 25; - }, - body: [ - ['row 1', 'column B'], - ['row 2', 'column B'], - ['row 3', 'column B'] - ] - } - }, - {text: 'Column/row spans', pageBreak: 'before', style: 'subheader'}, - 'Each cell-element can set a rowSpan or colSpan', - { - style: 'tableExample', - color: '#444', - table: { - widths: [200, 'auto', 'auto'], - headerRows: 2, - // keepWithHeaderRows: 1, - body: [ - [{text: 'Header with Colspan = 2', style: 'tableHeader', colSpan: 2, alignment: 'center'}, {}, {text: 'Header 3', style: 'tableHeader', alignment: 'center'}], - [{text: 'Header 1', style: 'tableHeader', alignment: 'center'}, {text: 'Header 2', style: 'tableHeader', alignment: 'center'}, {text: 'Header 3', style: 'tableHeader', alignment: 'center'}], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - [{rowSpan: 3, text: 'rowSpan set to 3\nLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor'}, 'Sample value 2', 'Sample value 3'], - ['', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', {colSpan: 2, rowSpan: 2, text: 'Both:\nrowSpan and colSpan\ncan be defined at the same time'}, ''], - ['Sample value 1', '', ''], - ] - } - }, - {text: 'Headers', pageBreak: 'before', style: 'subheader'}, - 'You can declare how many rows should be treated as a header. Headers are automatically repeated on the following pages', - {text: ['It is also possible to set keepWithHeaderRows to make sure there will be no page-break between the header and these rows. Take a look at the document-definition and play with it. If you set it to one, the following table will automatically start on the next page, since there\'s not enough space for the first row to be rendered here'], color: 'gray', italics: true}, - { - style: 'tableExample', - table: { - headerRows: 1, - // dontBreakRows: true, - // keepWithHeaderRows: 1, - body: [ - [{text: 'Header 1', style: 'tableHeader'}, {text: 'Header 2', style: 'tableHeader'}, {text: 'Header 3', style: 'tableHeader'}], - [ - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', - 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', - ] - ] - } - }, - {text: 'Styling tables', style: 'subheader'}, - 'You can provide a custom styler for the table. Currently it supports:', - { - ul: [ - 'line widths', - 'line colors', - 'cell paddings', - ] - }, - 'with more options coming soon...\n\npdfmake currently has a few predefined styles (see them on the next page)', - {text: 'noBorders:', fontSize: 14, bold: true, pageBreak: 'before', margin: [0, 0, 0, 8]}, - { - style: 'tableExample', - table: { - headerRows: 1, - body: [ - [{text: 'Header 1', style: 'tableHeader'}, {text: 'Header 2', style: 'tableHeader'}, {text: 'Header 3', style: 'tableHeader'}], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ] - }, - layout: 'noBorders' - }, - {text: 'headerLineOnly:', fontSize: 14, bold: true, margin: [0, 20, 0, 8]}, - { - style: 'tableExample', - table: { - headerRows: 1, - body: [ - [{text: 'Header 1', style: 'tableHeader'}, {text: 'Header 2', style: 'tableHeader'}, {text: 'Header 3', style: 'tableHeader'}], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ] - }, - layout: 'headerLineOnly' - }, - {text: 'lightHorizontalLines:', fontSize: 14, bold: true, margin: [0, 20, 0, 8]}, - { - style: 'tableExample', - table: { - headerRows: 1, - body: [ - [{text: 'Header 1', style: 'tableHeader'}, {text: 'Header 2', style: 'tableHeader'}, {text: 'Header 3', style: 'tableHeader'}], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ] - }, - layout: 'lightHorizontalLines' - }, - {text: 'but you can provide a custom styler as well', margin: [0, 20, 0, 8]}, - { - style: 'tableExample', - table: { - headerRows: 1, - body: [ - [{text: 'Header 1', style: 'tableHeader'}, {text: 'Header 2', style: 'tableHeader'}, {text: 'Header 3', style: 'tableHeader'}], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ] - }, - layout: { - hLineWidth: function (i, node) { - return (i === 0 || i === node.table.body.length) ? 2 : 1; - }, - vLineWidth: function (i, node) { - return (i === 0 || i === node.table.widths.length) ? 2 : 1; - }, - hLineColor: function (i, node) { - return (i === 0 || i === node.table.body.length) ? 'black' : 'gray'; - }, - vLineColor: function (i, node) { - return (i === 0 || i === node.table.widths.length) ? 'black' : 'gray'; - }, - // hLineStyle: function (i, node) { return {dash: { length: 10, space: 4 }}; }, - // vLineStyle: function (i, node) { return {dash: { length: 10, space: 4 }}; }, - // paddingLeft: function(i, node) { return 4; }, - // paddingRight: function(i, node) { return 4; }, - // paddingTop: function(i, node) { return 2; }, - // paddingBottom: function(i, node) { return 2; }, - // fillColor: function (i, node) { return null; } - } - }, - {text: 'zebra style', margin: [0, 20, 0, 8]}, - { - style: 'tableExample', - table: { - body: [ - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ] - }, - layout: { - fillColor: function (rowIndex, node, columnIndex) { - return (rowIndex % 2 === 0) ? '#CCCCCC' : null; - } - } - }, - {text: 'handling fill color opacity...', margin: [0, 20, 0, 8]}, - {text: '... just hardcoding values in the second row', margin: [0, 20, 0, 8]}, - { - style: 'tableExample', - table: { - body: [ - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - [ - {text: 'Sample value 1',fillOpacity:0.15,fillColor:'blue'}, - {text: 'Sample value 2',fillOpacity:0.60,fillColor:'blue'}, - {text: 'Sample value 3',fillOpacity:0.85,fillColor:'blue'}, - ], - ['Sample value 1', 'Sample value 2', 'Sample value 3'] - ] - }, - }, - {text: '... using a custom styler and overriding it in the second row', margin: [0, 20, 0, 8]}, - { - style: 'tableOpacityExample', - table: { - body: [ - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - [ - {text: 'Sample value 1',fillOpacity:0.15}, - {text: 'Sample value 2',fillOpacity:0.60}, - {text: 'Sample value 3',fillOpacity:0.85}, - ], - ['Sample value 1', 'Sample value 2', 'Sample value 3'] - ] - }, - }, - {text: '... with a function (opacity at 0 means fully transparent, i.e no color)', margin: [0, 20, 0, 8]}, - { - style: 'tableExample', - table: { - body: [ - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ] - }, - layout: { - fillColor: 'blue', - fillOpacity: function (rowIndex, node, columnIndex) { - return (rowIndex/8+columnIndex/3); - } - } - }, - {text: 'and can be used dash border', margin: [0, 20, 0, 8]}, - { - style: 'tableExample', - table: { - headerRows: 1, - body: [ - [{text: 'Header 1', style: 'tableHeader'}, {text: 'Header 2', style: 'tableHeader'}, {text: 'Header 3', style: 'tableHeader'}], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ['Sample value 1', 'Sample value 2', 'Sample value 3'], - ] - }, - layout: { - hLineWidth: function (i, node) { - return (i === 0 || i === node.table.body.length) ? 2 : 1; - }, - vLineWidth: function (i, node) { - return (i === 0 || i === node.table.widths.length) ? 2 : 1; - }, - hLineColor: function (i, node) { - return 'black'; - }, - vLineColor: function (i, node) { - return 'black'; - }, - hLineStyle: function (i, node) { - if (i === 0 || i === node.table.body.length) { - return null; - } - return {dash: {length: 10, space: 4}}; - }, - vLineStyle: function (i, node) { - if (i === 0 || i === node.table.widths.length) { - return null; - } - return {dash: {length: 4}}; - }, - // paddingLeft: function(i, node) { return 4; }, - // paddingRight: function(i, node) { return 4; }, - // paddingTop: function(i, node) { return 2; }, - // paddingBottom: function(i, node) { return 2; }, - // fillColor: function (i, node) { return null; } - } - }, - {text: 'Optional border', fontSize: 14, bold: true, pageBreak: 'before', margin: [0, 0, 0, 8]}, - 'Each cell contains an optional border property: an array of 4 booleans for left border, top border, right border, bottom border.', - { - style: 'tableExample', - table: { - body: [ - [ - { - border: [false, true, false, false], - fillColor: '#eeeeee', - text: 'border:\n[false, true, false, false]' - }, - { - border: [false, false, false, false], - fillColor: '#dddddd', - text: 'border:\n[false, false, false, false]' - }, - { - border: [true, true, true, true], - fillColor: '#eeeeee', - text: 'border:\n[true, true, true, true]' - } - ], - [ - { - rowSpan: 3, - border: [true, true, true, true], - fillColor: '#eeeeff', - text: 'rowSpan: 3\n\nborder:\n[true, true, true, true]' - }, - { - border: undefined, - fillColor: '#eeeeee', - text: 'border:\nundefined' - }, - { - border: [true, false, false, false], - fillColor: '#dddddd', - text: 'border:\n[true, false, false, false]' - } - ], - [ - '', - { - colSpan: 2, - border: [true, true, true, true], - fillColor: '#eeffee', - text: 'colSpan: 2\n\nborder:\n[true, true, true, true]' - }, - '' - ], - [ - '', - { - border: undefined, - fillColor: '#eeeeee', - text: 'border:\nundefined' - }, - { - border: [false, false, true, true], - fillColor: '#dddddd', - text: 'border:\n[false, false, true, true]' - } - ] - ] - }, - layout: { - defaultBorder: false, - } - }, - 'For every cell without a border property, whether it has all borders or not is determined by layout.defaultBorder, which is false in the table above and true (by default) in the table below.', - { - style: 'tableExample', - table: { - body: [ - [ - { - border: [false, false, false, false], - fillColor: '#eeeeee', - text: 'border:\n[false, false, false, false]' - }, - { - fillColor: '#dddddd', - text: 'border:\nundefined' - }, - { - fillColor: '#eeeeee', - text: 'border:\nundefined' - }, - ], - [ - { - fillColor: '#dddddd', - text: 'border:\nundefined' - }, - { - fillColor: '#eeeeee', - text: 'border:\nundefined' - }, - { - border: [true, true, false, false], - fillColor: '#dddddd', - text: 'border:\n[true, true, false, false]' - }, - ] - ] - } - }, - 'And some other examples with rowSpan/colSpan...', - { - style: 'tableExample', - table: { - body: [ - [ - '', - 'column 1', - 'column 2', - 'column 3' - ], - [ - 'row 1', - { - rowSpan: 3, - colSpan: 3, - border: [true, true, true, true], - fillColor: '#cccccc', - text: 'rowSpan: 3\ncolSpan: 3\n\nborder:\n[true, true, true, true]' - }, - '', - '' - ], - [ - 'row 2', - '', - '', - '' - ], - [ - 'row 3', - '', - '', - '' - ] - ] - }, - layout: { - defaultBorder: false, - } - }, - { - style: 'tableExample', - table: { - body: [ - [ - { - colSpan: 3, - text: 'colSpan: 3\n\nborder:\n[false, false, false, false]', - fillColor: '#eeeeee', - border: [false, false, false, false] - }, - '', - '' - ], - [ - 'border:\nundefined', - 'border:\nundefined', - 'border:\nundefined' - ] - ] - } - }, - { - style: 'tableExample', - table: { - body: [ - [ - {rowSpan: 3, text: 'rowSpan: 3\n\nborder:\n[false, false, false, false]', fillColor: '#eeeeee', border: [false, false, false, false]}, - 'border:\nundefined', - 'border:\nundefined' - ], - [ - '', - 'border:\nundefined', - 'border:\nundefined' - ], - [ - '', - 'border:\nundefined', - 'border:\nundefined' - ] - ] - } - } -], -styles: { - header: { - fontSize: 18, - bold: true, - margin: [0, 0, 0, 10] - }, - subheader: { - fontSize: 16, - bold: true, - margin: [0, 10, 0, 5] - }, - tableExample: { - margin: [0, 5, 0, 15] - }, - tableOpacityExample: { - margin: [0, 5, 0, 15], - fillColor: 'blue', - fillOpacity: 0.3 - }, - tableHeader: { - bold: true, - fontSize: 13, - color: 'black' - } -}, -defaultStyle: { - // alignment: 'justify' -} diff --git a/dev-playground/public/standalone.js b/dev-playground/public/standalone.js new file mode 100644 index 000000000..eb82cb2b3 --- /dev/null +++ b/dev-playground/public/standalone.js @@ -0,0 +1,2 @@ +import { mountPlayground } from './app.js'; +mountPlayground(document); diff --git a/dev-playground/public/theme-monokai.js b/dev-playground/public/theme-monokai.js deleted file mode 100644 index e0c50411e..000000000 --- a/dev-playground/public/theme-monokai.js +++ /dev/null @@ -1 +0,0 @@ -ace.define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}) diff --git a/dev-playground/public/theme.js b/dev-playground/public/theme.js new file mode 100644 index 000000000..5f77ab2a0 --- /dev/null +++ b/dev-playground/public/theme.js @@ -0,0 +1,24 @@ +// Apply the saved preference before styles paint; CSS handles System without JavaScript too. +(() => { + const key = 'pdfmake-docs-theme'; + const valid = value => ['light', 'dark'].includes(value) ? value : 'system'; + function read() { try { return valid(localStorage.getItem(key)); } catch { return 'system'; } } + function apply(value) { + document.documentElement.dataset.theme = valid(value); + const select = document.querySelector('#theme'); + if (select) select.value = valid(value); + } + document.documentElement.classList.add('js'); + apply(read()); + document.addEventListener('DOMContentLoaded', () => { + const select = document.querySelector('#theme'); + if (!select) return; + select.value = document.documentElement.dataset.theme; + select.closest('.theme-control').hidden = false; + select.addEventListener('change', () => { + apply(select.value); + try { if (select.value === 'system') localStorage.removeItem(key); else localStorage.setItem(key, select.value); } catch {} + }); + }); + window.addEventListener('storage', event => { if (event.key === key || event.key === null) apply(read()); }); +})(); diff --git a/dev-playground/public/typed-examples.js b/dev-playground/public/typed-examples.js new file mode 100644 index 000000000..4fce259a8 --- /dev/null +++ b/dev-playground/public/typed-examples.js @@ -0,0 +1,12 @@ +export const typedExamples = { + "welcome": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\n// Define a fresh document in dd. Ctrl/⌘ + Enter to run.\nvar dd: TDocumentDefinitions = {\n content: [\n { text: 'Make something clear.', fontSize: 30, bold: true, color: '#08786b', margin: [0, 0, 0, 16] },\n 'A paragraph, a table, a report. Start here and make it yours.',\n { text: 'Built with pdfmake', italics: true, color: '#667d73', margin: [0, 20, 0, 0] }\n ]\n};", + "invoice": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\nvar items: Array<[string, number, number]> = [\n ['Design services', 2, 125],\n ['Document review', 1, 75]\n];\nvar total = items.reduce((sum, row) => sum + row[1] * row[2], 0);\nvar dd: TDocumentDefinitions = {\n info: { title: 'Invoice INV-001' },\n footer: (page, pages) => ({ text: 'Page ' + page + ' of ' + pages, alignment: 'center', fontSize: 9 }),\n content: [\n { text: 'INVOICE', style: 'title' },\n { columns: ['Example Studio', { text: 'INV-001', alignment: 'right' }], margin: [0, 0, 0, 24] },\n { layout: 'lightHorizontalLines', table: {\n headerRows: 1, widths: ['*', 'auto', 'auto'],\n body: [['Service', 'Qty', 'EUR'], ...items.map(row => [row[0], row[1], row[2].toFixed(2)])]\n } },\n { text: 'Total: ' + total.toFixed(2) + ' EUR', bold: true, alignment: 'right', margin: [0, 20, 0, 0] }\n ],\n styles: { title: { fontSize: 28, bold: true, color: '#08786b', margin: [0, 0, 0, 12] } }\n};", + "tables": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\nvar rows = Array.from({ length: 65 }, (_, i) => [\n 'Item ' + (i + 1), 'A row that can continue across pages', String(i + 1)\n]);\nvar dd: TDocumentDefinitions = {\n content: [\n { text: 'A longer table', fontSize: 24, bold: true, margin: [0, 0, 0, 16] },\n { layout: 'lightHorizontalLines', table: {\n headerRows: 1, widths: [70, '*', 40],\n body: [[{ text: 'Item', bold: true }, { text: 'Description', bold: true }, { text: 'Qty', bold: true }], ...rows]\n } }\n ]\n};", + "styles": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\nvar dd: TDocumentDefinitions = {\n content: [\n { text: 'Style with intent', style: 'heading' },\n { text: ['One paragraph with ', { text: 'bold', bold: true }, ' and ', { text: 'italic', italics: true }, ' inline text.'] },\n { text: 'A reusable note style.', style: 'note' },\n { ul: ['Readable defaults', 'Small style dictionaries', 'Consistent spacing'], margin: [0, 12, 0, 0] }\n ],\n defaultStyle: { fontSize: 12, lineHeight: 1.3 },\n styles: {\n heading: { fontSize: 26, bold: true, color: '#08786b', margin: [0, 0, 0, 18] },\n note: { fontSize: 10, color: '#536771', margin: [0, 12, 0, 0] }\n }\n};", + "columns": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\nvar dd: TDocumentDefinitions = {\n content: [\n { text: 'Two perspectives', fontSize: 26, bold: true, margin: [0, 0, 0, 20] },\n { columnGap: 24, columns: [\n { width: '*', stack: [{ text: 'The essentials', bold: true }, 'This column takes an equal share of the available width.', { ul: ['Text', 'Lists', 'Nested blocks'] }] },\n { width: '*', stack: [{ text: 'The details', bold: true }, 'Use fixed widths, auto widths or star widths to describe your layout.'] }\n ] }\n ]\n};", + "spans": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\nvar dd: TDocumentDefinitions = {\n content: [{ table: {\n widths: ['*', '*', '*'],\n body: [\n [{ text: 'A shared heading', colSpan: 3, bold: true, fillColor: '#e4f2eb' }, {}, {}],\n [{ text: 'Two rows', rowSpan: 2 }, 'A', 'B'],\n [{}, 'C', 'D']\n ]\n } }]\n};", + "pages": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\nvar dd: TDocumentDefinitions = {\n pageSize: 'A4', pageMargins: [40, 60, 40, 60],\n header: { text: 'EXAMPLE REPORT', margin: [40, 20, 0, 0], color: '#536771', fontSize: 9 },\n footer: (page, pages) => ({ text: page + ' / ' + pages, alignment: 'center', fontSize: 9 }),\n content: [\n { text: 'Chapter one', fontSize: 26, bold: true },\n 'Start on the first page.',\n { text: 'Chapter two', pageBreak: 'before', fontSize: 26, bold: true },\n 'This block begins on a new page.'\n ]\n};", + "vectors": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\nvar dd: TDocumentDefinitions = {\n content: [\n { text: 'Small vectors. Sharp output.', fontSize: 24, bold: true, margin: [0, 0, 0, 20] },\n { svg: '', width: 240 },\n { qr: 'https://pdfmake.github.io/docs/0.3/', fit: 110, margin: [0, 24, 0, 12] },\n 'The QR code encodes a URL; it does not fetch it.'\n ]\n};", + "images": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\nvar dd: TDocumentDefinitions = {\n images: { pixel: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAF0lEQVR4nGPgqMgmCTGMahjVkD1sNQAAjRnrAVbW+rcAAAAASUVORK5CYII=' },\n content: [\n { text: 'One resource, several uses', fontSize: 24, bold: true, margin: [0, 0, 0, 18] },\n 'Use the images dictionary to reuse embedded PNG or JPEG data.',\n { image: 'pixel', width: 30, margin: [0, 15, 0, 15] },\n { image: 'pixel', fit: [60, 60] }\n ]\n};", + "lists": "import type { TDocumentDefinitions } from \"pdfmake/interfaces\";\n\nvar dd: TDocumentDefinitions = {\n content: [\n { text: 'A clear sequence', fontSize: 26, bold: true },\n { ol: ['Configure fonts', 'Build a fresh definition', 'Await the output'], margin: [0, 16, 0, 20] },\n { ul: ['No manual text positioning', { stack: ['Nested choices', { ul: ['Tables', 'Columns', 'Stacks'] }] }] },\n { text: 'Read the reference', link: 'https://pdfmake.github.io/docs/0.3/', color: '#08786b', margin: [0, 20, 0, 0] }\n ]\n};" +}; diff --git a/dev-playground/public/typescript-check.js b/dev-playground/public/typescript-check.js new file mode 100644 index 000000000..b213c4c3b --- /dev/null +++ b/dev-playground/public/typescript-check.js @@ -0,0 +1,24 @@ +/* Loaded only for TypeScript examples, inside the cancellable render worker. */ +importScripts('./vendor/typescript.js', './vendor/typescript-types.js'); +function compileTypeScript(source, syntaxOnly = false) { + const file = '/example.ts'; + const files = { ...pdfmakeTypeFiles, [file]: source }; + const options = { strict: true, skipLibCheck: true, noEmit: true, target: ts.ScriptTarget.ES2022, + module: ts.ModuleKind.ESNext, moduleResolution: ts.ModuleResolutionKind.Bundler, esModuleInterop: true, types: [] }; + const host = { + getSourceFile: (name, language) => files[name] === undefined ? undefined : ts.createSourceFile(name, files[name], language, true), + getDefaultLibFileName: () => '/node_modules/typescript/lib/lib.es2022.full.d.ts', + writeFile() {}, getCurrentDirectory: () => '/', getDirectories: () => [], + fileExists: name => files[name] !== undefined, readFile: name => files[name], + directoryExists: directory => Object.keys(files).some(name => name.startsWith(directory.replace(/\/$/, '') + '/')), + getCanonicalFileName: name => name, useCaseSensitiveFileNames: () => true, getNewLine: () => '\n' + }; + const program = ts.createProgram([file], options, host); + const diagnostics = (syntaxOnly ? program.getSyntacticDiagnostics() : ts.getPreEmitDiagnostics(program)).filter(item => item.file?.fileName === file).map(item => { + const location = item.file.getLineAndCharacterOfPosition(item.start || 0); + return { from: item.start || 0, to: (item.start || 0) + Math.max(1, item.length || 1), severity: 'error', + message: `TS${item.code}: ${ts.flattenDiagnosticMessageText(item.messageText, '\n')}`, line: location.line + 1, column: location.character + 1 }; + }); + const javascript = ts.transpileModule(source, { compilerOptions: { target: ts.ScriptTarget.ES2022, module: ts.ModuleKind.ESNext } }).outputText.replace(/^export \{\};?\s*$/gm, ''); + return { diagnostics, javascript }; +} diff --git a/dev-playground/public/worker-javascript.js b/dev-playground/public/worker-javascript.js deleted file mode 100644 index d1a6ceb19..000000000 --- a/dev-playground/public/worker-javascript.js +++ /dev/null @@ -1 +0,0 @@ -"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.row=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;othis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),typeof console.trace=="function"&&console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var n,r,s,u;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;n=this._events[e],s=n.length,r=-1;if(n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(u=s;u-->0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;n.length===1?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return arguments.length===0?this._events={}:this._events[e]&&delete this._events[e],this;if(arguments.length===0){for(t in this._events){if(t==="removeListener")continue;this.removeAllListeners(t)}return this.removeAllListeners("removeListener"),this._events={},this}n=this._events[e];if(i(n))this.removeListener(e,n);else while(n.length)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return!this._events||!this._events[e]?t=[]:i(this._events[e])?t=[this._events[e]]:t=this._events[e].slice(),t},r.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:i(e._events[t])?n=1:n=e._events[t].length,n}},{}],"/node_modules/jshint/data/ascii-identifier-data.js":[function(e,t,n){var r=[];for(var i=0;i<128;i++)r[i]=i===36||i>=65&&i<=90||i===95||i>=97&&i<=122;var s=[];for(var i=0;i<128;i++)s[i]=r[i]||i>=48&&i<=57;t.exports={asciiIdentifierStartTable:r,asciiIdentifierPartTable:s}},{}],"/node_modules/jshint/lodash.js":[function(e,t,n){(function(e){(function(){function $(e,t,n){var r=e.length,i=n?r:-1;while(n?i--:++ir&&(r=i)}return r}function Dt(e,t){var n=-1,r=e.length;while(++ns?0:s+t),n=n===r||n>s?s:+n||0,n<0&&(n+=s),s=t>n?0:n-t>>>0,t>>>=0;var o=Array(s);while(++i>>1,o=e[s];(n?o<=t:o2&&n[i-2],o=i>2&&n[2],u=i>1&&n[i-1];typeof s=="function"?(s=on(s,u,5),i-=2):(s=typeof u=="function"?u:null,i-=s?1:0),o&&Tn(n[0],n[1],o)&&(s=i<3?null:s,i=1);while(++rf))return!1;while(c&&++a-1&&e%1==0&&e-1&&e%1==0&&e<=Nt}function kn(e){return e===e&&(e===0?1/e>0:!Jn(e))}function Ln(e){var t,n=Ct.support;if(!Y(e)||rt.call(e)!=d||!nt.call(e,"constructor")&&(t=e.constructor,typeof t=="function"&&!(t instanceof t)))return!1;var i;return Ut(e,function(e,t){i=t}),i===r||nt.call(e,i)}function An(e){var t=ir(e),n=t.length,r=n&&e.length,i=Ct.support,s=r&&Cn(r)&&(Xn(e)||i.nonEnumArgs&&Wn(e)),o=-1,u=[];while(++o>>0,r=Array(n);while(++t-1:gn(e,t,n)>-1):!1}function qn(e,t,n){var r=Xn(e)?Ot:qt;return t=mn(t,n,3),r(e,function(e,n,r){return!t(e,n,r)})}function Rn(e,t,n){var i=Xn(e)?Dt:tn;n&&Tn(e,t,n)&&(t=null);if(typeof t!="function"||n!==r)t=mn(t,n,3);return i(e,t)}function Un(e,t){if(typeof e!="function")throw new TypeError(s);return t=yt(t===r?e.length-1:+t||0,0),function(){var n=arguments,r=-1,i=yt(n.length-t,0),s=Array(i);while(++r0;while(++r>>1,Tt=dt?dt.BYTES_PER_ELEMENT:0,Nt=Math.pow(2,53)-1,kt=Ct.support={};(function(e){var t=function(){this.x=e},n={0:e,length:e},r=[];t.prototype={valueOf:e,y:e};for(var i in new t)r.push(i);kt.funcDecomp=/\bthis\b/.test(function(){return this}),kt.funcNames=typeof Function.name=="string";try{kt.nonEnumArgs=!ht.call(arguments,1)}catch(s){kt.nonEnumArgs=!0}})(1,0);var Ht=vt||function(e,t){return t==null?e:Bt(t,bn(t),Bt(t,rr(t),e))},It=fn(zt),Rt=ln();ot||(un=!st||!pt?fr(null):function(e){var t=e.byteLength,n=dt?ut(t/Tt):0,r=n*Tt,i=new st(t);if(n){var s=new dt(i,0,n);s.set(new dt(e,0,n))}return t!=r&&(s=new pt(i,r),s.set(new pt(e,r))),i});var yn=Yt("length"),bn=at?function(e){return at(On(e))}:fr([]),_n=cn(!0),jn=Un(Bn),Fn=hn(At,It),Xn=mt||function(e){return Y(e)&&Cn(e.length)&&rt.call(e)==u},$n=K(/x/)||pt&&!K(pt)?function(e){return rt.call(e)==c}:K,Gn=ft?function(e){if(!e||rt.call(e)!=d)return!1;var t=e.valueOf,n=Kn(t)&&(n=ft(t))&&ft(n);return n?e==n||ft(e)==n:Ln(e)}:Ln,tr=an(function(e,t,n){return n?Pt(e,t,n):Ht(e,t)}),rr=gt?function(e){if(e)var t=e.constructor,n=e.length;return typeof t=="function"&&t.prototype===e||typeof e!="function"&&Cn(n)?An(e):Jn(e)?gt(e):[]}:An,sr=an(Qt);Ct.assign=tr,Ct.callback=ar,Ct.constant=fr,Ct.forEach=Fn,Ct.keys=rr,Ct.keysIn=ir,Ct.merge=sr,Ct.property=cr,Ct.reject=qn,Ct.restParam=Un,Ct.slice=Hn,Ct.toPlainObject=er,Ct.unzip=Bn,Ct.values=or,Ct.zip=jn,Ct.each=Fn,Ct.extend=tr,Ct.iteratee=ar,Ct.clone=zn,Ct.escapeRegExp=ur,Ct.findLastIndex=_n,Ct.has=nr,Ct.identity=lr,Ct.includes=In,Ct.indexOf=Dn,Ct.isArguments=Wn,Ct.isArray=Xn,Ct.isEmpty=Vn,Ct.isFunction=$n,Ct.isNative=Kn,Ct.isNumber=Qn,Ct.isObject=Jn,Ct.isPlainObject=Gn,Ct.isString=Yn,Ct.isTypedArray=Zn,Ct.last=Pn,Ct.some=Rn,Ct.any=Rn,Ct.contains=In,Ct.include=In,Ct.VERSION=i,q&&R?X?(R.exports=Ct)._=Ct:q._=Ct:V._=Ct}).call(this)}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],"/node_modules/jshint/src/jshint.js":[function(e,t,n){var r=e("../lodash"),i=e("events"),s=e("./vars.js"),o=e("./messages.js"),u=e("./lex.js").Lexer,a=e("./reg.js"),f=e("./state.js").state,l=e("./style.js"),c=e("./options.js"),h=e("./scope-manager.js"),p=function(){"use strict";function k(e,t){return e=e.trim(),/^[+-]W\d{3}$/g.test(e)?!0:c.validNames.indexOf(e)===-1&&t.type!=="jslint"&&!r.has(c.removed,e)?(q("E001",t,e),!1):!0}function L(e){return Object.prototype.toString.call(e)==="[object String]"}function A(e,t){return e?!e.identifier||e.value!==t?!1:!0:!1}function O(e){if(!e.reserved)return!1;var t=e.meta;if(t&&t.isFutureReservedWord&&f.inES5()){if(!t.es5)return!1;if(t.strictOnly&&!f.option.strict&&!f.isStrict())return!1;if(e.isProperty)return!1}return!0}function M(e,t){return e.replace(/\{([^{}]*)\}/g,function(e,n){var r=t[n];return typeof r=="string"||typeof r=="number"?r:e})}function D(e,t){Object.keys(t).forEach(function(n){if(r.has(p.blacklist,n))return;e[n]=t[n]})}function P(){if(f.option.enforceall){for(var e in c.bool.enforcing)f.option[e]===undefined&&!c.noenforceall[e]&&(f.option[e]=!0);for(var t in c.bool.relaxing)f.option[t]===undefined&&(f.option[t]=!1)}}function H(){P(),!f.option.esversion&&!f.option.moz&&(f.option.es3?f.option.esversion=3:f.option.esnext?f.option.esversion=6:f.option.esversion=5),f.inES5()&&D(S,s.ecmaIdentifiers[5]),f.inES6()&&D(S,s.ecmaIdentifiers[6]),f.option.module&&(f.option.strict===!0&&(f.option.strict="global"),f.inES6()||F("W134",f.tokens.next,"module",6)),f.option.couch&&D(S,s.couch),f.option.qunit&&D(S,s.qunit),f.option.rhino&&D(S,s.rhino),f.option.shelljs&&(D(S,s.shelljs),D(S,s.node)),f.option.typed&&D(S,s.typed),f.option.phantom&&(D(S,s.phantom),f.option.strict===!0&&(f.option.strict="global")),f.option.prototypejs&&D(S,s.prototypejs),f.option.node&&(D(S,s.node),D(S,s.typed),f.option.strict===!0&&(f.option.strict="global")),f.option.devel&&D(S,s.devel),f.option.dojo&&D(S,s.dojo),f.option.browser&&(D(S,s.browser),D(S,s.typed)),f.option.browserify&&(D(S,s.browser),D(S,s.typed),D(S,s.browserify),f.option.strict===!0&&(f.option.strict="global")),f.option.nonstandard&&D(S,s.nonstandard),f.option.jasmine&&D(S,s.jasmine),f.option.jquery&&D(S,s.jquery),f.option.mootools&&D(S,s.mootools),f.option.worker&&D(S,s.worker),f.option.wsh&&D(S,s.wsh),f.option.globalstrict&&f.option.strict!==!1&&(f.option.strict="global"),f.option.yui&&D(S,s.yui),f.option.mocha&&D(S,s.mocha)}function B(e,t,n){var r=Math.floor(t/f.lines.length*100),i=o.errors[e].desc;throw{name:"JSHintError",line:t,character:n,message:i+" ("+r+"% scanned).",raw:i,code:e}}function j(){var e=f.ignoredLines;if(r.isEmpty(e))return;p.errors=r.reject(p.errors,function(t){return e[t.line]})}function F(e,t,n,r,i,s){var u,a,l,c;if(/^W\d{3}$/.test(e)){if(f.ignored[e])return;c=o.warnings[e]}else/E\d{3}/.test(e)?c=o.errors[e]:/I\d{3}/.test(e)&&(c=o.info[e]);return t=t||f.tokens.next||{},t.id==="(end)"&&(t=f.tokens.curr),a=t.line||0,u=t.from||0,l={id:"(error)",raw:c.desc,code:c.code,evidence:f.lines[a-1]||"",line:a,character:u,scope:p.scope,a:n,b:r,c:i,d:s},l.reason=M(c.desc,l),p.errors.push(l),j(),p.errors.length>=f.option.maxerr&&B("E043",a,u),l}function I(e,t,n,r,i,s,o){return F(e,{line:t,from:n},r,i,s,o)}function q(e,t,n,r,i,s){F(e,t,n,r,i,s)}function R(e,t,n,r,i,s,o){return q(e,{line:t,from:n},r,i,s,o)}function U(e,t){var n;return n={id:"(internal)",elem:e,value:t},p.internals.push(n),n}function z(){var e=f.tokens.next,t=e.body.match(/(-\s+)?[^\s,:]+(?:\s*:\s*(-\s+)?[^\s,]+)?/g)||[],i={};if(e.type==="globals"){t.forEach(function(n,r){n=n.split(":");var s=(n[0]||"").trim(),o=(n[1]||"").trim();if(s==="-"||!s.length){if(r>0&&r===t.length-1)return;q("E002",e);return}s.charAt(0)==="-"?(s=s.slice(1),o=!1,p.blacklist[s]=s,delete S[s]):i[s]=o==="true"}),D(S,i);for(var s in i)r.has(i,s)&&(n[s]=e)}e.type==="exported"&&t.forEach(function(n,r){if(!n.length){if(r>0&&r===t.length-1)return;q("E002",e);return}f.funct["(scope)"].addExported(n)}),e.type==="members"&&(E=E||{},t.forEach(function(e){var t=e.charAt(0),n=e.charAt(e.length-1);t===n&&(t==='"'||t==="'")&&(e=e.substr(1,e.length-2).replace('\\"','"')),E[e]=!1}));var o=["maxstatements","maxparams","maxdepth","maxcomplexity","maxerr","maxlen","indent"];if(e.type==="jshint"||e.type==="jslint")t.forEach(function(t){t=t.split(":");var n=(t[0]||"").trim(),i=(t[1]||"").trim();if(!k(n,e))return;if(o.indexOf(n)>=0){if(i!=="false"){i=+i;if(typeof i!="number"||!isFinite(i)||i<=0||Math.floor(i)!==i){q("E032",e,t[1].trim());return}f.option[n]=i}else f.option[n]=n==="indent"?4:!1;return}if(n==="validthis"){if(f.funct["(global)"])return void q("E009");if(i!=="true"&&i!=="false")return void q("E002",e);f.option.validthis=i==="true";return}if(n==="quotmark"){switch(i){case"true":case"false":f.option.quotmark=i==="true";break;case"double":case"single":f.option.quotmark=i;break;default:q("E002",e)}return}if(n==="shadow"){switch(i){case"true":f.option.shadow=!0;break;case"outer":f.option.shadow="outer";break;case"false":case"inner":f.option.shadow="inner";break;default:q("E002",e)}return}if(n==="unused"){switch(i){case"true":f.option.unused=!0;break;case"false":f.option.unused=!1;break;case"vars":case"strict":f.option.unused=i;break;default:q("E002",e)}return}if(n==="latedef"){switch(i){case"true":f.option.latedef=!0;break;case"false":f.option.latedef=!1;break;case"nofunc":f.option.latedef="nofunc";break;default:q("E002",e)}return}if(n==="ignore"){switch(i){case"line":f.ignoredLines[e.line]=!0,j();break;default:q("E002",e)}return}if(n==="strict"){switch(i){case"true":f.option.strict=!0;break;case"false":f.option.strict=!1;break;case"func":case"global":case"implied":f.option.strict=i;break;default:q("E002",e)}return}n==="module"&&(zt(f.funct)||q("E055",f.tokens.next,"module"));var s={es3:3,es5:5,esnext:6};if(r.has(s,n)){switch(i){case"true":f.option.moz=!1,f.option.esversion=s[n];break;case"false":f.option.moz||(f.option.esversion=5);break;default:q("E002",e)}return}if(n==="esversion"){switch(i){case"5":f.inES5(!0)&&F("I003");case"3":case"6":f.option.moz=!1,f.option.esversion=+i;break;case"2015":f.option.moz=!1,f.option.esversion=6;break;default:q("E002",e)}zt(f.funct)||q("E055",f.tokens.next,"esversion");return}var u=/^([+-])(W\d{3})$/g.exec(n);if(u){f.ignored[u[2]]=u[1]==="-";return}var a;if(i==="true"||i==="false"){e.type==="jslint"?(a=c.renamed[n]||n,f.option[a]=i==="true",c.inverted[a]!==undefined&&(f.option[a]=!f.option[a])):f.option[n]=i==="true",n==="newcap"&&(f.option["(explicitNewcap)"]=!0);return}q("E002",e)}),H()}function W(e){var t=e||0,n=y.length,r;if(t="a"&&t<="z"||t>="A"&&t<="Z")e.identifier=e.reserved=!0;return e}function ut(e,t){var n=nt(e,150);return ot(n),n.nud=typeof t=="function"?t:function(){this.arity="unary",this.right=Q(150);if(this.id==="++"||this.id==="--")f.option.plusplus?F("W016",this,this.id):this.right&&(!this.right.identifier||O(this.right))&&this.right.id!=="."&&this.right.id!=="["&&F("W017",this),this.right&&this.right.isMetaProperty?q("E031",this):this.right&&this.right.identifier&&f.funct["(scope)"].block.modify(this.right.value,this);return this},n}function at(e,t){var n=rt(e);return n.type=e,n.nud=t,n}function ft(e,t){var n=at(e,t);return n.identifier=!0,n.reserved=!0,n}function lt(e,t){var n=at(e,t&&t.nud||function(){return this});return t=t||{},t.isFutureReservedWord=!0,n.value=e,n.identifier=!0,n.reserved=!0,n.meta=t,n}function ct(e,t){return ft(e,function(){return typeof t=="function"&&t(this),this})}function ht(e,t,n,r){var i=nt(e,n);return ot(i),i.infix=!0,i.led=function(i){return r||Y(f.tokens.prev,f.tokens.curr),(e==="in"||e==="instanceof")&&i.id==="!"&&F("W018",i,"!"),typeof t=="function"?t(i,this):(this.left=i,this.right=Q(n),this)},i}function pt(e){var t=nt(e,42);return t.led=function(e){return Y(f.tokens.prev,f.tokens.curr),this.left=e,this.right=Xt({type:"arrow",loneArg:e}),this},t}function dt(e,t){var n=nt(e,100);return n.led=function(e){Y(f.tokens.prev,f.tokens.curr),this.left=e;var n=this.right=Q(100);return A(e,"NaN")||A(n,"NaN")?F("W019",this):t&&t.apply(this,[e,n]),(!e||!n)&&B("E041",f.tokens.curr.line),e.id==="!"&&F("W018",e,"!"),n.id==="!"&&F("W018",n,"!"),this},n}function vt(e){return e&&(e.type==="(number)"&&+e.value===0||e.type==="(string)"&&e.value===""||e.type==="null"&&!f.option.eqnull||e.type==="true"||e.type==="false"||e.type==="undefined")}function gt(e,t,n){var i;return n.option.notypeof?!1:!e||!t?!1:(i=n.inES6()?mt.es6:mt.es3,t.type==="(identifier)"&&t.value==="typeof"&&e.type==="(string)"?!r.contains(i,e.value):!1)}function yt(e,t){var n=!1;return e.type==="this"&&t.funct["(context)"]===null?n=!0:e.type==="(identifier)"&&(t.option.node&&e.value==="global"?n=!0:t.option.browser&&(e.value==="window"||e.value==="document")&&(n=!0)),n}function bt(e){function n(e){if(typeof e!="object")return;return e.right==="prototype"?e:n(e.left)}function r(e){while(!e.identifier&&typeof e.left=="object")e=e.left;if(e.identifier&&t.indexOf(e.value)>=0)return e.value}var t=["Array","ArrayBuffer","Boolean","Collator","DataView","Date","DateTimeFormat","Error","EvalError","Float32Array","Float64Array","Function","Infinity","Intl","Int16Array","Int32Array","Int8Array","Iterator","Number","NumberFormat","Object","RangeError","ReferenceError","RegExp","StopIteration","String","SyntaxError","TypeError","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray","URIError"],i=n(e);if(i)return r(i)}function wt(e,t,n){var r=n&&n.allowDestructuring;t=t||e;if(f.option.freeze){var i=bt(e);i&&F("W121",e,i)}return e.identifier&&!e.isMetaProperty&&f.funct["(scope)"].block.reassign(e.value,e),e.id==="."?((!e.left||e.left.value==="arguments"&&!f.isStrict())&&F("E031",t),f.nameStack.set(f.tokens.prev),!0):e.id==="{"||e.id==="["?(r&&f.tokens.curr.left.destructAssign?f.tokens.curr.left.destructAssign.forEach(function(e){e.id&&f.funct["(scope)"].block.modify(e.id,e.token)}):e.id==="{"||!e.left?F("E031",t):e.left.value==="arguments"&&!f.isStrict()&&F("E031",t),e.id==="["&&f.nameStack.set(e.right),!0):e.isMetaProperty?(q("E031",t),!0):e.identifier&&!O(e)?(f.funct["(scope)"].labeltype(e.value)==="exception"&&F("W022",e),f.nameStack.set(e),!0):(e===f.syntax["function"]&&F("W023",f.tokens.curr),!1)}function Et(e,t,n){var r=ht(e,typeof t=="function"?t:function(e,t){t.left=e;if(e&&wt(e,t,{allowDestructuring:!0}))return t.right=Q(10),t;q("E031",t)},n);return r.exps=!0,r.assign=!0,r}function St(e,t,n){var r=nt(e,n);return ot(r),r.led=typeof t=="function"?t:function(e){return f.option.bitwise&&F("W016",this,this.id),this.left=e,this.right=Q(n),this},r}function xt(e){return Et(e,function(e,t){f.option.bitwise&&F("W016",t,t.id);if(e&&wt(e,t))return t.right=Q(10),t;q("E031",t)},20)}function Tt(e){var t=nt(e,150);return t.led=function(e){return f.option.plusplus?F("W016",this,this.id):(!e.identifier||O(e))&&e.id!=="."&&e.id!=="["&&F("W017",this),e.isMetaProperty?q("E031",this):e&&e.identifier&&f.funct["(scope)"].block.modify(e.value,e),this.left=e,this},t}function Nt(e,t,n){if(!f.tokens.next.identifier)return;n||V();var r=f.tokens.curr,i=f.tokens.curr.value;return O(r)?t&&f.inES5()?i:e&&i==="undefined"?i:(F("W024",f.tokens.curr,f.tokens.curr.id),i):i}function Ct(e,t){var n=Nt(e,t,!1);if(n)return n;if(f.tokens.next.value==="..."){f.inES6(!0)||F("W119",f.tokens.next,"spread/rest operator","6"),V();if(pn(f.tokens.next,"...")){F("E024",f.tokens.next,"...");while(pn(f.tokens.next,"..."))V()}if(!f.tokens.next.identifier){F("E024",f.tokens.curr,"...");return}return Ct(e,t)}q("E030",f.tokens.next,f.tokens.next.value),f.tokens.next.id!==";"&&V()}function kt(e){var t=0,n;if(f.tokens.next.id!==";"||e.inBracelessBlock)return;for(;;){do n=W(t),t+=1;while(n.id!=="(end)"&&n.id==="(comment)");if(n.reach)return;if(n.id!=="(endline)"){if(n.id==="function"){f.option.latedef===!0&&F("W026",n);break}F("W027",n,n.value,e.value);break}}}function Lt(){if(f.tokens.next.id!==";"){if(f.tokens.next.isUnclosed)return V();var e=G(f.tokens.next)===f.tokens.curr.line&&f.tokens.next.id!=="(end)",t=pn(f.tokens.next,"}");e&&!t?R("E058",f.tokens.curr.line,f.tokens.curr.character):f.option.asi||(t&&!f.option.lastsemic||!e)&&I("W033",f.tokens.curr.line,f.tokens.curr.character)}else V(";")}function At(){var e=g,t,n=f.tokens.next,r=!1;if(n.id===";"){V(";");return}var i=O(n);i&&n.meta&&n.meta.isFutureReservedWord&&W().id===":"&&(F("W024",n,n.id),i=!1),n.identifier&&!i&&W().id===":"&&(V(),V(":"),r=!0,f.funct["(scope)"].stack(),f.funct["(scope)"].block.addBreakLabel(n.value,{token:f.tokens.curr}),!f.tokens.next.labelled&&f.tokens.next.value!=="{"&&F("W028",f.tokens.next,n.value,f.tokens.next.value),f.tokens.next.label=n.value,n=f.tokens.next);if(n.id==="{"){var s=f.funct["(verb)"]==="case"&&f.tokens.curr.value===":";_t(!0,!0,!1,!1,s);return}return t=Q(0,!0),t&&(!t.identifier||t.value!=="function")&&(t.type!=="(punctuator)"||!t.left||!t.left.identifier||t.left.value!=="function")&&!f.isStrict()&&f.option.strict==="global"&&F("E007"),n.block||(!f.option.expr&&(!t||!t.exps)?F("W030",f.tokens.curr):f.option.nonew&&t&&t.left&&t.id==="("&&t.left.id==="new"&&F("W031",n),Lt()),g=e,r&&f.funct["(scope)"].unstack(),t}function Ot(){var e=[],t;while(!f.tokens.next.reach&&f.tokens.next.id!=="(end)")f.tokens.next.id===";"?(t=W(),(!t||t.id!=="("&&t.id!=="[")&&F("W032"),V(";")):e.push(At());return e}function Mt(){var e,t,n;while(f.tokens.next.id==="(string)"){t=W(0);if(t.id==="(endline)"){e=1;do n=W(e++);while(n.id==="(endline)");if(n.id===";")t=n;else{if(n.value==="["||n.value===".")break;(!f.option.asi||n.value==="(")&&F("W033",f.tokens.next)}}else{if(t.id==="."||t.id==="[")break;t.id!==";"&&F("W033",t)}V();var r=f.tokens.curr.value;(f.directive[r]||r==="use strict"&&f.option.strict==="implied")&&F("W034",f.tokens.curr,r),f.directive[r]=!0,t.id===";"&&V(";")}f.isStrict()&&(f.option["(explicitNewcap)"]||(f.option.newcap=!0),f.option.undef=!0)}function _t(e,t,n,i,s){var o,u=m,a=g,l,c,h,p;m=e,c=f.tokens.next;var d=f.funct["(metrics)"];d.nestedBlockDepth+=1,d.verifyMaxNestedBlockDepthPerFunction();if(f.tokens.next.id==="{"){V("{"),f.funct["(scope)"].stack(),h=f.tokens.curr.line;if(f.tokens.next.id!=="}"){g+=f.option.indent;while(!e&&f.tokens.next.from>g)g+=f.option.indent;if(n){l={};for(p in f.directive)r.has(f.directive,p)&&(l[p]=f.directive[p]);Mt(),f.option.strict&&f.funct["(context)"]["(global)"]&&!l["use strict"]&&!f.isStrict()&&F("E007")}o=Ot(),d.statementCount+=o.length,g-=f.option.indent}V("}",c),n&&(f.funct["(scope)"].validateParams(),l&&(f.directive=l)),f.funct["(scope)"].unstack(),g=a}else if(!e)if(n){f.funct["(scope)"].stack(),l={},t&&!i&&!f.inMoz()&&q("W118",f.tokens.curr,"function closure expressions");if(!t)for(p in f.directive)r.has(f.directive,p)&&(l[p]=f.directive[p]);Q(10),f.option.strict&&f.funct["(context)"]["(global)"]&&!l["use strict"]&&!f.isStrict()&&F("E007"),f.funct["(scope)"].unstack()}else q("E021",f.tokens.next,"{",f.tokens.next.value);else f.funct["(noblockscopedvar)"]=f.tokens.next.id!=="for",f.funct["(scope)"].stack(),(!t||f.option.curly)&&F("W116",f.tokens.next,"{",f.tokens.next.value),f.tokens.next.inBracelessBlock=!0,g+=f.option.indent,o=[At()],g-=f.option.indent,f.funct["(scope)"].unstack(),delete f.funct["(noblockscopedvar)"];switch(f.funct["(verb)"]){case"break":case"continue":case"return":case"throw":if(s)break;default:f.funct["(verb)"]=null}return m=u,e&&f.option.noempty&&(!o||o.length===0)&&F("W035",f.tokens.prev),d.nestedBlockDepth-=1,o}function Dt(e){E&&typeof E[e]!="boolean"&&F("W036",f.tokens.curr,e),typeof w[e]=="number"?w[e]+=1:w[e]=1}function Bt(){var e={};e.exps=!0,f.funct["(comparray)"].stack();var t=!1;return f.tokens.next.value!=="for"&&(t=!0,f.inMoz()||F("W116",f.tokens.next,"for",f.tokens.next.value),f.funct["(comparray)"].setState("use"),e.right=Q(10)),V("for"),f.tokens.next.value==="each"&&(V("each"),f.inMoz()||F("W118",f.tokens.curr,"for each")),V("("),f.funct["(comparray)"].setState("define"),e.left=Q(130),r.contains(["in","of"],f.tokens.next.value)?V():q("E045",f.tokens.curr),f.funct["(comparray)"].setState("generate"),Q(10),V(")"),f.tokens.next.value==="if"&&(V("if"),V("("),f.funct["(comparray)"].setState("filter"),e.filter=Q(10),V(")")),t||(f.funct["(comparray)"].setState("use"),e.right=Q(10)),V("]"),f.funct["(comparray)"].unstack(),e}function jt(){return f.funct["(statement)"]&&f.funct["(statement)"].type==="class"||f.funct["(context)"]&&f.funct["(context)"]["(verb)"]==="class"}function Ft(e){return e.identifier||e.id==="(string)"||e.id==="(number)"}function It(e){var t,n=!0;return typeof e=="object"?t=e:(n=e,t=Nt(!1,!0,n)),t?typeof t=="object"&&(t.id==="(string)"||t.id==="(identifier)"?t=t.value:t.id==="(number)"&&(t=t.value.toString())):f.tokens.next.id==="(string)"?(t=f.tokens.next.value,n||V()):f.tokens.next.id==="(number)"&&(t=f.tokens.next.value.toString(),n||V()),t==="hasOwnProperty"&&F("W001"),t}function qt(e){function h(e){f.funct["(scope)"].addParam.apply(f.funct["(scope)"],e)}var t,n=[],i,s=[],o,u=!1,a=!1,l=0,c=e&&e.loneArg;if(c&&c.identifier===!0)return f.funct["(scope)"].addParam(c.value,c),{arity:1,params:[c.value]};t=f.tokens.next,(!e||!e.parsedOpening)&&V("(");if(f.tokens.next.id===")"){V(")");return}for(;;){l++;var p=[];if(r.contains(["{","["],f.tokens.next.id)){s=Gt();for(o in s)o=s[o],o.id&&(n.push(o.id),p.push([o.id,o.token]))}else{pn(f.tokens.next,"...")&&(a=!0),i=Ct(!0);if(i)n.push(i),p.push([i,f.tokens.curr]);else while(!hn(f.tokens.next,[",",")"]))V()}u&&f.tokens.next.id!=="="&&q("W138",f.tokens.current),f.tokens.next.id==="="&&(f.inES6()||F("W119",f.tokens.next,"default parameters","6"),V("="),u=!0,Q(10)),p.forEach(h);if(f.tokens.next.id!==",")return V(")",t),{arity:l,params:n};a&&F("W131",f.tokens.next),tt()}}function Rt(e,t,n){var i={"(name)":e,"(breakage)":0,"(loopage)":0,"(tokens)":{},"(properties)":{},"(catch)":!1,"(global)":!1,"(line)":null,"(character)":null,"(metrics)":null,"(statement)":null,"(context)":null,"(scope)":null,"(comparray)":null,"(generator)":null,"(arrow)":null,"(params)":null};return t&&r.extend(i,{"(line)":t.line,"(character)":t.character,"(metrics)":Vt(t)}),r.extend(i,n),i["(context)"]&&(i["(scope)"]=i["(context)"]["(scope)"],i["(comparray)"]=i["(context)"]["(comparray)"]),i}function Ut(e){return"(scope)"in e}function zt(e){return e["(global)"]&&!e["(verb)"]}function Wt(e){function i(){if(f.tokens.curr.template&&f.tokens.curr.tail&&f.tokens.curr.context===t)return!0;var e=f.tokens.next.template&&f.tokens.next.tail&&f.tokens.next.context===t;return e&&V(),e||f.tokens.next.isUnclosed}var t=this.context,n=this.noSubst,r=this.depth;if(!n)while(!i())!f.tokens.next.template||f.tokens.next.depth>r?Q(0):V();return{id:"(template)",type:"(template)",tag:e}}function Xt(e){var t,n,r,i,s,o,u,a,l=f.option,c=f.ignored;e&&(r=e.name,i=e.statement,s=e.classExprBinding,o=e.type==="generator",u=e.type==="arrow",a=e.ignoreLoopFunc),f.option=Object.create(f.option),f.ignored=Object.create(f.ignored),f.funct=Rt(r||f.nameStack.infer(),f.tokens.next,{"(statement)":i,"(context)":f.funct,"(arrow)":u,"(generator)":o}),t=f.funct,n=f.tokens.curr,n.funct=f.funct,v.push(f.funct),f.funct["(scope)"].stack("functionouter");var h=r||s;h&&f.funct["(scope)"].block.add(h,s?"class":"function",f.tokens.curr,!1),f.funct["(scope)"].stack("functionparams");var p=qt(e);return p?(f.funct["(params)"]=p.params,f.funct["(metrics)"].arity=p.arity,f.funct["(metrics)"].verifyMaxParametersPerFunction()):f.funct["(metrics)"].arity=0,u&&(f.inES6(!0)||F("W119",f.tokens.curr,"arrow function syntax (=>)","6"),e.loneArg||V("=>")),_t(!1,!0,!0,u),!f.option.noyield&&o&&f.funct["(generator)"]!=="yielded"&&F("W124",f.tokens.curr),f.funct["(metrics)"].verifyMaxStatementsPerFunction(),f.funct["(metrics)"].verifyMaxComplexityPerFunction(),f.funct["(unusedOption)"]=f.option.unused,f.option=l,f.ignored=c,f.funct["(last)"]=f.tokens.curr.line,f.funct["(lastcharacter)"]=f.tokens.curr.character,f.funct["(scope)"].unstack(),f.funct["(scope)"].unstack(),f.funct=f.funct["(context)"],!a&&!f.option.loopfunc&&f.funct["(loopage)"]&&t["(isCapturing)"]&&F("W083",n),t}function Vt(e){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,arity:0,verifyMaxStatementsPerFunction:function(){f.option.maxstatements&&this.statementCount>f.option.maxstatements&&F("W071",e,this.statementCount)},verifyMaxParametersPerFunction:function(){r.isNumber(f.option.maxparams)&&this.arity>f.option.maxparams&&F("W072",e,this.arity)},verifyMaxNestedBlockDepthPerFunction:function(){f.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===f.option.maxdepth+1&&F("W073",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var t=f.option.maxcomplexity,n=this.ComplexityCount;t&&n>t&&F("W074",e,n)}}}function $t(){f.funct["(metrics)"].ComplexityCount+=1}function Jt(e){var t,n;e&&(t=e.id,n=e.paren,t===","&&(e=e.exprs[e.exprs.length-1])&&(t=e.id,n=n||e.paren));switch(t){case"=":case"+=":case"-=":case"*=":case"%=":case"&=":case"|=":case"^=":case"/=":!n&&!f.option.boss&&F("W084")}}function Kt(e){if(f.inES5())for(var t in e)e[t]&&e[t].setterToken&&!e[t].getterToken&&F("W078",e[t].setterToken)}function Qt(e,t){if(pn(f.tokens.next,".")){var n=f.tokens.curr.id;V(".");var r=Ct();return f.tokens.curr.isMetaProperty=!0,e!==r?q("E057",f.tokens.prev,n,r):t(),f.tokens.curr}}function Gt(e){var t=e&&e.assignment;return f.inES6()||F("W104",f.tokens.curr,t?"destructuring assignment":"destructuring binding","6"),Yt(e)}function Yt(e){var t,n=[],r=e&&e.openingParsed,i=e&&e.assignment,s=i?{assignment:i}:null,o=r?f.tokens.curr:f.tokens.next,u=function(){var e;if(hn(f.tokens.next,["[","{"])){t=Yt(s);for(var r in t)r=t[r],n.push({id:r.id,token:r.token})}else if(pn(f.tokens.next,","))n.push({id:null,token:f.tokens.curr});else{if(!pn(f.tokens.next,"(")){var o=pn(f.tokens.next,"...");if(i){var a=o?W(0):f.tokens.next;a.identifier||F("E030",a,a.value);var l=Q(155);l&&(wt(l),l.identifier&&(e=l.value))}else e=Ct();return e&&n.push({id:e,token:f.tokens.curr}),o}V("("),u(),V(")")}return!1},a=function(){var e;pn(f.tokens.next,"[")?(V("["),Q(10),V("]"),V(":"),u()):f.tokens.next.id==="(string)"||f.tokens.next.id==="(number)"?(V(),V(":"),u()):(e=Ct(),pn(f.tokens.next,":")?(V(":"),u()):e&&(i&&wt(f.tokens.curr),n.push({id:e,token:f.tokens.curr})))};if(pn(o,"[")){r||V("["),pn(f.tokens.next,"]")&&F("W137",f.tokens.curr);var l=!1;while(!pn(f.tokens.next,"]"))u()&&!l&&pn(f.tokens.next,",")&&(F("W130",f.tokens.next),l=!0),pn(f.tokens.next,"=")&&(pn(f.tokens.prev,"...")?V("]"):V("="),f.tokens.next.id==="undefined"&&F("W080",f.tokens.prev,f.tokens.prev.value),Q(10)),pn(f.tokens.next,"]")||V(",");V("]")}else if(pn(o,"{")){r||V("{"),pn(f.tokens.next,"}")&&F("W137",f.tokens.curr);while(!pn(f.tokens.next,"}")){a(),pn(f.tokens.next,"=")&&(V("="),f.tokens.next.id==="undefined"&&F("W080",f.tokens.prev,f.tokens.prev.value),Q(10));if(!pn(f.tokens.next,"}")){V(",");if(pn(f.tokens.next,"}"))break}}V("}")}return n}function Zt(e,t){var n=t.first;if(!n)return;r.zip(e,Array.isArray(n)?n:[n]).forEach(function(e){var t=e[0],n=e[1];t&&n?t.first=n:t&&t.first&&!n&&F("W080",t.first,t.first.value)})}function en(e,t,n){var i=n&&n.prefix,s=n&&n.inexport,o=e==="let",u=e==="const",a,l,c,h;f.inES6()||F("W104",f.tokens.curr,e,"6"),o&&f.tokens.next.value==="("?(f.inMoz()||F("W118",f.tokens.next,"let block"),V("("),f.funct["(scope)"].stack(),h=!0):f.funct["(noblockscopedvar)"]&&q("E048",f.tokens.curr,u?"Const":"Let"),t.first=[];for(;;){var p=[];r.contains(["{","["],f.tokens.next.value)?(a=Gt(),l=!1):(a=[{id:Ct(),token:f.tokens.curr}],l=!0),!i&&u&&f.tokens.next.id!=="="&&F("E012",f.tokens.curr,f.tokens.curr.value);for(var d in a)a.hasOwnProperty(d)&&(d=a[d],f.funct["(scope)"].block.isGlobal()&&S[d.id]===!1&&F("W079",d.token,d.id),d.id&&!f.funct["(noblockscopedvar)"]&&(f.funct["(scope)"].addlabel(d.id,{type:e,token:d.token}),p.push(d.token),l&&s&&f.funct["(scope)"].setExported(d.token.value,d.token)));f.tokens.next.id==="="&&(V("="),!i&&f.tokens.next.id==="undefined"&&F("W080",f.tokens.prev,f.tokens.prev.value),!i&&W(0).id==="="&&f.tokens.next.identifier&&F("W120",f.tokens.next,f.tokens.next.value),c=Q(i?120:10),l?a[0].first=c:Zt(p,c)),t.first=t.first.concat(p);if(f.tokens.next.id!==",")break;tt()}return h&&(V(")"),_t(!0,!0),t.block=!0,f.funct["(scope)"].unstack()),t}function sn(e){return f.inES6()||F("W104",f.tokens.curr,"class","6"),e?(this.name=Ct(),f.funct["(scope)"].addlabel(this.name,{type:"class",token:f.tokens.curr})):f.tokens.next.identifier&&f.tokens.next.value!=="extends"?(this.name=Ct(),this.namedExpr=!0):this.name=f.nameStack.infer(),on(this),this}function on(e){var t=f.inClassBody;f.tokens.next.value==="extends"&&(V("extends"),e.heritage=Q(10)),f.inClassBody=!0,V("{"),e.body=un(e),V("}"),f.inClassBody=t}function un(e){var t,n,r,i,s=Object.create(null),o=Object.create(null),u;for(var a=0;f.tokens.next.id!=="}";++a){t=f.tokens.next,n=!1,r=!1,i=null;if(t.id===";"){F("W032"),V(";");continue}t.id==="*"&&(r=!0,V("*"),t=f.tokens.next);if(t.id==="[")t=cn(),u=!0;else{if(!Ft(t)){F("W052",f.tokens.next,f.tokens.next.value||f.tokens.next.type),V();continue}V(),u=!1;if(t.identifier&&t.value==="static"){pn(f.tokens.next,"*")&&(r=!0,V("*"));if(Ft(f.tokens.next)||f.tokens.next.id==="[")u=f.tokens.next.id==="[",n=!0,t=f.tokens.next,f.tokens.next.id==="["?t=cn():V()}t.identifier&&(t.value==="get"||t.value==="set")&&(Ft(f.tokens.next)||f.tokens.next.id==="[")&&(u=f.tokens.next.id==="[",i=t,t=f.tokens.next,f.tokens.next.id==="["?t=cn():V())}if(!pn(f.tokens.next,"(")){q("E054",f.tokens.next,f.tokens.next.value);while(f.tokens.next.id!=="}"&&!pn(f.tokens.next,"("))V();f.tokens.next.value!=="("&&Xt({statement:e})}u||(i?ln(i.value,n?o:s,t.value,t,!0,n):(t.value==="constructor"?f.nameStack.set(e):f.nameStack.set(t),fn(n?o:s,t.value,t,!0,n)));if(i&&t.value==="constructor"){var l=i.value==="get"?"class getter method":"class setter method";q("E049",t,l,"constructor")}else t.value==="prototype"&&q("E049",t,"class method","prototype");It(t),Xt({statement:e,type:r?"generator":null,classExprBinding:e.namedExpr?e.name:null})}Kt(s)}function fn(e,t,n,r,i){var s=["key","class method","static class method"];s=s[(r||!1)+(i||!1)],n.identifier&&(t=n.value),e[t]&&t!=="__proto__"?F("W075",f.tokens.next,s,t):e[t]=Object.create(null),e[t].basic=!0,e[t].basictkn=n}function ln(e,t,n,r,i,s){var o=e==="get"?"getterToken":"setterToken",u="";i?(s&&(u+="static "),u+=e+"ter method"):u="key",f.tokens.curr.accessorType=e,f.nameStack.set(r),t[n]?(t[n].basic||t[n][o])&&n!=="__proto__"&&F("W075",f.tokens.next,u,n):t[n]=Object.create(null),t[n][o]=r}function cn(){V("["),f.inES6()||F("W119",f.tokens.curr,"computed property names","6");var e=Q(10);return V("]"),e}function hn(e,t){return e.type==="(punctuator)"?r.contains(t,e.value):!1}function pn(e,t){return e.type==="(punctuator)"&&e.value===t}function dn(){var e=an();e.notJson?(!f.inES6()&&e.isDestAssign&&F("W104",f.tokens.curr,"destructuring assignment","6"),Ot()):(f.option.laxbreak=!0,f.jsonMode=!0,mn())}function mn(){function e(){var e={},t=f.tokens.next;V("{");if(f.tokens.next.id!=="}")for(;;){if(f.tokens.next.id==="(end)")q("E026",f.tokens.next,t.line);else{if(f.tokens.next.id==="}"){F("W094",f.tokens.curr);break}f.tokens.next.id===","?q("E028",f.tokens.next):f.tokens.next.id!=="(string)"&&F("W095",f.tokens.next,f.tokens.next.value)}e[f.tokens.next.value]===!0?F("W075",f.tokens.next,"key",f.tokens.next.value):f.tokens.next.value==="__proto__"&&!f.option.proto||f.tokens.next.value==="__iterator__"&&!f.option.iterator?F("W096",f.tokens.next,f.tokens.next.value):e[f.tokens.next.value]=!0,V(),V(":"),mn();if(f.tokens.next.id!==",")break;V(",")}V("}")}function t(){var e=f.tokens.next;V("[");if(f.tokens.next.id!=="]")for(;;){if(f.tokens.next.id==="(end)")q("E027",f.tokens.next,e.line);else{if(f.tokens.next.id==="]"){F("W094",f.tokens.curr);break}f.tokens.next.id===","&&q("E028",f.tokens.next)}mn();if(f.tokens.next.id!==",")break;V(",")}V("]")}switch(f.tokens.next.id){case"{":e();break;case"[":t();break;case"true":case"false":case"null":case"(number)":case"(string)":V();break;case"-":V("-"),V("(number)");break;default:q("E003",f.tokens.next)}}var e,t={"<":!0,"<=":!0,"==":!0,"===":!0,"!==":!0,"!=":!0,">":!0,">=":!0,"+":!0,"-":!0,"*":!0,"/":!0,"%":!0},n,d=["closure","exception","global","label","outer","unused","var"],v,m,g,y,b,w,E,S,x,T,N=[],C=new i.EventEmitter,mt={};mt.legacy=["xml","unknown"],mt.es3=["undefined","boolean","number","string","function","object"],mt.es3=mt.es3.concat(mt.legacy),mt.es6=mt.es3.concat("symbol"),at("(number)",function(){return this}),at("(string)",function(){return this}),f.syntax["(identifier)"]={type:"(identifier)",lbp:0,identifier:!0,nud:function(){var e=this.value;return f.tokens.next.id==="=>"?this:(f.funct["(comparray)"].check(e)||f.funct["(scope)"].block.use(e,f.tokens.curr),this)},led:function(){q("E033",f.tokens.next,f.tokens.next.value)}};var Pt={lbp:0,identifier:!1,template:!0};f.syntax["(template)"]=r.extend({type:"(template)",nud:Wt,led:Wt,noSubst:!1},Pt),f.syntax["(template middle)"]=r.extend({type:"(template middle)",middle:!0,noSubst:!1},Pt),f.syntax["(template tail)"]=r.extend({type:"(template tail)",tail:!0,noSubst:!1},Pt),f.syntax["(no subst template)"]=r.extend({type:"(template)",nud:Wt,led:Wt,noSubst:!0,tail:!0},Pt),at("(regexp)",function(){return this}),rt("(endline)"),rt("(begin)"),rt("(end)").reach=!0,rt("(error)").reach=!0,rt("}").reach=!0,rt(")"),rt("]"),rt('"').reach=!0,rt("'").reach=!0,rt(";"),rt(":").reach=!0,rt("#"),ft("else"),ft("case").reach=!0,ft("catch"),ft("default").reach=!0,ft("finally"),ct("arguments",function(e){f.isStrict()&&f.funct["(global)"]&&F("E008",e)}),ct("eval"),ct("false"),ct("Infinity"),ct("null"),ct("this",function(e){f.isStrict()&&!jt()&&!f.option.validthis&&(f.funct["(statement)"]&&f.funct["(name)"].charAt(0)>"Z"||f.funct["(global)"])&&F("W040",e)}),ct("true"),ct("undefined"),Et("=","assign",20),Et("+=","assignadd",20),Et("-=","assignsub",20),Et("*=","assignmult",20),Et("/=","assigndiv",20).nud=function(){q("E014")},Et("%=","assignmod",20),xt("&="),xt("|="),xt("^="),xt("<<="),xt(">>="),xt(">>>="),ht(",",function(e,t){var n;t.exprs=[e],f.option.nocomma&&F("W127");if(!tt({peek:!0}))return t;for(;;){if(!(n=Q(10)))break;t.exprs.push(n);if(f.tokens.next.value!==","||!tt())break}return t},10,!0),ht("?",function(e,t){return $t(),t.left=e,t.right=Q(10),V(":"),t["else"]=Q(10),t},30);var Ht=40;ht("||",function(e,t){return $t(),t.left=e,t.right=Q(Ht),t},Ht),ht("&&","and",50),St("|","bitor",70),St("^","bitxor",80),St("&","bitand",90),dt("==",function(e,t){var n=f.option.eqnull&&((e&&e.value)==="null"||(t&&t.value)==="null");switch(!0){case!n&&f.option.eqeqeq:this.from=this.character,F("W116",this,"===","==");break;case vt(e):F("W041",this,"===",e.value);break;case vt(t):F("W041",this,"===",t.value);break;case gt(t,e,f):F("W122",this,t.value);break;case gt(e,t,f):F("W122",this,e.value)}return this}),dt("===",function(e,t){return gt(t,e,f)?F("W122",this,t.value):gt(e,t,f)&&F("W122",this,e.value),this}),dt("!=",function(e,t){var n=f.option.eqnull&&((e&&e.value)==="null"||(t&&t.value)==="null");return!n&&f.option.eqeqeq?(this.from=this.character,F("W116",this,"!==","!=")):vt(e)?F("W041",this,"!==",e.value):vt(t)?F("W041",this,"!==",t.value):gt(t,e,f)?F("W122",this,t.value):gt(e,t,f)&&F("W122",this,e.value),this}),dt("!==",function(e,t){return gt(t,e,f)?F("W122",this,t.value):gt(e,t,f)&&F("W122",this,e.value),this}),dt("<"),dt(">"),dt("<="),dt(">="),St("<<","shiftleft",120),St(">>","shiftright",120),St(">>>","shiftrightunsigned",120),ht("in","in",120),ht("instanceof","instanceof",120),ht("+",function(e,t){var n;return t.left=e,t.right=n=Q(130),e&&n&&e.id==="(string)"&&n.id==="(string)"?(e.value+=n.value,e.character=n.character,!f.option.scripturl&&a.javascriptURL.test(e.value)&&F("W050",e),e):t},130),ut("+","num"),ut("+++",function(){return F("W007"),this.arity="unary",this.right=Q(150),this}),ht("+++",function(e){return F("W007"),this.left=e,this.right=Q(130),this},130),ht("-","sub",130),ut("-","neg"),ut("---",function(){return F("W006"),this.arity="unary",this.right=Q(150),this}),ht("---",function(e){return F("W006"),this.left=e,this.right=Q(130),this},130),ht("*","mult",140),ht("/","div",140),ht("%","mod",140),Tt("++"),ut("++","preinc"),f.syntax["++"].exps=!0,Tt("--"),ut("--","predec"),f.syntax["--"].exps=!0,ut("delete",function(){var e=Q(10);return e?(e.id!=="."&&e.id!=="["&&F("W051"),this.first=e,e.identifier&&!f.isStrict()&&(e.forgiveUndef=!0),this):this}).exps=!0,ut("~",function(){return f.option.bitwise&&F("W016",this,"~"),this.arity="unary",this.right=Q(150),this}),ut("...",function(){return f.inES6(!0)||F("W119",this,"spread/rest operator","6"),!f.tokens.next.identifier&&f.tokens.next.type!=="(string)"&&!hn(f.tokens.next,["[","("])&&q("E030",f.tokens.next,f.tokens.next.value),Q(150),this}),ut("!",function(){return this.arity="unary",this.right=Q(150),this.right||B("E041",this.line||0),t[this.right.id]===!0&&F("W018",this,"!"),this}),ut("typeof",function(){var e=Q(150);return this.first=this.right=e,e||B("E041",this.line||0,this.character||0),e.identifier&&(e.forgiveUndef=!0),this}),ut("new",function(){var e=Qt("target",function(){f.inES6(!0)||F("W119",f.tokens.prev,"new.target","6");var e,t=f.funct;while(t){e=!t["(global)"];if(!t["(arrow)"])break;t=t["(context)"]}e||F("W136",f.tokens.prev,"new.target")});if(e)return e;var t=Q(155),n;if(t&&t.id!=="function")if(t.identifier){t["new"]=!0;switch(t.value){case"Number":case"String":case"Boolean":case"Math":case"JSON":F("W053",f.tokens.prev,t.value);break;case"Symbol":f.inES6()&&F("W053",f.tokens.prev,t.value);break;case"Function":f.option.evil||F("W054");break;case"Date":case"RegExp":case"this":break;default:t.id!=="function"&&(n=t.value.substr(0,1),f.option.newcap&&(n<"A"||n>"Z")&&!f.funct["(scope)"].isPredefined(t.value)&&F("W055",f.tokens.curr))}}else t.id!=="."&&t.id!=="["&&t.id!=="("&&F("W056",f.tokens.curr);else f.option.supernew||F("W057",this);return f.tokens.next.id!=="("&&!f.option.supernew&&F("W058",f.tokens.curr,f.tokens.curr.value),this.first=this.right=t,this}),f.syntax["new"].exps=!0,ut("void").exps=!0,ht(".",function(e,t){var n=Ct(!1,!0);return typeof n=="string"&&Dt(n),t.left=e,t.right=n,n&&n==="hasOwnProperty"&&f.tokens.next.value==="="&&F("W001"),!e||e.value!=="arguments"||n!=="callee"&&n!=="caller"?!f.option.evil&&e&&e.value==="document"&&(n==="write"||n==="writeln")&&F("W060",e):f.option.noarg?F("W059",e,n):f.isStrict()&&q("E008"),!f.option.evil&&(n==="eval"||n==="execScript")&&yt(e,f)&&F("W061"),t},160,!0),ht("(",function(e,t){f.option.immed&&e&&!e.immed&&e.id==="function"&&F("W062");var n=0,r=[];e&&e.type==="(identifier)"&&e.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&"Array Number String Boolean Date Object Error Symbol".indexOf(e.value)===-1&&(e.value==="Math"?F("W063",e):f.option.newcap&&F("W064",e));if(f.tokens.next.id!==")")for(;;){r[r.length]=Q(10),n+=1;if(f.tokens.next.id!==",")break;tt()}return V(")"),typeof e=="object"&&(!f.inES5()&&e.value==="parseInt"&&n===1&&F("W065",f.tokens.curr),f.option.evil||(e.value==="eval"||e.value==="Function"||e.value==="execScript"?(F("W061",e),r[0]&&[0].id==="(string)"&&U(e,r[0].value)):!r[0]||r[0].id!=="(string)"||e.value!=="setTimeout"&&e.value!=="setInterval"?r[0]&&r[0].id==="(string)"&&e.value==="."&&e.left.value==="window"&&(e.right==="setTimeout"||e.right==="setInterval")&&(F("W066",e),U(e,r[0].value)):(F("W066",e),U(e,r[0].value))),!e.identifier&&e.id!=="."&&e.id!=="["&&e.id!=="=>"&&e.id!=="("&&e.id!=="&&"&&e.id!=="||"&&e.id!=="?"&&(!f.inES6()||!e["(name)"])&&F("W067",t)),t.left=e,t},155,!0).exps=!0,ut("(",function(){var e=f.tokens.next,t,n=-1,r,i,s,o,u=1,a=f.tokens.curr,l=f.tokens.prev,c=!f.option.singleGroups;do e.value==="("?u+=1:e.value===")"&&(u-=1),n+=1,t=e,e=W(n);while((u!==0||t.value!==")")&&e.value!==";"&&e.type!=="(end)");f.tokens.next.id==="function"&&(i=f.tokens.next.immed=!0);if(e.value==="=>")return Xt({type:"arrow",parsedOpening:!0});var h=[];if(f.tokens.next.id!==")")for(;;){h.push(Q(10));if(f.tokens.next.id!==",")break;f.option.nocomma&&F("W127"),tt()}V(")",this),f.option.immed&&h[0]&&h[0].id==="function"&&f.tokens.next.id!=="("&&f.tokens.next.id!=="."&&f.tokens.next.id!=="["&&F("W068",this);if(!h.length)return;return h.length>1?(r=Object.create(f.syntax[","]),r.exprs=h,s=h[0],o=h[h.length-1],c||(c=l.assign||l.delim)):(r=s=o=h[0],c||(c=a.beginsStmt&&(r.id==="{"||i||Ut(r))||i&&(!J()||f.tokens.prev.id!=="}")||Ut(r)&&!J()||r.id==="{"&&l.id==="=>"||r.type==="(number)"&&pn(e,".")&&/^\d+$/.test(r.value))),r&&(!c&&(s.left||s.right||r.exprs)&&(c=!K(l)&&s.lbp<=l.lbp||!J()&&o.lbp"),ht("[",function(e,t){var n=Q(10),r;return n&&n.type==="(string)"&&(!f.option.evil&&(n.value==="eval"||n.value==="execScript")&&yt(e,f)&&F("W061"),Dt(n.value),!f.option.sub&&a.identifier.test(n.value)&&(r=f.syntax[n.value],(!r||!O(r))&&F("W069",f.tokens.prev,n.value))),V("]",t),n&&n.value==="hasOwnProperty"&&f.tokens.next.value==="="&&F("W001"),t.left=e,t.right=n,t},160,!0),ut("[",function(){var e=an();if(e.isCompArray)return!f.option.esnext&&!f.inMoz()&&F("W118",f.tokens.curr,"array comprehension"),Bt();if(e.isDestAssign)return this.destructAssign=Gt({openingParsed:!0,assignment:!0}),this;var t=f.tokens.curr.line!==G(f.tokens.next);this.first=[],t&&(g+=f.option.indent,f.tokens.next.from===g+f.option.indent&&(g+=f.option.indent));while(f.tokens.next.id!=="(end)"){while(f.tokens.next.id===","){if(!f.option.elision){if(!!f.inES5()){F("W128");do V(",");while(f.tokens.next.id===",");continue}F("W070")}V(",")}if(f.tokens.next.id==="]")break;this.first.push(Q(10));if(f.tokens.next.id!==",")break;tt({allowTrailing:!0});if(f.tokens.next.id==="]"&&!f.inES5()){F("W070",f.tokens.curr);break}}return t&&(g-=f.option.indent),V("]",this),this}),function(e){e.nud=function(){var e,t,n,r,i,s=!1,o,u=Object.create(null);e=f.tokens.curr.line!==G(f.tokens.next),e&&(g+=f.option.indent,f.tokens.next.from===g+f.option.indent&&(g+=f.option.indent));var a=an();if(a.isDestAssign)return this.destructAssign=Gt({openingParsed:!0,assignment:!0}),this;for(;;){if(f.tokens.next.id==="}")break;o=f.tokens.next.value;if(!f.tokens.next.identifier||X().id!==","&&X().id!=="}")if(W().id===":"||o!=="get"&&o!=="set"){f.tokens.next.value==="*"&&f.tokens.next.type==="(punctuator)"?(f.inES6()||F("W104",f.tokens.next,"generator functions","6"),V("*"),s=!0):s=!1;if(f.tokens.next.id==="[")n=cn(),f.nameStack.set(n);else{f.nameStack.set(f.tokens.next),n=It(),fn(u,n,f.tokens.next);if(typeof n!="string")break}f.tokens.next.value==="("?(f.inES6()||F("W104",f.tokens.curr,"concise methods","6"),Xt({type:s?"generator":null})):(V(":"),Q(10))}else V(o),f.inES5()||q("E034"),n=It(),!n&&!f.inES6()&&q("E035"),n&&ln(o,u,n,f.tokens.curr),i=f.tokens.next,t=Xt(),r=t["(params)"],o==="get"&&n&&r?F("W076",i,r[0],n):o==="set"&&n&&(!r||r.length!==1)&&F("W077",i,n);else f.inES6()||F("W104",f.tokens.next,"object short notation","6"),n=It(!0),fn(u,n,f.tokens.next),Q(10);Dt(n);if(f.tokens.next.id!==",")break;tt({allowTrailing:!0,property:!0}),f.tokens.next.id===","?F("W070",f.tokens.curr):f.tokens.next.id==="}"&&!f.inES5()&&F("W070",f.tokens.curr)}return e&&(g-=f.option.indent),V("}",this),Kt(u),this},e.fud=function(){q("E036",f.tokens.curr)}}(rt("{"));var tn=it("const",function(e){return en("const",this,e)});tn.exps=!0;var nn=it("let",function(e){return en("let",this,e)});nn.exps=!0;var rn=it("var",function(e){var t=e&&e.prefix,n=e&&e.inexport,i,o,u,a=e&&e.implied,l=!e||!e.ignore;this.first=[];for(;;){var c=[];r.contains(["{","["],f.tokens.next.value)?(i=Gt(),o=!1):(i=[{id:Ct(),token:f.tokens.curr}],o=!0),(!t||!a)&&l&&f.option.varstmt&&F("W132",this),this.first=this.first.concat(c);for(var h in i)i.hasOwnProperty(h)&&(h=i[h],!a&&f.funct["(global)"]&&(S[h.id]===!1?F("W079",h.token,h.id):f.option.futurehostile===!1&&(!f.inES5()&&s.ecmaIdentifiers[5][h.id]===!1||!f.inES6()&&s.ecmaIdentifiers[6][h.id]===!1)&&F("W129",h.token,h.id)),h.id&&(a==="for"?(f.funct["(scope)"].has(h.id)||l&&F("W088",h.token,h.id),f.funct["(scope)"].block.use(h.id,h.token)):(f.funct["(scope)"].addlabel(h.id,{type:"var",token:h.token}),o&&n&&f.funct["(scope)"].setExported(h.id,h.token)),c.push(h.token)));f.tokens.next.id==="="&&(f.nameStack.set(f.tokens.curr),V("="),!t&&l&&!f.funct["(loopage)"]&&f.tokens.next.id==="undefined"&&F("W080",f.tokens.prev,f.tokens.prev.value),W(0).id==="="&&f.tokens.next.identifier&&(!t&&l&&!f.funct["(params)"]||f.funct["(params)"].indexOf(f.tokens.next.value)===-1)&&F("W120",f.tokens.next,f.tokens.next.value),u=Q(t?120:10),o?i[0].first=u:Zt(c,u));if(f.tokens.next.id!==",")break;tt()}return this});rn.exps=!0,st("class",function(){return sn.call(this,!0)}),st("function",function(e){var t=e&&e.inexport,n=!1;f.tokens.next.value==="*"&&(V("*"),f.inES6({strict:!0})?n=!0:F("W119",f.tokens.curr,"function*","6")),m&&F("W082",f.tokens.curr);var r=Nt();return f.funct["(scope)"].addlabel(r,{type:"function",token:f.tokens.curr}),r===undefined?F("W025"):t&&f.funct["(scope)"].setExported(r,f.tokens.prev),Xt({name:r,statement:this,type:n?"generator":null,ignoreLoopFunc:m}),f.tokens.next.id==="("&&f.tokens.next.line===f.tokens.curr.line&&q("E039"),this}),ut("function",function(){var e=!1;f.tokens.next.value==="*"&&(f.inES6()||F("W119",f.tokens.curr,"function*","6"),V("*"),e=!0);var t=Nt();return Xt({name:t,type:e?"generator":null}),this}),st("if",function(){var e=f.tokens.next;$t(),f.condition=!0,V("(");var t=Q(0);Jt(t);var n=null;f.option.forin&&f.forinifcheckneeded&&(f.forinifcheckneeded=!1,n=f.forinifchecks[f.forinifchecks.length-1],t.type==="(punctuator)"&&t.value==="!"?n.type="(negative)":n.type="(positive)"),V(")",e),f.condition=!1;var r=_t(!0,!0);return n&&n.type==="(negative)"&&r&&r[0]&&r[0].type==="(identifier)"&&r[0].value==="continue"&&(n.type="(negative-with-continue)"),f.tokens.next.id==="else"&&(V("else"),f.tokens.next.id==="if"||f.tokens.next.id==="switch"?At():_t(!0,!0)),this}),st("try",function(){function t(){V("catch"),V("("),f.funct["(scope)"].stack("catchparams");if(hn(f.tokens.next,["[","{"])){var e=Gt();r.each(e,function(e){e.id&&f.funct["(scope)"].addParam(e.id,e,"exception")})}else f.tokens.next.type!=="(identifier)"?F("E030",f.tokens.next,f.tokens.next.value):f.funct["(scope)"].addParam(Ct(),f.tokens.curr,"exception");f.tokens.next.value==="if"&&(f.inMoz()||F("W118",f.tokens.curr,"catch filter"),V("if"),Q(0)),V(")"),_t(!1),f.funct["(scope)"].unstack()}var e;_t(!0);while(f.tokens.next.id==="catch")$t(),e&&!f.inMoz()&&F("W118",f.tokens.next,"multiple catch blocks"),t(),e=!0;if(f.tokens.next.id==="finally"){V("finally"),_t(!0);return}return e||q("E021",f.tokens.next,"catch",f.tokens.next.value),this}),st("while",function(){var e=f.tokens.next;return f.funct["(breakage)"]+=1,f.funct["(loopage)"]+=1,$t(),V("("),Jt(Q(0)),V(")",e),_t(!0,!0),f.funct["(breakage)"]-=1,f.funct["(loopage)"]-=1,this}).labelled=!0,st("with",function(){var e=f.tokens.next;return f.isStrict()?q("E010",f.tokens.curr):f.option.withstmt||F("W085",f.tokens.curr),V("("),Q(0),V(")",e),_t(!0,!0),this}),st("switch",function(){var e=f.tokens.next,t=!1,n=!1;f.funct["(breakage)"]+=1,V("("),Jt(Q(0)),V(")",e),e=f.tokens.next,V("{"),f.tokens.next.from===g&&(n=!0),n||(g+=f.option.indent),this.cases=[];for(;;)switch(f.tokens.next.id){case"case":switch(f.funct["(verb)"]){case"yield":case"break":case"case":case"continue":case"return":case"switch":case"throw":break;default:f.tokens.curr.caseFallsThrough||F("W086",f.tokens.curr,"case")}V("case"),this.cases.push(Q(0)),$t(),t=!0,V(":"),f.funct["(verb)"]="case";break;case"default":switch(f.funct["(verb)"]){case"yield":case"break":case"continue":case"return":case"throw":break;default:this.cases.length&&(f.tokens.curr.caseFallsThrough||F("W086",f.tokens.curr,"default"))}V("default"),t=!0,V(":");break;case"}":n||(g-=f.option.indent),V("}",e),f.funct["(breakage)"]-=1,f.funct["(verb)"]=undefined;return;case"(end)":q("E023",f.tokens.next,"}");return;default:g+=f.option.indent;if(t)switch(f.tokens.curr.id){case",":q("E040");return;case":":t=!1,Ot();break;default:q("E025",f.tokens.curr);return}else{if(f.tokens.curr.id!==":"){q("E021",f.tokens.next,"case",f.tokens.next.value);return}V(":"),q("E024",f.tokens.curr,":"),Ot()}g-=f.option.indent}return this}).labelled=!0,it("debugger",function(){return f.option.debug||F("W087",this),this}).exps=!0,function(){var e=it("do",function(){f.funct["(breakage)"]+=1,f.funct["(loopage)"]+=1,$t(),this.first=_t(!0,!0),V("while");var e=f.tokens.next;return V("("),Jt(Q(0)),V(")",e),f.funct["(breakage)"]-=1,f.funct["(loopage)"]-=1,this});e.labelled=!0,e.exps=!0}(),st("for",function(){var e,t=f.tokens.next,n=!1,i=null;t.value==="each"&&(i=t,V("each"),f.inMoz()||F("W118",f.tokens.curr,"for each")),$t(),V("(");var s,o=0,u=["in","of"],a=0,l,c;hn(f.tokens.next,["{","["])&&++a;do{s=W(o),++o,hn(s,["{","["])?++a:hn(s,["}","]"])&&--a;if(a<0)break;a===0&&(!l&&pn(s,",")?l=s:!c&&pn(s,"=")&&(c=s))}while(a>0||!r.contains(u,s.value)&&s.value!==";"&&s.type!=="(end)");if(r.contains(u,s.value)){!f.inES6()&&s.value==="of"&&F("W104",s,"for of","6");var h=!c&&!l;c&&q("W133",l,s.value,"initializer is forbidden"),l&&q("W133",l,s.value,"more than one ForBinding"),f.tokens.next.id==="var"?(V("var"),f.tokens.curr.fud({prefix:!0})):f.tokens.next.id==="let"||f.tokens.next.id==="const"?(V(f.tokens.next.id),n=!0,f.funct["(scope)"].stack(),f.tokens.curr.fud({prefix:!0})):Object.create(rn).fud({prefix:!0,implied:"for",ignore:!h}),V(s.value),Q(20),V(")",t),s.value==="in"&&f.option.forin&&(f.forinifcheckneeded=!0,f.forinifchecks===undefined&&(f.forinifchecks=[]),f.forinifchecks.push({type:"(none)"})),f.funct["(breakage)"]+=1,f.funct["(loopage)"]+=1,e=_t(!0,!0);if(s.value==="in"&&f.option.forin){if(f.forinifchecks&&f.forinifchecks.length>0){var p=f.forinifchecks.pop();(e&&e.length>0&&(typeof e[0]!="object"||e[0].value!=="if")||p.type==="(positive)"&&e.length>1||p.type==="(negative)")&&F("W089",this)}f.forinifcheckneeded=!1}f.funct["(breakage)"]-=1,f.funct["(loopage)"]-=1}else{i&&q("E045",i);if(f.tokens.next.id!==";")if(f.tokens.next.id==="var")V("var"),f.tokens.curr.fud();else if(f.tokens.next.id==="let")V("let"),n=!0,f.funct["(scope)"].stack(),f.tokens.curr.fud();else for(;;){Q(0,"for");if(f.tokens.next.id!==",")break;l()}Z(f.tokens.curr),V(";"),f.funct["(loopage)"]+=1,f.tokens.next.id!==";"&&Jt(Q(0)),Z(f.tokens.curr),V(";"),f.tokens.next.id===";"&&q("E021",f.tokens.next,")",";");if(f.tokens.next.id!==")")for(;;){Q(0,"for");if(f.tokens.next.id!==",")break;l()}V(")",t),f.funct["(breakage)"]+=1,_t(!0,!0),f.funct["(breakage)"]-=1,f.funct["(loopage)"]-=1}return n&&f.funct["(scope)"].unstack(),this}).labelled=!0,it("break",function(){var e=f.tokens.next.value;return f.option.asi||Z(this),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.curr.line===G(f.tokens.next)?(f.funct["(scope)"].funct.hasBreakLabel(e)||F("W090",f.tokens.next,e),this.first=f.tokens.next,V()):f.funct["(breakage)"]===0&&F("W052",f.tokens.next,this.value),kt(this),this}).exps=!0,it("continue",function(){var e=f.tokens.next.value;return f.funct["(breakage)"]===0&&F("W052",f.tokens.next,this.value),f.funct["(loopage)"]||F("W052",f.tokens.next,this.value),f.option.asi||Z(this),f.tokens.next.id!==";"&&!f.tokens.next.reach&&f.tokens.curr.line===G(f.tokens.next)&&(f.funct["(scope)"].funct.hasBreakLabel(e)||F("W090",f.tokens.next,e),this.first=f.tokens.next,V()),kt(this),this}).exps=!0,it("return",function(){return this.line===G(f.tokens.next)?f.tokens.next.id!==";"&&!f.tokens.next.reach&&(this.first=Q(0),this.first&&this.first.type==="(punctuator)"&&this.first.value==="="&&!this.first.paren&&!f.option.boss&&I("W093",this.first.line,this.first.character)):f.tokens.next.type==="(punctuator)"&&["[","{","+","-"].indexOf(f.tokens.next.value)>-1&&Z(this),kt(this),this}).exps=!0,function(e){e.exps=!0,e.lbp=25}(ut("yield",function(){var e=f.tokens.prev;f.inES6(!0)&&!f.funct["(generator)"]?("(catch)"!==f.funct["(name)"]||!f.funct["(context)"]["(generator)"])&&q("E046",f.tokens.curr,"yield"):f.inES6()||F("W104",f.tokens.curr,"yield","6"),f.funct["(generator)"]="yielded";var t=!1;f.tokens.next.value==="*"&&(t=!0,V("*"));if(this.line===G(f.tokens.next)||!f.inMoz()){if(t||f.tokens.next.id!==";"&&!f.option.asi&&!f.tokens.next.reach&&f.tokens.next.nud)Y(f.tokens.curr,f.tokens.next),this.first=Q(10),this.first.type==="(punctuator)"&&this.first.value==="="&&!this.first.paren&&!f.option.boss&&I("W093",this.first.line,this.first.character);f.inMoz()&&f.tokens.next.id!==")"&&(e.lbp>30||!e.assign&&!J()||e.id==="yield")&&q("E050",this)}else f.option.asi||Z(this);return this})),it("throw",function(){return Z(this),this.first=Q(20),kt(this),this}).exps=!0,it("import",function(){f.inES6()||F("W119",f.tokens.curr,"import","6");if(f.tokens.next.type==="(string)")return V("(string)"),this;if(f.tokens.next.identifier){this.name=Ct(),f.funct["(scope)"].addlabel(this.name,{type:"const",token:f.tokens.curr});if(f.tokens.next.value!==",")return V("from"),V("(string)"),this;V(",")}if(f.tokens.next.id==="*")V("*"),V("as"),f.tokens.next.identifier&&(this.name=Ct(),f.funct["(scope)"].addlabel(this.name,{type:"const",token:f.tokens.curr}));else{V("{");for(;;){if(f.tokens.next.value==="}"){V("}");break}var e;f.tokens.next.type==="default"?(e="default",V("default")):e=Ct(),f.tokens.next.value==="as"&&(V("as"),e=Ct()),f.funct["(scope)"].addlabel(e,{type:"const",token:f.tokens.curr});if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){V("}");break}q("E024",f.tokens.next,f.tokens.next.value);break}V(",")}}return V("from"),V("(string)"),this}).exps=!0,it("export",function(){var e=!0,t,n;f.inES6()||(F("W119",f.tokens.curr,"export","6"),e=!1),f.funct["(scope)"].block.isGlobal()||(q("E053",f.tokens.curr),e=!1);if(f.tokens.next.value==="*")return V("*"),V("from"),V("(string)"),this;if(f.tokens.next.type==="default"){f.nameStack.set(f.tokens.next),V("default");var r=f.tokens.next.id;if(r==="function"||r==="class")this.block=!0;return t=W(),Q(10),n=t.value,this.block&&(f.funct["(scope)"].addlabel(n,{type:r,token:t}),f.funct["(scope)"].setExported(n,t)),this}if(f.tokens.next.value==="{"){V("{");var i=[];for(;;){f.tokens.next.identifier||q("E030",f.tokens.next,f.tokens.next.value),V(),i.push(f.tokens.curr),f.tokens.next.value==="as"&&(V("as"),f.tokens.next.identifier||q("E030",f.tokens.next,f.tokens.next.value),V());if(f.tokens.next.value!==","){if(f.tokens.next.value==="}"){V("}");break}q("E024",f.tokens.next,f.tokens.next.value);break}V(",")}return f.tokens.next.value==="from"?(V("from"),V("(string)")):e&&i.forEach(function(e){f.funct["(scope)"].setExported(e.value,e)}),this}if(f.tokens.next.id==="var")V("var"),f.tokens.curr.fud({inexport:!0});else if(f.tokens.next.id==="let")V("let"),f.tokens.curr.fud({inexport:!0});else if(f.tokens.next.id==="const")V("const"),f.tokens.curr.fud({inexport:!0});else if(f.tokens.next.id==="function")this.block=!0,V("function"),f.syntax["function"].fud({inexport:!0});else if(f.tokens.next.id==="class"){this.block=!0,V("class");var s=f.tokens.next;f.syntax["class"].fud(),f.funct["(scope)"].setExported(s.value,s)}else q("E024",f.tokens.next,f.tokens.next.value);return this}).exps=!0,lt("abstract"),lt("boolean"),lt("byte"),lt("char"),lt("class",{es5:!0,nud:sn}),lt("double"),lt("enum",{es5:!0}),lt("export",{es5:!0}),lt("extends",{es5:!0}),lt("final"),lt("float"),lt("goto"),lt("implements",{es5:!0,strictOnly:!0}),lt("import",{es5:!0}),lt("int"),lt("interface",{es5:!0,strictOnly:!0}),lt("long"),lt("native"),lt("package",{es5:!0,strictOnly:!0}),lt("private",{es5:!0,strictOnly:!0}),lt("protected",{es5:!0,strictOnly:!0}),lt("public",{es5:!0,strictOnly:!0}),lt("short"),lt("static",{es5:!0,strictOnly:!0}),lt("super",{es5:!0}),lt("synchronized"),lt("transient"),lt("volatile");var an=function(){var e,t,n,r=-1,i=0,s={};hn(f.tokens.curr,["[","{"])&&(i+=1);do{n=r===-1?f.tokens.curr:e,e=r===-1?f.tokens.next:W(r),t=W(r+1),r+=1,hn(e,["[","{"])?i+=1:hn(e,["]","}"])&&(i-=1);if(i===1&&e.identifier&&e.value==="for"&&!pn(n,".")){s.isCompArray=!0,s.notJson=!0;break}if(i===0&&hn(e,["}","]"])){if(t.value==="="){s.isDestAssign=!0,s.notJson=!0;break}if(t.value==="."){s.notJson=!0;break}}pn(e,";")&&(s.isBlock=!0,s.notJson=!0)}while(i>0&&e.id!=="(end)");return s},vn=function(){function i(e){var t=n.variables.filter(function(t){if(t.value===e)return t.undef=!1,e}).length;return t!==0}function s(e){var t=n.variables.filter(function(t){if(t.value===e&&!t.undef)return t.unused===!0&&(t.unused=!1),e}).length;return t===0}var e=function(){this.mode="use",this.variables=[]},t=[],n;return{stack:function(){n=new e,t.push(n)},unstack:function(){n.variables.filter(function(e){e.unused&&F("W098",e.token,e.raw_text||e.value),e.undef&&f.funct["(scope)"].block.use(e.value,e.token)}),t.splice(-1,1),n=t[t.length-1]},setState:function(e){r.contains(["use","define","generate","filter"],e)&&(n.mode=e)},check:function(e){if(!n)return;return n&&n.mode==="use"?(s(e)&&n.variables.push({funct:f.funct,token:f.tokens.curr,value:e,undef:!0,unused:!1}),!0):n&&n.mode==="define"?(i(e)||n.variables.push({funct:f.funct,token:f.tokens.curr,value:e,undef:!1,unused:!0}),!0):n&&n.mode==="generate"?(f.funct["(scope)"].block.use(e,f.tokens.curr),!0):n&&n.mode==="filter"?(s(e)&&f.funct["(scope)"].block.use(e,f.tokens.curr),!0):!1}}},gn=function(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")},yn=function(t,i,o){function U(e,t){if(!e)return;!Array.isArray(e)&&typeof e=="object"&&(e=Object.keys(e)),e.forEach(t)}var a,l,c,d,A,O,M={},P={};i=r.clone(i),f.reset(),i&&i.scope?p.scope=i.scope:(p.errors=[],p.undefs=[],p.internals=[],p.blacklist={},p.scope="(main)"),S=Object.create(null),D(S,s.ecmaIdentifiers[3]),D(S,s.reservedVars),D(S,o||{}),n=Object.create(null);var j=Object.create(null);if(i){U(i.predef||null,function(e){var t,n;e[0]==="-"?(t=e.slice(1),p.blacklist[t]=t,delete S[t]):(n=Object.getOwnPropertyDescriptor(i.predef,e),S[e]=n?n.value:!1)}),U(i.exported||null,function(e){j[e]=!0}),delete i.predef,delete i.exported,O=Object.keys(i);for(c=0;c0&&(e.implieds=u),T.length>0&&(e.urls=T),o=f.funct["(scope)"].getUsedOrDefinedGlobals(),o.length>0&&(e.globals=o);for(r=1;r0&&(e.unused=a);for(s in w)if(typeof w[s]=="number"){e.member=w;break}return e},yn.jshint=yn,yn}();typeof n=="object"&&n&&(n.JSHINT=p)},{"../lodash":"/node_modules/jshint/lodash.js","./lex.js":"/node_modules/jshint/src/lex.js","./messages.js":"/node_modules/jshint/src/messages.js","./options.js":"/node_modules/jshint/src/options.js","./reg.js":"/node_modules/jshint/src/reg.js","./scope-manager.js":"/node_modules/jshint/src/scope-manager.js","./state.js":"/node_modules/jshint/src/state.js","./style.js":"/node_modules/jshint/src/style.js","./vars.js":"/node_modules/jshint/src/vars.js",events:"/node_modules/browserify/node_modules/events/events.js"}],"/node_modules/jshint/src/lex.js":[function(e,t,n){"use strict";function h(){var e=[];return{push:function(t){e.push(t)},check:function(){for(var t=0;t0&&this.context[this.context.length-1].type===e},pushContext:function(e){this.context.push({type:e})},popContext:function(){return this.context.pop()},isContext:function(e){return this.context.length>0&&this.context[this.context.length-1]===e},currentContext:function(){return this.context.length>0&&this.context[this.context.length-1]},getLines:function(){return this._lines=o.lines,this._lines},setLines:function(e){this._lines=e,o.lines=this._lines},peek:function(e){return this.input.charAt(e||0)},skip:function(e){e=e||1,this.char+=e,this.input=this.input.slice(e)},on:function(e,t){e.split(" ").forEach(function(e){this.emitter.on(e,t)}.bind(this))},trigger:function(){this.emitter.emit.apply(this.emitter,Array.prototype.slice.call(arguments))},triggerAsync:function(e,t,n,r){n.push(function(){r()&&this.trigger(e,t)}.bind(this))},scanPunctuator:function(){var e=this.peek(),t,n,r;switch(e){case".":if(/^[0-9]$/.test(this.peek(1)))return null;if(this.peek(1)==="."&&this.peek(2)===".")return{type:l.Punctuator,value:"..."};case"(":case")":case";":case",":case"[":case"]":case":":case"~":case"?":return{type:l.Punctuator,value:e};case"{":return this.pushContext(c.Block),{type:l.Punctuator,value:e};case"}":return this.inContext(c.Block)&&this.popContext(),{type:l.Punctuator,value:e};case"#":return{type:l.Punctuator,value:e};case"":return null}return t=this.peek(1),n=this.peek(2),r=this.peek(3),e===">"&&t===">"&&n===">"&&r==="="?{type:l.Punctuator,value:">>>="}:e==="="&&t==="="&&n==="="?{type:l.Punctuator,value:"==="}:e==="!"&&t==="="&&n==="="?{type:l.Punctuator,value:"!=="}:e===">"&&t===">"&&n===">"?{type:l.Punctuator,value:">>>"}:e==="<"&&t==="<"&&n==="="?{type:l.Punctuator,value:"<<="}:e===">"&&t===">"&&n==="="?{type:l.Punctuator,value:">>="}:e==="="&&t===">"?{type:l.Punctuator,value:e+t}:e===t&&"+-<>&|".indexOf(e)>=0?{type:l.Punctuator,value:e+t}:"<>=!+-*%&|^".indexOf(e)>=0?t==="="?{type:l.Punctuator,value:e+t}:{type:l.Punctuator,value:e}:e==="/"?t==="="?{type:l.Punctuator,value:"/="}:{type:l.Punctuator,value:"/"}:null},scanComments:function(){function u(e,t,n){var r=["jshint","jslint","members","member","globals","global","exported"],i=!1,u=e+t,a="plain";return n=n||{},n.isMultiline&&(u+="*/"),t=t.replace(/\n/g," "),e==="/*"&&s.fallsThrough.test(t)&&(i=!0,a="falls through"),r.forEach(function(n){if(i)return;if(e==="//"&&n!=="jshint")return;t.charAt(n.length)===" "&&t.substr(0,n.length)===n&&(i=!0,e+=n,t=t.substr(n.length)),!i&&t.charAt(0)===" "&&t.charAt(n.length+1)===" "&&t.substr(1,n.length)===n&&(i=!0,e=e+" "+n,t=t.substr(n.length+1));if(!i)return;switch(n){case"member":a="members";break;case"global":a="globals";break;default:var r=t.split(":").map(function(e){return e.replace(/^\s+/,"").replace(/\s+$/,"")});if(r.length===2)switch(r[0]){case"ignore":switch(r[1]){case"start":o.ignoringLinterErrors=!0,i=!1;break;case"end":o.ignoringLinterErrors=!1,i=!1}}a=n}}),{type:l.Comment,commentType:a,value:u,body:t,isSpecial:i,isMultiline:n.isMultiline||!1,isMalformed:n.isMalformed||!1}}var e=this.peek(),t=this.peek(1),n=this.input.substr(2),r=this.line,i=this.char,o=this;if(e==="*"&&t==="/")return this.trigger("error",{code:"E018",line:r,character:i}),this.skip(2),null;if(e!=="/"||t!=="*"&&t!=="/")return null;if(t==="/")return this.skip(this.input.length),u("//",n);var a="";if(t==="*"){this.inComment=!0,this.skip(2);while(this.peek()!=="*"||this.peek(1)!=="/")if(this.peek()===""){a+="\n";if(!this.nextLine())return this.trigger("error",{code:"E017",line:r,character:i}),this.inComment=!1,u("/*",a,{isMultiline:!0,isMalformed:!0})}else a+=this.peek(),this.skip();return this.skip(2),this.inComment=!1,u("/*",a,{isMultiline:!0})}},scanKeyword:function(){var e=/^[a-zA-Z_$][a-zA-Z0-9_$]*/.exec(this.input),t=["if","in","do","var","for","new","try","let","this","else","case","void","with","enum","while","break","catch","throw","const","yield","class","super","return","typeof","delete","switch","export","import","default","finally","extends","function","continue","debugger","instanceof"];return e&&t.indexOf(e[0])>=0?{type:l.Keyword,value:e[0]}:null},scanIdentifier:function(){function i(e){return e>256}function s(e){return e>256}function o(e){return/^[0-9a-fA-F]$/.test(e)}function p(e){return e.replace(/\\u([0-9a-fA-F]{4})/g,function(e,t){return String.fromCharCode(parseInt(t,16))})}var e="",t=0,n,r,u=function(){t+=1;if(this.peek(t)!=="u")return null;var e=this.peek(t+1),n=this.peek(t+2),r=this.peek(t+3),i=this.peek(t+4),u;return o(e)&&o(n)&&o(r)&&o(i)?(u=parseInt(e+n+r+i,16),f[u]||s(u)?(t+=5,"\\u"+e+n+r+i):null):null}.bind(this),c=function(){var e=this.peek(t),n=e.charCodeAt(0);return n===92?u():n<128?a[n]?(t+=1,e):null:i(n)?(t+=1,e):null}.bind(this),h=function(){var e=this.peek(t),n=e.charCodeAt(0);return n===92?u():n<128?f[n]?(t+=1,e):null:s(n)?(t+=1,e):null}.bind(this);r=c();if(r===null)return null;e=r;for(;;){r=h();if(r===null)break;e+=r}switch(e){case"true":case"false":n=l.BooleanLiteral;break;case"null":n=l.NullLiteral;break;default:n=l.Identifier}return{type:n,value:p(e),text:e,tokenLength:e.length}},scanNumericLiteral:function(){function f(e){return/^[0-9]$/.test(e)}function c(e){return/^[0-7]$/.test(e)}function h(e){return/^[01]$/.test(e)}function p(e){return/^[0-9a-fA-F]$/.test(e)}function d(e){return e==="$"||e==="_"||e==="\\"||e>="a"&&e<="z"||e>="A"&&e<="Z"}var e=0,t="",n=this.input.length,r=this.peek(e),i,s=f,u=10,a=!1;if(r!=="."&&!f(r))return null;if(r!=="."){t=this.peek(e),e+=1,r=this.peek(e);if(t==="0"){if(r==="x"||r==="X")s=p,u=16,e+=1,t+=r;if(r==="o"||r==="O")s=c,u=8,o.inES6(!0)||this.trigger("warning",{code:"W119",line:this.line,character:this.char,data:["Octal integer literal","6"]}),e+=1,t+=r;if(r==="b"||r==="B")s=h,u=2,o.inES6(!0)||this.trigger("warning",{code:"W119",line:this.line,character:this.char,data:["Binary integer literal","6"]}),e+=1,t+=r;c(r)&&(s=c,u=8,a=!0,i=!1,e+=1,t+=r),!c(r)&&f(r)&&(e+=1,t+=r)}while(e=0&&i<=7&&o.isStrict()});break;case"u":var s=this.input.substr(1,4),u=parseInt(s,16);isNaN(u)&&this.trigger("warning",{code:"W052",line:this.line,character:this.char,data:["u"+s]}),r=String.fromCharCode(u),n=5;break;case"v":this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\v"]},e,function(){return o.jsonMode}),r=" ";break;case"x":var a=parseInt(this.input.substr(1,2),16);this.triggerAsync("warning",{code:"W114",line:this.line,character:this.char,data:["\\x-"]},e,function(){return o.jsonMode}),r=String.fromCharCode(a),n=3;break;case"\\":r="\\\\";break;case'"':r='\\"';break;case"/":break;case"":t=!0,r=""}return{"char":r,jump:n,allowNewLine:t}},scanTemplateLiteral:function(e){var t,n="",r,i=this.line,s=this.char,u=this.templateStarts.length;if(!o.inES6(!0))return null;if(this.peek()==="`")t=l.TemplateHead,this.templateStarts.push({line:this.line,"char":this.char}),u=this.templateStarts.length,this.skip(1),this.pushContext(c.Template);else{if(!this.inContext(c.Template)||this.peek()!=="}")return null;t=l.TemplateMiddle}while(this.peek()!=="`"){while((r=this.peek())===""){n+="\n";if(!this.nextLine()){var a=this.templateStarts.pop();return this.trigger("error",{code:"E052",line:a.line,character:a.char}),{type:t,value:n,startLine:i,startChar:s,isUnclosed:!0,depth:u,context:this.popContext()}}}if(r==="$"&&this.peek(1)==="{")return n+="${",this.skip(2),{type:t,value:n,startLine:i,startChar:s,isUnclosed:!1,depth:u,context:this.currentContext()};if(r==="\\"){var f=this.scanEscapeSequence(e);n+=f.char,this.skip(f.jump)}else r!=="`"&&(n+=r,this.skip(1))}return t=t===l.TemplateHead?l.NoSubstTemplate:l.TemplateTail,this.skip(1),this.templateStarts.pop(),{type:t,value:n,startLine:i,startChar:s,isUnclosed:!1,depth:u,context:this.popContext()}},scanStringLiteral:function(e){var t=this.peek();if(t!=='"'&&t!=="'")return null;this.triggerAsync("warning",{code:"W108",line:this.line,character:this.char},e,function(){return o.jsonMode&&t!=='"'});var n="",r=this.line,i=this.char,s=!1;this.skip();while(this.peek()!==t)if(this.peek()===""){s?(s=!1,this.triggerAsync("warning",{code:"W043",line:this.line,character:this.char},e,function(){return!o.option.multistr}),this.triggerAsync("warning",{code:"W042",line:this.line,character:this.char},e,function(){return o.jsonMode&&o.option.multistr})):this.trigger("warning",{code:"W112",line:this.line,character:this.char});if(!this.nextLine())return this.trigger("error",{code:"E029",line:r,character:i}),{type:l.StringLiteral,value:n,startLine:r,startChar:i,isUnclosed:!0,quote:t}}else{s=!1;var u=this.peek(),a=1;u<" "&&this.trigger("warning",{code:"W113",line:this.line,character:this.char,data:[""]});if(u==="\\"){var f=this.scanEscapeSequence(e);u=f.char,a=f.jump,s=f.allowNewLine}n+=u,this.skip(a)}return this.skip(),{type:l.StringLiteral,value:n,startLine:r,startChar:i,isUnclosed:!1,quote:t}},scanRegExp:function(){var e=0,t=this.input.length,n=this.peek(),r=n,i="",s=[],o=!1,u=!1,a,f=function(){n<" "&&(o=!0,this.trigger("warning",{code:"W048",line:this.line,character:this.char})),n==="<"&&(o=!0,this.trigger("warning",{code:"W049",line:this.line,character:this.char,data:[n]}))}.bind(this);if(!this.prereg||n!=="/")return null;e+=1,a=!1;while(e=this.getLines().length)return!1;this.input=this.getLines()[this.line],this.line+=1,this.char=1,this.from=1;var t=this.input.trim(),n=function(){return r.some(arguments,function(e){return t.indexOf(e)===0})},i=function(){return r.some(arguments,function(e){return t.indexOf(e,t.length-e.length)!==-1})};this.ignoringLinterErrors===!0&&!n("/*","//")&&(!this.inComment||!i("*/"))&&(this.input=""),e=this.scanNonBreakingSpaces(),e>=0&&this.trigger("warning",{code:"W125",line:this.line,character:e+1}),this.input=this.input.replace(/\t/g,o.tab),e=this.scanUnsafeChars(),e>=0&&this.trigger("warning",{code:"W100",line:this.line,character:e});if(!this.ignoringLinterErrors&&o.option.maxlen&&o.option.maxlen=0;--t){var n=a[t]["(labels)"];if(n[e])return n}}function x(e){for(var t=a.length-1;t>=0;t--){var n=a[t];if(n["(usages)"][e])return n["(usages)"][e];if(n===l)break}return!1}function T(t,n){if(e.option.shadow!=="outer")return;var r=l["(type)"]==="global",i=u["(type)"]==="functionparams",s=!r;for(var o=0;o1?a[a.length-2]:null,n=u===l,i=u["(type)"]==="functionparams",f=u["(type)"]==="functionouter",p,d,g=u["(usages)"],y=u["(labels)"],E=Object.keys(g);g.__proto__&&E.indexOf("__proto__")===-1&&E.push("__proto__");for(p=0;p=0;s--){var o=a[s];if(o["(labels)"][e]&&(!n||o["(labels)"][e]["(blockscoped)"]))return o["(labels)"][e]["(type)"];var u=r?a[s-1]:o;if(u&&u["(type)"]==="functionparams")return null}return null},hasBreakLabel:function(e){for(var t=a.length-1;t>=0;t--){var n=a[t];if(n["(breakLabels)"][e])return!0;if(n["(type)"]==="functionparams")return!1}return!1},has:function(e,t){return Boolean(this.labeltype(e,t))},add:function(e,t,n,r){u["(labels)"][e]={"(type)":t,"(token)":n,"(blockscoped)":!1,"(function)":l,"(unused)":r}}},block:{isGlobal:function(){return u["(type)"]==="global"},use:function(t,n){var r=l["(parent)"];r&&r["(labels)"][t]&&r["(labels)"][t]["(type)"]==="param"&&(C.funct.has(t,{excludeParams:!0,onlyBlockscoped:!0})||(r["(labels)"][t]["(unused)"]=!1)),n&&(e.ignored.W117||e.option.undef===!1)&&(n.ignoreUndef=!0),g(t),n&&(n["(function)"]=l,u["(usages)"][t]["(tokens)"].push(n))},reassign:function(e,t){this.modify(e,t),u["(usages)"][e]["(reassigned)"].push(t)},modify:function(e,t){g(e),u["(usages)"][e]["(modified)"].push(t)},add:function(e,t,n,r){u["(labels)"][e]={"(type)":t,"(token)":n,"(blockscoped)":!0,"(unused)":r}},addBreakLabel:function(t,n){var r=n.token;C.funct.hasBreakLabel(t)?v("E011",r,t):e.option.shadow==="outer"&&(C.funct.has(t)?v("W004",r,t):T(t,r)),u["(breakLabels)"][t]=r}}};return C};t.exports=o},{"../lodash":"/node_modules/jshint/lodash.js",events:"/node_modules/browserify/node_modules/events/events.js"}],"/node_modules/jshint/src/state.js":[function(e,t,n){"use strict";var r=e("./name-stack.js"),i={syntax:{},isStrict:function(){return this.directive["use strict"]||this.inClassBody||this.option.module||this.option.strict==="implied"},inMoz:function(){return this.option.moz},inES6:function(){return this.option.moz||this.option.esversion>=6},inES5:function(e){return e?(!this.option.esversion||this.option.esversion===5)&&!this.option.moz:!this.option.esversion||this.option.esversion>=5||this.option.moz},reset:function(){this.tokens={prev:null,next:null,curr:null},this.option={},this.funct=null,this.ignored={},this.directive={},this.jsonMode=!1,this.jsonWarnings=[],this.lines=[],this.tab="",this.cache={},this.ignoredLines={},this.forinifcheckneeded=!1,this.nameStack=new r,this.inClassBody=!1}};n.state=i},{"./name-stack.js":"/node_modules/jshint/src/name-stack.js"}],"/node_modules/jshint/src/style.js":[function(e,t,n){"use strict";n.register=function(e){e.on("Identifier",function(n){if(e.getOption("proto"))return;n.name==="__proto__"&&e.warn("W103",{line:n.line,"char":n.char,data:[n.name,"6"]})}),e.on("Identifier",function(n){if(e.getOption("iterator"))return;n.name==="__iterator__"&&e.warn("W103",{line:n.line,"char":n.char,data:[n.name]})}),e.on("Identifier",function(n){if(!e.getOption("camelcase"))return;n.name.replace(/^_+|_+$/g,"").indexOf("_")>-1&&!n.name.match(/^[A-Z0-9_]*$/)&&e.warn("W106",{line:n.line,"char":n.from,data:[n.name]})}),e.on("String",function(n){var r=e.getOption("quotmark"),i;if(!r)return;r==="single"&&n.quote!=="'"&&(i="W109"),r==="double"&&n.quote!=='"'&&(i="W108"),r===!0&&(e.getCache("quotmark")||e.setCache("quotmark",n.quote),e.getCache("quotmark")!==n.quote&&(i="W110")),i&&e.warn(i,{line:n.line,"char":n.char})}),e.on("Number",function(n){n.value.charAt(0)==="."&&e.warn("W008",{line:n.line,"char":n.char,data:[n.value]}),n.value.substr(n.value.length-1)==="."&&e.warn("W047",{line:n.line,"char":n.char,data:[n.value]}),/^00+/.test(n.value)&&e.warn("W046",{line:n.line,"char":n.char,data:[n.value]})}),e.on("String",function(n){var r=/^(?:javascript|jscript|ecmascript|vbscript|livescript)\s*:/i;if(e.getOption("scripturl"))return;r.test(n.value)&&e.warn("W107",{line:n.line,"char":n.char})})}},{}],"/node_modules/jshint/src/vars.js":[function(e,t,n){"use strict";n.reservedVars={arguments:!1,NaN:!1},n.ecmaIdentifiers={3:{Array:!1,Boolean:!1,Date:!1,decodeURI:!1,decodeURIComponent:!1,encodeURI:!1,encodeURIComponent:!1,Error:!1,eval:!1,EvalError:!1,Function:!1,hasOwnProperty:!1,isFinite:!1,isNaN:!1,Math:!1,Number:!1,Object:!1,parseInt:!1,parseFloat:!1,RangeError:!1,ReferenceError:!1,RegExp:!1,String:!1,SyntaxError:!1,TypeError:!1,URIError:!1},5:{JSON:!1},6:{Map:!1,Promise:!1,Proxy:!1,Reflect:!1,Set:!1,Symbol:!1,WeakMap:!1,WeakSet:!1}},n.browser={Audio:!1,Blob:!1,addEventListener:!1,applicationCache:!1,atob:!1,blur:!1,btoa:!1,cancelAnimationFrame:!1,CanvasGradient:!1,CanvasPattern:!1,CanvasRenderingContext2D:!1,CSS:!1,clearInterval:!1,clearTimeout:!1,close:!1,closed:!1,Comment:!1,CustomEvent:!1,DOMParser:!1,defaultStatus:!1,Document:!1,document:!1,DocumentFragment:!1,Element:!1,ElementTimeControl:!1,Event:!1,event:!1,fetch:!1,FileReader:!1,FormData:!1,focus:!1,frames:!1,getComputedStyle:!1,HTMLElement:!1,HTMLAnchorElement:!1,HTMLBaseElement:!1,HTMLBlockquoteElement:!1,HTMLBodyElement:!1,HTMLBRElement:!1,HTMLButtonElement:!1,HTMLCanvasElement:!1,HTMLCollection:!1,HTMLDirectoryElement:!1,HTMLDivElement:!1,HTMLDListElement:!1,HTMLFieldSetElement:!1,HTMLFontElement:!1,HTMLFormElement:!1,HTMLFrameElement:!1,HTMLFrameSetElement:!1,HTMLHeadElement:!1,HTMLHeadingElement:!1,HTMLHRElement:!1,HTMLHtmlElement:!1,HTMLIFrameElement:!1,HTMLImageElement:!1,HTMLInputElement:!1,HTMLIsIndexElement:!1,HTMLLabelElement:!1,HTMLLayerElement:!1,HTMLLegendElement:!1,HTMLLIElement:!1,HTMLLinkElement:!1,HTMLMapElement:!1,HTMLMenuElement:!1,HTMLMetaElement:!1,HTMLModElement:!1,HTMLObjectElement:!1,HTMLOListElement:!1,HTMLOptGroupElement:!1,HTMLOptionElement:!1,HTMLParagraphElement:!1,HTMLParamElement:!1,HTMLPreElement:!1,HTMLQuoteElement:!1,HTMLScriptElement:!1,HTMLSelectElement:!1,HTMLStyleElement:!1,HTMLTableCaptionElement:!1,HTMLTableCellElement:!1,HTMLTableColElement:!1,HTMLTableElement:!1,HTMLTableRowElement:!1,HTMLTableSectionElement:!1,HTMLTemplateElement:!1,HTMLTextAreaElement:!1,HTMLTitleElement:!1,HTMLUListElement:!1,HTMLVideoElement:!1,history:!1,Image:!1,Intl:!1,length:!1,localStorage:!1,location:!1,matchMedia:!1,MessageChannel:!1,MessageEvent:!1,MessagePort:!1,MouseEvent:!1,moveBy:!1,moveTo:!1,MutationObserver:!1,name:!1,Node:!1,NodeFilter:!1,NodeList:!1,Notification:!1,navigator:!1,onbeforeunload:!0,onblur:!0,onerror:!0,onfocus:!0,onload:!0,onresize:!0,onunload:!0,open:!1,openDatabase:!1,opener:!1,Option:!1,parent:!1,performance:!1,print:!1,Range:!1,requestAnimationFrame:!1,removeEventListener:!1,resizeBy:!1,resizeTo:!1,screen:!1,scroll:!1,scrollBy:!1,scrollTo:!1,sessionStorage:!1,setInterval:!1,setTimeout:!1,SharedWorker:!1,status:!1,SVGAElement:!1,SVGAltGlyphDefElement:!1,SVGAltGlyphElement:!1,SVGAltGlyphItemElement:!1,SVGAngle:!1,SVGAnimateColorElement:!1,SVGAnimateElement:!1,SVGAnimateMotionElement:!1,SVGAnimateTransformElement:!1,SVGAnimatedAngle:!1,SVGAnimatedBoolean:!1,SVGAnimatedEnumeration:!1,SVGAnimatedInteger:!1,SVGAnimatedLength:!1,SVGAnimatedLengthList:!1,SVGAnimatedNumber:!1,SVGAnimatedNumberList:!1,SVGAnimatedPathData:!1,SVGAnimatedPoints:!1,SVGAnimatedPreserveAspectRatio:!1,SVGAnimatedRect:!1,SVGAnimatedString:!1,SVGAnimatedTransformList:!1,SVGAnimationElement:!1,SVGCSSRule:!1,SVGCircleElement:!1,SVGClipPathElement:!1,SVGColor:!1,SVGColorProfileElement:!1,SVGColorProfileRule:!1,SVGComponentTransferFunctionElement:!1,SVGCursorElement:!1,SVGDefsElement:!1,SVGDescElement:!1,SVGDocument:!1,SVGElement:!1,SVGElementInstance:!1,SVGElementInstanceList:!1,SVGEllipseElement:!1,SVGExternalResourcesRequired:!1,SVGFEBlendElement:!1,SVGFEColorMatrixElement:!1,SVGFEComponentTransferElement:!1,SVGFECompositeElement:!1,SVGFEConvolveMatrixElement:!1,SVGFEDiffuseLightingElement:!1,SVGFEDisplacementMapElement:!1,SVGFEDistantLightElement:!1,SVGFEFloodElement:!1,SVGFEFuncAElement:!1,SVGFEFuncBElement:!1,SVGFEFuncGElement:!1,SVGFEFuncRElement:!1,SVGFEGaussianBlurElement:!1,SVGFEImageElement:!1,SVGFEMergeElement:!1,SVGFEMergeNodeElement:!1,SVGFEMorphologyElement:!1,SVGFEOffsetElement:!1,SVGFEPointLightElement:!1,SVGFESpecularLightingElement:!1,SVGFESpotLightElement:!1,SVGFETileElement:!1,SVGFETurbulenceElement:!1,SVGFilterElement:!1,SVGFilterPrimitiveStandardAttributes:!1,SVGFitToViewBox:!1,SVGFontElement:!1,SVGFontFaceElement:!1,SVGFontFaceFormatElement:!1,SVGFontFaceNameElement:!1,SVGFontFaceSrcElement:!1,SVGFontFaceUriElement:!1,SVGForeignObjectElement:!1,SVGGElement:!1,SVGGlyphElement:!1,SVGGlyphRefElement:!1,SVGGradientElement:!1,SVGHKernElement:!1,SVGICCColor:!1,SVGImageElement:!1,SVGLangSpace:!1,SVGLength:!1,SVGLengthList:!1,SVGLineElement:!1,SVGLinearGradientElement:!1,SVGLocatable:!1,SVGMPathElement:!1,SVGMarkerElement:!1,SVGMaskElement:!1,SVGMatrix:!1,SVGMetadataElement:!1,SVGMissingGlyphElement:!1,SVGNumber:!1,SVGNumberList:!1,SVGPaint:!1,SVGPathElement:!1,SVGPathSeg:!1,SVGPathSegArcAbs:!1,SVGPathSegArcRel:!1,SVGPathSegClosePath:!1,SVGPathSegCurvetoCubicAbs:!1,SVGPathSegCurvetoCubicRel:!1,SVGPathSegCurvetoCubicSmoothAbs:!1,SVGPathSegCurvetoCubicSmoothRel:!1,SVGPathSegCurvetoQuadraticAbs:!1,SVGPathSegCurvetoQuadraticRel:!1,SVGPathSegCurvetoQuadraticSmoothAbs:!1,SVGPathSegCurvetoQuadraticSmoothRel:!1,SVGPathSegLinetoAbs:!1,SVGPathSegLinetoHorizontalAbs:!1,SVGPathSegLinetoHorizontalRel:!1,SVGPathSegLinetoRel:!1,SVGPathSegLinetoVerticalAbs:!1,SVGPathSegLinetoVerticalRel:!1,SVGPathSegList:!1,SVGPathSegMovetoAbs:!1,SVGPathSegMovetoRel:!1,SVGPatternElement:!1,SVGPoint:!1,SVGPointList:!1,SVGPolygonElement:!1,SVGPolylineElement:!1,SVGPreserveAspectRatio:!1,SVGRadialGradientElement:!1,SVGRect:!1,SVGRectElement:!1,SVGRenderingIntent:!1,SVGSVGElement:!1,SVGScriptElement:!1,SVGSetElement:!1,SVGStopElement:!1,SVGStringList:!1,SVGStylable:!1,SVGStyleElement:!1,SVGSwitchElement:!1,SVGSymbolElement:!1,SVGTRefElement:!1,SVGTSpanElement:!1,SVGTests:!1,SVGTextContentElement:!1,SVGTextElement:!1,SVGTextPathElement:!1,SVGTextPositioningElement:!1,SVGTitleElement:!1,SVGTransform:!1,SVGTransformList:!1,SVGTransformable:!1,SVGURIReference:!1,SVGUnitTypes:!1,SVGUseElement:!1,SVGVKernElement:!1,SVGViewElement:!1,SVGViewSpec:!1,SVGZoomAndPan:!1,Text:!1,TextDecoder:!1,TextEncoder:!1,TimeEvent:!1,top:!1,URL:!1,WebGLActiveInfo:!1,WebGLBuffer:!1,WebGLContextEvent:!1,WebGLFramebuffer:!1,WebGLProgram:!1,WebGLRenderbuffer:!1,WebGLRenderingContext:!1,WebGLShader:!1,WebGLShaderPrecisionFormat:!1,WebGLTexture:!1,WebGLUniformLocation:!1,WebSocket:!1,window:!1,Window:!1,Worker:!1,XDomainRequest:!1,XMLHttpRequest:!1,XMLSerializer:!1,XPathEvaluator:!1,XPathException:!1,XPathExpression:!1,XPathNamespace:!1,XPathNSResolver:!1,XPathResult:!1},n.devel={alert:!1,confirm:!1,console:!1,Debug:!1,opera:!1,prompt:!1},n.worker={importScripts:!0,postMessage:!0,self:!0,FileReaderSync:!0},n.nonstandard={escape:!1,unescape:!1},n.couch={require:!1,respond:!1,getRow:!1,emit:!1,send:!1,start:!1,sum:!1,log:!1,exports:!1,module:!1,provides:!1},n.node={__filename:!1,__dirname:!1,GLOBAL:!1,global:!1,module:!1,require:!1,Buffer:!0,console:!0,exports:!0,process:!0,setTimeout:!0,clearTimeout:!0,setInterval:!0,clearInterval:!0,setImmediate:!0,clearImmediate:!0},n.browserify={__filename:!1,__dirname:!1,global:!1,module:!1,require:!1,Buffer:!0,exports:!0,process:!0},n.phantom={phantom:!0,require:!0,WebPage:!0,console:!0,exports:!0},n.qunit={asyncTest:!1,deepEqual:!1,equal:!1,expect:!1,module:!1,notDeepEqual:!1,notEqual:!1,notPropEqual:!1,notStrictEqual:!1,ok:!1,propEqual:!1,QUnit:!1,raises:!1,start:!1,stop:!1,strictEqual:!1,test:!1,"throws":!1},n.rhino={defineClass:!1,deserialize:!1,gc:!1,help:!1,importClass:!1,importPackage:!1,java:!1,load:!1,loadClass:!1,Packages:!1,print:!1,quit:!1,readFile:!1,readUrl:!1,runCommand:!1,seal:!1,serialize:!1,spawn:!1,sync:!1,toint32:!1,version:!1},n.shelljs={target:!1,echo:!1,exit:!1,cd:!1,pwd:!1,ls:!1,find:!1,cp:!1,rm:!1,mv:!1,mkdir:!1,test:!1,cat:!1,sed:!1,grep:!1,which:!1,dirs:!1,pushd:!1,popd:!1,env:!1,exec:!1,chmod:!1,config:!1,error:!1,tempdir:!1},n.typed={ArrayBuffer:!1,ArrayBufferView:!1,DataView:!1,Float32Array:!1,Float64Array:!1,Int16Array:!1,Int32Array:!1,Int8Array:!1,Uint16Array:!1,Uint32Array:!1,Uint8Array:!1,Uint8ClampedArray:!1},n.wsh={ActiveXObject:!0,Enumerator:!0,GetObject:!0,ScriptEngine:!0,ScriptEngineBuildVersion:!0,ScriptEngineMajorVersion:!0,ScriptEngineMinorVersion:!0,VBArray:!0,WSH:!0,WScript:!0,XDomainRequest:!0},n.dojo={dojo:!1,dijit:!1,dojox:!1,define:!1,require:!1},n.jquery={$:!1,jQuery:!1},n.mootools={$:!1,$$:!1,Asset:!1,Browser:!1,Chain:!1,Class:!1,Color:!1,Cookie:!1,Core:!1,Document:!1,DomReady:!1,DOMEvent:!1,DOMReady:!1,Drag:!1,Element:!1,Elements:!1,Event:!1,Events:!1,Fx:!1,Group:!1,Hash:!1,HtmlTable:!1,IFrame:!1,IframeShim:!1,InputValidator:!1,instanceOf:!1,Keyboard:!1,Locale:!1,Mask:!1,MooTools:!1,Native:!1,Options:!1,OverText:!1,Request:!1,Scroller:!1,Slick:!1,Slider:!1,Sortables:!1,Spinner:!1,Swiff:!1,Tips:!1,Type:!1,typeOf:!1,URI:!1,Window:!1},n.prototypejs={$:!1,$$:!1,$A:!1,$F:!1,$H:!1,$R:!1,$break:!1,$continue:!1,$w:!1,Abstract:!1,Ajax:!1,Class:!1,Enumerable:!1,Element:!1,Event:!1,Field:!1,Form:!1,Hash:!1,Insertion:!1,ObjectRange:!1,PeriodicalExecuter:!1,Position:!1,Prototype:!1,Selector:!1,Template:!1,Toggle:!1,Try:!1,Autocompleter:!1,Builder:!1,Control:!1,Draggable:!1,Draggables:!1,Droppables:!1,Effect:!1,Sortable:!1,SortableObserver:!1,Sound:!1,Scriptaculous:!1},n.yui={YUI:!1,Y:!1,YUI_config:!1},n.mocha={mocha:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,context:!1,xcontext:!1,before:!1,after:!1,beforeEach:!1,afterEach:!1,suite:!1,test:!1,setup:!1,teardown:!1,suiteSetup:!1,suiteTeardown:!1},n.jasmine={jasmine:!1,describe:!1,xdescribe:!1,it:!1,xit:!1,beforeEach:!1,afterEach:!1,setFixtures:!1,loadFixtures:!1,spyOn:!1,expect:!1,runs:!1,waitsFor:!1,waits:!1,beforeAll:!1,afterAll:!1,fail:!1,fdescribe:!1,fit:!1,pending:!1}},{}]},{},["/node_modules/jshint/src/jshint.js"])}),ace.define("ace/mode/javascript_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/javascript/jshint"],function(require,exports,module){"use strict";function startRegex(e){return RegExp("^("+e.join("|")+")")}var oop=require("../lib/oop"),Mirror=require("../worker/mirror").Mirror,lint=require("./javascript/jshint").JSHINT,disabledWarningsRe=startRegex(["Bad for in variable '(.+)'.",'Missing "use strict"']),errorsRe=startRegex(["Unexpected","Expected ","Confusing (plus|minus)","\\{a\\} unterminated regular expression","Unclosed ","Unmatched ","Unbegun comment","Bad invocation","Missing space after","Missing operator at"]),infoRe=startRegex(["Expected an assignment","Bad escapement of EOL","Unexpected comma","Unexpected space","Missing radix parameter.","A leading decimal point can","\\['{a}'\\] is better written in dot notation.","'{a}' used out of scope"]),JavaScriptWorker=exports.JavaScriptWorker=function(e){Mirror.call(this,e),this.setTimeout(500),this.setOptions()};oop.inherits(JavaScriptWorker,Mirror),function(){this.setOptions=function(e){this.options=e||{esnext:!0,moz:!0,devel:!0,browser:!0,node:!0,laxcomma:!0,laxbreak:!0,lastsemic:!0,onevar:!1,passfail:!1,maxerr:100,expr:!0,multistr:!0,globalstrict:!0},this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.changeOptions=function(e){oop.mixin(this.options,e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.isValidJS=function(str){try{eval("throw 0;"+str)}catch(e){if(e===0)return!0}return!1},this.onUpdate=function(){var e=this.doc.getValue();e=e.replace(/^#!.*\n/,"\n");if(!e)return this.sender.emit("annotate",[]);var t=[],n=this.isValidJS(e)?"warning":"error";lint(e,this.options,this.options.globals);var r=lint.errors,i=!1;for(var s=0;s0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n false); +self.onmessage = async ({ data }) => { + let phase = 'definition execution'; + try { + const started = performance.now(); + let source = data.source; + if (data.language === 'typescript') { + phase = 'TypeScript'; + importScripts('./typescript-check.js'); + const result = compileTypeScript(source, data.syntaxOnly); + if (result.diagnostics.length) { self.postMessage({ diagnostics: result.diagnostics, error: result.diagnostics.map(item => `Line ${item.line}, column ${item.column}: ${item.message}`).join('\n'), phase, code: 'TYPESCRIPT_ERROR' }); return; } + source = result.javascript.replace(/^import (\w+) from ["']pdfmake\/build\/pdfmake(?:\.js)?["'];?$/gm, 'const $1 = self.pdfMake;'); + } + if (data.checkOnly) { self.postMessage({ checked: true }); return; } + phase = 'definition execution'; + const dd = new Function('"use strict";\n' + source + '\n;return typeof dd !== "undefined" ? dd : typeof docDefinition !== "undefined" ? docDefinition : undefined;\n//# sourceURL=pdfmake-definition.js')(); + if (!dd || typeof dd !== 'object' || Array.isArray(dd)) throw new Error('Define a document object in a variable named dd.'); + if (typeof pdfMake.validateDocument === 'function') { + phase = 'validation'; + const result = pdfMake.validateDocument(dd); + if (!result.valid) { + self.postMessage({ error: result.errors.map(item => `${item.path}: ${item.message}`).join('\n'), code: 'PDFMAKE_VALIDATION_ERROR', phase, documentDiagnostics: result.errors }); + return; + } + } + phase = 'render'; + const bytes = await pdfMake.createPdf(dd).getBuffer(); + // Copy only the used range before transferring; pooled Buffer backing stores may be larger. + const buffer = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength); + self.postMessage({ buffer, elapsed: performance.now() - started, password: dd.userPassword || undefined }, [buffer]); + } catch (error) { + const match = data.language === 'typescript' ? undefined : error.stack?.match(/pdfmake-definition\.js:(\d+):(\d+)/); + const line = match ? Math.max(1, Number(match[1]) - 3) : undefined; + const column = match ? Number(match[2]) : undefined; + const position = match ? data.source.split('\n').slice(0, line - 1).reduce((total, text) => total + text.length + 1, 0) + column - 1 : undefined; + self.postMessage({ error: `${error.name || 'Error'}${line ? ` at line ${line}, column ${column}` : ''}: ${error.message || String(error)}`, stack: error.stack || '', code: error.code || (phase === 'render' ? 'PDFMAKE_RENDER_ERROR' : 'JAVASCRIPT_RUNTIME_ERROR'), path: error.path, phase: error.phase || phase, position }); + } +}; diff --git a/dev-playground/server.js b/dev-playground/server.js index 0a3dbea6b..b6533cb43 100644 --- a/dev-playground/server.js +++ b/dev-playground/server.js @@ -1,48 +1,36 @@ -var http = require('http'); -var express = require('express'); -var path = require('path'); -var bodyParser = require('body-parser'); - -var pdfmake = require('../js/index'); - -var app = express(); - -app.use(express.static(path.join(__dirname, 'public'))); -app.use(bodyParser.json({ limit: '50mb' })); -app.use(bodyParser.urlencoded({ extended: false })); - -function createPdfBinary(docDefinition) { - var fonts = { - Roboto: { - normal: path.join(__dirname, '..', 'examples', '/fonts/Roboto-Regular.ttf'), - bold: path.join(__dirname, '..', 'examples', '/fonts/Roboto-Medium.ttf'), - italics: path.join(__dirname, '..', 'examples', '/fonts/Roboto-Italic.ttf'), - bolditalics: path.join(__dirname, '..', 'examples', '/fonts/Roboto-MediumItalic.ttf') - } - }; - - pdfmake.setFonts(fonts); - - var pdf = pdfmake.createPdf(docDefinition); - return pdf.getDataUrl(); +// Static localhost server only. Edited definitions never execute in this process. +const http = require('node:http'); +const fs = require('node:fs/promises'); +const path = require('node:path'); +const root = path.join(__dirname, 'public'); +const types = { '.html': 'text/html', '.js': 'text/javascript', '.mjs': 'text/javascript', '.css': 'text/css', '.json': 'application/json' }; + +function createServer() { + const docsBase = (process.env.PDFMAKE_DOCS_URL || 'https://pdfmake.github.io/docs/0.3/').replace(/\/?$/, '/'); + return http.createServer(async (req, res) => { + if (!['GET', 'HEAD'].includes(req.method)) { res.writeHead(405).end(); return; } + try { + const url = new URL(req.url, 'http://localhost'); + if (url.pathname === '/') { res.writeHead(302, { Location: docsBase }).end(); return; } + if (!url.pathname.startsWith('/playground/')) { + res.writeHead(302, { Location: new URL('.' + url.pathname, docsBase).href }).end(); return; + } + let file = path.resolve(root, '.' + decodeURIComponent(url.pathname.slice('/playground'.length))); + if (file !== root && !file.startsWith(root + path.sep)) { res.writeHead(403).end(); return; } + if ((await fs.stat(file)).isDirectory()) file = path.join(file, 'index.html'); + const bytes = await fs.readFile(file); + res.setHeader('Content-Type', (types[path.extname(file)] || 'application/octet-stream') + '; charset=utf-8'); + res.setHeader('X-Content-Type-Options', 'nosniff'); + if (path.basename(file) === 'worker.js') res.setHeader('Content-Security-Policy', "default-src 'none'; script-src 'self' 'unsafe-eval'; connect-src 'none'"); + res.writeHead(200).end(req.method === 'HEAD' ? undefined : bytes); + } catch { res.writeHead(404).end('Not found'); } + }); } - -app.post('/pdf', function (req, res) { - const dd = new Function(req.body.content + '; return dd;')(); - - createPdfBinary(dd).then(function (binary) { - res.contentType('application/pdf'); - res.send(binary); - }, function (error) { - res.send('ERROR:' + error); +module.exports = { createServer }; +if (require.main === module) { + const server = createServer(); + server.listen(Number(process.env.PORT || 1234), '127.0.0.1', () => { + console.log(`Playground: http://127.0.0.1:${server.address().port}/playground/`); }); - -}); - -var server = http.createServer(app); -var port = process.env.PORT || 1234; -server.listen(port); - -console.log('http server listening on port %d', port); -console.log('dev-playground is available at http://localhost:%d', port); +} diff --git a/fonts/Roboto.d.ts b/fonts/Roboto.d.ts new file mode 100644 index 000000000..1d26e61b0 --- /dev/null +++ b/fonts/Roboto.d.ts @@ -0,0 +1,3 @@ +import type { TFontDictionary } from '../types/interfaces'; +declare const fonts: TFontDictionary; +export = fonts; diff --git a/interfaces.d.ts b/interfaces.d.ts new file mode 100644 index 000000000..095935ab2 --- /dev/null +++ b/interfaces.d.ts @@ -0,0 +1 @@ +export * from './types/interfaces'; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..488dff17e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,8248 @@ +{ + "name": "pdfmake", + "version": "0.3.12", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "pdfmake", + "version": "0.3.12", + "license": "MIT", + "dependencies": { + "@types/pdfkit": "^0.17.6", + "linebreak": "^1.1.0", + "pdfkit": "^0.20.2", + "xmldoc": "^2.0.3" + }, + "devDependencies": { + "@babel/core": "^7.29.7", + "@babel/preset-env": "^7.29.7", + "@eslint/js": "^10.0.1", + "babel-loader": "^10.1.1", + "brfs": "^2.0.2", + "buffer": "^6.0.3", + "core-js": "^3.49.0", + "eslint": "^10.4.1", + "eslint-plugin-jsdoc": "^62.9.0", + "expose-loader": "^5.0.1", + "file-saver": "^2.0.5", + "globals": "^17.6.0", + "mocha": "^12.0.3", + "npm-run-all": "^4.1.5", + "process": "^0.11.10", + "rewire": "^9.0.1", + "sinon": "^22.0.0", + "source-map-loader": "^5.0.0", + "svg-to-pdfkit": "git+https://github.com/alafr/SVG-to-PDFKit.git#b091ebd4e7b7d2310eb1003511cd5de480f7e0e1", + "terser-webpack-plugin": "^5.6.1", + "typescript": "~5.9.3", + "webpack": "^5.107.2", + "webpack-cli": "^7.0.3" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.29.7.tgz", + "integrity": "sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.7.tgz", + "integrity": "sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/traverse": "^7.29.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.29.10.tgz", + "integrity": "sha512-/YY9soQuWa8TURtHXHT+GbklpbAA+dZErxFGHIr6qgDg96xuGWrTAs1+MfjgVJPF0YLQsOVsOYs8lhgsPbOinQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "regexpu-core": "^6.5.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.29.7.tgz", + "integrity": "sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.29.7.tgz", + "integrity": "sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.29.7.tgz", + "integrity": "sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-wrap-function": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.29.7.tgz", + "integrity": "sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.29.7", + "@babel/helper-optimise-call-expression": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.29.7.tgz", + "integrity": "sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.29.7.tgz", + "integrity": "sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.10.tgz", + "integrity": "sha512-EMCx3AGZ3WfAl6ht7AyQoPm2Lh+BGYEMdc4Q6Hf7uSCDOZFuLq44qNwL+iaim8VlyYhRAo4X43+weadK8ZB4Yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.9.tgz", + "integrity": "sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.29.7.tgz", + "integrity": "sha512-j8SrR0zLZrRsC09DlszEx8FpMiwukKffYXMK0d5LmOglO7vGG6sz/BR/20yHqWH+Lnn31JTt2PE3hIWNgM2J6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.29.7.tgz", + "integrity": "sha512-r8j8escF+U2FUHo0KOhPUdMzUO+jp9fInva6+ACVAF3Y97Ev+5iNZwiqTghmzNeWwDkOPlYuTcfb1vDaoZKmAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.29.7.tgz", + "integrity": "sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.7.tgz", + "integrity": "sha512-oBNVCvnO5tND+xSopWvV8WNGfpTfgP4Zr/YXXSj8zfmcPktp5Ku/aZlsIowgSD4fjmgHn6sGmB9APVsU5zOdhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.29.7.tgz", + "integrity": "sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.29.7.tgz", + "integrity": "sha512-pn6QacGLgvCcwc+syUhKE/qSjV2D1IHDB84RNxWYSt1mW3K/SCtjinZ2p0cETJxAWBjPy3K/1lHwG5BjjPxNlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.29.7.tgz", + "integrity": "sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.29.7.tgz", + "integrity": "sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.29.7.tgz", + "integrity": "sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.7.tgz", + "integrity": "sha512-d98gXZkgswvkyohMBABkhm3GeXhYj8psWfwQ2C7gtfrKGTykQa/iOIi+JJhwMjPlZ6Vm2XN+DCf3Es1EoG4ZLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.29.7.tgz", + "integrity": "sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-remap-async-to-generator": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.29.7.tgz", + "integrity": "sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.29.7.tgz", + "integrity": "sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.29.7.tgz", + "integrity": "sha512-GtcpjFvanPfzNQi3eTitsCqtRRmmqzpy/A+yhTR1HaZo1Ly3EA8ZXxlPyHdR8/IuRMYc3E4wdGBewB2QKQjAaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.29.7.tgz", + "integrity": "sha512-kibJgmEdX2iMwsHY2tSZNDgj8PwIlCQz7FK9KuGKO8zsuoUwSEhoNnNVp/emKWrbY4HeO6kkXfdMqRKKKXBm2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.29.7.tgz", + "integrity": "sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.29.7.tgz", + "integrity": "sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/template": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.29.7.tgz", + "integrity": "sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.29.7.tgz", + "integrity": "sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.29.7.tgz", + "integrity": "sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-2wiIyo2BjtgU7HufSeDnL9L2O7zr8jmhFKuSr65VpRkUiRKRNpb0mdlk56+XPPKoIrfHqzbMuglDvZun0RISsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.29.7.tgz", + "integrity": "sha512-giOlEm/EFjfjr+te9NsdjkUo2v4f8rS/SXPumRVHAtbNcyNlvtREkU1dZzaIDclNpnaVhlCqRdFKhJBjBikzLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.29.7.tgz", + "integrity": "sha512-Rstj7coNz8sE+7Ju7ihpHLI564lsK5pUpNNlvptCIC/16E/S5hbl6n3kESPKdNRmqEWlpn5xpS5Q2dvXBsySLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.29.7.tgz", + "integrity": "sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.29.7.tgz", + "integrity": "sha512-24B2nOy2TeJSMheqwPD4DDQOV/elLSIlKxjZt4i05H5AgdPdWR3n18HnNrcJ+j76WJd9gbwb9jPjNYUy6RautA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.29.7.tgz", + "integrity": "sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.29.7.tgz", + "integrity": "sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.29.7.tgz", + "integrity": "sha512-RRnE2+eon1rJAq8MnoF1b5kTpY1vU88twHcvcKMrsqP/jxIRqDVs9iJB5fqPuqyeFAW0wJo4MlUIPpQCq/aRsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.29.7.tgz", + "integrity": "sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.29.7.tgz", + "integrity": "sha512-A0H91hh6W8MFRkp5TqJmMr39jzGD1A1E1Ysiv2O06Sfbhkapm+XyIzxWCEh5kqwOZ1/8QZ0dY3SeQ7XBqfJd5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.29.7.tgz", + "integrity": "sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.29.7.tgz", + "integrity": "sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.29.7.tgz", + "integrity": "sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", + "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.29.7.tgz", + "integrity": "sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.7.tgz", + "integrity": "sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.29.7.tgz", + "integrity": "sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.29.7.tgz", + "integrity": "sha512-idmp1dFaekP9GbcMvG24Kvw2BfhFZjHnNJCkV4WuIY4PskJzwI3f1N5OdgYke38T7rftO6ERulFRn2cFeZwRkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.29.7.tgz", + "integrity": "sha512-zR7fv/z14OjgHl4AgRtkDBvBMhIzCxqV/qN/2BCRC7LjFwvuzjYe7gDWxC4Wl/SNsLM6SE1IWvRPYMgSJaUvNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.29.7.tgz", + "integrity": "sha512-Ld98jn4c0smUywL57m7SgsHq3OpThOa6LqZJif3G6jYOovPleoFhVrBJ1WegRApSFB2wu4+RelAj9AC9G08Z4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.29.7.tgz", + "integrity": "sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-replace-supers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.29.7.tgz", + "integrity": "sha512-sLsyndxK2VwX6yNUOakMb7Sh553ZTe/vVM1XJ+9Z5aW1ytsc8xOIwmyk05NNjN60vkc5/KqoTH6hB4V41LJhng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.29.7.tgz", + "integrity": "sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.29.7.tgz", + "integrity": "sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.29.7.tgz", + "integrity": "sha512-/6Rz4DK1ETDEM/bWHsPHcaEe7ZaT1EqSXjtSP/L0DijOYuaUhiRiOKcwpZ8P7zR4xXEHc2ITdiCgBm9Tpyv9ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.29.7.tgz", + "integrity": "sha512-+BNo06dnrzdNNqCm1X6YUaVv0DKk8Q+JYcoZfOkLhYWNCXzlwTSRq8zGWayT1csjcpNXV9CQTBRRbmTLZac5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.29.7", + "@babel/helper-create-class-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.29.7.tgz", + "integrity": "sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", + "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.29.7.tgz", + "integrity": "sha512-mB5Fs0VWrJ42ZCmc8114v60qetdaUVNkj9PmSZRmanCZM3S9hm0CFRLjRmYIsuXav14l2jvZ+4T8iiCGnhj3nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.29.7.tgz", + "integrity": "sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.29.7.tgz", + "integrity": "sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz", + "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.29.7.tgz", + "integrity": "sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.29.7.tgz", + "integrity": "sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.29.7.tgz", + "integrity": "sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.29.7.tgz", + "integrity": "sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.29.7.tgz", + "integrity": "sha512-OgZ+zoAJgZLUCunsTRQ5LAjOywDv5zzZ2/hQ5aMw1pGXyY2rtE8/chXYUmu3AlVHKpm10KEdG9aMwbI/K76ZGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.29.7.tgz", + "integrity": "sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.29.7.tgz", + "integrity": "sha512-BLOhLht9DOJwIxlmp91wHvkXv1lguuHS3/FwUO8HL1H0u8s4hR1gASVFyilu9iGtcTRYqjTZmlsFFeQletntEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.7.tgz", + "integrity": "sha512-GYzX36n1nsciIb0uyH0GHwxwtNwPQIcpxSeiVLDtG/B7jB5xXgchnmL1f/jCX5o+pwnaDBtO60ONSJhEBJfxYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-plugin-utils": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.29.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.29.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.29.7", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.29.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.29.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.29.7", + "@babel/plugin-syntax-import-attributes": "^7.29.7", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.29.7", + "@babel/plugin-transform-async-generator-functions": "^7.29.7", + "@babel/plugin-transform-async-to-generator": "^7.29.7", + "@babel/plugin-transform-block-scoped-functions": "^7.29.7", + "@babel/plugin-transform-block-scoping": "^7.29.7", + "@babel/plugin-transform-class-properties": "^7.29.7", + "@babel/plugin-transform-class-static-block": "^7.29.7", + "@babel/plugin-transform-classes": "^7.29.7", + "@babel/plugin-transform-computed-properties": "^7.29.7", + "@babel/plugin-transform-destructuring": "^7.29.7", + "@babel/plugin-transform-dotall-regex": "^7.29.7", + "@babel/plugin-transform-duplicate-keys": "^7.29.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-dynamic-import": "^7.29.7", + "@babel/plugin-transform-explicit-resource-management": "^7.29.7", + "@babel/plugin-transform-exponentiation-operator": "^7.29.7", + "@babel/plugin-transform-export-namespace-from": "^7.29.7", + "@babel/plugin-transform-for-of": "^7.29.7", + "@babel/plugin-transform-function-name": "^7.29.7", + "@babel/plugin-transform-json-strings": "^7.29.7", + "@babel/plugin-transform-literals": "^7.29.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.29.7", + "@babel/plugin-transform-member-expression-literals": "^7.29.7", + "@babel/plugin-transform-modules-amd": "^7.29.7", + "@babel/plugin-transform-modules-commonjs": "^7.29.7", + "@babel/plugin-transform-modules-systemjs": "^7.29.7", + "@babel/plugin-transform-modules-umd": "^7.29.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.7", + "@babel/plugin-transform-new-target": "^7.29.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.29.7", + "@babel/plugin-transform-numeric-separator": "^7.29.7", + "@babel/plugin-transform-object-rest-spread": "^7.29.7", + "@babel/plugin-transform-object-super": "^7.29.7", + "@babel/plugin-transform-optional-catch-binding": "^7.29.7", + "@babel/plugin-transform-optional-chaining": "^7.29.7", + "@babel/plugin-transform-parameters": "^7.29.7", + "@babel/plugin-transform-private-methods": "^7.29.7", + "@babel/plugin-transform-private-property-in-object": "^7.29.7", + "@babel/plugin-transform-property-literals": "^7.29.7", + "@babel/plugin-transform-regenerator": "^7.29.7", + "@babel/plugin-transform-regexp-modifiers": "^7.29.7", + "@babel/plugin-transform-reserved-words": "^7.29.7", + "@babel/plugin-transform-shorthand-properties": "^7.29.7", + "@babel/plugin-transform-spread": "^7.29.7", + "@babel/plugin-transform-sticky-regex": "^7.29.7", + "@babel/plugin-transform-template-literals": "^7.29.7", + "@babel/plugin-transform-typeof-symbol": "^7.29.7", + "@babel/plugin-transform-unicode-escapes": "^7.29.7", + "@babel/plugin-transform-unicode-property-regex": "^7.29.7", + "@babel/plugin-transform-unicode-regex": "^7.29.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.29.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.10.tgz", + "integrity": "sha512-B3lYAs2nkKskbgQ1nfy8Ma9ao9Q1rntTAQHrzzyDuj+TSO+X3le6PfWwqDvodsb+OumE10eMFfuMCTQSQ5iuIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.9", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cacheable/memory": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.2.0.tgz", + "integrity": "sha512-CTLKqLItRCEixEAewD3/j9DB3/o96gpTPD4eJ1v+DGOlxZRZncRQkGYqqnAGCscYd6RNeXfGeiuCphsPtqyIfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/utils": "^2.5.0", + "@keyv/bigmap": "^1.3.1", + "hookified": "^1.15.1", + "keyv": "^5.6.0" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.5.0.tgz", + "integrity": "sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.5.1", + "keyv": "^5.6.0" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-1.1.0.tgz", + "integrity": "sha512-Xc3VhU02wqZ1HvHRJUwL09HkZSTvidqY5Ya0NXBSYOxAp+Ln9dcJr9fySI+CkONzP3PekQo9WdzCv0PGER/mOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.17.0" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.86.0.tgz", + "integrity": "sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.8", + "@typescript-eslint/types": "^8.58.0", + "comment-parser": "1.4.6", + "esquery": "^1.7.0", + "jsdoc-type-pratt-parser": "~7.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@es-joy/resolve.exports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz", + "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz", + "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.7.tgz", + "integrity": "sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.3.2", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.3.tgz", + "integrity": "sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.6.0.tgz", + "integrity": "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@keyv/bigmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.4.0", + "hookified": "^1.15.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.6.0" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@sindresorhus/base62": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", + "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz", + "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-10.0.2.tgz", + "integrity": "sha512-8lVwD1Df1BmzoaOLhMcGGcz/Jyr5QY2KSB75/YK1QgKzoabTeLdIVyhXNZK9ojfSKSdirbXqdbsXXqP9/Ve8+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" + } + }, + "node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.23", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", + "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "26.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.5.tgz", + "integrity": "sha512-uMzsv9stDdofIZBx4UGh4Z9ZgXnGC9seRDscilBcTHAeOFk67MZg/k9bWVfO+bk4qZmG+l52hRnLwUiH2LnJTg==", + "license": "MIT", + "dependencies": { + "undici-types": "~8.9.0" + } + }, + "node_modules/@types/pdfkit": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/pdfkit/-/pdfkit-0.17.6.tgz", + "integrity": "sha512-tIwzxk2uWKp0Cq9JIluQXJid77lYhF52EsIOwhsMF4iWLA6YneoBR1xVKYYdAysHuepUB0OX4tdwMiUDdGKmig==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.72.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.72.0.tgz", + "integrity": "sha512-Adfoy59kxNEjT5E5fnyrp7GpHYuWs8ONbdohu4ez6IU46qDq8LltG90tLmkucZB2uhYL8mqBjtXqGd8yhfjXqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/acorn": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.19.0.tgz", + "integrity": "sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", + "dev": true, + "license": "MIT" + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-loader": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.1.1.tgz", + "integrity": "sha512-JwKSzk2kjIe7mgPK+/lyZ2QAaJcpahNAdM+hgR2HI8D0OJVkdj8Rl6J3kaLYki9pwF7P2iWnD8qVv80Lq1ABtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0 || ^8.0.0-beta.1", + "@rspack/core": "^1.0.0 || ^2.0.0-0", + "webpack": ">=5.61.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.29.tgz", + "integrity": "sha512-YeesxhUmR4h5y5V8KF8iBCqJb8YFrBJ++XBTeGcWIaQOYXGN19JM0FoiOjAhwuDoln8owMgXcWBmgHtYSkky2w==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/brfs": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz", + "integrity": "sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^3.0.2", + "through2": "^2.0.0" + }, + "bin": { + "brfs": "bin/cmd.js" + } + }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.29.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.29.4.tgz", + "integrity": "sha512-2TcbbiwXEq+N0kD36tykpCfyyQigUXmuwNQbnPp4Xk4PX9JOqVIKjJlIDjpH7uY6tmRGoAd+apeT1p60T8wsdA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.11.29", + "caniuse-lite": "^1.0.30001816", + "electron-to-chromium": "^1.5.459", + "node-releases": "^2.0.59", + "update-browserslist-db": "^1.3.4" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cacheable": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.5.0.tgz", + "integrity": "sha512-60cyAOytib/OzBw1JNSoSV/boK1AtHryDIjvVBk7XbN4ugfkM3+Sry7fEjNgPMGgOjuaZPAp8ruZ0Cxafwyq9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cacheable/memory": "^2.2.0", + "@cacheable/utils": "^2.5.0", + "hookified": "^1.15.0", + "keyv": "^5.6.0", + "qified": "^0.10.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001816", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001816.tgz", + "integrity": "sha512-+8Yx7BXCoqk6IF8yTicjfUR6D/ldJzdlsodlEOiOSPmhK844WIgk67/zIQaGAOxNkZyyvBlrRFnLvqKIoqbAFw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/comment-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz", + "integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-js": { + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.51.0.tgz", + "integrity": "sha512-7bDKx/5jm5MxzsXxc93g6Z2+4ZsuT/MddrfRmTDJNAkWsYWHU8EVNEsBiIEWnMAMCHMmRfUEjkuo3jeNBOIHRw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.51.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.51.0.tgz", + "integrity": "sha512-52r6fkXgxv4GLMjmFcMWRx7X9bw071xTTdrDcdyPGRqU2oE+9pCG0bAOMifSBdLw0JRBZKEF0q3B55qPlLuE8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.29.3" + }, + "engines": { + "node": ">=6.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/dash-ast": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", + "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, + "node_modules/diff": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.459", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.459.tgz", + "integrity": "sha512-4SC9HHSFjO/liAhifpdOL5hG9b4BP7/5G3y3UPZVO8trlAXr1CaUEEJL0gWK3kOcYcZrOA5rkwG45Gra/lTIgg==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.26.0.tgz", + "integrity": "sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz", + "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==", + "dev": true, + "license": "MIT", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract-get": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz", + "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "is-callable": "^1.2.7", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.2.tgz", + "integrity": "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz", + "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-abstract-get": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "is-callable": "^1.2.7", + "is-date-object": "^1.1.0", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "node_modules/es6-set": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint": { + "version": "10.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.13.0.tgz", + "integrity": "sha512-UohDjD4zSzEwhf58M3O7vc/ycc8O1I7dNlhtD0WxE8Px8EHNJKtUwzBqrzeGhisRuv2ag4sAYswszCJRgKXYUg==", + "dev": true, + "license": "MIT", + "workspaces": [ + "packages/*" + ], + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.7.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.3", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "11.1.5 || >11.1.6 <12", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "minimatch": "^10.2.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "62.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.9.0.tgz", + "integrity": "sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.86.0", + "@es-joy/resolve.exports": "1.2.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.6", + "debug": "^4.4.3", + "escape-string-regexp": "^4.0.0", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "html-entities": "^2.6.0", + "object-deep-merge": "^2.0.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.4", + "spdx-expression-parse": "^4.0.0", + "to-valid-identifier": "^1.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-scope": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-is-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", + "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/expose-loader": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-5.0.1.tgz", + "integrity": "sha512-5YPZuszN/eWND/B+xuq5nIpb/l5TV1HYmdO6SubYtHv+HenVw9/6bn33Mm5reY8DNid7AVtbARvyUD34edfCtg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz", + "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fflate": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", + "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.5.tgz", + "integrity": "sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^6.1.23" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "6.1.23", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.23.tgz", + "integrity": "sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cacheable": "^2.5.0", + "flatted": "^3.4.2", + "hookified": "^1.15.0" + } + }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globals": { + "version": "17.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.13.0.tgz", + "integrity": "sha512-RwMTC61u7hrG3ZJMkZQOK4JLJrKS8QtoTii63EmWvFXHqycY9FObBJQCbsLxSO8kjKhWE5kV1GC+Vb1g3RI0Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hashery": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz", + "integrity": "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.15.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hookified": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.17.0.tgz", + "integrity": "sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-document.all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.2.0.tgz", + "integrity": "sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/linebreak": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/linebreak/-/linebreak-1.1.0.tgz", + "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==", + "license": "MIT", + "dependencies": { + "base64-js": "0.0.8", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/linebreak/node_modules/base64-js": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", + "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.1" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimizer-webpack-plugin": { + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.13.1.tgz", + "integrity": "sha512-1mhAfvachWYYOm8tpmany5NLuvP+F2wxZWBSX8DC0uFS2wJpM9q3rWgN9wBooAH9d5V12wX0BjyJe4fMjHMarQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "jest-worker": "^27.4.5", + "schema-utils": "^4.6.0", + "terser": "^5.51.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, + "@napi-rs/image": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "html-minifier-terser": { + "optional": true + }, + "imagemin": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, + "sharp": { + "optional": true + }, + "svgo": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mocha": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-12.0.3.tgz", + "integrity": "sha512-beammieDdiWdkjANWeWPpkxUROYGi5FN88fPOkLiticz7HTg3Y+Pho3EYE6SUdcuWnZ3h2WD8EXCA55JF4o6wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-stdout": "^1.3.1", + "chokidar": "^5.0.0", + "debug": "^4.3.5", + "diff": "^9.0.0", + "find-up-simple": "^1.0.1", + "glob": "^13.0.0", + "is-path-inside": "^4.0.0", + "is-unicode-supported": "^0.1.0", + "js-yaml": "^5.0.0", + "minimatch": "^10.2.2", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^7.1.1", + "strip-json-comments": "^5.0.3", + "supports-color": "^8.1.1", + "workerpool": "^10.0.0" + }, + "bin": { + "mocha": "bin/mocha.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-3.0.3.tgz", + "integrity": "sha512-Sn98ftV3KfsO8xfLPHG6oT8y+b0yvbrLgZjgPDXsharNY15tTAjqIsIju4S32nl6/iEUNNE4v+yL2Zhm8ooP3w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "PSF-2.0" + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/js-yaml": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.5.0.tgz", + "integrity": "sha512-paNr4LFIFPjeeSmwNYdrb8FafLLG/Cr2Af3GjbsHJ5CxIjH4r0c2emlmRdAtpPAieP1gRVzk6buBbVP5gBMGAg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^3.0.3" + }, + "bin": { + "js-yaml": "bin/js-yaml.mjs" + } + }, + "node_modules/mocha/node_modules/readdirp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/mocha/node_modules/strip-json-comments": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.3.tgz", + "integrity": "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.59", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.59.tgz", + "integrity": "sha512-5qr2okC4ItAI0hG5SaV0HoYMpnM/Y6+Oqr7AmPYy/2uEoGvS+GbSKLeRxSS1uAdu59yz0ouzcuXievSgg///WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-all/node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/object-deep-merge": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.1.tgz", + "integrity": "sha512-aKttDKcU3pyZqKcCkDhsMn70WmZFG2JGDQLP9EcLyTSIFQRCPWLAmBZRLJnrVUrhPG1jETEEbfdgbNtJf1LyMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz", + "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "license": "MIT" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-statements": "1.0.11" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-type/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pdfkit": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/pdfkit/-/pdfkit-0.20.2.tgz", + "integrity": "sha512-Q/w03ICAQyXfHNfTsg1udp0ADerdBN0s7a6XSPL7J7Ro6ABnafoBOCDBstIO9U02mvzHEV8HrvFIw5iV5ejIRA==", + "license": "MIT", + "dependencies": { + "@noble/ciphers": "^1.3.0", + "@noble/hashes": "^1.8.0", + "fflate": "^0.8.3", + "fontkit": "^2.0.4", + "linebreak": "^1.1.0", + "png-js": "^2.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/png-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-2.0.0.tgz", + "integrity": "sha512-GdzJuUMc6ZSpxFJWVxtOH1bzYHym+TOnveqUjb+VJIbZWbZzyiRGFiKhbiielfpYbgMlhHVhsJ0FTazfuRFkMA==", + "dependencies": { + "fflate": "^0.8.2" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qified": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.10.1.tgz", + "integrity": "sha512-+Owyggi9IxT1ePKGafcI87ubSmxol6smwJ+RAHDQlx9+9cPwFWDiKFFCPuWhr9ignlGpZ9vDQLw67N4dcTVFEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^2.1.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/qified/node_modules/hookified": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz", + "integrity": "sha512-p/LgFzRN5FeoD3DLS6bkUapeye6E4SI6yJs6KetENd18S+FBthqYq2amJUWpt5z0EQwwHemidjY5OqJGEKm5uA==", + "dev": true, + "license": "MIT" + }, + "node_modules/quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha512-kKr2uQ2AokadPjvTyKJQad9xELbZwYzWlNfI3Uz2j/ib5u6H9lDP7fUUR//rMycd0gv4Z5P1qXMfXR8YpIxrjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + }, + "bin": { + "quote-stream": "bin/cmd.js" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.5.0.tgz", + "integrity": "sha512-1s+CxXjJ71i7LNVy8nYwg47XV4y6lAnOEhsMtSKq3WpmPfhl9LuKlTqKIn/3yUpE8lBz+W+TT88Bxyhnr0U4yw==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.3.0.tgz", + "integrity": "sha512-9ns8odR8e9q3otKeHj3DE80jZYKg6zVeZKE+zQmRKXFoVUcuiTGeO6iusDhPRoIQQPVPRvH+SfBhrTud4eczuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.5.3.tgz", + "integrity": "sha512-E8VgUoSK+LMQrLboDxavm76MTBGrQhx9RiNuomRmYnZ10Uw12HrI8fkxOOncktb2hBpzIZ9SV/347euQHG5z+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.5.0", + "regenerate-unicode-properties": "^10.3.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.4.tgz", + "integrity": "sha512-EWV80YgFaVgFrjGCAsV7oybp4GOxbls5RzBg8OB0nKEVXsBJR1JlV8Di1JhCROg3MzTfe1RI8yitIm1eOs68iA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reserved-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz", + "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/resolve": { + "version": "1.22.13", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.13.tgz", + "integrity": "sha512-Dj/cW9zBV2aRj6XzCxuGIs3ESZKv02jixne3q6jFZYZ3/Tg09gHHviSMDL4kObh9pqSahdRHEnDoaP2gn8YLhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.17.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, + "node_modules/rewire": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rewire/-/rewire-9.0.1.tgz", + "integrity": "sha512-dnbLeTwHpXvWJjswC6CshXUUnnpE5AVhlayVRvDJhJx5ejbO4nbj1IXqN2urErgB7TpHUAMpf6iPDhQIxeSQOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint": "^9.30", + "pirates": "^4.0.7" + } + }, + "node_modules/rewire/node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/rewire/node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/rewire/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/rewire/node_modules/@eslint/js": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz", + "integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/rewire/node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/rewire/node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/rewire/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/rewire/node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rewire/node_modules/eslint": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.5.tgz", + "integrity": "sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.6", + "@eslint/js": "9.39.5", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/rewire/node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/rewire/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/rewire/node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/rewire/node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/rewire/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/rewire/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/rewire/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/rewire/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/schema-utils": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.8.1.tgz", + "integrity": "sha512-x39pYlJPyH7Uge5QO64B9XGP9zLDc9WNmiQZc+CE3IzZPvMu3lHOuAMGpYNoPixEL7MSWlGhYTg5UlLSL8G6iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.15", + "ajv": "^8.20.0", + "ajv-formats": "^3.0.1", + "ajv-keywords": "^5.1.0" + }, + "bin": { + "schema-utils": "bin/schema-utils.js" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.112.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/scope-analyzer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.2.tgz", + "integrity": "sha512-5cfCmsTYV/wPaRIItNxatw02ua/MThdIUNnUOCYp+3LSEJvnG804ANw2VLaavNILIfWXF1D1G2KNANkBBvInwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "array-from": "^2.1.1", + "dash-ast": "^2.0.1", + "es6-map": "^0.1.5", + "es6-set": "^0.1.5", + "es6-symbol": "^3.1.1", + "estree-is-function": "^1.0.0", + "get-assigned-identifiers": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.1.2.tgz", + "integrity": "sha512-GL2BWwVa6JydKO6l/ljVgjAZF4QJ3S7dWDWi53s5GZT8PJzD2fNxi67HANQGKAqPrwEpL5ba7gUBGi0Ls/sEoQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.12.0.tgz", + "integrity": "sha512-PcByqNyT/38F2kDNi006HAMRJaULuBzq/FOsw3qdZvX/GA9W/jamDaRskgHjubHiftXK5sIFxLNkvrXUwcof6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sinon": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-22.1.0.tgz", + "integrity": "sha512-n1ajF2rBWMTtEwbKcw4UdFg4nCnDdq/U6RDoxtOd7oapOlRoJ5ynwFx60owROyhDpA9QhMZi0pCO/xtmwFjG7w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^15.4.0", + "@sinonjs/samsam": "^10.0.2", + "diff": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true, + "license": "MIT" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.24.tgz", + "integrity": "sha512-cLS9TtWkIQFyLkJ3/5aFQAOHOSKTlOs/7WDut/XPSdjom1fJhUdkepeJAKXa9Y05+FabHd0sti+Et559vDtkpQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/static-eval": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.1.tgz", + "integrity": "sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "escodegen": "^2.1.0" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-module": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-3.0.4.tgz", + "integrity": "sha512-gb0v0rrgpBkifXCa3yZXxqVmXDVE+ETXj6YlC/jt5VzOnGXR2C15+++eXuMDUYsePnbhf+lwW0pE1UXyOLtGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-node": "^1.3.0", + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "^1.11.1", + "has": "^1.0.1", + "magic-string": "0.25.1", + "merge-source-map": "1.0.4", + "object-inspect": "^1.6.0", + "readable-stream": "~2.3.3", + "scope-analyzer": "^2.0.1", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.5", + "through2": "~2.0.3" + } + }, + "node_modules/static-module/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/string.prototype.padend": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-to-pdfkit": { + "version": "0.1.8", + "resolved": "git+ssh://git@github.com/alafr/SVG-to-PDFKit.git#b091ebd4e7b7d2310eb1003511cd5de480f7e0e1", + "integrity": "sha512-/SluvWUu/5/WqHwXbEKdQC8kecbsCgtgfe8asvzjbR3+JUsglf0YgXMXtsbIAhGgbBkze/ypQSSXg+B1o3CDZw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", + "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.51.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.51.2.tgz", + "integrity": "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz", + "integrity": "sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@minify-html/node": { + "optional": true + }, + "@swc/core": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "@swc/html": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "cssnano": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "html-minifier-terser": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "postcss": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "license": "MIT" + }, + "node_modules/to-valid-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", + "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/base62": "^1.0.0", + "reserved-identifiers": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.5.tgz", + "integrity": "sha512-0FHJvLPqZ7KJzp17O13jfsAjsqazgrxBu2zEK95PmUz8lv2+GjRuxUInCr2Rk9Dms3ihN21zJ929ZO43yJ95QQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", + "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "possible-typed-array-names": "^1.1.0", + "reflect.getprototypeof": "^1.0.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.9.0.tgz", + "integrity": "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==", + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "license": "MIT", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.4.tgz", + "integrity": "sha512-t8wonIOdQyOjtPd2VktlBu6QjTVTks6v8bSi7kd0r2Vll8TK1JYDZtRRdbmCHOAMphkZgrzK+L+vXK4pyZ8t4A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.6.3.tgz", + "integrity": "sha512-s3NZy0QpTY9qGqzc0wtz4qI28z3+5qKbbAec4MV4G9N3CfgZ9wgvQRr0cl2jh/tqkWG1NWHkmVMHZpCamev5Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.112.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.112.0.tgz", + "integrity": "sha512-NIBpsRuCll036haDDt/CfcTDfsWNR9Z782nMRMI9D377BsGcYzZDTNU5TyzhCJzPIcihAxMBaMAhq2WSaDrH8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.26.0", + "es-module-lexer": "^2.1.0", + "events": "^3.2.0", + "graceful-fs": "^4.2.11", + "mime-db": "^1.54.0", + "minimizer-webpack-plugin": "^5.13.0", + "schema-utils": "^4.5.0", + "tapable": "^2.3.0", + "watchpack": "^2.6.1", + "webpack-sources": "^3.6.0" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-7.2.3.tgz", + "integrity": "sha512-vDFU7jrfCctnN7jJQWPl+V26B51GLp11prVZXg50oeonsgeBzSTJEWmXkjHsOjTgMjlPOQM8GWLh33X9RN/0ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@discoveryjs/json-ext": "^1.1.0", + "commander": "^14.0.3", + "cross-spawn": "^7.0.6", + "envinfo": "^7.21.0", + "import-local": "^3.2.0", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^6.0.1" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=20.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "js-yaml": "^4.0.0 || ^5.0.0", + "json5": "^2.2.3", + "toml": "^3.0.0 || ^4.0.0 || ^5.0.0", + "webpack": "^5.101.0", + "webpack-bundle-analyzer": "^4.0.0 || ^5.0.0", + "webpack-dev-server": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "js-yaml": { + "optional": true + }, + "json5": { + "optional": true + }, + "toml": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/webpack-cli/node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-cli/node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.6.0.tgz", + "integrity": "sha512-EIMmPVvNI0CYXyRPp34F2Qk7W37/BZVZIofS6LAUnrNjCVahS+hO4mxwFJDjQjODTGZDtVzLYoN2+1dYkhk9qA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.24", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.24.tgz", + "integrity": "sha512-wk4Mf4pR5mRP7eYuuTBCIQ9d0ud2Fv2jRLQpfgnRjbOxAFHmjKFValgTpitVKzJJS8ajnYQV2Du1SZ8j6b/EUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-10.0.3.tgz", + "integrity": "sha512-6z2Iis68Wqth93/G/wJP9u+R3O+d2XTlgWChGCwuT1qLbBsOYueGRZuJ++v3mtDP5KjYdy+WzvWC+VWETSVXJA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/xmldoc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-2.0.3.tgz", + "integrity": "sha512-6gRk4NY/Jvg67xn7OzJuxLRsGgiXBaPUQplVJ/9l99uIugxh4FTOewYz5ic8WScj7Xx/2WvhENiQKwkK9RpE4w==", + "license": "MIT", + "dependencies": { + "sax": "^1.4.3" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index 4a6e3b752..baf6fe704 100644 --- a/package.json +++ b/package.json @@ -9,12 +9,12 @@ "test": "tests" }, "dependencies": { + "@types/pdfkit": "^0.17.6", "linebreak": "^1.1.0", "pdfkit": "^0.20.2", "xmldoc": "^2.0.3" }, "devDependencies": { - "@babel/cli": "^7.29.7", "@babel/core": "^7.29.7", "@babel/preset-env": "^7.29.7", "@eslint/js": "^10.0.1", @@ -27,16 +27,15 @@ "expose-loader": "^5.0.1", "file-saver": "^2.0.5", "globals": "^17.6.0", - "mocha": "^11.7.6", + "mocha": "^12.0.3", "npm-run-all": "^4.1.5", "process": "^0.11.10", "rewire": "^9.0.1", - "shx": "^0.4.0", "sinon": "^22.0.0", "source-map-loader": "^5.0.0", - "string-replace-webpack-plugin": "^0.1.3", - "svg-to-pdfkit": "github:alafr/SVG-to-PDFKit#b091ebd4e7b7d2310eb1003511cd5de480f7e0e1", + "svg-to-pdfkit": "git+https://github.com/alafr/SVG-to-PDFKit.git#b091ebd4e7b7d2310eb1003511cd5de480f7e0e1", "terser-webpack-plugin": "^5.6.1", + "typescript": "~5.9.3", "webpack": "^5.107.2", "webpack-cli": "^7.0.3" }, @@ -44,19 +43,28 @@ "node": ">=20" }, "scripts": { - "test": "run-s build mocha lint", - "build": "run-s build:clean build:node build:browser build:standard-fonts build:fonts build:vfs", - "build:clean": "shx rm -rf js build", - "build:3rdparty": "shx cp node_modules/svg-to-pdfkit/source.js src/3rd-party/svg-to-pdfkit/source.js && shx cp node_modules/svg-to-pdfkit/LICENSE src/3rd-party/svg-to-pdfkit/LICENSE && git apply src/3rd-party/svg-to-pdfkit/0001-fix-contains.patch", - "build:node": "babel src --out-dir js", + "test": "run-s schema:check build mocha lint", + "build": "run-s build:clean build:node build:browser build:standard-fonts build:fonts build:vfs build:types", + "build:clean": "node scripts/build-tasks.cjs clean", + "build:3rdparty": "node scripts/build-tasks.cjs third-party", + "build:node": "node scripts/build-tasks.cjs node", "build:browser": "webpack", "build:vfs": "node build-vfs.js \"./fonts/Roboto\"", "build:examples": "node build-examples.js", "build:standard-fonts": "node build-standard-fonts.js", - "build:fonts": "shx mkdir -p build/fonts && shx mkdir -p build/fonts/Roboto && shx cp -r fonts/Roboto/*.* build/fonts/Roboto && brfs \"./src/browser-extensions/fonts/Roboto.js\" > build/fonts/Roboto.js", + "build:fonts": "node scripts/build-tasks.cjs fonts", "lint": "eslint \"./src/**/*.js\" \"./tests/**/*.js\" \"./examples/**/*.js\" \"./standard-fonts/**/*.js\" \"./fonts/**/*.js\"", "mocha": "mocha --reporter spec \"./tests/**/*.spec.js\"", - "playground": "node dev-playground/server.js" + "playground": "run-s build:playground playground:serve", + "build:playground": "npm --prefix dev-playground ci && node scripts/build-playground.cjs", + "playground:serve": "node dev-playground/server.js", + "test:package": "node scripts/test-package.cjs", + "benchmark:text": "node benchmarks/text-flatten.cjs", + "release:check": "node scripts/check-release.cjs", + "test:typescript": "node scripts/test-typescript.cjs", + "build:types": "node scripts/build-types.cjs", + "schema:generate": "node scripts/build-document-schema.cjs", + "schema:check": "node scripts/build-document-schema.cjs --check" }, "repository": { "type": "git", @@ -74,13 +82,5 @@ "url": "https://github.com/bpampuch/pdfmake/issues" }, "homepage": "http://pdfmake.org", - "config": { - "blanket": { - "pattern": "src", - "data-cover-never": [ - "node_modules", - "tests" - ] - } - } + "types": "types/index.d.ts" } diff --git a/scripts/build-document-schema.cjs b/scripts/build-document-schema.cjs new file mode 100644 index 000000000..e0a181aef --- /dev/null +++ b/scripts/build-document-schema.cjs @@ -0,0 +1,57 @@ +// Generates the runtime structural contract from the shipped declarations. +// Keep this checked-in output reproducible: npm run schema:generate / schema:check. +const ts = require('typescript'); +const fs = require('node:fs'); +const path = require('node:path'); +const root = path.resolve(__dirname, '..'); +const program = ts.createProgram([path.join(root, 'types/interfaces.d.ts')], { strict: true, module: ts.ModuleKind.NodeNext, moduleResolution: ts.ModuleResolutionKind.NodeNext, target: ts.ScriptTarget.ES2022, skipLibCheck: false }); +const errors = ts.getPreEmitDiagnostics(program); +if (errors.length) throw new Error(ts.formatDiagnosticsWithColorAndContext(errors, { getCanonicalFileName: f => f, getCurrentDirectory: () => root, getNewLine: () => '\n' })); +const checker = program.getTypeChecker(); +const source = program.getSourceFile(path.join(root, 'types/interfaces.d.ts')); +const symbol = checker.getSymbolAtLocation(source); +const exportsMap = new Map(checker.getExportsOfModule(symbol).map(s => [s.name, s])); +const nodes = []; +const seen = new Map(); +function schema(type) { + if (seen.has(type.id)) return seen.get(type.id); + const id = nodes.length; seen.set(type.id, id); nodes.push({}); + const f = type.flags; const F = ts.TypeFlags; + let node; + if (f & (F.Any | F.Unknown)) node = { kind: 'unknown' }; + else if (f & F.StringLiteral) node = { kind: 'literal', value: type.value }; + else if (f & F.NumberLiteral) node = { kind: 'literal', value: type.value }; + else if (f & F.BooleanLiteral) node = { kind: 'literal', value: type.intrinsicName === 'true' }; + else if (f & F.String) node = { kind: 'string' }; + else if (f & F.Number) node = { kind: 'number' }; + else if (f & F.Undefined) node = { kind: 'undefined' }; + else if (f & F.Null) node = { kind: 'null' }; + else if (f & F.Never) node = { kind: 'never' }; + else if (type.isUnion()) node = { kind: 'union', items: type.types.map(schema) }; + else if (checker.getSignaturesOfType(type, ts.SignatureKind.Call).length) node = { kind: 'function' }; + else if (checker.isTupleType(type)) node = { kind: 'tuple', items: checker.getTypeArguments(type).map(schema) }; + else if (checker.isArrayType(type)) node = { kind: 'array', item: schema(checker.getTypeArguments(type)[0]) }; + else if (['SVGElement', 'Buffer', 'Date', 'Uint8Array', 'ArrayBuffer'].includes(type.symbol?.name)) node = { kind: 'opaque', name: type.symbol.name }; + else if (type.isIntersection() && type.types.some(t => checker.isArrayType(t))) { + const array = type.types.find(t => checker.isArrayType(t)); + node = nodes[schema(array)]; + } + else if (type.isIntersection() && type.types.some(t => t.flags & (F.String | F.Number | F.Boolean | F.StringLiteral | F.NumberLiteral | F.BooleanLiteral))) { + const primitive = type.types.find(t => t.flags & (F.String | F.Number | F.Boolean | F.StringLiteral | F.NumberLiteral | F.BooleanLiteral)); + node = nodes[schema(primitive)]; + } + else if (f & F.Object || type.isIntersection()) { + const properties = {}; + for (const p of checker.getPropertiesOfType(type)) properties[p.name] = { type: schema(checker.getTypeOfSymbolAtLocation(p, p.valueDeclaration || p.declarations?.[0] || source)), optional: !!(p.flags & ts.SymbolFlags.Optional) }; + const index = checker.getIndexTypeOfType(type, ts.IndexKind.String); + node = { kind: 'object', properties, ...(index ? { index: schema(index) } : {}) }; + } else throw new Error('Unsupported contract: ' + checker.typeToString(type)); + nodes[id] = node; + return id; +} +const entry = schema(checker.getDeclaredTypeOfSymbol(exportsMap.get('TDocumentDefinitions'))); +const output = '// Generated by scripts/build-document-schema.cjs from types/interfaces.d.ts; do not edit.\nexport default ' + JSON.stringify({ entry, nodes }, null, '\t') + ';\n'; +const destination = path.join(root, 'src/document-schema.js'); +if (process.argv.includes('--check')) { if (fs.readFileSync(destination, 'utf8') !== output) throw new Error('Document schema is stale; run npm run schema:generate'); } +else fs.writeFileSync(destination, output); +console.log(`Document contract: ${nodes.length} schema nodes`); diff --git a/scripts/build-playground.cjs b/scripts/build-playground.cjs new file mode 100644 index 000000000..51a5ec455 --- /dev/null +++ b/scripts/build-playground.cjs @@ -0,0 +1,22 @@ +(async () => { +const fs = require('node:fs'); +const path = require('node:path'); +const root = path.resolve(__dirname, '..'); +const playgroundRequire = require('node:module').createRequire(path.join(root, 'dev-playground/package.json')); +const { buildSync } = playgroundRequire('esbuild'); +const output = path.join(root, 'dev-playground/public/vendor'); +fs.mkdirSync(output, { recursive: true }); +for (const name of ['pdfmake.min.js', 'vfs_fonts.js']) { + const source = path.join(root, 'build', name); + if (!fs.existsSync(source)) throw new Error('Build the library first with npm run build'); + fs.copyFileSync(source, path.join(output, name)); +} +fs.writeFileSync(path.join(output, 'version.json'), JSON.stringify({ version: require('../package.json').version })); +const pdfjs = path.dirname(playgroundRequire.resolve('pdfjs-dist/package.json')); +for (const name of ['pdf.mjs', 'pdf.worker.mjs']) fs.copyFileSync(path.join(pdfjs, 'build', name), path.join(output, name)); +fs.copyFileSync(path.join(pdfjs, 'LICENSE'), path.join(output, 'PDFJS-LICENSE.txt')); +buildSync({ entryPoints: [path.join(root, 'dev-playground/editor.mjs')], outfile: path.join(root, 'dev-playground/public/editor.js'), bundle: true, minify: true, format: 'esm', target: 'es2020', legalComments: 'eof' }); +await (await import('./prepare-typescript.mjs')).prepareTypeScript(output, { transform: playgroundRequire('esbuild').transform }); +console.log('Standalone playground prepared from the local library build'); + +})().catch(error => { console.error(error); process.exitCode = 1; }); diff --git a/scripts/build-tasks.cjs b/scripts/build-tasks.cjs new file mode 100644 index 000000000..4db779542 --- /dev/null +++ b/scripts/build-tasks.cjs @@ -0,0 +1,51 @@ +// Fixed build operations using Node APIs, without a shell/glob/watch dependency tree. +const fs = require('node:fs'); +const path = require('node:path'); +const { execFileSync } = require('node:child_process'); +const root = path.resolve(__dirname, '..'); +function destination(relative) { + const target = path.resolve(root, relative); + if (!target.startsWith(root + path.sep)) throw new Error('Build target must remain inside the repository'); + return target; +} +switch (process.argv[2]) { + case 'clean': + for (const name of ['js', 'build']) fs.rmSync(destination(name), { recursive: true, force: true }); + break; + case 'node': { + const babel = require('@babel/core'); + let count = 0; + function compile(relative) { + for (const entry of fs.readdirSync(path.join(root, 'src', relative), { withFileTypes: true })) { + const file = path.join(relative, entry.name); + if (entry.isDirectory()) compile(file); + else if (file.endsWith('.js')) { + const target = destination(path.join('js', file)); + fs.mkdirSync(path.dirname(target), { recursive: true }); + const result = babel.transformFileSync(path.join(root, 'src', file), { cwd: root }); + fs.writeFileSync(target, result.code + '\n'); + count++; + } + } + } + compile(''); + console.log(`Compiled ${count} JavaScript files using the existing Babel configuration`); + break; + } + case 'fonts': { + const target = destination('build/fonts/Roboto'); + fs.mkdirSync(target, { recursive: true }); + for (const entry of fs.readdirSync(path.join(root, 'fonts/Roboto'), { withFileTypes: true })) { + if (entry.isFile()) fs.copyFileSync(path.join(root, 'fonts/Roboto', entry.name), path.join(target, entry.name)); + } + const output = execFileSync(process.execPath, [require.resolve('brfs/bin/cmd.js'), './src/browser-extensions/fonts/Roboto.js'], { cwd: root, maxBuffer: 16 * 1024 * 1024 }); + fs.writeFileSync(destination('build/fonts/Roboto.js'), output); + break; + } + case 'third-party': + for (const name of ['source.js', 'LICENSE']) fs.copyFileSync(path.join(root, 'node_modules/svg-to-pdfkit', name), destination('src/3rd-party/svg-to-pdfkit/' + name)); + execFileSync('git', ['apply', 'src/3rd-party/svg-to-pdfkit/0001-fix-contains.patch'], { cwd: root, stdio: 'inherit' }); + break; + default: + throw new Error('Expected one of: clean, node, fonts, third-party'); +} diff --git a/scripts/build-types.cjs b/scripts/build-types.cjs new file mode 100644 index 000000000..55639881a --- /dev/null +++ b/scripts/build-types.cjs @@ -0,0 +1,8 @@ +const fs = require('node:fs'); +const path = require('node:path'); +const root = path.resolve(__dirname, '..'); +const write = (file, text) => { fs.mkdirSync(path.dirname(path.join(root, file)), { recursive: true }); fs.writeFileSync(path.join(root, file), text); }; +for (const name of ['pdfmake', 'pdfmake.min']) write(`build/${name}.d.ts`, "import pdfmake = require('../types/browser');\nexport = pdfmake;\n"); +write('js/index.d.ts', "import pdfmake = require('../types');\nexport = pdfmake;\n"); +write('build/vfs_fonts.d.ts', "import type { TVirtualFileSystem } from '../types/interfaces';\ndeclare const files: TVirtualFileSystem;\nexport = files;\n"); +for (const name of fs.readdirSync(path.join(root, 'build/fonts')).filter(name => name.endsWith('.js'))) write('build/fonts/' + name.replace(/\.js$/, '.d.ts'), "import type { TFontContainer } from '../../types/interfaces';\ndeclare const container: TFontContainer;\nexport = container;\n"); diff --git a/scripts/check-release.cjs b/scripts/check-release.cjs new file mode 100644 index 000000000..b89880e33 --- /dev/null +++ b/scripts/check-release.cjs @@ -0,0 +1,6 @@ +const assert = require('node:assert/strict'); +const { version } = require('../package.json'); +const tag = process.argv[2] || process.env.RELEASE_TAG; +assert.ok(tag, 'Pass the release tag as an argument or RELEASE_TAG'); +assert.ok(tag === version || tag === `v${version}`, `Tag ${tag} does not match package version ${version}`); +console.log(`Release tag matches pdfmake ${version}`); diff --git a/scripts/file-saver-loader.cjs b/scripts/file-saver-loader.cjs new file mode 100644 index 000000000..c4e25f0f0 --- /dev/null +++ b/scripts/file-saver-loader.cjs @@ -0,0 +1,8 @@ +// Preserve the existing mobile FileSaver workaround without a legacy Webpack plugin. +module.exports = function (source) { + const needle = '"download"in HTMLAnchorElement.prototype'; + if (!source.includes(needle)) { + throw new Error('FileSaver changed: review the HTMLAnchorElement compatibility workaround'); + } + return source.replace(needle, '(typeof HTMLAnchorElement !== "undefined" && "download" in HTMLAnchorElement.prototype)'); +}; diff --git a/scripts/prepare-typescript.mjs b/scripts/prepare-typescript.mjs new file mode 100644 index 000000000..b64aabc8f --- /dev/null +++ b/scripts/prepare-typescript.mjs @@ -0,0 +1,50 @@ +import fs from 'node:fs/promises'; +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { createRequire } from 'node:module'; +const require = createRequire(import.meta.url); +export async function prepareTypeScript(output, { transform } = {}) { + const modules = path.dirname(path.dirname(require.resolve('typescript/package.json'))); + const source = path.join(modules, 'typescript/lib/typescript.js'); + if (transform) { + const result = await transform(await fs.readFile(source, 'utf8'), { minify: true, legalComments: 'eof', target: 'es2020' }); + await fs.writeFile(path.join(output, 'typescript.js'), result.code); + } else await fs.copyFile(source, path.join(output, 'typescript.js')); + const licenses = []; + for (const name of ['typescript/LICENSE.txt', 'typescript/ThirdPartyNoticeText.txt', '@types/pdfkit/LICENSE', '@types/node/LICENSE', 'undici-types/LICENSE']) { + const text = await fs.readFile(path.join(modules, name), 'utf8').catch(() => ''); + if (text) licenses.push(name + '\n\n' + text); + } + const native = await nativeLibrary(); + licenses.push('pdfmake/types/LICENSE\n\n' + await fs.readFile(path.join(native, 'types/LICENSE'), 'utf8')); + await fs.writeFile(path.join(output, 'TYPESCRIPT-LICENSES.txt'), licenses.join('\n\n---\n\n')); + await fs.writeFile(path.join(output, 'typescript-types.js'), 'var pdfmakeTypeFiles = ' + JSON.stringify(await collectTypeFiles()) + ';\n'); +} +export async function collectTypeFiles() { + const modules = path.dirname(path.dirname(require.resolve('typescript/package.json'))); + const files = {}; + async function collect(directory, base = modules, prefix = '/node_modules/') { + for (const item of await fs.readdir(directory, { withFileTypes: true }).catch(() => [])) { + const file = path.join(directory, item.name); + if (item.isDirectory()) await collect(file, base, prefix); + else if (item.name.endsWith('.d.ts') || item.name === 'package.json') files[prefix + path.relative(base, file).replaceAll('\\', '/')] = await fs.readFile(file, 'utf8'); + } + } + for (const name of ['typescript/lib', '@types', 'undici-types']) await collect(path.join(modules, name)); + const native = await nativeLibrary(); + for (const name of ['types', 'build']) { + if (name === 'types') await collect(path.join(native, name), native, '/node_modules/pdfmake/'); + else for (const file of ['pdfmake.d.ts', 'pdfmake.min.d.ts', 'vfs_fonts.d.ts']) files['/node_modules/pdfmake/build/' + file] = await fs.readFile(path.join(native, name, file), 'utf8'); + } + for (const file of ['package.json', 'interfaces.d.ts']) files['/node_modules/pdfmake/' + file] = await fs.readFile(path.join(native, file), 'utf8'); + return files; +} + +async function nativeLibrary() { + const root = fileURLToPath(new URL('../', import.meta.url)); + let installed; + try { installed = path.dirname(require.resolve('pdfmake/package.json')); } catch { /* The library checkout itself is also supported. */ } + const candidates = [process.env.PDFMAKE_SOURCE, root, installed, path.join(root, 'tooling/pdfmake-types')].filter(Boolean); + for (const candidate of candidates) if (await fs.stat(path.join(candidate, 'types/interfaces.d.ts')).catch(() => null)) return candidate; + throw new Error('Native declarations are missing. Run sync-native-types against the built library.'); +} diff --git a/scripts/test-package.cjs b/scripts/test-package.cjs new file mode 100644 index 000000000..5155a9c7f --- /dev/null +++ b/scripts/test-package.cjs @@ -0,0 +1,76 @@ +// Test the actual tarball in an isolated consumer, with production dependencies only. +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const os = require('node:os'); +const path = require('node:path'); +const { execFileSync } = require('node:child_process'); + +const root = path.resolve(__dirname, '..'); +const temp = fs.mkdtempSync(path.join(os.tmpdir(), 'pdfmake-package-')); +// npm scripts expose npm_execpath on Windows too, avoiding cmd.exe quoting. +const npm = process.env.npm_execpath; +assert.ok(npm, 'Run this script through npm run test:package'); +function run(args, cwd) { + return execFileSync(process.execPath, [npm, ...args], { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'inherit'] }); +} +try { + const [packed] = JSON.parse(run(['pack', '--json', '--pack-destination', temp], root)); + fs.writeFileSync(path.join(temp, 'package.json'), JSON.stringify({ name: 'pdfmake-smoke', version: '1.0.0', private: true })); + run(['install', '--ignore-scripts', '--omit=dev', '--no-audit', '--no-fund', path.join(temp, packed.filename)], temp); + const consumer = String.raw` +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const pdfmake = require('pdfmake'); +const fonts = require('pdfmake/standard-fonts/Helvetica'); +pdfmake.addFonts(fonts); +pdfmake.setUrlAccessPolicy(() => false); +const standardNames = new Set(Object.values(fonts.Helvetica)); +pdfmake.setLocalAccessPolicy(name => standardNames.has(name)); +function definition() { + return { + defaultStyle: { font: 'Helvetica' }, + info: { title: 'Package regression' }, + content: [ + { text: ['Nested ', [{ text: ['inline ', 'text'] }]] }, + { table: { headerRows: 1, widths: ['*', 'auto'], body: [['Item', 'Value'], ['One', 1]] } }, + { text: 'Second page', pageBreak: 'before' } + ] + }; +} +function check(bytes) { + assert.equal(bytes.subarray(0, 5).toString(), '%PDF-'); + assert.match(bytes.toString('latin1'), /%%EOF\s*$/); + assert.match(bytes.toString('latin1'), /\/Count 2\b/); +} +(async () => { + assert.equal(pdfmake.validateDocument(definition()).valid, true); + assert.equal(pdfmake.validateDocument({ content: [{ text: 'bad', fontSize: 'large' }] }).valid, false); + const output = pdfmake.createPdf(definition(), { validation: true }); + const buffer = await output.getBuffer(); + check(buffer); + assert.strictEqual(await output.getBuffer(), buffer); + assert.equal(await output.getBase64(), buffer.toString('base64')); + await pdfmake.createPdf(definition()).write('smoke.pdf'); + check(fs.readFileSync('smoke.pdf')); + // Exercise both distributed browser bundles and the shipped VFS assets. + for (const bundle of ['pdfmake', 'pdfmake.min']) { + const browser = require('pdfmake/build/' + bundle); + browser.addVirtualFileSystem(require('pdfmake/build/vfs_fonts')); + const dd = definition(); + dd.defaultStyle.font = 'Roboto'; + assert.equal(browser.validateDocument(dd).valid, true); + check(await browser.createPdf(dd, { validation: true }).getBuffer()); + } + console.log('Packed Node API, file output and both browser bundles passed'); +})().catch(error => { console.error(error); process.exitCode = 1; }); +`; + fs.writeFileSync(path.join(temp, 'consumer.cjs'), consumer); + console.log(execFileSync(process.execPath, ['consumer.cjs'], { cwd: temp, encoding: 'utf8', stdio: ['ignore', 'pipe', 'inherit'] })); + if (process.env.PDFMAKE_PACK_DEST) { + const dest = path.resolve(process.env.PDFMAKE_PACK_DEST); + fs.mkdirSync(dest, { recursive: true }); + fs.copyFileSync(path.join(temp, packed.filename), path.join(dest, packed.filename)); + } +} finally { + fs.rmSync(temp, { recursive: true, force: true }); +} diff --git a/scripts/test-typescript.cjs b/scripts/test-typescript.cjs new file mode 100644 index 000000000..5f74722e2 --- /dev/null +++ b/scripts/test-typescript.cjs @@ -0,0 +1,34 @@ +// Compile and execute consumers against the actual npm tarball, never source aliases. +const assert = require('node:assert/strict'); +const fs = require('node:fs'); +const os = require('node:os'); +const path = require('node:path'); +const { execFileSync } = require('node:child_process'); +const webpack = require('webpack'); +const root = path.resolve(__dirname, '..'); +const temp = fs.mkdtempSync(path.join(os.tmpdir(), 'pdfmake-typescript-')); +const npm = process.env.npm_execpath; +assert.ok(npm, 'Run through npm run test:typescript'); +const runNpm = args => execFileSync(process.execPath, [npm, ...args], { cwd: temp, stdio: ['ignore', 'pipe', 'inherit'], encoding: 'utf8' }); +const compiler = require.resolve('typescript/bin/tsc'); +function compile(args) { + try { execFileSync(process.execPath, [compiler, '--strict', '--skipLibCheck', 'false', '--target', 'ES2022', '--esModuleInterop', ...args], { cwd: temp, stdio: 'pipe' }); } + catch (error) { throw new Error(error.stdout?.toString() || error.message); } +} +(async () => { + const packed = JSON.parse(execFileSync(process.execPath, [npm, 'pack', '--json', '--pack-destination', temp], { cwd: root, encoding: 'utf8' }))[0]; + fs.writeFileSync(path.join(temp, 'package.json'), JSON.stringify({ name: 'pdfmake-typescript-consumer', version: '1.0.0', private: true })); + runNpm(['install', '--ignore-scripts', '--no-audit', '--no-fund', path.join(temp, packed.filename)]); + assert.equal(fs.existsSync(path.join(temp, 'node_modules/@types/pdfmake')), false, 'Native types must work without @types/pdfmake'); + fs.cpSync(path.join(root, 'tests/typescript'), path.join(temp, 'src'), { recursive: true }); + compile(['--module', 'NodeNext', '--moduleResolution', 'NodeNext', '--outDir', 'node-out', 'src/node.cts', 'src/node.mts', 'src/invalid.cts']); + for (const file of ['node.cjs', 'node.mjs']) execFileSync(process.execPath, [path.join('node-out', file)], { cwd: temp, stdio: 'inherit' }); + compile(['--module', 'ESNext', '--moduleResolution', 'Bundler', '--outDir', 'browser-out', 'src/browser.ts']); + await new Promise((resolve, reject) => { + const compiler = webpack({ mode: 'development', target: 'web', entry: path.join(temp, 'browser-out/browser.js'), output: { path: path.join(temp, 'bundled'), filename: 'browser.cjs', library: { type: 'commonjs2' } }, performance: { hints: false } }); + compiler.run((error, stats) => compiler.close(() => error || stats.hasErrors() ? reject(error || new Error(stats.toString({ all: false, errors: true }))) : resolve())); + }); + const blob = await require(path.join(temp, 'bundled/browser.cjs')).render(); + assert.equal(Buffer.from(await blob.arrayBuffer()).subarray(0, 5).toString(), '%PDF-'); + console.log(`TypeScript ${require('typescript/package.json').version}, bundled declarations: strict CJS, Node ESM, browser bundler, negative types and PDF output passed`); +})().catch(error => { console.error(error); process.exitCode = 1; }).finally(() => fs.rmSync(temp, { recursive: true, force: true })); diff --git a/src/DocPreprocessor.js b/src/DocPreprocessor.js index 979c3c822..18596ac7b 100644 --- a/src/DocPreprocessor.js +++ b/src/DocPreprocessor.js @@ -17,6 +17,7 @@ const convertValueToString = value => { class DocPreprocessor { preprocessDocument(docStructure) { + this.documentRoot = docStructure; this.parentNode = null; this.tocs = []; this.nodeReferences = []; @@ -24,6 +25,7 @@ class DocPreprocessor { } preprocessBlock(node) { + this.documentRoot = node; this.parentNode = null; this.tocs = []; this.nodeReferences = []; @@ -31,6 +33,29 @@ class DocPreprocessor { } preprocessNode(node, isSectionAllowed = false) { + return this.preprocessNodeAt(node, isSectionAllowed, this.currentPath || 'content'); + } + + preprocessNodeAt(node, isSectionAllowed, path) { + const previousPath = this.currentPath; + this.currentPath = path; + try { + return this.preprocessNodeInternal(node, isSectionAllowed); + } catch (caught) { + const error = caught instanceof Error ? caught : new Error(String(caught)); + if (!error.path) { + error.path = path; + error.code = 'PDFMAKE_INVALID_DOCUMENT'; + error.phase = 'preprocess'; + error.message += `\nDocument path: ${path}`; + } + throw error; + } finally { + this.currentPath = previousPath; + } + } + + preprocessNodeInternal(node, isSectionAllowed = false) { // expand shortcuts and casting values if (Array.isArray(node)) { node = { stack: node }; @@ -78,16 +103,17 @@ class DocPreprocessor { } preprocessSection(node) { - node.section = this.preprocessNode(node.section); + node.section = this.preprocessNodeAt(node.section, false, `${this.currentPath}.section`); return node; } preprocessColumns(node) { let columns = node.columns; + if (!Array.isArray(columns)) throw new Error('columns must be an array of content nodes.'); for (let i = 0, l = columns.length; i < l; i++) { - columns[i] = this.preprocessNode(columns[i]); + columns[i] = this.preprocessNodeAt(columns[i], false, `${this.currentPath}.columns[${i}]`); } return node; @@ -95,9 +121,11 @@ class DocPreprocessor { preprocessVerticalContainer(node, isSectionAllowed) { let items = node.stack; + if (!Array.isArray(items)) throw new Error('stack must be an array of content nodes.'); for (let i = 0, l = items.length; i < l; i++) { - items[i] = this.preprocessNode(items[i], isSectionAllowed); + const path = this.currentPath || 'content'; + items[i] = this.preprocessNodeAt(items[i], isSectionAllowed, path === 'content' && Array.isArray(this.documentRoot) ? `${path}[${i}]` : `${path}.stack[${i}]`); } return node; @@ -105,15 +133,31 @@ class DocPreprocessor { preprocessList(node) { let items = node.ul || node.ol; + if (!Array.isArray(items)) throw new Error('List items must be an array.'); for (let i = 0, l = items.length; i < l; i++) { - items[i] = this.preprocessNode(items[i]); + items[i] = this.preprocessNodeAt(items[i], false, `${this.currentPath}.${node.ul ? 'ul' : 'ol'}[${i}]`); } return node; } preprocessTable(node) { + if (!node.table || !Array.isArray(node.table.body) || !node.table.body.length || !Array.isArray(node.table.body[0]) || !node.table.body[0].length) { + throw new Error('table.body must be a non-empty array of non-empty row arrays.'); + } + const columnCount = node.table.body[0].length; + for (let rowIndex = 0; rowIndex < node.table.body.length; rowIndex++) { + const data = node.table.body[rowIndex]; + if (!Array.isArray(data) || data.length !== columnCount) { + const error = new Error(`Malformed table row: expected ${columnCount} cells, including placeholders for spans.`); + error.path = `${this.currentPath}.table.body[${rowIndex}]`; + error.code = 'PDFMAKE_INVALID_DOCUMENT'; + error.phase = 'preprocess'; + error.message += `\nDocument path: ${error.path}`; + throw error; + } + } let col; let row; let cols; @@ -123,12 +167,20 @@ class DocPreprocessor { for (row = 0, rows = node.table.body.length; row < rows; row++) { let rowData = node.table.body[row]; let data = rowData[col]; + if (data === undefined) { + const error = new Error('Malformed table row: a cell is undefined. Use an empty string or an empty object for a blank cell.'); + error.path = `${this.currentPath}.table.body[${row}][${col}]`; + error.code = 'PDFMAKE_INVALID_DOCUMENT'; + error.phase = 'preprocess'; + error.message += `\nDocument path: ${error.path}`; + throw error; + } if (data !== undefined) { if (data === null) { // transform to object data = ''; } if (!data._span) { - rowData[col] = this.preprocessNode(data); + rowData[col] = this.preprocessNodeAt(data, false, `${this.currentPath}.table.body[${row}][${col}]`); } } } @@ -207,7 +259,7 @@ class DocPreprocessor { } if (node.text && node.text.text) { - node.text = [this.preprocessNode(node.text)]; + node.text = [this.preprocessNodeAt(node.text, false, `${this.currentPath}.text`)]; } else if (Array.isArray(node.text)) { let isSetParentNode = false; if (this.parentNode === null) { @@ -216,7 +268,7 @@ class DocPreprocessor { } for (let i = 0, l = node.text.length; i < l; i++) { - node.text[i] = this.preprocessNode(node.text[i]); + node.text[i] = this.preprocessNodeAt(node.text[i], false, `${this.currentPath}.text[${i}]`); } if (isSetParentNode) { diff --git a/src/DocumentValidator.js b/src/DocumentValidator.js new file mode 100644 index 000000000..218781ee9 --- /dev/null +++ b/src/DocumentValidator.js @@ -0,0 +1,224 @@ +import contract from './document-schema'; + +const elementKeys = ['text', 'stack', 'columns', 'ul', 'ol', 'table', 'image', 'svg', 'qr', 'canvas', 'toc', 'section', 'attachment', 'pageReference', 'textReference']; +const own = (value, key) => Object.prototype.hasOwnProperty.call(value, key); +const childPath = (path, key) => /^[A-Za-z_$][\w$]*$/.test(key) ? `${path}.${key}` : `${path}[${JSON.stringify(key)}]`; +const plain = value => value !== null && typeof value === 'object' && !Array.isArray(value); + +/** + * Static preflight; callbacks and resource decoding remain render checks. + * @param {unknown} definition + * @param {object} options + * @param {object} context + * @returns {object} + */ +export function validateDocument(definition, options = {}, context = {}) { + if (!plain(options)) throw new TypeError('Validation options must be an object.'); + const max = options.maxDiagnostics === undefined ? 100 : options.maxDiagnostics; + const depth = options.maxDepth === undefined ? 100 : options.maxDepth; + if (!Number.isInteger(max) || max < 1 || max > 10000 || !Number.isInteger(depth) || depth < 1 || depth > 500) throw new RangeError('Validation limits must be positive integers (maxDiagnostics <= 10000, maxDepth <= 500).'); + const result = { valid: true, errors: [], warnings: [], deferred: [], truncated: false }; + const deferred = new Set(); + const diagnostics = new Set(); + const report = (path, code, message, severity = 'error') => { + const key = `${path}:${code}`; + if (diagnostics.has(key)) return; + if (result.errors.length + result.warnings.length >= max) { result.truncated = true; result.valid = false; return; } + diagnostics.add(key); + result[severity === 'error' ? 'errors' : 'warnings'].push({ path, code, message, severity }); + }; + // Reject accessors and cyclic input before traversing the contract; never call getters. + const ancestors = new WeakSet(); + let count = 0; + const snapshot = (value, path, level) => { + if (++count > 50000) { report(path, 'LIMIT', 'Document exceeds the 50000-value validation budget.'); return undefined; } + if (level > depth) { report(path, 'DEPTH', `Document nesting exceeds ${depth}.`); return undefined; } + if (!value || typeof value !== 'object') return value; + if (ancestors.has(value)) { report(path, 'CYCLE', 'Circular document reference.'); return undefined; } + if (value instanceof Date || ArrayBuffer.isView(value) || value instanceof ArrayBuffer) return value; + const proto = Object.getPrototypeOf(value); + if (!Array.isArray(value) && proto !== Object.prototype && proto !== null && Object.getPrototypeOf(proto) !== null) { report(path, 'OBJECT', 'Use plain data objects in document definitions.'); return undefined; } + ancestors.add(value); + if (Array.isArray(value) && value.length > 50000) { + report(path, 'LIMIT', 'Array length exceeds the 50000-value validation budget.'); + ancestors.delete(value); + return []; + } + const copy = Array.isArray(value) ? new Array(value.length) : Object.create(null); + for (const key of Object.keys(value)) { + const descriptor = Object.getOwnPropertyDescriptor(value, key); + const next = Array.isArray(value) ? `${path}[${key}]` : childPath(path, key); + if (!own(descriptor, 'value')) report(next, 'ACCESSOR', 'Accessors cannot be validated without executing application code.'); + else copy[key] = snapshot(descriptor.value, next, level + 1); + if (count > 50000) break; + } + ancestors.delete(value); + return copy; + }; + let doc; + try { doc = snapshot(definition, '$', 0); } + catch (error) { report('$', 'OBJECT', `Unable to inspect document: ${error.message}`); } + const nodes = contract.nodes; + const shapes = new WeakMap(); + const inspect = (value, id, path, level = 0) => { + if (level > depth * 10 + 20) return [{ path, code: 'DEPTH', message: 'Contract nesting limit reached.' }]; + const schema = nodes[id]; + const fail = message => [{ path, code: 'TYPE', message }]; + switch (schema.kind) { + case 'unknown': return []; + case 'never': return fail('This property is not supported for this element.'); + case 'literal': return value === schema.value ? [] : fail(`Expected ${JSON.stringify(schema.value)}.`); + case 'null': return value === null ? [] : fail('Expected null.'); + case 'number': return typeof value === 'number' && Number.isFinite(value) ? [] : fail('Expected a finite number.'); + case 'string': case 'undefined': return typeof value === schema.kind ? [] : fail(`Expected ${schema.kind}.`); + case 'function': return typeof value === 'function' ? [] : fail('Expected a function.'); + case 'opaque': { + const valid = schema.name === 'Date' ? value instanceof Date && Number.isFinite(value.getTime()) : schema.name === 'ArrayBuffer' ? value instanceof ArrayBuffer : schema.name === 'SVGElement' ? false : ArrayBuffer.isView(value); + return valid ? [] : fail(`Expected ${schema.name}${schema.name === 'SVGElement' ? '; prefer an SVG string for portable validation' : ''}.`); + } + case 'union': { + let candidates = schema.items; + if (plain(value)) { + const primary = elementKeys.find(key => own(value, key)); + const matched = primary && candidates.filter(item => nodes[item].kind === 'object' && nodes[item].properties[primary] && !nodes[item].properties[primary].optional); + if (matched && matched.length) candidates = matched; + } + let best; + for (const item of candidates) { + const errors = inspect(value, item, path, level + 1); + if (!errors.length) return []; + // Prefer the structurally matching branch over a scalar mismatch. + const score = errors.reduce((sum, e) => sum + (e.path === path ? 100 : 1), 0); + if (!best || score < best.score) best = { score, errors }; + } + return best ? best.errors : fail('Unsupported value.'); + } + case 'array': case 'tuple': { + if (!Array.isArray(value)) return fail('Expected an array.'); + const errors = []; + if (schema.kind === 'tuple' && value.length !== schema.items.length) return fail(`Expected exactly ${schema.items.length} items.`); + for (let i = 0; i < value.length && errors.length <= max; i++) errors.push(...inspect(value[i], schema.kind === 'array' ? schema.item : schema.items[i], `${path}[${i}]`, level + 1)); + return errors; + } + case 'object': { + if (!plain(value) || value instanceof Date || ArrayBuffer.isView(value)) return fail('Expected an object.'); + const errors = []; + if (!Object.keys(schema.properties).length && schema.index === undefined && Object.keys(value).length) return fail('Expected an empty placeholder object.'); + for (const key of Object.keys(schema.properties)) { + const p = schema.properties[key]; + if (!own(value, key)) { if (!p.optional) errors.push({ path: childPath(path, key), code: 'REQUIRED', message: 'Required property is missing.' }); } + else errors.push(...inspect(value[key], p.type, childPath(path, key), level + 1)); + if (errors.length > max) break; + } + for (const key of Object.keys(value)) { + if (own(schema.properties, key)) continue; + if (schema.index !== undefined) errors.push(...inspect(value[key], schema.index, childPath(path, key), level + 1)); + else errors.push({ path: childPath(path, key), code: 'UNKNOWN_PROPERTY', message: `Unknown property '${key}'; check spelling or retain as custom metadata.`, severity: options.strict ? 'error' : 'warning' }); + if (errors.length > max) break; + } + const score = errors.reduce((sum, item) => sum + (item.path === path ? 100 : 1), 0); + if (!shapes.has(value) || score < shapes.get(value).score) shapes.set(value, { schema, score }); + return errors; + } + default: return fail('Unsupported contract.'); + } + }; + for (const item of inspect(doc, contract.entry, '$')) report(item.path, item.code, item.message, item.severity); + const ids = new Map(); + const references = []; + const styles = plain(doc) && plain(doc.styles) ? doc.styles : {}; + const patterns = plain(doc) && plain(doc.patterns) ? doc.patterns : {}; + const numericPositive = new Set(['fontSize', 'lineHeight', 'colSpan', 'rowSpan', 'r', 'r1', 'r2', 'eccLevel']); + const nonNegative = new Set(['lineWidth', 'columnGap', 'headerRows', 'keepWithHeaderRows']); + const walk = (value, path, level = 0, sectionAllowed = false) => { + if (!value || typeof value !== 'object' || value instanceof Date || ArrayBuffer.isView(value) || level > depth) return; + if (Array.isArray(value)) { value.forEach((item, i) => walk(item, `${path}[${i}]`, level + 1, sectionAllowed)); return; } + const shape = shapes.get(value)?.schema; + if (!shape) return; + if (own(shape.properties, 'section') && own(value, 'section') && !sectionAllowed) report(path + '.section', 'SECTION_LOCATION', 'Sections are allowed only in root content and its stacks.'); + if (own(shape.properties, 'id') && typeof value.id === 'string') { + if (ids.has(value.id)) report(childPath(path, 'id'), 'DUPLICATE_ID', `Duplicate id '${value.id}' (first at ${ids.get(value.id)}).`); + else ids.set(value.id, path); + } + for (const key of Object.keys(value)) { + const item = value[key], at = childPath(path, key); + if (!own(shape.properties, key)) { + if (shape.index !== undefined) walk(item, at, level + 1); + continue; + } + if (typeof item === 'function') deferred.add(at); + if (typeof item === 'number') { + if (!Number.isFinite(item)) report(at, 'NUMBER', 'Expected a finite number.'); + if ((numericPositive.has(key) || ['width', 'height'].includes(key)) && item <= 0) report(at, 'RANGE', 'Expected a positive number.'); + if (nonNegative.has(key) && item < 0) report(at, 'RANGE', 'Expected a non-negative number.'); + if (/opacity$/i.test(key) && (item < 0 || item > 1)) report(at, 'RANGE', 'Opacity must be between 0 and 1.'); + if (['rowSpan', 'colSpan', 'headerRows', 'keepWithHeaderRows'].includes(key) && !Number.isInteger(item)) report(at, 'INTEGER', 'Expected an integer.'); + } + if (['pageReference', 'textReference', 'linkToDestination'].includes(key) && typeof item === 'string') references.push({ id: item, path: at }); + if (key === 'style') for (const name of Array.isArray(item) ? item : [item]) if (typeof name === 'string' && !own(styles, name)) report(at, 'STYLE_REFERENCE', `Style '${name}' is not defined in styles.`); + if (key === 'font' && typeof item === 'string' && !own(context.fonts || {}, item)) report(at, 'FONT_REFERENCE', `Font '${item}' is not registered.`); + if (key === 'layout' && typeof item === 'string' && !['noBorders', 'headerLineOnly', 'lightHorizontalLines'].includes(item) && !own(context.tableLayouts || {}, item)) report(at, 'LAYOUT_REFERENCE', `Table layout '${item}' is not registered.`); + if (['fillColor', 'color', 'overlayPattern'].includes(key) && Array.isArray(item) && typeof item[0] === 'string' && !own(patterns, item[0])) report(at, 'PATTERN_REFERENCE', `Pattern '${item[0]}' is not defined.`); + if (['image', 'svg', 'attachment', 'src'].includes(key) && (typeof item === 'string' || plain(item))) deferred.add(at + ' (resource decoding/access)'); + if (['attachment', 'linkToFile'].includes(key) && typeof item === 'string' && !own(doc.attachments || {}, item)) report(at, 'ATTACHMENT_REFERENCE', `Attachment '${item}' is not defined.`); + if (['width', 'widths'].includes(key)) { + for (const size of Array.isArray(item) ? item : [item]) if (typeof size === 'string' && !['*', 'auto'].includes(size) && !/^(?:\d+(?:\.\d+)?|\.\d+)%$/.test(size)) report(at, 'SIZE', 'Expected a numeric width, percentage, auto or *.'); + } + walk(item, at, level + 1, path === '$' && key === 'content' || key === 'stack' && sectionAllowed); + } + if (own(shape.properties, 'table') && plain(value.table)) validateTable(value.table, childPath(path, 'table'), report); + }; + walk(doc, '$'); + for (const reference of references) if (!ids.has(reference.id)) { + if (result.deferred.length || [...deferred].some(path => !path.includes('(resource'))) deferred.add(reference.path + ' (target may be generated dynamically)'); + else report(reference.path, 'ID_REFERENCE', `Target '${reference.id}' does not exist.`); + } + result.deferred = [...deferred]; + result.valid = result.valid && !result.errors.length; + return result; +} + +function validateTable(table, path, report) { + if (!Array.isArray(table.body)) return; + const rows = table.body; + const width = Array.isArray(rows[0]) ? rows[0].length : 0; + if (!rows.length || !width) report(`${path}.body`, 'TABLE_EMPTY', 'Table body requires at least one non-empty row.'); + if (Array.isArray(table.widths) && table.widths.length !== width) report(`${path}.widths`, 'TABLE_WIDTHS', `Expected ${width} column widths.`); + if (table.headerRows > rows.length) report(`${path}.headerRows`, 'TABLE_HEADERS', 'headerRows exceeds the number of rows.'); + const covered = new Set(); + rows.forEach((row, r) => { + if (!Array.isArray(row)) return; + if (row.length !== width) report(`${path}.body[${r}]`, 'TABLE_COLUMNS', `Expected ${width} cells including span placeholders; received ${row.length}.`); + row.forEach((cell, c) => { + const at = `${path}.body[${r}][${c}]`; + if (cell === undefined) report(at, 'TABLE_CELL', 'Undefined table cell; use an empty string or {} placeholder.'); + if (covered.has(`${r}:${c}`)) { + if (plain(cell) && Object.keys(cell).length) report(at, 'TABLE_SPAN_PLACEHOLDER', 'A covered span cell must be an empty placeholder.'); + else if (!plain(cell) && cell !== '' && cell !== null) report(at, 'TABLE_SPAN_PLACEHOLDER', 'A covered span cell must be an empty placeholder.'); + return; + } + if (!plain(cell)) return; + const rs = cell.rowSpan || 1, cs = cell.colSpan || 1; + if (!Number.isInteger(rs) || !Number.isInteger(cs) || rs < 1 || cs < 1) return; + if (r + rs > rows.length) report(at + '.rowSpan', 'TABLE_SPAN', 'rowSpan extends beyond the table body.'); + if (c + cs > width) report(at + '.colSpan', 'TABLE_SPAN', 'colSpan extends beyond the table width.'); + for (let y = r; y < Math.min(rows.length, r + rs); y++) for (let x = c; x < Math.min(width, c + cs); x++) if (y !== r || x !== c) { + if (covered.has(`${y}:${x}`)) report(at, 'TABLE_SPAN_OVERLAP', 'Cell spans overlap.'); + covered.add(`${y}:${x}`); + } + }); + }); +} + +export function assertValidDocument(definition, options, context) { + const result = validateDocument(definition, options, context); + if (!result.valid) { + const error = new Error('Document validation failed:\n' + result.errors.map(item => `${item.path}: ${item.message}`).join('\n') + (result.truncated ? '\nValidation limit reached.' : '')); + error.name = 'DocumentValidationError'; + error.code = 'PDFMAKE_VALIDATION_ERROR'; + error.phase = 'validation'; + error.diagnostics = result.errors; + throw error; + } + return result; +} diff --git a/src/OutputDocument.js b/src/OutputDocument.js index 38bcf5a3c..8bbaf721e 100644 --- a/src/OutputDocument.js +++ b/src/OutputDocument.js @@ -22,6 +22,8 @@ class OutputDocument { const getBufferInternal = (async () => { const stream = await this.getStream(); return new Promise((resolve, reject) => { + if (stream.errored) { reject(stream.errored); return; } + if (stream.destroyed) { reject(new Error('PDF output stream was destroyed before it could be read.')); return; } let chunks = []; stream.on('data', chunk => { chunks.push(chunk); @@ -30,6 +32,9 @@ class OutputDocument { resolve(Buffer.concat(chunks)); }); stream.on('error', reject); + stream.on('close', () => { + if (!stream.readableEnded) reject(new Error('PDF output stream closed before completion.')); + }); stream.end(); }); }); diff --git a/src/OutputDocumentServer.js b/src/OutputDocumentServer.js index 58148c483..73cbfae99 100644 --- a/src/OutputDocumentServer.js +++ b/src/OutputDocumentServer.js @@ -1,5 +1,6 @@ import OutputDocument from './OutputDocument'; import fs from 'fs'; +import { pipeline } from 'stream/promises'; class OutputDocumentServer extends OutputDocument { @@ -11,20 +12,13 @@ class OutputDocumentServer extends OutputDocument { const stream = await this.getStream(); const writeStream = fs.createWriteStream(filename); - const streamEnded = new Promise((resolve, reject) => { - stream.on('end', resolve); - stream.on('error', reject); - }); - - const writeClosed = new Promise((resolve, reject) => { - writeStream.on('close', resolve); - writeStream.on('error', reject); - }); - - stream.pipe(writeStream); - stream.end(); - - await Promise.all([streamEnded, writeClosed]); + const completed = pipeline(stream, writeStream); + try { + stream.end(); + } catch (error) { + stream.destroy(error); + } + await completed; } } diff --git a/src/TextInlines.js b/src/TextInlines.js index e4e48ad13..390462d14 100644 --- a/src/TextInlines.js +++ b/src/TextInlines.js @@ -9,23 +9,48 @@ const TRAILING = /(\s)+$/g; * @returns {Array} */ const flattenTextArray = array => { - function flatten(array) { - return array.reduce((prev, cur) => { - let current = Array.isArray(cur.text) ? flatten(cur.text) : cur; - let more = [].concat(current).some(Array.isArray); - return prev.concat(more ? flatten(current) : current); - }, []); - } - if (!Array.isArray(array)) { array = [array]; } // TODO: Styling in nested text (issue: https://github.com/bpampuch/pdfmake/issues/1174) - array = flatten(array); - - return array; + // Append each leaf once instead of copying the accumulated prefix with concat. + // Explicit frames also avoid overflowing the call stack for deeply nested text. + const result = []; + const stack = [{ array, index: 0 }]; + while (stack.length) { + const frame = stack[stack.length - 1]; + if (frame.index >= frame.array.length) { + stack.pop(); + continue; + } + const index = frame.index++; + if (!(index in frame.array)) { + continue; // Array.reduce skipped sparse entries in the previous implementation. + } + const item = frame.array[index]; + if (Array.isArray(item.text)) { + stack.push({ array: item.text, index: 0 }); + } else if (Array.isArray(item)) { + if (item.some(Array.isArray)) { + stack.push({ array: item, index: 0 }); + } else { + // concat previously copied a flat array without inspecting its objects. + // Preserve that behavior, including sparse entries and nested styles. + for (let i = 0; i < item.length; i++) { + if (i in item) { + result.push(item[i]); + } else { + result.length++; + } + } + } + } else { + result.push(item); + } + } + return result; }; diff --git a/src/base.js b/src/base.js index c07364e16..fdec955c6 100644 --- a/src/base.js +++ b/src/base.js @@ -3,6 +3,7 @@ import virtualfs from './virtual-fs'; import { pack } from './helpers/tools'; import { isObject } from './helpers/variableType'; import URLResolver from './URLResolver'; +import { validateDocument, assertValidDocument } from './DocumentValidator'; class pdfmake { @@ -26,6 +27,8 @@ class pdfmake { throw new Error("Parameter 'options' has an invalid type. Object expected."); } + if (options.validation) assertValidDocument(docDefinition, options.validation === true ? {} : options.validation, this); + options.progressCallback = this.progressCallback; options.tableLayouts = this.tableLayouts; @@ -45,7 +48,12 @@ class pdfmake { urlResolver.setUrlAccessPolicy(this.urlAccessPolicy); let printer = new Printer(this.fonts, this.virtualfs, urlResolver, this.localAccessPolicy); - const pdfDocumentPromise = printer.createPdfKitDocument(docDefinition, options); + const pdfDocumentPromise = printer.createPdfKitDocument(docDefinition, options).catch(error => { + if (!(error instanceof Error)) error = new Error(String(error)); + if (!error.code) error.code = 'PDFMAKE_RENDER_ERROR'; + if (!error.phase) error.phase = 'render'; + throw error; + }); return this._transformToDocument(pdfDocumentPromise); } @@ -61,6 +69,10 @@ class pdfmake { this.urlAccessPolicy = callback; } + validateDocument(docDefinition, options) { + return validateDocument(docDefinition, options, this); + } + setProgressCallback(callback) { this.progressCallback = callback; } diff --git a/src/document-schema.js b/src/document-schema.js new file mode 100644 index 000000000..782408de8 --- /dev/null +++ b/src/document-schema.js @@ -0,0 +1,23159 @@ +// Generated by scripts/build-document-schema.cjs from types/interfaces.d.ts; do not edit. +export default { + "entry": 0, + "nodes": [ + { + "kind": "object", + "properties": { + "content": { + "type": 1, + "optional": false + }, + "background": { + "type": 530, + "optional": true + }, + "compress": { + "type": 11, + "optional": true + }, + "defaultStyle": { + "type": 587, + "optional": true + }, + "footer": { + "type": 522, + "optional": true + }, + "header": { + "type": 522, + "optional": true + }, + "images": { + "type": 588, + "optional": true + }, + "info": { + "type": 594, + "optional": true + }, + "pageBreakBefore": { + "type": 602, + "optional": true + }, + "pageMargins": { + "type": 279, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "pageSize": { + "type": 604, + "optional": true + }, + "styles": { + "type": 605, + "optional": true + }, + "userPassword": { + "type": 13, + "optional": true + }, + "ownerPassword": { + "type": 13, + "optional": true + }, + "permissions": { + "type": 609, + "optional": true + }, + "version": { + "type": 614, + "optional": true + }, + "subset": { + "type": 621, + "optional": true + }, + "tagged": { + "type": 11, + "optional": true + }, + "displayTitle": { + "type": 11, + "optional": true + }, + "watermark": { + "type": 632, + "optional": true + }, + "patterns": { + "type": 633, + "optional": true + }, + "language": { + "type": 13, + "optional": true + }, + "attachments": { + "type": 636, + "optional": true + }, + "files": { + "type": 636, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 2, + 3, + 4, + 5, + 6, + 7, + 9, + 10, + 299, + 408, + 409, + 410, + 411, + 400, + 412, + 413, + 414, + 415, + 422, + 430, + 433, + 443, + 466, + 523 + ] + }, + { + "kind": "null" + }, + { + "kind": "string" + }, + { + "kind": "number" + }, + { + "kind": "literal", + "value": false + }, + { + "kind": "literal", + "value": true + }, + { + "kind": "object", + "properties": {}, + "index": 8 + }, + { + "kind": "never" + }, + { + "kind": "array", + "item": 1 + }, + { + "kind": "object", + "properties": { + "text": { + "type": 1, + "optional": false + }, + "outline": { + "type": 11, + "optional": true + }, + "outlineText": { + "type": 13, + "optional": true + }, + "outlineExpanded": { + "type": 11, + "optional": true + }, + "outlineParentId": { + "type": 13, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 5, + 6 + ] + }, + { + "kind": "undefined" + }, + { + "kind": "union", + "items": [ + 12, + 3 + ] + }, + { + "kind": "union", + "items": [ + 12, + 4 + ] + }, + { + "kind": "union", + "items": [ + 12, + 16 + ] + }, + { + "kind": "tuple", + "items": [ + 3, + 3 + ] + }, + { + "kind": "union", + "items": [ + 12, + 3, + 18, + 285 + ] + }, + { + "kind": "object", + "properties": { + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 20 + ] + }, + { + "kind": "array", + "item": 21 + }, + { + "kind": "union", + "items": [ + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 122, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 141, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 154, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 186, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 218, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 237, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 250, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260 + ] + }, + { + "kind": "literal", + "value": "case" + }, + { + "kind": "literal", + "value": "trad" + }, + { + "kind": "literal", + "value": "mark" + }, + { + "kind": "literal", + "value": "ruby" + }, + { + "kind": "literal", + "value": "size" + }, + { + "kind": "literal", + "value": "zero" + }, + { + "kind": "literal", + "value": "half" + }, + { + "kind": "literal", + "value": "aalt" + }, + { + "kind": "literal", + "value": "abvf" + }, + { + "kind": "literal", + "value": "abvm" + }, + { + "kind": "literal", + "value": "abvs" + }, + { + "kind": "literal", + "value": "afrc" + }, + { + "kind": "literal", + "value": "akhn" + }, + { + "kind": "literal", + "value": "blwf" + }, + { + "kind": "literal", + "value": "blwm" + }, + { + "kind": "literal", + "value": "blws" + }, + { + "kind": "literal", + "value": "calt" + }, + { + "kind": "literal", + "value": "cfar" + }, + { + "kind": "literal", + "value": "cjct" + }, + { + "kind": "literal", + "value": "clig" + }, + { + "kind": "literal", + "value": "cpct" + }, + { + "kind": "literal", + "value": "cpsp" + }, + { + "kind": "literal", + "value": "cswh" + }, + { + "kind": "literal", + "value": "curs" + }, + { + "kind": "literal", + "value": "cv01" + }, + { + "kind": "literal", + "value": "cv02" + }, + { + "kind": "literal", + "value": "cv03" + }, + { + "kind": "literal", + "value": "cv04" + }, + { + "kind": "literal", + "value": "cv05" + }, + { + "kind": "literal", + "value": "cv06" + }, + { + "kind": "literal", + "value": "cv07" + }, + { + "kind": "literal", + "value": "cv08" + }, + { + "kind": "literal", + "value": "cv09" + }, + { + "kind": "literal", + "value": "cv10" + }, + { + "kind": "literal", + "value": "cv11" + }, + { + "kind": "literal", + "value": "cv12" + }, + { + "kind": "literal", + "value": "cv13" + }, + { + "kind": "literal", + "value": "cv14" + }, + { + "kind": "literal", + "value": "cv15" + }, + { + "kind": "literal", + "value": "cv16" + }, + { + "kind": "literal", + "value": "cv17" + }, + { + "kind": "literal", + "value": "cv18" + }, + { + "kind": "literal", + "value": "cv19" + }, + { + "kind": "literal", + "value": "cv20" + }, + { + "kind": "literal", + "value": "cv21" + }, + { + "kind": "literal", + "value": "cv22" + }, + { + "kind": "literal", + "value": "cv23" + }, + { + "kind": "literal", + "value": "cv24" + }, + { + "kind": "literal", + "value": "cv25" + }, + { + "kind": "literal", + "value": "cv26" + }, + { + "kind": "literal", + "value": "cv27" + }, + { + "kind": "literal", + "value": "cv28" + }, + { + "kind": "literal", + "value": "cv29" + }, + { + "kind": "literal", + "value": "cv30" + }, + { + "kind": "literal", + "value": "cv31" + }, + { + "kind": "literal", + "value": "cv32" + }, + { + "kind": "literal", + "value": "cv33" + }, + { + "kind": "literal", + "value": "cv34" + }, + { + "kind": "literal", + "value": "cv35" + }, + { + "kind": "literal", + "value": "cv36" + }, + { + "kind": "literal", + "value": "cv37" + }, + { + "kind": "literal", + "value": "cv38" + }, + { + "kind": "literal", + "value": "cv39" + }, + { + "kind": "literal", + "value": "cv40" + }, + { + "kind": "literal", + "value": "cv41" + }, + { + "kind": "literal", + "value": "cv42" + }, + { + "kind": "literal", + "value": "cv43" + }, + { + "kind": "literal", + "value": "cv44" + }, + { + "kind": "literal", + "value": "cv45" + }, + { + "kind": "literal", + "value": "cv46" + }, + { + "kind": "literal", + "value": "cv47" + }, + { + "kind": "literal", + "value": "cv48" + }, + { + "kind": "literal", + "value": "cv49" + }, + { + "kind": "literal", + "value": "cv50" + }, + { + "kind": "literal", + "value": "cv51" + }, + { + "kind": "literal", + "value": "cv52" + }, + { + "kind": "literal", + "value": "cv53" + }, + { + "kind": "literal", + "value": "cv54" + }, + { + "kind": "literal", + "value": "cv55" + }, + { + "kind": "literal", + "value": "cv56" + }, + { + "kind": "literal", + "value": "cv57" + }, + { + "kind": "literal", + "value": "cv58" + }, + { + "kind": "literal", + "value": "cv59" + }, + { + "kind": "literal", + "value": "cv60" + }, + { + "kind": "literal", + "value": "cv61" + }, + { + "kind": "literal", + "value": "cv62" + }, + { + "kind": "literal", + "value": "cv63" + }, + { + "kind": "literal", + "value": "cv64" + }, + { + "kind": "literal", + "value": "cv65" + }, + { + "kind": "literal", + "value": "cv66" + }, + { + "kind": "literal", + "value": "cv67" + }, + { + "kind": "literal", + "value": "cv68" + }, + { + "kind": "literal", + "value": "cv69" + }, + { + "kind": "literal", + "value": "cv70" + }, + { + "kind": "literal", + "value": "cv71" + }, + { + "kind": "literal", + "value": "cv72" + }, + { + "kind": "literal", + "value": "cv73" + }, + { + "kind": "literal", + "value": "cv74" + }, + { + "kind": "literal", + "value": "cv75" + }, + { + "kind": "literal", + "value": "cv76" + }, + { + "kind": "literal", + "value": "cv77" + }, + { + "kind": "literal", + "value": "cv78" + }, + { + "kind": "literal", + "value": "cv79" + }, + { + "kind": "literal", + "value": "cv80" + }, + { + "kind": "literal", + "value": "cv81" + }, + { + "kind": "literal", + "value": "cv82" + }, + { + "kind": "literal", + "value": "cv83" + }, + { + "kind": "literal", + "value": "cv84" + }, + { + "kind": "literal", + "value": "cv85" + }, + { + "kind": "literal", + "value": "cv86" + }, + { + "kind": "literal", + "value": "cv87" + }, + { + "kind": "literal", + "value": "cv88" + }, + { + "kind": "literal", + "value": "cv89" + }, + { + "kind": "literal", + "value": "cv90" + }, + { + "kind": "literal", + "value": "cv91" + }, + { + "kind": "literal", + "value": "cv92" + }, + { + "kind": "literal", + "value": "cv93" + }, + { + "kind": "literal", + "value": "cv94" + }, + { + "kind": "literal", + "value": "cv95" + }, + { + "kind": "literal", + "value": "cv96" + }, + { + "kind": "literal", + "value": "cv97" + }, + { + "kind": "literal", + "value": "cv98" + }, + { + "kind": "literal", + "value": "cv99" + }, + { + "kind": "literal", + "value": "c2pc" + }, + { + "kind": "literal", + "value": "c2sc" + }, + { + "kind": "literal", + "value": "dist" + }, + { + "kind": "literal", + "value": "ccmp" + }, + { + "kind": "literal", + "value": "dlig" + }, + { + "kind": "literal", + "value": "dnom" + }, + { + "kind": "literal", + "value": "dtls" + }, + { + "kind": "literal", + "value": "expt" + }, + { + "kind": "literal", + "value": "falt" + }, + { + "kind": "literal", + "value": "fin2" + }, + { + "kind": "literal", + "value": "fin3" + }, + { + "kind": "literal", + "value": "fina" + }, + { + "kind": "literal", + "value": "flac" + }, + { + "kind": "literal", + "value": "frac" + }, + { + "kind": "literal", + "value": "fwid" + }, + { + "kind": "literal", + "value": "haln" + }, + { + "kind": "literal", + "value": "halt" + }, + { + "kind": "literal", + "value": "hist" + }, + { + "kind": "literal", + "value": "hkna" + }, + { + "kind": "literal", + "value": "hlig" + }, + { + "kind": "literal", + "value": "hngl" + }, + { + "kind": "literal", + "value": "hojo" + }, + { + "kind": "literal", + "value": "hwid" + }, + { + "kind": "literal", + "value": "init" + }, + { + "kind": "literal", + "value": "isol" + }, + { + "kind": "literal", + "value": "ital" + }, + { + "kind": "literal", + "value": "jalt" + }, + { + "kind": "literal", + "value": "jp78" + }, + { + "kind": "literal", + "value": "jp83" + }, + { + "kind": "literal", + "value": "jp90" + }, + { + "kind": "literal", + "value": "jp04" + }, + { + "kind": "literal", + "value": "kern" + }, + { + "kind": "literal", + "value": "lfbd" + }, + { + "kind": "literal", + "value": "liga" + }, + { + "kind": "literal", + "value": "ljmo" + }, + { + "kind": "literal", + "value": "lnum" + }, + { + "kind": "literal", + "value": "locl" + }, + { + "kind": "literal", + "value": "ltra" + }, + { + "kind": "literal", + "value": "ltrm" + }, + { + "kind": "literal", + "value": "med2" + }, + { + "kind": "literal", + "value": "medi" + }, + { + "kind": "literal", + "value": "mgrk" + }, + { + "kind": "literal", + "value": "mkmk" + }, + { + "kind": "literal", + "value": "mset" + }, + { + "kind": "literal", + "value": "nalt" + }, + { + "kind": "literal", + "value": "nlck" + }, + { + "kind": "literal", + "value": "nukt" + }, + { + "kind": "literal", + "value": "numr" + }, + { + "kind": "literal", + "value": "onum" + }, + { + "kind": "literal", + "value": "opbd" + }, + { + "kind": "literal", + "value": "ordn" + }, + { + "kind": "literal", + "value": "ornm" + }, + { + "kind": "literal", + "value": "palt" + }, + { + "kind": "literal", + "value": "pcap" + }, + { + "kind": "literal", + "value": "pkna" + }, + { + "kind": "literal", + "value": "pnum" + }, + { + "kind": "literal", + "value": "pref" + }, + { + "kind": "literal", + "value": "pres" + }, + { + "kind": "literal", + "value": "pstf" + }, + { + "kind": "literal", + "value": "psts" + }, + { + "kind": "literal", + "value": "pwid" + }, + { + "kind": "literal", + "value": "qwid" + }, + { + "kind": "literal", + "value": "rand" + }, + { + "kind": "literal", + "value": "rclt" + }, + { + "kind": "literal", + "value": "rkrf" + }, + { + "kind": "literal", + "value": "rlig" + }, + { + "kind": "literal", + "value": "rphf" + }, + { + "kind": "literal", + "value": "rtbd" + }, + { + "kind": "literal", + "value": "rtla" + }, + { + "kind": "literal", + "value": "rtlm" + }, + { + "kind": "literal", + "value": "rvrn" + }, + { + "kind": "literal", + "value": "salt" + }, + { + "kind": "literal", + "value": "sinf" + }, + { + "kind": "literal", + "value": "smcp" + }, + { + "kind": "literal", + "value": "smpl" + }, + { + "kind": "literal", + "value": "ss01" + }, + { + "kind": "literal", + "value": "ss02" + }, + { + "kind": "literal", + "value": "ss03" + }, + { + "kind": "literal", + "value": "ss04" + }, + { + "kind": "literal", + "value": "ss05" + }, + { + "kind": "literal", + "value": "ss06" + }, + { + "kind": "literal", + "value": "ss07" + }, + { + "kind": "literal", + "value": "ss08" + }, + { + "kind": "literal", + "value": "ss09" + }, + { + "kind": "literal", + "value": "ss10" + }, + { + "kind": "literal", + "value": "ss11" + }, + { + "kind": "literal", + "value": "ss12" + }, + { + "kind": "literal", + "value": "ss13" + }, + { + "kind": "literal", + "value": "ss14" + }, + { + "kind": "literal", + "value": "ss15" + }, + { + "kind": "literal", + "value": "ss16" + }, + { + "kind": "literal", + "value": "ss17" + }, + { + "kind": "literal", + "value": "ss18" + }, + { + "kind": "literal", + "value": "ss19" + }, + { + "kind": "literal", + "value": "ss20" + }, + { + "kind": "literal", + "value": "ssty" + }, + { + "kind": "literal", + "value": "stch" + }, + { + "kind": "literal", + "value": "subs" + }, + { + "kind": "literal", + "value": "sups" + }, + { + "kind": "literal", + "value": "swsh" + }, + { + "kind": "literal", + "value": "titl" + }, + { + "kind": "literal", + "value": "tjmo" + }, + { + "kind": "literal", + "value": "tnam" + }, + { + "kind": "literal", + "value": "tnum" + }, + { + "kind": "literal", + "value": "twid" + }, + { + "kind": "literal", + "value": "unic" + }, + { + "kind": "literal", + "value": "valt" + }, + { + "kind": "literal", + "value": "vatu" + }, + { + "kind": "literal", + "value": "vert" + }, + { + "kind": "literal", + "value": "vhal" + }, + { + "kind": "literal", + "value": "vjmo" + }, + { + "kind": "literal", + "value": "vkna" + }, + { + "kind": "literal", + "value": "vkrn" + }, + { + "kind": "literal", + "value": "vpal" + }, + { + "kind": "literal", + "value": "vrt2" + }, + { + "kind": "literal", + "value": "vrtr" + }, + { + "kind": "union", + "items": [ + 12, + 262, + 263, + 264, + 265 + ] + }, + { + "kind": "literal", + "value": "center" + }, + { + "kind": "literal", + "value": "left" + }, + { + "kind": "literal", + "value": "right" + }, + { + "kind": "literal", + "value": "justify" + }, + { + "kind": "union", + "items": [ + 12, + 3, + 16 + ] + }, + { + "kind": "union", + "items": [ + 12, + 268, + 269, + 270, + 271 + ] + }, + { + "kind": "literal", + "value": "underline" + }, + { + "kind": "literal", + "value": "lineThrough" + }, + { + "kind": "literal", + "value": "overline" + }, + { + "kind": "array", + "item": 272 + }, + { + "kind": "union", + "items": [ + 268, + 269, + 270 + ] + }, + { + "kind": "union", + "items": [ + 12, + 274, + 275, + 276, + 277, + 278 + ] + }, + { + "kind": "literal", + "value": "double" + }, + { + "kind": "literal", + "value": "solid" + }, + { + "kind": "literal", + "value": "dashed" + }, + { + "kind": "literal", + "value": "dotted" + }, + { + "kind": "literal", + "value": "wavy" + }, + { + "kind": "union", + "items": [ + 12, + 4, + 280, + 281 + ] + }, + { + "kind": "tuple", + "items": [ + 4, + 4 + ] + }, + { + "kind": "tuple", + "items": [ + 4, + 4, + 4, + 4 + ] + }, + { + "kind": "union", + "items": [ + 12, + 283, + 284 + ] + }, + { + "kind": "literal", + "value": "normal" + }, + { + "kind": "literal", + "value": "break-all" + }, + { + "kind": "array", + "item": 286 + }, + { + "kind": "union", + "items": [ + 3, + 18 + ] + }, + { + "kind": "union", + "items": [ + 12, + 288 + ] + }, + { + "kind": "object", + "properties": { + "x": { + "type": 14, + "optional": true + }, + "y": { + "type": 14, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 290, + 291, + 292, + 293, + 294, + 295 + ] + }, + { + "kind": "literal", + "value": "after" + }, + { + "kind": "literal", + "value": "before" + }, + { + "kind": "literal", + "value": "beforeEven" + }, + { + "kind": "literal", + "value": "beforeOdd" + }, + { + "kind": "literal", + "value": "afterEven" + }, + { + "kind": "literal", + "value": "afterOdd" + }, + { + "kind": "union", + "items": [ + 12, + 297, + 298 + ] + }, + { + "kind": "literal", + "value": "portrait" + }, + { + "kind": "literal", + "value": "landscape" + }, + { + "kind": "object", + "properties": { + "columns": { + "type": 300, + "optional": false + }, + "snakingColumns": { + "type": 11, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "array", + "item": 301 + }, + { + "kind": "union", + "items": [ + 302, + 303, + 304, + 305, + 306, + 308, + 309, + 310, + 311, + 313, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586 + ] + }, + { + "kind": "string" + }, + { + "kind": "number" + }, + { + "kind": "literal", + "value": false + }, + { + "kind": "literal", + "value": true + }, + { + "kind": "object", + "properties": { + "width": { + "type": 307, + "optional": true + } + }, + "index": 8 + }, + { + "kind": "union", + "items": [ + 12, + 3, + 4 + ] + }, + { + "kind": "array", + "item": 1 + }, + { + "kind": "object", + "properties": { + "text": { + "type": 1, + "optional": false + }, + "outline": { + "type": 11, + "optional": true + }, + "outlineText": { + "type": 13, + "optional": true + }, + "outlineExpanded": { + "type": 11, + "optional": true + }, + "outlineParentId": { + "type": 13, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "columns": { + "type": 300, + "optional": false + }, + "snakingColumns": { + "type": 11, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "stack": { + "type": 312, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "array", + "item": 1 + }, + { + "kind": "object", + "properties": { + "ul": { + "type": 314, + "optional": false + }, + "type": { + "type": 321, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "array", + "item": 315 + }, + { + "kind": "union", + "items": [ + 316, + 317, + 318, + 319, + 320, + 326, + 327, + 328, + 329, + 330, + 331, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 570, + 571, + 572, + 573 + ] + }, + { + "kind": "string" + }, + { + "kind": "number" + }, + { + "kind": "literal", + "value": false + }, + { + "kind": "literal", + "value": true + }, + { + "kind": "object", + "properties": { + "listType": { + "type": 321, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + } + }, + "index": 8 + }, + { + "kind": "union", + "items": [ + 12, + 322, + 323, + 324, + 325 + ] + }, + { + "kind": "literal", + "value": "none" + }, + { + "kind": "literal", + "value": "square" + }, + { + "kind": "literal", + "value": "circle" + }, + { + "kind": "literal", + "value": "disc" + }, + { + "kind": "array", + "item": 1 + }, + { + "kind": "object", + "properties": { + "text": { + "type": 1, + "optional": false + }, + "outline": { + "type": 11, + "optional": true + }, + "outlineText": { + "type": 13, + "optional": true + }, + "outlineExpanded": { + "type": 11, + "optional": true + }, + "outlineParentId": { + "type": 13, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "columns": { + "type": 300, + "optional": false + }, + "snakingColumns": { + "type": 11, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "stack": { + "type": 312, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "ul": { + "type": 314, + "optional": false + }, + "type": { + "type": 321, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "ol": { + "type": 332, + "optional": false + }, + "type": { + "type": 339, + "optional": true + }, + "separator": { + "type": 351, + "optional": true + }, + "reversed": { + "type": 11, + "optional": true + }, + "start": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "array", + "item": 333 + }, + { + "kind": "union", + "items": [ + 334, + 335, + 336, + 337, + 338, + 345, + 346, + 347, + 348, + 349, + 350, + 353, + 551, + 552, + 553, + 554, + 555, + 556, + 557, + 558, + 559, + 560, + 561 + ] + }, + { + "kind": "string" + }, + { + "kind": "number" + }, + { + "kind": "literal", + "value": false + }, + { + "kind": "literal", + "value": true + }, + { + "kind": "object", + "properties": { + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + } + }, + "index": 8 + }, + { + "kind": "union", + "items": [ + 12, + 340, + 322, + 341, + 342, + 343, + 344 + ] + }, + { + "kind": "literal", + "value": "decimal" + }, + { + "kind": "literal", + "value": "lower-alpha" + }, + { + "kind": "literal", + "value": "upper-alpha" + }, + { + "kind": "literal", + "value": "lower-roman" + }, + { + "kind": "literal", + "value": "upper-roman" + }, + { + "kind": "array", + "item": 1 + }, + { + "kind": "object", + "properties": { + "text": { + "type": 1, + "optional": false + }, + "outline": { + "type": 11, + "optional": true + }, + "outlineText": { + "type": 13, + "optional": true + }, + "outlineExpanded": { + "type": 11, + "optional": true + }, + "outlineParentId": { + "type": 13, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "columns": { + "type": 300, + "optional": false + }, + "snakingColumns": { + "type": 11, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "stack": { + "type": 312, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "ul": { + "type": 314, + "optional": false + }, + "type": { + "type": 321, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "ol": { + "type": 332, + "optional": false + }, + "type": { + "type": 339, + "optional": true + }, + "separator": { + "type": 351, + "optional": true + }, + "reversed": { + "type": 11, + "optional": true + }, + "start": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 3, + 352 + ] + }, + { + "kind": "tuple", + "items": [ + 3, + 3 + ] + }, + { + "kind": "object", + "properties": { + "table": { + "type": 354, + "optional": false + }, + "layout": { + "type": 380, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "body": { + "type": 355, + "optional": false + }, + "widths": { + "type": 544, + "optional": true + }, + "heights": { + "type": 548, + "optional": true + }, + "headerRows": { + "type": 14, + "optional": true + }, + "dontBreakRows": { + "type": 11, + "optional": true + }, + "keepWithHeaderRows": { + "type": 14, + "optional": true + } + } + }, + { + "kind": "array", + "item": 356 + }, + { + "kind": "array", + "item": 357 + }, + { + "kind": "union", + "items": [ + 2, + 7, + 358, + 359, + 360, + 361, + 362, + 373, + 374, + 375, + 376, + 377, + 378, + 379, + 398, + 403, + 404, + 405, + 537, + 538, + 539, + 540, + 541, + 542, + 543 + ] + }, + { + "kind": "string" + }, + { + "kind": "number" + }, + { + "kind": "literal", + "value": false + }, + { + "kind": "literal", + "value": true + }, + { + "kind": "object", + "properties": { + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 368, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + }, + "index": 8 + }, + { + "kind": "union", + "items": [ + 12, + 364 + ] + }, + { + "kind": "tuple", + "items": [ + 365, + 365, + 365, + 365 + ] + }, + { + "kind": "union", + "items": [ + 5, + 6 + ] + }, + { + "kind": "union", + "items": [ + 12, + 367 + ] + }, + { + "kind": "tuple", + "items": [ + 3, + 3, + 3, + 3 + ] + }, + { + "kind": "union", + "items": [ + 12, + 2, + 4 + ] + }, + { + "kind": "union", + "items": [ + 12, + 370, + 371, + 372 + ] + }, + { + "kind": "literal", + "value": "top" + }, + { + "kind": "literal", + "value": "bottom" + }, + { + "kind": "literal", + "value": "middle" + }, + { + "kind": "array", + "item": 1 + }, + { + "kind": "object", + "properties": { + "text": { + "type": 1, + "optional": false + }, + "outline": { + "type": 11, + "optional": true + }, + "outlineText": { + "type": 13, + "optional": true + }, + "outlineExpanded": { + "type": 11, + "optional": true + }, + "outlineParentId": { + "type": 13, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "columns": { + "type": 300, + "optional": false + }, + "snakingColumns": { + "type": 11, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "stack": { + "type": 312, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "ul": { + "type": 314, + "optional": false + }, + "type": { + "type": 321, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "ol": { + "type": 332, + "optional": false + }, + "type": { + "type": 339, + "optional": true + }, + "separator": { + "type": 351, + "optional": true + }, + "reversed": { + "type": 11, + "optional": true + }, + "start": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "table": { + "type": 354, + "optional": false + }, + "layout": { + "type": 380, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 3, + 381 + ] + }, + { + "kind": "object", + "properties": { + "hLineWidth": { + "type": 382, + "optional": true + }, + "vLineWidth": { + "type": 384, + "optional": true + }, + "hLineColor": { + "type": 386, + "optional": true + }, + "vLineColor": { + "type": 388, + "optional": true + }, + "hLineStyle": { + "type": 390, + "optional": true + }, + "vLineStyle": { + "type": 392, + "optional": true + }, + "paddingLeft": { + "type": 384, + "optional": true + }, + "paddingRight": { + "type": 384, + "optional": true + }, + "paddingTop": { + "type": 382, + "optional": true + }, + "paddingBottom": { + "type": 382, + "optional": true + }, + "fillColor": { + "type": 394, + "optional": true + }, + "fillOpacity": { + "type": 396, + "optional": true + }, + "defaultBorder": { + "type": 11, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 383 + ] + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 385 + ] + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 3, + 387 + ] + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 3, + 389 + ] + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 391 + ] + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 393 + ] + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 3, + 16, + 395 + ] + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 4, + 397 + ] + }, + { + "kind": "function" + }, + { + "kind": "object", + "properties": { + "text": { + "type": 399, + "optional": false + }, + "id": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 3, + 400, + 401 + ] + }, + { + "kind": "object", + "properties": { + "text": { + "type": 399, + "optional": false + }, + "id": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "array", + "item": 402 + }, + { + "kind": "union", + "items": [ + 3, + 400 + ] + }, + { + "kind": "object", + "properties": { + "pageReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "textReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "toc": { + "type": 406, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "title": { + "type": 407, + "optional": true + }, + "textMargin": { + "type": 279, + "optional": true + }, + "textStyle": { + "type": 17, + "optional": true + }, + "numberStyle": { + "type": 17, + "optional": true + }, + "id": { + "type": 13, + "optional": true + }, + "hideEmpty": { + "type": 11, + "optional": true + }, + "sortBy": { + "type": 534, + "optional": true + }, + "sortLocale": { + "type": 13, + "optional": true + }, + "outlines": { + "type": 11, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 2, + 3, + 4, + 5, + 6, + 7, + 9, + 10, + 299, + 408, + 409, + 410, + 411, + 400, + 412, + 413, + 414, + 415, + 422, + 430, + 433, + 443, + 466, + 523 + ] + }, + { + "kind": "object", + "properties": { + "stack": { + "type": 312, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "ul": { + "type": 314, + "optional": false + }, + "type": { + "type": 321, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "ol": { + "type": 332, + "optional": false + }, + "type": { + "type": 339, + "optional": true + }, + "separator": { + "type": 351, + "optional": true + }, + "reversed": { + "type": 11, + "optional": true + }, + "start": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "table": { + "type": 354, + "optional": false + }, + "layout": { + "type": 380, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "pageReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "textReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "toc": { + "type": 406, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "text": { + "type": 416, + "optional": false + }, + "tocItem": { + "type": 419, + "optional": false + }, + "tocStyle": { + "type": 17, + "optional": true + }, + "tocNumberStyle": { + "type": 17, + "optional": true + }, + "tocMargin": { + "type": 279, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 3, + 415, + 417 + ] + }, + { + "kind": "array", + "item": 418 + }, + { + "kind": "union", + "items": [ + 3, + 415 + ] + }, + { + "kind": "union", + "items": [ + 3, + 5, + 6, + 420 + ] + }, + { + "kind": "array", + "item": 421 + }, + { + "kind": "union", + "items": [ + 3, + 5, + 6 + ] + }, + { + "kind": "object", + "properties": { + "image": { + "type": 3, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "cover": { + "type": 424, + "optional": true + }, + "linkToFile": { + "type": 428, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 280 + ] + }, + { + "kind": "union", + "items": [ + 12, + 425 + ] + }, + { + "kind": "object", + "properties": { + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "align": { + "type": 426, + "optional": true + }, + "valign": { + "type": 427, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 262, + 263, + 264 + ] + }, + { + "kind": "union", + "items": [ + 12, + 262, + 370, + 371 + ] + }, + { + "kind": "union", + "items": [ + 12, + 3, + 429 + ] + }, + { + "kind": "object", + "properties": { + "src": { + "type": 3, + "optional": false + }, + "name": { + "type": 13, + "optional": true + }, + "description": { + "type": 13, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "svg": { + "type": 431, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 3, + 432 + ] + }, + { + "kind": "opaque", + "name": "SVGElement" + }, + { + "kind": "object", + "properties": { + "qr": { + "type": 3, + "optional": false + }, + "foreground": { + "type": 13, + "optional": true + }, + "background": { + "type": 13, + "optional": true + }, + "fit": { + "type": 14, + "optional": true + }, + "version": { + "type": 14, + "optional": true + }, + "eccLevel": { + "type": 434, + "optional": true + }, + "mode": { + "type": 439, + "optional": true + }, + "mask": { + "type": 14, + "optional": true + }, + "padding": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 435, + 436, + 437, + 438 + ] + }, + { + "kind": "literal", + "value": "Q" + }, + { + "kind": "literal", + "value": "L" + }, + { + "kind": "literal", + "value": "M" + }, + { + "kind": "literal", + "value": "H" + }, + { + "kind": "union", + "items": [ + 12, + 440, + 441, + 442 + ] + }, + { + "kind": "literal", + "value": "numeric" + }, + { + "kind": "literal", + "value": "alphanumeric" + }, + { + "kind": "literal", + "value": "octet" + }, + { + "kind": "object", + "properties": { + "canvas": { + "type": 444, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "array", + "item": 445 + }, + { + "kind": "union", + "items": [ + 446, + 456, + 462, + 464 + ] + }, + { + "kind": "object", + "properties": { + "type": { + "type": 447, + "optional": false + }, + "x": { + "type": 4, + "optional": false + }, + "y": { + "type": 4, + "optional": false + }, + "w": { + "type": 4, + "optional": false + }, + "h": { + "type": 4, + "optional": false + }, + "r": { + "type": 14, + "optional": true + }, + "lineWidth": { + "type": 14, + "optional": true + }, + "lineColor": { + "type": 13, + "optional": true + }, + "strokeOpacity": { + "type": 14, + "optional": true + }, + "dash": { + "type": 448, + "optional": true + }, + "lineJoin": { + "type": 450, + "optional": true + }, + "color": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "linearGradient": { + "type": 454, + "optional": true + } + } + }, + { + "kind": "literal", + "value": "rect" + }, + { + "kind": "union", + "items": [ + 12, + 449 + ] + }, + { + "kind": "object", + "properties": { + "length": { + "type": 4, + "optional": false + }, + "space": { + "type": 14, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 451, + 452, + 453 + ] + }, + { + "kind": "literal", + "value": "round" + }, + { + "kind": "literal", + "value": "bevel" + }, + { + "kind": "literal", + "value": "miter" + }, + { + "kind": "union", + "items": [ + 12, + 455 + ] + }, + { + "kind": "array", + "item": 3 + }, + { + "kind": "object", + "properties": { + "type": { + "type": 457, + "optional": false + }, + "points": { + "type": 458, + "optional": false + }, + "closePath": { + "type": 11, + "optional": true + }, + "lineCap": { + "type": 460, + "optional": true + }, + "lineWidth": { + "type": 14, + "optional": true + }, + "lineColor": { + "type": 13, + "optional": true + }, + "strokeOpacity": { + "type": 14, + "optional": true + }, + "dash": { + "type": 448, + "optional": true + }, + "lineJoin": { + "type": 450, + "optional": true + }, + "color": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "linearGradient": { + "type": 454, + "optional": true + } + } + }, + { + "kind": "literal", + "value": "polyline" + }, + { + "kind": "array", + "item": 459 + }, + { + "kind": "object", + "properties": { + "x": { + "type": 4, + "optional": false + }, + "y": { + "type": 4, + "optional": false + } + } + }, + { + "kind": "union", + "items": [ + 12, + 323, + 461, + 451 + ] + }, + { + "kind": "literal", + "value": "butt" + }, + { + "kind": "object", + "properties": { + "type": { + "type": 463, + "optional": false + }, + "x1": { + "type": 4, + "optional": false + }, + "y1": { + "type": 4, + "optional": false + }, + "x2": { + "type": 4, + "optional": false + }, + "y2": { + "type": 4, + "optional": false + }, + "lineCap": { + "type": 460, + "optional": true + }, + "lineWidth": { + "type": 14, + "optional": true + }, + "lineColor": { + "type": 13, + "optional": true + }, + "strokeOpacity": { + "type": 14, + "optional": true + }, + "dash": { + "type": 448, + "optional": true + }, + "lineJoin": { + "type": 450, + "optional": true + } + } + }, + { + "kind": "literal", + "value": "line" + }, + { + "kind": "object", + "properties": { + "type": { + "type": 465, + "optional": false + }, + "x": { + "type": 4, + "optional": false + }, + "y": { + "type": 4, + "optional": false + }, + "r1": { + "type": 4, + "optional": false + }, + "r2": { + "type": 14, + "optional": true + }, + "lineWidth": { + "type": 14, + "optional": true + }, + "lineColor": { + "type": 13, + "optional": true + }, + "strokeOpacity": { + "type": 14, + "optional": true + }, + "dash": { + "type": 448, + "optional": true + }, + "lineJoin": { + "type": 450, + "optional": true + }, + "color": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "linearGradient": { + "type": 454, + "optional": true + } + } + }, + { + "kind": "literal", + "value": "ellipse" + }, + { + "kind": "object", + "properties": { + "section": { + "type": 1, + "optional": false + }, + "pageSize": { + "type": 467, + "optional": true + }, + "pageOrientation": { + "type": 520, + "optional": true + }, + "pageMargins": { + "type": 521, + "optional": true + }, + "header": { + "type": 522, + "optional": true + }, + "footer": { + "type": 522, + "optional": true + }, + "background": { + "type": 530, + "optional": true + }, + "watermark": { + "type": 532, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 2, + 468, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517 + ] + }, + { + "kind": "literal", + "value": "inherit" + }, + { + "kind": "literal", + "value": "4A0" + }, + { + "kind": "literal", + "value": "2A0" + }, + { + "kind": "literal", + "value": "A0" + }, + { + "kind": "literal", + "value": "A1" + }, + { + "kind": "literal", + "value": "A2" + }, + { + "kind": "literal", + "value": "A3" + }, + { + "kind": "literal", + "value": "A4" + }, + { + "kind": "literal", + "value": "A5" + }, + { + "kind": "literal", + "value": "A6" + }, + { + "kind": "literal", + "value": "A7" + }, + { + "kind": "literal", + "value": "A8" + }, + { + "kind": "literal", + "value": "A9" + }, + { + "kind": "literal", + "value": "A10" + }, + { + "kind": "literal", + "value": "B0" + }, + { + "kind": "literal", + "value": "B1" + }, + { + "kind": "literal", + "value": "B2" + }, + { + "kind": "literal", + "value": "B3" + }, + { + "kind": "literal", + "value": "B4" + }, + { + "kind": "literal", + "value": "B5" + }, + { + "kind": "literal", + "value": "B6" + }, + { + "kind": "literal", + "value": "B7" + }, + { + "kind": "literal", + "value": "B8" + }, + { + "kind": "literal", + "value": "B9" + }, + { + "kind": "literal", + "value": "B10" + }, + { + "kind": "literal", + "value": "C0" + }, + { + "kind": "literal", + "value": "C1" + }, + { + "kind": "literal", + "value": "C2" + }, + { + "kind": "literal", + "value": "C3" + }, + { + "kind": "literal", + "value": "C4" + }, + { + "kind": "literal", + "value": "C5" + }, + { + "kind": "literal", + "value": "C6" + }, + { + "kind": "literal", + "value": "C7" + }, + { + "kind": "literal", + "value": "C8" + }, + { + "kind": "literal", + "value": "C9" + }, + { + "kind": "literal", + "value": "C10" + }, + { + "kind": "literal", + "value": "RA1" + }, + { + "kind": "literal", + "value": "RA2" + }, + { + "kind": "literal", + "value": "RA3" + }, + { + "kind": "literal", + "value": "RA4" + }, + { + "kind": "literal", + "value": "SRA1" + }, + { + "kind": "literal", + "value": "SRA2" + }, + { + "kind": "literal", + "value": "SRA3" + }, + { + "kind": "literal", + "value": "SRA4" + }, + { + "kind": "literal", + "value": "EXECUTIVE" + }, + { + "kind": "literal", + "value": "FOLIO" + }, + { + "kind": "literal", + "value": "LEGAL" + }, + { + "kind": "literal", + "value": "LETTER" + }, + { + "kind": "literal", + "value": "TABLOID" + }, + { + "kind": "object", + "properties": { + "width": { + "type": 4, + "optional": false + }, + "height": { + "type": 518, + "optional": false + } + } + }, + { + "kind": "union", + "items": [ + 4, + 519 + ] + }, + { + "kind": "literal", + "value": "auto" + }, + { + "kind": "union", + "items": [ + 12, + 2, + 468, + 297, + 298 + ] + }, + { + "kind": "union", + "items": [ + 12, + 2, + 4, + 468, + 280, + 281 + ] + }, + { + "kind": "union", + "items": [ + 12, + 2, + 3, + 4, + 5, + 6, + 7, + 9, + 10, + 299, + 408, + 409, + 410, + 411, + 400, + 412, + 413, + 414, + 415, + 422, + 430, + 433, + 443, + 466, + 523, + 529 + ] + }, + { + "kind": "object", + "properties": { + "attachment": { + "type": 524, + "optional": false + }, + "icon": { + "type": 525, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 3, + 429 + ] + }, + { + "kind": "union", + "items": [ + 12, + 526, + 527, + 528 + ] + }, + { + "kind": "literal", + "value": "Push" + }, + { + "kind": "literal", + "value": "GraphPush" + }, + { + "kind": "literal", + "value": "Paperclip" + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 2, + 3, + 4, + 5, + 6, + 7, + 9, + 10, + 299, + 408, + 409, + 410, + 411, + 400, + 412, + 413, + 414, + 415, + 422, + 430, + 433, + 443, + 466, + 523, + 531 + ] + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 2, + 3, + 533 + ] + }, + { + "kind": "object", + "properties": { + "text": { + "type": 3, + "optional": false + }, + "opacity": { + "type": 14, + "optional": true + }, + "angle": { + "type": 14, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 535, + 536 + ] + }, + { + "kind": "literal", + "value": "page" + }, + { + "kind": "literal", + "value": "title" + }, + { + "kind": "object", + "properties": { + "text": { + "type": 416, + "optional": false + }, + "tocItem": { + "type": 419, + "optional": false + }, + "tocStyle": { + "type": 17, + "optional": true + }, + "tocNumberStyle": { + "type": 17, + "optional": true + }, + "tocMargin": { + "type": 279, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "image": { + "type": 3, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "cover": { + "type": 424, + "optional": true + }, + "linkToFile": { + "type": 428, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "svg": { + "type": 431, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "qr": { + "type": 3, + "optional": false + }, + "foreground": { + "type": 13, + "optional": true + }, + "background": { + "type": 13, + "optional": true + }, + "fit": { + "type": 14, + "optional": true + }, + "version": { + "type": 14, + "optional": true + }, + "eccLevel": { + "type": 434, + "optional": true + }, + "mode": { + "type": 439, + "optional": true + }, + "mask": { + "type": 14, + "optional": true + }, + "padding": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "canvas": { + "type": 444, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "section": { + "type": 1, + "optional": false + }, + "pageSize": { + "type": 467, + "optional": true + }, + "pageOrientation": { + "type": 520, + "optional": true + }, + "pageMargins": { + "type": 521, + "optional": true + }, + "header": { + "type": 522, + "optional": true + }, + "footer": { + "type": 522, + "optional": true + }, + "background": { + "type": 530, + "optional": true + }, + "watermark": { + "type": 532, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 368, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "attachment": { + "type": 524, + "optional": false + }, + "icon": { + "type": 525, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "rowSpan": { + "type": 14, + "optional": true + }, + "colSpan": { + "type": 14, + "optional": true + }, + "border": { + "type": 363, + "optional": true + }, + "borderColor": { + "type": 366, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 368, + "optional": true + }, + "verticalAlignment": { + "type": 369, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 519, + 545, + 546 + ] + }, + { + "kind": "literal", + "value": "*" + }, + { + "kind": "array", + "item": 547 + }, + { + "kind": "union", + "items": [ + 3, + 4 + ] + }, + { + "kind": "union", + "items": [ + 12, + 4, + 519, + 549, + 550 + ] + }, + { + "kind": "array", + "item": 518 + }, + { + "kind": "function" + }, + { + "kind": "object", + "properties": { + "text": { + "type": 399, + "optional": false + }, + "id": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "pageReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "textReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "toc": { + "type": 406, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "text": { + "type": 416, + "optional": false + }, + "tocItem": { + "type": 419, + "optional": false + }, + "tocStyle": { + "type": 17, + "optional": true + }, + "tocNumberStyle": { + "type": 17, + "optional": true + }, + "tocMargin": { + "type": 279, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "image": { + "type": 3, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "cover": { + "type": 424, + "optional": true + }, + "linkToFile": { + "type": 428, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "svg": { + "type": 431, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "qr": { + "type": 3, + "optional": false + }, + "foreground": { + "type": 13, + "optional": true + }, + "background": { + "type": 13, + "optional": true + }, + "fit": { + "type": 14, + "optional": true + }, + "version": { + "type": 14, + "optional": true + }, + "eccLevel": { + "type": 434, + "optional": true + }, + "mode": { + "type": 439, + "optional": true + }, + "mask": { + "type": 14, + "optional": true + }, + "padding": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "canvas": { + "type": 444, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "section": { + "type": 1, + "optional": false + }, + "pageSize": { + "type": 467, + "optional": true + }, + "pageOrientation": { + "type": 520, + "optional": true + }, + "pageMargins": { + "type": 521, + "optional": true + }, + "header": { + "type": 522, + "optional": true + }, + "footer": { + "type": 522, + "optional": true + }, + "background": { + "type": 530, + "optional": true + }, + "watermark": { + "type": 532, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "attachment": { + "type": 524, + "optional": false + }, + "icon": { + "type": 525, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "counter": { + "type": 14, + "optional": true + }, + "listType": { + "type": 339, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "table": { + "type": 354, + "optional": false + }, + "layout": { + "type": 380, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "text": { + "type": 399, + "optional": false + }, + "id": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "pageReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "textReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "toc": { + "type": 406, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "text": { + "type": 416, + "optional": false + }, + "tocItem": { + "type": 419, + "optional": false + }, + "tocStyle": { + "type": 17, + "optional": true + }, + "tocNumberStyle": { + "type": 17, + "optional": true + }, + "tocMargin": { + "type": 279, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "image": { + "type": 3, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "cover": { + "type": 424, + "optional": true + }, + "linkToFile": { + "type": 428, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "svg": { + "type": 431, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "qr": { + "type": 3, + "optional": false + }, + "foreground": { + "type": 13, + "optional": true + }, + "background": { + "type": 13, + "optional": true + }, + "fit": { + "type": 14, + "optional": true + }, + "version": { + "type": 14, + "optional": true + }, + "eccLevel": { + "type": 434, + "optional": true + }, + "mode": { + "type": 439, + "optional": true + }, + "mask": { + "type": 14, + "optional": true + }, + "padding": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "canvas": { + "type": 444, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "section": { + "type": 1, + "optional": false + }, + "pageSize": { + "type": 467, + "optional": true + }, + "pageOrientation": { + "type": 520, + "optional": true + }, + "pageMargins": { + "type": 521, + "optional": true + }, + "header": { + "type": 522, + "optional": true + }, + "footer": { + "type": 522, + "optional": true + }, + "background": { + "type": 530, + "optional": true + }, + "watermark": { + "type": 532, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "attachment": { + "type": 524, + "optional": false + }, + "icon": { + "type": 525, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "listType": { + "type": 321, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "ol": { + "type": 332, + "optional": false + }, + "type": { + "type": 339, + "optional": true + }, + "separator": { + "type": 351, + "optional": true + }, + "reversed": { + "type": 11, + "optional": true + }, + "start": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "table": { + "type": 354, + "optional": false + }, + "layout": { + "type": 380, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "text": { + "type": 399, + "optional": false + }, + "id": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "pageReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "textReference": { + "type": 3, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "toc": { + "type": 406, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "text": { + "type": 416, + "optional": false + }, + "tocItem": { + "type": 419, + "optional": false + }, + "tocStyle": { + "type": 17, + "optional": true + }, + "tocNumberStyle": { + "type": 17, + "optional": true + }, + "tocMargin": { + "type": 279, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "image": { + "type": 3, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "cover": { + "type": 424, + "optional": true + }, + "linkToFile": { + "type": 428, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "svg": { + "type": 431, + "optional": false + }, + "width": { + "type": 14, + "optional": true + }, + "height": { + "type": 14, + "optional": true + }, + "fit": { + "type": 423, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "link": { + "type": 13, + "optional": true + }, + "linkToPage": { + "type": 14, + "optional": true + }, + "linkToDestination": { + "type": 13, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "qr": { + "type": 3, + "optional": false + }, + "foreground": { + "type": 13, + "optional": true + }, + "background": { + "type": 13, + "optional": true + }, + "fit": { + "type": 14, + "optional": true + }, + "version": { + "type": 14, + "optional": true + }, + "eccLevel": { + "type": 434, + "optional": true + }, + "mode": { + "type": 439, + "optional": true + }, + "mask": { + "type": 14, + "optional": true + }, + "padding": { + "type": 14, + "optional": true + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "canvas": { + "type": 444, + "optional": false + }, + "overlayPattern": { + "type": 15, + "optional": true + }, + "overlayOpacity": { + "type": 14, + "optional": true + }, + "style": { + "type": 17, + "optional": true + }, + "absolutePosition": { + "type": 287, + "optional": true + }, + "relativePosition": { + "type": 287, + "optional": true + }, + "pageBreak": { + "type": 289, + "optional": true + }, + "pageOrientation": { + "type": 296, + "optional": true + }, + "headlineLevel": { + "type": 14, + "optional": true + }, + "unbreakable": { + "type": 11, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "section": { + "type": 1, + "optional": false + }, + "pageSize": { + "type": 467, + "optional": true + }, + "pageOrientation": { + "type": 520, + "optional": true + }, + "pageMargins": { + "type": 521, + "optional": true + }, + "header": { + "type": 522, + "optional": true + }, + "footer": { + "type": 522, + "optional": true + }, + "background": { + "type": 530, + "optional": true + }, + "watermark": { + "type": 532, + "optional": true + }, + "attachment": { + "type": 12, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "object", + "properties": { + "attachment": { + "type": 524, + "optional": false + }, + "icon": { + "type": 525, + "optional": true + }, + "columns": { + "type": 12, + "optional": true + }, + "canvas": { + "type": 12, + "optional": true + }, + "ol": { + "type": 12, + "optional": true + }, + "section": { + "type": 12, + "optional": true + }, + "table": { + "type": 12, + "optional": true + }, + "ul": { + "type": 12, + "optional": true + }, + "image": { + "type": 12, + "optional": true + }, + "svg": { + "type": 12, + "optional": true + }, + "text": { + "type": 12, + "optional": true + }, + "stack": { + "type": 12, + "optional": true + }, + "pageReference": { + "type": 12, + "optional": true + }, + "textReference": { + "type": 12, + "optional": true + }, + "toc": { + "type": 12, + "optional": true + }, + "qr": { + "type": 12, + "optional": true + }, + "width": { + "type": 307, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 18 + ] + }, + { + "kind": "union", + "items": [ + 12, + 589 + ] + }, + { + "kind": "object", + "properties": {}, + "index": 590 + }, + { + "kind": "union", + "items": [ + 3, + 591 + ] + }, + { + "kind": "object", + "properties": { + "url": { + "type": 3, + "optional": false + }, + "headers": { + "type": 592, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 593 + ] + }, + { + "kind": "object", + "properties": {}, + "index": 3 + }, + { + "kind": "union", + "items": [ + 12, + 595 + ] + }, + { + "kind": "object", + "properties": { + "title": { + "type": 13, + "optional": true + }, + "author": { + "type": 13, + "optional": true + }, + "subject": { + "type": 13, + "optional": true + }, + "keywords": { + "type": 13, + "optional": true + }, + "creator": { + "type": 13, + "optional": true + }, + "producer": { + "type": 13, + "optional": true + }, + "creationDate": { + "type": 596, + "optional": true + }, + "modDate": { + "type": 596, + "optional": true + }, + "trapped": { + "type": 598, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 597 + ] + }, + { + "kind": "opaque", + "name": "Date" + }, + { + "kind": "union", + "items": [ + 12, + 599, + 600, + 601 + ] + }, + { + "kind": "literal", + "value": "True" + }, + { + "kind": "literal", + "value": "False" + }, + { + "kind": "literal", + "value": "Unknown" + }, + { + "kind": "union", + "items": [ + 12, + 603 + ] + }, + { + "kind": "function" + }, + { + "kind": "union", + "items": [ + 12, + 469, + 470, + 471, + 472, + 473, + 474, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 493, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 506, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517 + ] + }, + { + "kind": "union", + "items": [ + 12, + 606 + ] + }, + { + "kind": "object", + "properties": {}, + "index": 607 + }, + { + "kind": "object", + "properties": { + "extends": { + "type": 608, + "optional": true + }, + "font": { + "type": 13, + "optional": true + }, + "fontSize": { + "type": 14, + "optional": true + }, + "fontFeatures": { + "type": 19, + "optional": true + }, + "lineHeight": { + "type": 14, + "optional": true + }, + "bold": { + "type": 11, + "optional": true + }, + "italics": { + "type": 11, + "optional": true + }, + "alignment": { + "type": 261, + "optional": true + }, + "color": { + "type": 13, + "optional": true + }, + "background": { + "type": 266, + "optional": true + }, + "markerColor": { + "type": 13, + "optional": true + }, + "decoration": { + "type": 267, + "optional": true + }, + "decorationStyle": { + "type": 273, + "optional": true + }, + "decorationColor": { + "type": 13, + "optional": true + }, + "decorationThickness": { + "type": 14, + "optional": true + }, + "margin": { + "type": 279, + "optional": true + }, + "marginTop": { + "type": 14, + "optional": true + }, + "marginRight": { + "type": 14, + "optional": true + }, + "marginBottom": { + "type": 14, + "optional": true + }, + "marginLeft": { + "type": 14, + "optional": true + }, + "preserveLeadingSpaces": { + "type": 11, + "optional": true + }, + "preserveTrailingSpaces": { + "type": 11, + "optional": true + }, + "opacity": { + "type": 14, + "optional": true + }, + "characterSpacing": { + "type": 14, + "optional": true + }, + "leadingIndent": { + "type": 14, + "optional": true + }, + "sup": { + "type": 11, + "optional": true + }, + "sub": { + "type": 11, + "optional": true + }, + "fillColor": { + "type": 266, + "optional": true + }, + "fillOpacity": { + "type": 14, + "optional": true + }, + "noWrap": { + "type": 11, + "optional": true + }, + "wordBreak": { + "type": 282, + "optional": true + }, + "columnGap": { + "type": 14, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 3, + 455 + ] + }, + { + "kind": "union", + "items": [ + 12, + 610 + ] + }, + { + "kind": "object", + "properties": { + "modifying": { + "type": 11, + "optional": true + }, + "copying": { + "type": 11, + "optional": true + }, + "annotating": { + "type": 11, + "optional": true + }, + "fillingForms": { + "type": 11, + "optional": true + }, + "contentAccessibility": { + "type": 11, + "optional": true + }, + "documentAssembly": { + "type": 11, + "optional": true + }, + "printing": { + "type": 611, + "optional": true + } + } + }, + { + "kind": "union", + "items": [ + 12, + 612, + 613 + ] + }, + { + "kind": "literal", + "value": "lowResolution" + }, + { + "kind": "literal", + "value": "highResolution" + }, + { + "kind": "union", + "items": [ + 12, + 615, + 616, + 617, + 618, + 619, + 620 + ] + }, + { + "kind": "literal", + "value": "1.3" + }, + { + "kind": "literal", + "value": "1.4" + }, + { + "kind": "literal", + "value": "1.5" + }, + { + "kind": "literal", + "value": "1.6" + }, + { + "kind": "literal", + "value": "1.7" + }, + { + "kind": "literal", + "value": "1.7ext3" + }, + { + "kind": "union", + "items": [ + 12, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631 + ] + }, + { + "kind": "literal", + "value": "PDF/A-1" + }, + { + "kind": "literal", + "value": "PDF/A-1a" + }, + { + "kind": "literal", + "value": "PDF/A-1b" + }, + { + "kind": "literal", + "value": "PDF/A-2" + }, + { + "kind": "literal", + "value": "PDF/A-2a" + }, + { + "kind": "literal", + "value": "PDF/A-2b" + }, + { + "kind": "literal", + "value": "PDF/A-3" + }, + { + "kind": "literal", + "value": "PDF/A-3a" + }, + { + "kind": "literal", + "value": "PDF/A-3b" + }, + { + "kind": "literal", + "value": "PDF/UA" + }, + { + "kind": "union", + "items": [ + 12, + 3, + 533 + ] + }, + { + "kind": "union", + "items": [ + 12, + 634 + ] + }, + { + "kind": "object", + "properties": {}, + "index": 635 + }, + { + "kind": "object", + "properties": { + "boundingBox": { + "type": 281, + "optional": false + }, + "xStep": { + "type": 4, + "optional": false + }, + "yStep": { + "type": 4, + "optional": false + }, + "pattern": { + "type": 3, + "optional": false + } + } + }, + { + "kind": "union", + "items": [ + 12, + 637 + ] + }, + { + "kind": "object", + "properties": {}, + "index": 429 + } + ] +}; diff --git a/standard-fonts/Courier.d.ts b/standard-fonts/Courier.d.ts new file mode 100644 index 000000000..1d26e61b0 --- /dev/null +++ b/standard-fonts/Courier.d.ts @@ -0,0 +1,3 @@ +import type { TFontDictionary } from '../types/interfaces'; +declare const fonts: TFontDictionary; +export = fonts; diff --git a/standard-fonts/Helvetica.d.ts b/standard-fonts/Helvetica.d.ts new file mode 100644 index 000000000..1d26e61b0 --- /dev/null +++ b/standard-fonts/Helvetica.d.ts @@ -0,0 +1,3 @@ +import type { TFontDictionary } from '../types/interfaces'; +declare const fonts: TFontDictionary; +export = fonts; diff --git a/standard-fonts/Symbol.d.ts b/standard-fonts/Symbol.d.ts new file mode 100644 index 000000000..1d26e61b0 --- /dev/null +++ b/standard-fonts/Symbol.d.ts @@ -0,0 +1,3 @@ +import type { TFontDictionary } from '../types/interfaces'; +declare const fonts: TFontDictionary; +export = fonts; diff --git a/standard-fonts/Times.d.ts b/standard-fonts/Times.d.ts new file mode 100644 index 000000000..1d26e61b0 --- /dev/null +++ b/standard-fonts/Times.d.ts @@ -0,0 +1,3 @@ +import type { TFontDictionary } from '../types/interfaces'; +declare const fonts: TFontDictionary; +export = fonts; diff --git a/standard-fonts/ZapfDingbats.d.ts b/standard-fonts/ZapfDingbats.d.ts new file mode 100644 index 000000000..1d26e61b0 --- /dev/null +++ b/standard-fonts/ZapfDingbats.d.ts @@ -0,0 +1,3 @@ +import type { TFontDictionary } from '../types/interfaces'; +declare const fonts: TFontDictionary; +export = fonts; diff --git a/tests/typescript/browser.ts b/tests/typescript/browser.ts new file mode 100644 index 000000000..2dd87343b --- /dev/null +++ b/tests/typescript/browser.ts @@ -0,0 +1,19 @@ +import pdfmake from 'pdfmake/build/pdfmake.js'; +import vfs from 'pdfmake/build/vfs_fonts.js'; +import minified from 'pdfmake/build/pdfmake.min.js'; +import fontContainer from 'pdfmake/build/fonts/Roboto.js'; +import type { TDocumentDefinitions } from 'pdfmake/interfaces'; + +pdfmake.addVirtualFileSystem(vfs); +pdfmake.addFontContainer(fontContainer); +const preflight: boolean = minified.validateDocument({ content: ['test'] }).valid; +void preflight; +const definition = { content: [{ text: 'TypeScript browser bundler', bold: true }] } satisfies TDocumentDefinitions; +export async function render(): Promise { + return pdfmake.createPdf(definition).getBlob(); +} + +// @ts-expect-error Browser output has no filesystem write method. +if (false) pdfmake.createPdf({ content: ['x'] }).write('x.pdf'); +// @ts-expect-error Browser API has no Node local access policy. +if (false) pdfmake.setLocalAccessPolicy(() => true); diff --git a/tests/typescript/invalid.cts b/tests/typescript/invalid.cts new file mode 100644 index 000000000..12358e319 --- /dev/null +++ b/tests/typescript/invalid.cts @@ -0,0 +1,17 @@ +import pdfmake = require('pdfmake'); +import type { TDocumentDefinitions } from 'pdfmake/interfaces'; +// @ts-expect-error Font size must be numeric. +const invalid: TDocumentDefinitions = { content: [{ text: 'Invalid', fontSize: 'large' }] }; +// @ts-expect-error Resource policies must return synchronous booleans. +pdfmake.setUrlAccessPolicy(async () => true); +// @ts-expect-error 0.3 output is Promise-based, not callback-based. +pdfmake.createPdf({ content: ['Valid'] }).getBuffer(() => {}); +void invalid; + +// @ts-expect-error Node output cannot download in a browser. +pdfmake.createPdf({ content: ['x'] }).download(); +// @ts-expect-error Node entry cannot register browser VFS containers. +pdfmake.addVirtualFileSystem({}); +const diagnostics = pdfmake.validateDocument({ content: [{ text: 'x' }] }); +const valid: boolean = diagnostics.valid; +void valid; diff --git a/tests/typescript/node.cts b/tests/typescript/node.cts new file mode 100644 index 000000000..1c464ae51 --- /dev/null +++ b/tests/typescript/node.cts @@ -0,0 +1,15 @@ +import pdfmake = require('pdfmake'); +import type { TDocumentDefinitions } from 'pdfmake'; +import { strict as assert } from 'node:assert'; + +pdfmake.addFonts({ Helvetica: { normal: 'Helvetica', bold: 'Helvetica-Bold', italics: 'Helvetica-Oblique', bolditalics: 'Helvetica-BoldOblique' } }); +pdfmake.setUrlAccessPolicy(() => false); +pdfmake.setLocalAccessPolicy(name => name.startsWith('Helvetica')); +const definition = { content: [{ text: 'TypeScript CommonJS', fontSize: 18 }], defaultStyle: { font: 'Helvetica' } } satisfies TDocumentDefinitions; +async function main() { + const output = pdfmake.createPdf(definition); + const buffer: Buffer = await output.getBuffer(); + assert.equal(buffer.subarray(0, 5).toString(), '%PDF-'); + await pdfmake.createPdf({ content: ['File'], defaultStyle: { font: 'Helvetica' } }).write('typescript.pdf'); +} +void main().catch(error => { console.error(error); process.exitCode = 1; }); diff --git a/tests/typescript/node.mts b/tests/typescript/node.mts new file mode 100644 index 000000000..038b48ce4 --- /dev/null +++ b/tests/typescript/node.mts @@ -0,0 +1,11 @@ +import pdfmake from 'pdfmake'; +import fonts from 'pdfmake/standard-fonts/Helvetica.js'; +import type { TDocumentDefinitions } from 'pdfmake/interfaces.js'; +import { strict as assert } from 'node:assert'; + +pdfmake.addFonts(fonts); +pdfmake.setUrlAccessPolicy(() => false); +pdfmake.setLocalAccessPolicy(name => name.startsWith('Helvetica')); +const definition: TDocumentDefinitions = { content: [{ table: { body: [['ESM', 'TypeScript'], ['Promise', 'Output']] } }], defaultStyle: { font: 'Helvetica' } }; +const buffer: Buffer = await pdfmake.createPdf(definition).getBuffer(); +assert.equal(buffer.subarray(0, 5).toString(), '%PDF-'); diff --git a/tests/unit/DocumentValidator.spec.js b/tests/unit/DocumentValidator.spec.js new file mode 100644 index 000000000..89ac6f6a1 --- /dev/null +++ b/tests/unit/DocumentValidator.spec.js @@ -0,0 +1,70 @@ +const assert = require('assert'); +const pdfmake = require('../../js'); +const validate = (doc, options) => pdfmake.validateDocument(doc, options); + +describe('Document validation', function () { + it('collects independent field errors with exact paths', function () { + const result = validate({ content: [{ text: 'a', fontSize: 'large' }, { text: 'b', alignment: 'middle', opacity: 2 }], pageOrientation: 'sideways' }); + assert.equal(result.valid, false); + for (const path of ['$.content[0].fontSize', '$.content[1].alignment', '$.content[1].opacity', '$.pageOrientation']) assert(result.errors.some(item => item.path === path), JSON.stringify(result)); + }); + it('supports valid nested content, table placeholders and callbacks without mutation or execution', function () { + let called = false; + const doc = { content: [{ text: 'heading', id: 'start' }, { columns: [{ stack: ['text', 42] }, { ul: ['a', 'b'] }, ['column paragraph', 'another']] }, { table: { body: [[{ text: 'span', colSpan: 2 }, {}], ['a', 'b']] } }, { textReference: 'start' }], header: () => { called = true; return 'header'; } }; + const before = JSON.stringify(doc); + const result = validate(doc); + assert.deepEqual(result.errors, []); + assert.equal(result.valid, true); + assert.equal(called, false); + assert.equal(JSON.stringify(doc), before); + assert(result.deferred.includes('$.header')); + }); + it('reports unknown properties as warnings or strict errors', function () { + const doc = { content: [{ text: 'x', fontSzie: 20, headlineLevel: 1 }] }; + assert.equal(validate(doc).valid, true); + assert.equal(validate({ content: ['x'], customMetadata: { font: 'customer-data', section: 42, id: 'a' }, font: 'application-data', table: { body: [] } }).valid, true); + assert(validate(doc).warnings.some(item => item.path === '$.content[0].fontSzie')); + assert.equal(validate(doc, { strict: true }).valid, false); + }); + it('checks references, styles, fonts and layout names', function () { + const result = validate({ content: [{ text: 'a', id: 'a', style: 'missing', font: 'Missing' }, { text: 'b', id: 'a' }, { pageReference: 'unknown' }, { table: { body: [['x']] }, layout: 'missing' }] }); + for (const code of ['DUPLICATE_ID', 'STYLE_REFERENCE', 'FONT_REFERENCE', 'ID_REFERENCE', 'LAYOUT_REFERENCE']) assert(result.errors.some(item => item.code === code), code); + }); + it('validates table shape, widths, spans, header limits and placeholders', function () { + const result = validate({ content: [{ table: { widths: [100], headerRows: 4, body: [[{ text: 'x', colSpan: 3, rowSpan: 3 }, 'not placeholder'], ['short']] } }] }); + for (const code of ['TABLE_WIDTHS', 'TABLE_HEADERS', 'TABLE_SPAN', 'TABLE_COLUMNS', 'TABLE_SPAN_PLACEHOLDER']) assert(result.errors.some(item => item.code === code), code); + }); + it('validates canvas, QR, page size, styles and resource descriptor shapes', function () { + const result = validate({ content: [{ canvas: [{ type: 'rect', x: 'bad', y: 0, w: 10, h: 10 }] }, { qr: 'x', eccLevel: 'Z' }], pageSize: { width: -10, height: 'wrong' }, styles: { title: { bold: 'yes' } }, images: { photo: 42 } }); + for (const path of ['$.content[0].canvas[0].x', '$.content[1].eccLevel', '$.pageSize.height', '$.styles.title.bold', '$.images.photo']) assert(result.errors.some(item => item.path === path), JSON.stringify(result)); + }); + it('rejects cycles and accessors without running a getter', function () { + let called = false; + const node = { text: 'x' }; node.stack = [node]; + const doc = { content: [node] }; + Object.defineProperty(doc, 'header', { enumerable: true, get() { called = true; throw new Error('Getter executed'); } }); + const result = validate(doc); + assert.equal(called, false); + assert(result.errors.some(item => item.code === 'CYCLE')); + assert(result.errors.some(item => item.code === 'ACCESSOR')); + }); + it('enforces bounded diagnostics and depth and accepts shared non-cyclic nodes', function () { + const shared = { text: 'x' }; + assert.equal(validate({ content: [shared, shared] }).valid, true); + const limited = validate({ content: [{ text: 'a', fontSize: 'x' }, { text: 'b', fontSize: 'y' }] }, { maxDiagnostics: 1 }); + assert.equal(limited.valid, false); + assert.equal(limited.errors.length, 1); + assert.equal(limited.truncated, true); + assert(validate({ content: [[[[['deep']]]]] }, { maxDepth: 2 }).errors.some(item => item.code === 'DEPTH')); + assert.throws(() => validate({}, { maxDepth: 0 }), RangeError); + }); + it('preserves negative text spacing and rejects oversized sparse arrays and nested sections', function () { + assert.equal(validate({ content: [{ text: 'tight', characterSpacing: -1 }, {}, { table: { body: [[null, 'x']] } }] }).valid, true); + assert(validate({ content: new Array(50001) }).errors.some(item => item.code === 'LIMIT')); + assert(validate({ content: [{ columns: [{ section: ['bad'] }] }] }).errors.some(item => item.code === 'SECTION_LOCATION')); + assert.equal(validate({ content: [{ stack: [{ section: ['valid'] }] }] }).valid, true); + }); + it('offers opt-in createPdf preflight with all diagnostics on one error', function () { + assert.throws(() => pdfmake.createPdf({ content: [{ text: 'x', fontSize: 'bad' }, { qr: 42 }] }, { validation: true }), error => error.code === 'PDFMAKE_VALIDATION_ERROR' && error.phase === 'validation' && error.diagnostics.length >= 2); + }); +}); diff --git a/tests/unit/TextInlines.flatten.spec.js b/tests/unit/TextInlines.flatten.spec.js new file mode 100644 index 000000000..08a2b43bb --- /dev/null +++ b/tests/unit/TextInlines.flatten.spec.js @@ -0,0 +1,57 @@ +const assert = require('assert'); +const rewire = require('rewire'); +const flatten = rewire('../../js/TextInlines').__get__('flattenTextArray'); + +describe('flattenTextArray', function () { + it('preserves leaf identity, order, empty arrays and existing nested-style behavior', function () { + const bold = { text: 'bold', bold: true }; + const input = ['first', [{ text: ['nested', bold], italics: true }, []], 'last']; + assert.deepStrictEqual(flatten(input), ['first', 'nested', bold, 'last']); + assert.strictEqual(flatten(input)[2], bold); + assert.strictEqual(input[1][0].italics, true); + }); + + it('handles scalar input and sparse arrays', function () { + const input = []; + input[2] = 'third'; + assert.deepStrictEqual(flatten(input), ['third']); + assert.deepStrictEqual(flatten('text'), ['text']); + assert.deepStrictEqual(flatten({ text: [] }), []); + }); + + it('handles deeply nested arrays without recursive calls', function () { + let input = 'leaf'; + for (let i = 0; i < 20000; i++) { + input = { text: [input] }; + } + assert.deepStrictEqual(flatten(input), ['leaf']); + }); + + it('matches the previous implementation on deterministic mixed trees', function () { + function previous(array) { + return array.reduce((prev, cur) => { + const current = Array.isArray(cur.text) ? previous(cur.text) : cur; + const more = [].concat(current).some(Array.isArray); + return prev.concat(more ? previous(current) : current); + }, []); + } + let seed = 17; + function next() { + seed = (seed * 16807) % 2147483647; + return seed; + } + function tree(depth) { + return Array.from({ length: next() % 6 }, () => { + const kind = next() % 4; + if (depth && kind < 2) { + return kind ? { text: tree(depth - 1), bold: true } : tree(depth - 1); + } + return kind === 2 ? { text: String(next()), color: 'red' } : String(next()); + }); + } + for (let i = 0; i < 200; i++) { + const input = tree(4); + assert.deepStrictEqual(flatten(input), previous(input)); + } + }); +}); diff --git a/tests/unit/diagnostics.spec.js b/tests/unit/diagnostics.spec.js new file mode 100644 index 000000000..75630b0c6 --- /dev/null +++ b/tests/unit/diagnostics.spec.js @@ -0,0 +1,75 @@ +const assert = require('assert'); +const { PassThrough } = require('stream'); +const DocPreprocessor = require('../../js/DocPreprocessor').default; +const OutputDocument = require('../../js/OutputDocument').default; +const OutputDocumentServer = require('../../js/OutputDocumentServer').default; +const fs = require('fs/promises'); +const os = require('os'); +const path = require('path'); + +describe('Document diagnostics', function () { + it('identifies the nested list node that cannot be recognized', function () { + assert.throws(() => new DocPreprocessor().preprocessDocument([ + { columns: [{ ul: ['Valid', { typo: 'invalid' }] }] } + ]), error => { + assert.equal(error.code, 'PDFMAKE_INVALID_DOCUMENT'); + assert.equal(error.path, 'content[0].columns[0].ul[1]'); + assert.ok(error.message.includes('Unrecognized document structure')); + return true; + }); + }); + it('reports malformed tables before low-level measurement errors', function () { + const processor = new DocPreprocessor(); + assert.throws(() => processor.preprocessDocument([{ table: { body: [] } }]), /table.body must be a non-empty/); + assert.throws(() => processor.preprocessDocument([{ table: { body: [['A', 'B'], ['C']] } }]), error => { + assert.equal(error.path, 'content[0].table.body[1]'); + assert.ok(error.message.includes('expected 2 cells')); + return true; + }); + assert.doesNotThrow(() => processor.preprocessDocument([{ table: { body: [[{ text: 'Span', colSpan: 2 }, {}], ['A', 'B']] } }])); + assert.throws(() => processor.preprocessDocument([{ table: { body: [['A', undefined]] } }]), error => error.path === 'content[0].table.body[0][1]'); + }); + + it('returns actionable diagnostics through the public asynchronous output API', async function () { + const pdfmake = require('../../js/index'); + const urlPolicy = pdfmake.urlAccessPolicy; + const localPolicy = pdfmake.localAccessPolicy; + pdfmake.setUrlAccessPolicy(() => false); + pdfmake.setLocalAccessPolicy(() => false); + try { + await assert.rejects(pdfmake.createPdf({ content: [{ stack: [{ unknown: 'node' }] }] }).getBuffer(), error => { + assert.equal(error.code, 'PDFMAKE_INVALID_DOCUMENT'); + assert.equal(error.path, 'content[0].stack[0]'); + assert.equal(error.phase, 'preprocess'); + return true; + }); + } finally { + pdfmake.setUrlAccessPolicy(urlPolicy); + pdfmake.setLocalAccessPolicy(localPolicy); + } + }); + it('rejects prematurely closed output instead of leaving the Promise pending', async function () { + const stream = new PassThrough(); + stream.end = function () { this.destroy(); }; + await assert.rejects(new OutputDocument(Promise.resolve(stream)).getBuffer(), /closed before completion/); + }); + it('reports an already destroyed output stream', async function () { + const stream = new PassThrough(); + stream.destroy(); + await assert.rejects(new OutputDocument(Promise.resolve(stream)).getBuffer(), /destroyed before/); + }); + + it('rejects a prematurely closed file output and cleans up the destination stream', async function () { + const temp = await fs.mkdtemp(path.join(os.tmpdir(), 'pdfmake-diagnostics-')); + try { + const stream = new PassThrough(); + stream.end = function () { this.destroy(); }; + await assert.rejects(new OutputDocumentServer(Promise.resolve(stream)).write(path.join(temp, 'failed.pdf')), error => error.code === 'ERR_STREAM_PREMATURE_CLOSE'); + const throwingStream = new PassThrough(); + throwingStream.end = function () { throw new Error('Synchronous finalization failure'); }; + await assert.rejects(new OutputDocumentServer(Promise.resolve(throwingStream)).write(path.join(temp, 'thrown.pdf')), /Synchronous finalization failure/); + } finally { + await fs.rm(temp, { recursive: true, force: true }); + } + }); +}); diff --git a/tests/unit/playground-server.spec.js b/tests/unit/playground-server.spec.js new file mode 100644 index 000000000..0cc605771 --- /dev/null +++ b/tests/unit/playground-server.spec.js @@ -0,0 +1,37 @@ +const assert = require('assert'); +const http = require('http'); +const { createServer } = require('../../dev-playground/server'); + +describe('Static development playground server', function () { + let server; + before(function (done) { + server = createServer(); + server.listen(0, '127.0.0.1', done); + }); + after(function (done) { server.close(done); }); + function request(path, method = 'GET') { + return new Promise((resolve, reject) => { + const req = http.request({ hostname: '127.0.0.1', port: server.address().port, path, method }, res => { + const chunks = []; + res.on('data', chunk => chunks.push(chunk)); + res.on('end', () => resolve({ status: res.statusCode, headers: res.headers, body: Buffer.concat(chunks).toString() })); + }); + req.on('error', reject); req.end(); + }); + } + it('serves the rewritten UI with no server-side evaluation endpoint', async function () { + assert.equal((await request('/')).headers.location, process.env.PDFMAKE_DOCS_URL || 'https://pdfmake.github.io/docs/0.3/'); + assert.equal((await request('/pdf', 'POST')).status, 405); + assert.equal((await request('/playground/worker.js', 'POST')).status, 405); + const page = await request('/playground/'); + assert.equal(page.status, 200); + assert.ok(page.body.includes('Document definition')); + }); + it('restricts paths and gives workers a network-blocking policy', async function () { + const traversal = await request('/playground/..%2f..%2fpackage.json'); + assert.equal(traversal.status, 403); + const worker = await request('/playground/worker.js'); + assert.equal(worker.status, 200); + assert.ok(worker.headers['content-security-policy'].includes("connect-src 'none'")); + }); +}); diff --git a/types/LICENSE b/types/LICENSE new file mode 100644 index 000000000..9e841e7a2 --- /dev/null +++ b/types/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/types/browser.d.ts b/types/browser.d.ts new file mode 100644 index 000000000..ca90af6e4 --- /dev/null +++ b/types/browser.d.ts @@ -0,0 +1,109 @@ +import type * as Types from './interfaces'; +declare const pdfmake: Types.BrowserPdfMake; +declare namespace pdfmake { + type FontSource = Types.FontSource; + type PageSize = Types.PageSize; + type CustomPageSize = Types.CustomPageSize; + type Position = Types.Position; + type PredefinedPageSize = Types.PredefinedPageSize; + type PageOrientation = Types.PageOrientation; + type PageBreak = Types.PageBreak; + type Size = Types.Size; + type PatternFill = Types.PatternFill; + type TFontDictionary = Types.TFontDictionary; + type TVirtualFileSystem = Types.TVirtualFileSystem; + type TFontContainer = Types.TFontContainer; + type TFontFamilyTypes = Types.TFontFamilyTypes; + type TDocumentInformation = Types.TDocumentInformation; + type DynamicContent = Types.DynamicContent; + type DynamicBackground = Types.DynamicBackground; + type Margins = Types.Margins; + type Decoration = Types.Decoration; + type DecorationStyle = Types.DecorationStyle; + type Alignment = Types.Alignment; + type DynamicRowSize = Types.DynamicRowSize; + type CustomTableLayout = Types.CustomTableLayout; + type DynamicLayout = Types.DynamicLayout; + type VerticalDynamicLayout = Types.VerticalDynamicLayout; + type DynamicCellLayout = Types.DynamicCellLayout; + type VerticalDynamicCellLayout = Types.VerticalDynamicCellLayout; + type Dash = Types.Dash; + type LineStyle = Types.LineStyle; + type TableCellProperties = Types.TableCellProperties; + type TableCell = Types.TableCell; + type Table = Types.Table; + type PredefinedTableLayout = Types.PredefinedTableLayout; + type TableLayout = Types.TableLayout; + type Style = Types.Style; + type NamedStyle = Types.NamedStyle; + type StyleReference = Types.StyleReference; + type Content = Types.Content; + type ContentAttachment = Types.ContentAttachment; + type ContentText = Types.ContentText; + type ContentColumns = Types.ContentColumns; + type ContentStack = Types.ContentStack; + type ContentOrderedList = Types.ContentOrderedList; + type ContentUnorderedList = Types.ContentUnorderedList; + type ContentCanvas = Types.ContentCanvas; + type ContentSvg = Types.ContentSvg; + type ContentImage = Types.ContentImage; + type ContentTable = Types.ContentTable; + type ContentAnchor = Types.ContentAnchor; + type ContentTocItem = Types.ContentTocItem; + type ContentPageReference = Types.ContentPageReference; + type ContentTextReference = Types.ContentTextReference; + type ContentToc = Types.ContentToc; + type ContentQr = Types.ContentQr; + type ContentBase = Types.ContentBase; + type ContentLink = Types.ContentLink; + type ContentSection = Types.ContentSection; + type TableOfContent = Types.TableOfContent; + type ColumnProperties = Types.ColumnProperties; + type Column = Types.Column; + type OrderedListType = Types.OrderedListType; + type OrderedListElementProperties = Types.OrderedListElementProperties; + type OrderedListElement = Types.OrderedListElement; + type UnorderedListType = Types.UnorderedListType; + type UnorderedListElementProperties = Types.UnorderedListElementProperties; + type UnorderedListElement = Types.UnorderedListElement; + type CanvasElement = Types.CanvasElement; + type CanvasLineCap = Types.CanvasLineCap; + type CanvasLineJoin = Types.CanvasLineJoin; + type CanvasRect = Types.CanvasRect; + type Point = Types.Point; + type CanvasPolyline = Types.CanvasPolyline; + type CanvasLine = Types.CanvasLine; + type CanvasEllipse = Types.CanvasEllipse; + type CanvasFilledElement = Types.CanvasFilledElement; + type CanvasLineElement = Types.CanvasLineElement; + type ImageAlignment = Types.ImageAlignment; + type ImageVerticalAlignment = Types.ImageVerticalAlignment; + type ImageCover = Types.ImageCover; + type StyleDictionary = Types.StyleDictionary; + type PDFVersion = Types.PDFVersion; + type PDFSubset = Types.PDFSubset; + type Watermark = Types.Watermark; + type Pattern = Types.Pattern; + type ImageDefinition = Types.ImageDefinition; + type Attachment = Types.Attachment; + type TDocumentDefinitions = Types.TDocumentDefinitions; + type NodeStartPosition = Types.NodeStartPosition; + type Node = Types.Node; + type NodeQueries = Types.NodeQueries; + type ContextPageSize = Types.ContextPageSize; + type BufferOptions = Types.BufferOptions; + type TCreatedPdf = Types.TCreatedPdf; + type NodeOutputDocument = Types.NodeOutputDocument; + type BrowserOutputDocument = Types.BrowserOutputDocument; + type ValidationDiagnostic = Types.ValidationDiagnostic; + type ValidationOptions = Types.ValidationOptions; + type ValidationResult = Types.ValidationResult; + type DocumentValidationError = Types.DocumentValidationError; + type CreatePdfOptions = Types.CreatePdfOptions; + type PdfMakeBase = Types.PdfMakeBase; + type NodePdfMake = Types.NodePdfMake; + type BrowserPdfMake = Types.BrowserPdfMake; + type ProgressCallback = Types.ProgressCallback; +} +export = pdfmake; +export as namespace pdfMake; diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 000000000..87349416b --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,108 @@ +import type * as Types from './interfaces'; +declare const pdfmake: Types.NodePdfMake; +declare namespace pdfmake { + type FontSource = Types.FontSource; + type PageSize = Types.PageSize; + type CustomPageSize = Types.CustomPageSize; + type Position = Types.Position; + type PredefinedPageSize = Types.PredefinedPageSize; + type PageOrientation = Types.PageOrientation; + type PageBreak = Types.PageBreak; + type Size = Types.Size; + type PatternFill = Types.PatternFill; + type TFontDictionary = Types.TFontDictionary; + type TVirtualFileSystem = Types.TVirtualFileSystem; + type TFontContainer = Types.TFontContainer; + type TFontFamilyTypes = Types.TFontFamilyTypes; + type TDocumentInformation = Types.TDocumentInformation; + type DynamicContent = Types.DynamicContent; + type DynamicBackground = Types.DynamicBackground; + type Margins = Types.Margins; + type Decoration = Types.Decoration; + type DecorationStyle = Types.DecorationStyle; + type Alignment = Types.Alignment; + type DynamicRowSize = Types.DynamicRowSize; + type CustomTableLayout = Types.CustomTableLayout; + type DynamicLayout = Types.DynamicLayout; + type VerticalDynamicLayout = Types.VerticalDynamicLayout; + type DynamicCellLayout = Types.DynamicCellLayout; + type VerticalDynamicCellLayout = Types.VerticalDynamicCellLayout; + type Dash = Types.Dash; + type LineStyle = Types.LineStyle; + type TableCellProperties = Types.TableCellProperties; + type TableCell = Types.TableCell; + type Table = Types.Table; + type PredefinedTableLayout = Types.PredefinedTableLayout; + type TableLayout = Types.TableLayout; + type Style = Types.Style; + type NamedStyle = Types.NamedStyle; + type StyleReference = Types.StyleReference; + type Content = Types.Content; + type ContentAttachment = Types.ContentAttachment; + type ContentText = Types.ContentText; + type ContentColumns = Types.ContentColumns; + type ContentStack = Types.ContentStack; + type ContentOrderedList = Types.ContentOrderedList; + type ContentUnorderedList = Types.ContentUnorderedList; + type ContentCanvas = Types.ContentCanvas; + type ContentSvg = Types.ContentSvg; + type ContentImage = Types.ContentImage; + type ContentTable = Types.ContentTable; + type ContentAnchor = Types.ContentAnchor; + type ContentTocItem = Types.ContentTocItem; + type ContentPageReference = Types.ContentPageReference; + type ContentTextReference = Types.ContentTextReference; + type ContentToc = Types.ContentToc; + type ContentQr = Types.ContentQr; + type ContentBase = Types.ContentBase; + type ContentLink = Types.ContentLink; + type ContentSection = Types.ContentSection; + type TableOfContent = Types.TableOfContent; + type ColumnProperties = Types.ColumnProperties; + type Column = Types.Column; + type OrderedListType = Types.OrderedListType; + type OrderedListElementProperties = Types.OrderedListElementProperties; + type OrderedListElement = Types.OrderedListElement; + type UnorderedListType = Types.UnorderedListType; + type UnorderedListElementProperties = Types.UnorderedListElementProperties; + type UnorderedListElement = Types.UnorderedListElement; + type CanvasElement = Types.CanvasElement; + type CanvasLineCap = Types.CanvasLineCap; + type CanvasLineJoin = Types.CanvasLineJoin; + type CanvasRect = Types.CanvasRect; + type Point = Types.Point; + type CanvasPolyline = Types.CanvasPolyline; + type CanvasLine = Types.CanvasLine; + type CanvasEllipse = Types.CanvasEllipse; + type CanvasFilledElement = Types.CanvasFilledElement; + type CanvasLineElement = Types.CanvasLineElement; + type ImageAlignment = Types.ImageAlignment; + type ImageVerticalAlignment = Types.ImageVerticalAlignment; + type ImageCover = Types.ImageCover; + type StyleDictionary = Types.StyleDictionary; + type PDFVersion = Types.PDFVersion; + type PDFSubset = Types.PDFSubset; + type Watermark = Types.Watermark; + type Pattern = Types.Pattern; + type ImageDefinition = Types.ImageDefinition; + type Attachment = Types.Attachment; + type TDocumentDefinitions = Types.TDocumentDefinitions; + type NodeStartPosition = Types.NodeStartPosition; + type Node = Types.Node; + type NodeQueries = Types.NodeQueries; + type ContextPageSize = Types.ContextPageSize; + type BufferOptions = Types.BufferOptions; + type TCreatedPdf = Types.TCreatedPdf; + type NodeOutputDocument = Types.NodeOutputDocument; + type BrowserOutputDocument = Types.BrowserOutputDocument; + type ValidationDiagnostic = Types.ValidationDiagnostic; + type ValidationOptions = Types.ValidationOptions; + type ValidationResult = Types.ValidationResult; + type DocumentValidationError = Types.DocumentValidationError; + type CreatePdfOptions = Types.CreatePdfOptions; + type PdfMakeBase = Types.PdfMakeBase; + type NodePdfMake = Types.NodePdfMake; + type BrowserPdfMake = Types.BrowserPdfMake; + type ProgressCallback = Types.ProgressCallback; +} +export = pdfmake; diff --git a/types/interfaces.d.ts b/types/interfaces.d.ts new file mode 100644 index 000000000..a7cf76b4e --- /dev/null +++ b/types/interfaces.d.ts @@ -0,0 +1,2664 @@ +// Derived from DefinitelyTyped @types/pdfmake 0.3.3 (MIT). See types/LICENSE. +/// +/// +/// + +/** + * Size of a page. + */ +export type PageSize = PredefinedPageSize | CustomPageSize; + +/** + * A page size using custom dimensions. + */ +export interface CustomPageSize { + /** + * Page width in `pt`. + */ + width: number; + + /** + * Page height in `pt`, or `auto` to adapt the page height to the document's content + * (the document will always have a single page). + */ + height: number | "auto"; +} + +/** + * A position applied to an element. + */ +export interface Position { + /** + * Horizontal position from the left edge of the page in `pt`. + * + * Defaults to `0`. + */ + x?: number | undefined; + + /** + * Vertical position from the top of the page in `pt`. + * + * Defaults to `0`. + */ + y?: number | undefined; +} + +/** + * Available predefined page sizes: + * - ISO 216 standard sizes (e.g. `A4`) + * - ISO 217 raw sizes (e.g. `RA4`) + * - American loose sizes (e.g. `TABLOID`) + */ +export type PredefinedPageSize = + | "4A0" + | "2A0" + | "A0" + | "A1" + | "A2" + | "A3" + | "A4" + | "A5" + | "A6" + | "A7" + | "A8" + | "A9" + | "A10" + | "B0" + | "B1" + | "B2" + | "B3" + | "B4" + | "B5" + | "B6" + | "B7" + | "B8" + | "B9" + | "B10" + | "C0" + | "C1" + | "C2" + | "C3" + | "C4" + | "C5" + | "C6" + | "C7" + | "C8" + | "C9" + | "C10" + | "RA1" + | "RA2" + | "RA3" + | "RA4" + | "SRA1" + | "SRA2" + | "SRA3" + | "SRA4" + | "EXECUTIVE" + | "FOLIO" + | "LEGAL" + | "LETTER" + | "TABLOID"; + +/** + * Orientation of a page: + * - `portrait` uses the shorter dimension as width and the longer one as height + * - `landscape` uses the longer dimension as width and the shorter one as height + * + * A page's orientation does not rotate its content; it is always rendered top to bottom. + */ +export type PageOrientation = "portrait" | "landscape"; + +/** + * Different types of page breaks: + * - `before`/`after` add a page break before or after an element + * - `beforeEven`/`afterEven` adds one or two page breaks before/after an element + * so that the content after the page break is on an even page + * - `beforeOdd`/`afterOdd` adds one or two page breaks before/after an element + * so that the content after the page break is on an odd page + */ +export type PageBreak = "before" | "beforeEven" | "beforeOdd" | "after" | "afterEven" | "afterOdd"; + +/** + * Sizes for the width of stand-alone columns and table columns. + * + * Available options are: + * - A number to define an absolute width in `pt` + * - A percentage string such as `50%` to fill a portion of the available space + * - `auto` to set the width based on the content + * - `*` to fill the remaining available space, distributed equally among + * all star-sized columns + */ +export type Size = + | number + | "auto" + | "*" + | string; + +/** + * Combination of a pattern defined in {@link TDocumentDefinitions.patterns} and a color. + * + * Tuple consisting of two elements: + * - The name of the pattern + * - The color to apply to the pattern. + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + */ +export type PatternFill = [string, string]; + +/** + * Dictionary of font families that can be referenced by their key. + */ +export interface TFontDictionary { + [fontName: string]: TFontFamilyTypes; +} + +/** + * Dictionary of a virtual file system, mapping file paths to base64 file contents. + */ +export interface TVirtualFileSystem { + [filePath: string]: string | { data: string | Uint8Array; encoding?: BufferEncoding }; +} + +/** + * Container combining a virtual file system and its contained font definitions. + */ +export interface TFontContainer { + standardFonts?: unknown[]; + vfs: TVirtualFileSystem; + fonts: TFontDictionary; +} + +/** + * Definition of a font family. + */ +export type FontSource = string | ImageDefinition | [string | ImageDefinition, string]; + +export interface TFontFamilyTypes { + /** Font variant that is neither bold nor italic. */ + normal?: FontSource | undefined; + + /** Font variant that is bold. */ + bold?: FontSource | undefined; + + /** Font variant that is italic. */ + italics?: FontSource | undefined; + + /** Font variant that is bold and italic. */ + bolditalics?: FontSource | undefined; +} + +/** + * Metadata to embed into the document. + */ +export interface TDocumentInformation { + /** Document title. */ + title?: string | undefined; + + /** Name of the author. */ + author?: string | undefined; + + /** Subject of the document. */ + subject?: string | undefined; + + /** + * Keywords associated with the document. + * + * A PDF file stores all keywords as a single string, as given here. + * For optimal compatibility, separate keywords using commas or spaces. + */ + keywords?: string | undefined; + + /** + * Name of the creator. + * + * Defaults to `pdfmake`. + */ + creator?: string | undefined; + + /** + * Name of the producer. + * + * Defaults to `pdfmake`. + */ + producer?: string | undefined; + + /** + * Date the document was created. + * + * Defaults to the current date and time. + */ + creationDate?: Date | undefined; + + /** Date the document was last modified. */ + modDate?: Date | undefined; + + /** Indicates whether the document has been corrected for color misregistrations. */ + trapped?: "True" | "False" | "Unknown" | undefined; +} + +/** + * Callback that returns content depending on the current page number, + * the total number of pages, or the size of the current page. + */ +export type DynamicContent = ( + currentPage: number, + pageCount: number, + pageSize: ContextPageSize, +) => Content | null | undefined; + +/** + * Callback that returns content depending on the current page number + * or the size of the current page. + */ +export type DynamicBackground = (currentPage: number, pageSize: ContextPageSize) => Content | null | undefined; + +/** + * Margin in `pt`. Allows + * - a single number which applies the same margin on all sides + * - a tuple of two values `[horizontal, vertical]` + * - a tuple of four values `[left, top, right, bottom]` + * + * Margins of adjacent elements do not collapse. + * + * Negative values can lead to elements overlapping each other. + */ +export type Margins = number | [number, number] | [number, number, number, number]; + +/** + * Available types of decorations. + * Can be combined with a {@link DecorationStyle}. + */ +export type Decoration = "underline" | "lineThrough" | "overline"; + +/** + * Available {@link Decoration} styles. + */ +export type DecorationStyle = "solid" | "dashed" | "dotted" | "double" | "wavy"; + +/** + * Available horizontal alignment options. + */ +export type Alignment = "left" | "right" | "justify" | "center"; + +/** + * Callback to define a height in `pt` for a table row based on its row number + * (starting from 0). + * + * `auto` sets the height based on the row's content. + */ +export type DynamicRowSize = (rowIndex: number) => number | "auto"; + +/** + * Custom layout to control borders, cell padding, and cell background of a table. + */ +export interface CustomTableLayout { + /** + * Width of horizontal lines in `pt` depending on the row number + * (0 = line above the first row). + * + * **Note**: Does not allow an explicit value of `undefined`. + * + * Defaults to `1`. + */ + hLineWidth?: DynamicLayout; + + /** + * Width of vertical lines in `pt` depending on the column number + * (0 = line to the left of the left-most column). + * + * **Note**: Does not allow an explicit value of `undefined`. + * + * Defaults to `1`. + */ + vLineWidth?: VerticalDynamicLayout; + + /** + * Color of horizontal lines, optionally depending on the row (0 = line above + * the top row) and column number (0 = left-most column). + * + * Can be overridden for each cell via {@link TableCellProperties.borderColor}. + * + * Defaults to `black`. + */ + hLineColor?: string | DynamicCellLayout | undefined; + + /** + * Color of vertical lines, optionally depending on the column (0 = line left + * of the left-most column) and row number (0 = top row). + * + * Can be overridden for each cell via {@link TableCellProperties.borderColor}. + * + * Defaults to `black`. + */ + vLineColor?: string | VerticalDynamicCellLayout | undefined; + + /** + * Style of horizontal lines depending on the row number + * (0 = line above the top row). + * + * **Note**: Does not allow an explicit value of `undefined`. + * + * Defaults to a solid line. + */ + hLineStyle?: DynamicLayout; + + /** + * Style of vertical lines depending on the column number + * (0 = line to the left of the left-most column). + * + * **Note**: Does not allow an explicit value of `undefined`. + * + * Defaults to a solid line. + */ + vLineStyle?: VerticalDynamicLayout; + + /** + * Padding in `pt` to the left of each column + * (0 = left-most column). + * + * **Note**: Does not allow an explicit value of `undefined`. + * + * Defaults to `4`. + */ + paddingLeft?: VerticalDynamicLayout; + + /** + * Padding in `pt` to the right of each column + * (0 = left-most column). + * + * **Note**: Does not allow an explicit value of `undefined`. + * + * Defaults to `4`. + */ + paddingRight?: VerticalDynamicLayout; + + /** + * Padding in `pt` at the top of each cell of a row + * (0 = top row). + * + * **Note**: Does not allow an explicit value of `undefined`. + * + * Defaults to `2`. + */ + paddingTop?: DynamicLayout; + + /** + * Padding in `pt` at the bottom of each cell of a row + * (0 = top row). + * + * **Note**: Does not allow an explicit value of `undefined`. + * + * Defaults to `2`. + */ + paddingBottom?: DynamicLayout; + + /** + * Background color the table's cells are filled with. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`, + * as well as a reference to a pattern. + */ + fillColor?: string | PatternFill | DynamicCellLayout | undefined; + + /** + * Opacity of the {@link fillColor}. + * Must be between 0 (fully transparent) and 1 (fully opaque). + * + * Defaults to `1`. + */ + fillOpacity?: number | DynamicCellLayout | undefined; + + /** + * Controls whether the table has any borders by default. + * + * If set to `false`, borders can only be added to cells via their `border` property. + * + * Defaults to `true`. + */ + defaultBorder?: boolean | undefined; +} + +/** + * Callback to control a property of the {@link CustomTableLayout} depending on the row number, + * starting from 0. + */ +export type DynamicLayout = (rowIndex: number, node: ContentTable) => T | null; + +/** + * Callback to control a property of the {@link CustomTableLayout} depending on the column number, + * starting from 0. + */ +export type VerticalDynamicLayout = (columnIndex: number, node: ContentTable) => T | null; + +/** + * Callback to control a property of the {@link CustomTableLayout} depending on the row and column number, + * both starting from 0. + */ +export type DynamicCellLayout = ( + rowIndex: number, + node: ContentTable, + columnIndex: number, +) => T | null; + +/** + * Callback to control a property of the {@link CustomTableLayout} depending on the column and row number, + * both starting from 0. + */ +export type VerticalDynamicCellLayout = ( + columnIndex: number, + node: ContentTable, + rowIndex: number, +) => T | null; + +/** + * Style of a dashed line. + */ +export interface Dash { + /** Length of each dash in `pt`. */ + length: number; + + /** + * Space between dashes in `pt`. + * + * Defaults to the same value as {@link length}. + */ + space?: number | undefined; +} + +/** + * Style of a line. + */ +export interface LineStyle { + /** + * Makes the line dashed. + * + * Defaults to a solid line. + */ + dash?: Dash | undefined; +} + +/** + * Additional properties of {@link Content} objects that are used as table cells. + */ +export interface TableCellProperties { + /** + * Number of rows the cell spans. + * + * Cells covered by this cell still need to be declared. They should be + * filled with an empty object placeholder (`{}`). + * + * Defaults to `1`. + */ + rowSpan?: number | undefined; + + /** + * Number of columns the cell spans. + * + * Cells covered by this cell still need to be declared. They should be + * filled with an empty object placeholder (`{}`). + * + * Defaults to `1`. + */ + colSpan?: number | undefined; + + /** + * Controls on which sides the cell has borders. + * + * Tuple order: `[left, top, right, bottom]` + * + * Defaults to `[true, true, true, true]`. + */ + border?: [boolean, boolean, boolean, boolean] | undefined; + + /** + * Color of the border on each side of the cell. + * + * Tuple order: `[left, top, right, bottom]` + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to the border color defined by the given table layout, or `black` on all sides. + */ + borderColor?: [string, string, string, string] | undefined; + + /** + * Overlays the cell with the given pattern. + */ + overlayPattern?: PatternFill | undefined; + + /** + * Opacity of the given {@link overlayPattern}. + * Must be between 0 (fully transparent) and 1 (fully opaque). + * + * Defaults to `1`. + */ + overlayOpacity?: number | null | undefined; + + /** + * Vertical alignment of the cell's content. + * + * Defaults to `top`. + */ + verticalAlignment?: "top" | "middle" | "bottom" | undefined; +} + +/** + * A cell of a {@link Table}. + * - Can be any valid content. Content objects provide additional properties to control + * the cell's appearance. + * - Use empty objects (`{}`) as placeholders for cells that are covered by other cells + * spanning multiple rows or columns. + */ +export type TableCell = null | Record | (Content & TableCellProperties); + +/** + * A table. + */ +export interface Table { + /** + * Two-dimensional array that defines the table's rows and their cells. + * + * Given a row and column number (both starting from 0), each cell is addressed as + * `body[rowIndex][columnIndex]`. + */ + body: TableCell[][]; + + /** + * Column widths of the table. + * - `*` distributes the width equally, filling the whole available space. + * - `auto` sets the widths based on the content, filling only the necessary space. + * - Use an array to control the width of each column individually. + * The array must contain widths for all columns. + * + * A column width smaller than a cell's content will break the text into multiple lines. + * + * Defaults to `auto`. + */ + widths?: "*" | "auto" | Size[] | undefined; + + /** + * Row heights of the table. + * - A number sets an absolute height in `pt` for every row. + * - `auto` sets the heights based on the content. + * - Use an array or a callback function to control the height of each row individually. + * + * The given values are ignored for rows whose content is higher. + * + * Defaults to `auto`. + */ + heights?: number | "auto" | Array | DynamicRowSize | undefined; + + /** + * Number of rows from the top that make up the table's header. + * + * If the table spans across multiple pages, the header is repeated on every page. + * + * Defaults to `0`. + */ + headerRows?: number | undefined; + + /** + * Controls whether the contents of a table row should be kept together on the same page. + * + * Defaults to `false`. + */ + dontBreakRows?: boolean | undefined; + + /** + * Number of rows after the given {@link headerRows} that should be kept together with + * the header rows, without a page break in between. + * + * Defaults to `0`. + */ + keepWithHeaderRows?: number | undefined; +} + +/** + * Built-in predefined table layouts: + * - `noBorders` renders the table without borders and without horizontal padding for the left- and right-most cell + * - `headerLineOnly` only renders a horizontal border below the rows marked as header + * - `lightHorizontalLines` renders gray horizontal borders + */ +export type PredefinedTableLayout = "noBorders" | "headerLineOnly" | "lightHorizontalLines"; + +/** + * A table layout. + * + * Available options are: + * - the name of a built-in predefined table layout + * - the name of a global custom table layout + * - a custom table layout object + */ +export type TableLayout = string | PredefinedTableLayout | CustomTableLayout; + +/** + * Style definition. + * + * Most properties are passed down to an element's children. + * + * The properties can also be applied to element objects directly. + */ +export interface Style { + /** + * Name of the font. + * + * Only built-in and globally declared fonts are available, regardless of the fonts + * installed on the system. + * + * Defaults to `Roboto`. + */ + font?: string | undefined; + + /** + * Font size in `pt`. + * + * Defaults to `12`. + */ + fontSize?: number | undefined; + + /** + * OpenType font features to apply. + */ + fontFeatures?: PDFKit.Mixins.OpenTypeFeatures[] | undefined; + + /** + * Line height as a factor of the {@link fontSize}. + * + * Defaults to `1`. + */ + lineHeight?: number | undefined; + + /** + * Controls whether the text is bold. + * + * Defaults to `false`. + */ + bold?: boolean | undefined; + + /** + * Controls whether the text is italic. + * + * Defaults to `false`. + */ + italics?: boolean | undefined; + + /** + * Text alignment. + * + * Defaults to `left`. + */ + alignment?: Alignment | undefined; + + /** + * Text color. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to `black`. + */ + color?: string | undefined; + + /** + * Background color of the text. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`, + * as well as a reference to a pattern. + * + * To set the background of table cells, use {@link fillColor} instead. + */ + background?: string | PatternFill | undefined; + + /** + * Color of list markers (i.e. bullet points or numbers). + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to the text's {@link color}. + */ + markerColor?: string | undefined; + + /** + * Text decoration to apply. + */ + decoration?: Decoration | Decoration[] | undefined; + + /** + * Style to apply to the given {@link decoration}. + * + * Defaults to `solid`. + */ + decorationStyle?: DecorationStyle | undefined; + + /** + * Color to apply to the given {@link decoration}. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to the text's {@link color}. + */ + decorationColor?: string | undefined; + + /** + * Line thickness of the {@link decoration} in `pt`. + * + * If used in combination with a {@link decorationStyle}, this value is only used as a baseline + * for the computation of the actual line width. + * + * Defaults to a value derived from the {@link fontSize}. + */ + decorationThickness?: number | undefined; + + /** + * Margins to apply. + * + * Overrides the single-side `marginXXX` properties, unless this value is inherited + * from another style. + * + * Ignored for content within an inline text array + * (`{ text: [{ ... }] }`). + */ + margin?: Margins | undefined; + + /** + * Margin in `pt` to apply above the content. + * + * If {@link margin} is set, this value is ignored, unless the margin was inherited + * from another style. + */ + marginTop?: number | undefined; + + /** + * Margin in `pt` to apply to the right of the content. + * + * If {@link margin} is set, this value is ignored, unless the margin was inherited + * from another style. + */ + marginRight?: number | undefined; + + /** + * Margin in `pt` to apply below the content. + * + * If {@link margin} is set, this value is ignored, unless the margin was inherited + * from another style. + */ + marginBottom?: number | undefined; + + /** + * Margin in `pt` to apply to the left of the content. + * + * If {@link margin} is set, this value is ignored, unless the margin was inherited + * from another style. + */ + marginLeft?: number | undefined; + + /** + * Controls whether to preserve spaces at the beginning of a paragraph. + * + * Defaults to `false`. + */ + preserveLeadingSpaces?: boolean | undefined; + + /** + * Controls whether to preserve spaces at the end of a paragraph. + * + * Defaults to `false`. + */ + preserveTrailingSpaces?: boolean | undefined; + + /** + * Opacity of the content. + * Must be between 0 (fully transparent) and 1 (fully opaque). + * + * Defaults to `1`. + */ + opacity?: number | undefined; + + /** + * Spacing between characters in `pt`. + * + * Defaults to `0`. + */ + characterSpacing?: number | undefined; + + /** + * Indent at the beginning of a paragraph in `pt`. + * + * Defaults to `0`. + */ + leadingIndent?: number | undefined; + + /** + * Controls whether the text is rendered as superscript. + * + * Defaults to `false`. + */ + sup?: boolean | undefined; + + /** + * Controls whether the text is rendered as subscript. + * + * Defaults to `false`. + */ + sub?: boolean | undefined; + + /** + * Background fill color for table cells. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`, + * as well as a reference to a pattern. + * + * Only applies to {@link TableCell} elements. + * For the background color of text, use {@link background} instead. + */ + fillColor?: string | PatternFill | undefined; + + /** + * Opacity of the given {@link fillColor}. + * Must be between 0 (fully transparent) and 1 (fully opaque). + * + * Only applies to {@link TableCell} elements. + * + * Defaults to `1`. + */ + fillOpacity?: number | undefined; + + /** + * Controls whether text paragraphs inside table cells should be rendered as + * a single line. + * If the column has a fixed width, long text lines will overflow the column; + * otherwise, the column will grow in width. + * + * Only applies to {@link TableCell} elements. + * + * defaults to `false`. + */ + noWrap?: boolean | undefined; + + /** + * Controls the line breaking behavior. + * + * - `normal` breaks lines at spaces + * - `break-all` breaks lines anywhere + * + * Defaults to `normal`. + */ + wordBreak?: "normal" | "break-all" | undefined; + + /** + * Space between columns in `pt`. + * + * Only applies to {@link ContentColumns} elements. + * + * Defaults to `0`. + */ + columnGap?: number | undefined; +} + +/** + * Named style defined in {@link TDocumentDefinitions.styles}. + */ +export interface NamedStyle extends Style { + /** + * Names of other styles in {@link TDocumentDefinitions.styles} to extend. + * + * An array applies the styles in the given order, later styles overriding + * properties from the earlier ones. + * + * Extended styles are overridden by the properties on this style. + */ + extends?: string | string[] | undefined; +} + +/** + * Applies one or more styles. + * + * - A string references a named style from {@link TDocumentDefinitions.styles} + * - An object sets the given style properties + * - An array of strings or objects applies the styles in the given order, + * later styles overriding properties from the earlier ones + * + * Styles defined this way can be overridden by the {@link Style} properties on an element itself. + */ +export type StyleReference = string | Style | Array; + +/** + * Common type for all available content elements. + * + * Special content types: + * - A string is rendered like a {@link ContentText} + * - An array is rendered like a {@link ContentStack} + */ +export type Content = + | Record + | boolean + | null + | string + | number + | Content[] + | ContentText + | ContentColumns + | ContentStack + | ContentUnorderedList + | ContentOrderedList + | ContentTable + | ContentAnchor + | ContentPageReference + | ContentTextReference + | ContentToc + | ContentTocItem + | ContentImage + | ContentSvg + | ContentQr + | ContentCanvas + // Even though only allowed on the document root level, sections can be nested e.g. in stacks, + // so we treat them like normal content elements + | ContentSection + | ContentAttachment; + +/** + * Internal helper type to prevent TypeScript from allowing + * invalid element definitions. + * + * Content element types should not use this type directly, but extend + * {@link ForbidOtherElementProperties} instead. + */ +interface ForbiddenElementProperties { + text?: never; + columns?: never; + stack?: never; + ul?: never; + ol?: never; + table?: never; + pageReference?: never; + textReference?: never; + toc?: never; + image?: never; + svg?: never; + qr?: never; + canvas?: never; + section?: never; + attachment?: never; +} + +/** + * Internal helper type to prevent TypeScript from allowing element definitions + * that contain multiple element types at once. + * + * Advantages: + * - Does not allow setting multiple element properties together (e.g. `ol` + `ul`) + * - Does not allow using optional properties from other element types + * + * Disadvantages: + * - `property in content` does not narrow the type any longer + * - Autocompletion does not sort the primary element properties at the top + * - Error messages are not very good + */ +type ForbidOtherElementProperties = Omit< + ForbiddenElementProperties, + TProperty +>; + +/** + * Document attachment. + * + * For linking an attachment to a custom image, use {@link ContentImage.linkToFile} instead. + */ +export interface ContentAttachment extends ForbidOtherElementProperties<"attachment"> { + /** + * Attachment to the document, either declared inline or referenced by name from + * {@link TDocumentDefinitions.attachments} or {@link TDocumentDefinitions.files}. + */ + attachment: Attachment | string; + + /** + * Icon for the attachment. + * + * Defaults to `Push`. + */ + icon?: "Push" | "GraphPush" | "Paperclip" | undefined; +} + +/** + * Text element. + * + * For simple text without other properties, a string can be used instead of this element. + */ +export interface ContentText extends ContentLink, ContentBase, ForbidOtherElementProperties<"text"> { + /** + * Text content. + * + * Makes its contents inline: Arrays are no longer rendered like {@link ContentStack} + * below one another, but as inline text in a single paragraph. + */ + text: Content; + /** + * Adds this node to the PDF outline/bookmark tree. + * + * Outlines are hierarchical navigation entries shown in the PDF viewer. + */ + outline?: boolean | undefined; + /** + * Overrides the displayed bookmark label. + */ + outlineText?: string | undefined; + /** + * Marks the bookmark as expanded/opened by default. + */ + outlineExpanded?: boolean | undefined; + /** + * Assigns this bookmark to the parent entry with the given `id`. + */ + outlineParentId?: string | undefined; +} + +/** + * Element that divides its children into multiple columns. + */ +export interface ContentColumns extends ContentBase, ForbidOtherElementProperties<"columns"> { + /** Divides the given elements into multiple columns. */ + columns: Column[]; + /** + * Enables snaking columns (newspaper-style columns), where content flows vertically through the first column + * and continues at the top of the next columns as needed. Only the first column should contain content; + * the remaining columns act as empty overflow targets. + * + * Note: Recursive snaking columns are not supported. + */ + snakingColumns?: boolean | undefined; +} + +/** + * Stack that renders its children as multiple paragraphs. + * + * For simple stacks without properties, a content array can be used instead. + */ +export interface ContentStack extends ContentBase, ForbidOtherElementProperties<"stack"> { + /** + * Stack that renders the given elements as multiple paragraphs. + * + * For simple stacks without properties, a content array can be used instead. + */ + stack: Content[]; +} + +/** + * Element that renders an ordered / numbered list. + */ +export interface ContentOrderedList extends ContentBase, ForbidOtherElementProperties<"ol"> { + /** + * Renders the given elements as an ordered / numbered list. + */ + ol: OrderedListElement[]; + + /** + * List marker type determining the numbering scheme, such as decimal, alphabetic, or Roman. + * + * Defaults to `decimal`. + */ + type?: OrderedListType | undefined; + + /** + * Separator between the list markers and the list item content. + * + * - A string is inserted after the marker + * - A tuple of two strings is inserted before and after the marker + * + * Defaults to `.` + */ + separator?: string | [string, string] | undefined; + + /** + * Controls whether the markers should be rendered in descending order. + * + * Defaults to `false`. + */ + reversed?: boolean | undefined; + + /** + * Number of the first marker. + * + * For a non-decimal {@link type}, the number is mapped to the corresponding + * marker string (e.g. `1` => `A` for `upper-alpha`). + * + * Defaults to `1`, or the number of items if {@link reversed} is set. + */ + start?: number | undefined; +} + +/** + * Element that renders an unordered / bulleted list element. + */ +export interface ContentUnorderedList extends ContentBase, ForbidOtherElementProperties<"ul"> { + /** + * Renders the given elements as an unordered / bulleted list. + */ + ul: UnorderedListElement[]; + + /** + * List marker type. + * + * Defaults to `disc`. + */ + type?: UnorderedListType | undefined; +} + +/** + * Canvas / vector element. + */ +export interface ContentCanvas extends ContentBase, ForbidOtherElementProperties<"canvas"> { + /** + * Renders the given vector elements on a canvas. + * + * Complex vectors can be rendered from an SVG image using the `svg` property instead. + */ + canvas: CanvasElement[]; +} + +/** + * SVG image element. + * + * For images other than SVG, use a {@link ContentImage} instead. + */ +export interface ContentSvg extends ContentBase, ContentLink, ForbidOtherElementProperties<"svg"> { + /** + * Renders the given SVG element or content string as an image. + * + * For images other than SVG, use the `image` property instead. + * + * Simple vectors can also be rendered using the `canvas` property instead. + */ + svg: string | SVGElement; + + /** + * Width of the image in `pt`. + * + * Unlike JPEG or PNG images, SVG images always keep their aspect ratio. + * If the given width is larger than the image's width scaled to the given {@link height}, + * the image is centered horizontally. + * To prevent this behavior, either specify only one of the two properties, or use {@link fit} + * instead. + * + * Defaults to the SVG image's native width, or scales it down + * proportionally if a {@link height} is given. + */ + width?: number | undefined; + + /** + * Height of the image in `pt`. + * + * Unlike JPEG or PNG images, SVG images always keep their aspect ratio. + * If the given height is larger than the image's height scaled to the given {@link width}, + * the image is centered vertically. + * To prevent this behavior, either specify only one of the two properties, or use {@link fit} + * instead. + * + * Defaults to the SVG image's native height, or scales it down + * proportionally if a {@link width} is given. + */ + height?: number | undefined; + + /** + * Box the image is scaled to fit inside, preserving its aspect ratio. + * + * The image only occupies the space of its own size after scaling, + * even if one side of the box is larger. + * + * Tuple elements: `[width, height]`. + */ + fit?: [number, number] | undefined; +} + +/** + * Raster image element. + * + * For SVG images, use a {@link ContentSvg} element instead. + */ +export interface ContentImage extends ContentLink, ContentBase, ForbidOtherElementProperties<"image"> { + /** + * Renders the given value as image. + * + * Available options: + * - A reference by name to an image defined in {@link TDocumentDefinitions.images} + * - A data URL + * - A remote URL via http:// or https:// + * + * Supported image formats: JPEG, PNG + * + * For SVG images, use the `svg` property instead. + */ + image: string; + + /** + * Width of the image in `pt`. + * + * If a {@link height} is given as well, the image is stretched to + * the given dimensions without preserving its aspect ratio. + * To prevent this behavior, either specify only one of the two properties, or use {@link fit} + * instead. + * + * Defaults to the image's native width, or scales it down + * proportionally if a {@link height} is given. + */ + width?: number | undefined; + + /** + * Height of the image in `pt`. + * + * If a {@link width} is given as well, the image is stretched to + * the given dimensions without preserving its aspect ratio. + * To prevent this behavior, either specify only one of the two properties, or use {@link fit} + * instead. + * + * Defaults to the image's native height, or scales it down + * proportionally if a {@link width} is given. + */ + height?: number | undefined; + + /** + * Box the image is scaled to fit inside, preserving its aspect ratio. + * + * The image only occupies the space of its own size after scaling, + * even if one side of the box is larger. + * + * Tuple elements: `[width, height]`. + */ + fit?: [number, number] | undefined; + + /** + * Container to completely cover with an image, possibly cutting it off horizontally + * or vertically. + */ + cover?: ImageCover | undefined; + + /** + * Links the image to an attachment, either declared inline or referenced by name from + * {@link TDocumentDefinitions.attachments} or {@link TDocumentDefinitions.files}. + */ + linkToFile?: Attachment | string | undefined; +} + +/** + * Table element. + */ +export interface ContentTable extends ContentBase, ForbidOtherElementProperties<"table"> { + /** + * Renders a table. + * + * Use the {@link layout} property to control its layout. + */ + table: Table; + + /** + * Layout for the table, or a reference to a predefined or global layout. + * + * Defaults to a layout with black borders. + */ + layout?: TableLayout | undefined; +} + +/** + * Anchor text element that can be referenced by cross references or + * used in a table of contents. + * + * Anchors can contain text content only. + */ +export interface ContentAnchor extends ContentBase, ForbidOtherElementProperties<"text"> { + /** + * Text content of the anchor. + */ + text: string | ContentAnchor | Array; + + /** + * ID of the anchor that can be used to reference it. + * + * IDs must be unique within the document. + */ + id: string; +} + +/** + * Text element to be displayed in a table of contents. + */ +export interface ContentTocItem extends ContentBase, ForbidOtherElementProperties<"text"> { + /** + * Text content of the element. + * + * Limited to text only; other content cannot be rendered inside a + * table of contents. + */ + text: string | ContentTocItem | Array; + + /** + * References to the tables of contents the element should be displayed in. + * + * - `true` will display the element in all {@link ContentToc} elements that + * do not have an `id` set + * - a string will display the element in the {@link ContentToc} with matching `id` + * - an array will display the element in all {@link ContentToc} + * elements with matching `id` properties (`true` for the default one + * without an `id`) + */ + tocItem: boolean | string | Array; + + /** + * Style or style reference that is applied to the reference for this element + * in the table of contents. + */ + tocStyle?: StyleReference | undefined; + + /** + * Style or style reference that is applied to the page number for this element + * in the table of contents. + */ + tocNumberStyle?: StyleReference | undefined; + + /** + * Margin that is applied to the reference for this element in the table of + * contents. + */ + tocMargin?: Margins | undefined; +} + +/** + * Reference to an anchor element, displaying its page number. + */ +export interface ContentPageReference extends ContentBase, ForbidOtherElementProperties<"pageReference"> { + /** + * `id` of a {@link ContentAnchor} to reference. + * + * Displays the target element's page number. + * - To display the element's text content, use `textReference` instead. + * - To display arbitrary content, use `linkToDestination` instead. + * + * To link to a fixed page number (without a reference target), use `linkToPage` instead. + */ + pageReference: string; +} + +/** + * Reference to an anchor element, displaying its text content. + */ +export interface ContentTextReference extends ContentBase, ForbidOtherElementProperties<"textReference"> { + /** + * `id` of a {@link ContentAnchor} to reference. + * + * Displays the target element's text content. + * - To display its page number, use `pageReference` instead. + * - To display arbitrary content, use `linkToDestination` instead. + */ + textReference: string; +} + +/** + * Table of contents element. + */ +export interface ContentToc extends ContentBase, ForbidOtherElementProperties<"toc"> { + /** + * Renders a table of contents. + * + * One document may contain more than one table of contents. + * In this case, you should assign each additional table of contents a unique `id`. + * This allows you to add items to it using the {@link ContentTocItem.tocItem} property. + */ + toc: TableOfContent; +} + +/** + * QR code element. + */ +export interface ContentQr extends ContentBase, ForbidOtherElementProperties<"qr"> { + /** + * Renders the given string as a QR code. + */ + qr: string; + + /** + * Foreground color of the QR code. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to `black`. + */ + foreground?: string | undefined; + + /** + * Background color of the QR code. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to `white`. + */ + background?: string | undefined; + + /** + * Size in `pt` to fit the QR code in. + * + * As QR codes are square, this essentially sets both the width and height. + * + * Defaults to a heuristic depending on the pixel size of the QR code (see {@link version}) + * so that every pixel is `5pt` large. + */ + fit?: number | undefined; + + /** + * QR code version. + * + * The "version" of a QR code controls the number of its pixels and thus the maximum amount of + * data it can hold. + * + * Possible values are between 1 (21x21 pixels) and 40 (177x177 pixels). + * + * Defaults to the lowest possible version capable of holding the given {@link qr} data + * with the specified {@link mode} and {@link eccLevel}. + */ + version?: number | undefined; + + /** + * QR code error correction level that controls how many errors can be corrected. + * + * Possible values: + * - `L` = low (7%) + * - `M` = medium (15%) + * - `Q` = quartile (25%) + * - `H` = high (30%) + * + * Defaults to `L`. + */ + eccLevel?: "L" | "M" | "Q" | "H" | undefined; + + /** + * QR code encoding mode. + * + * Defaults to the mode that produces the smallest payload for the given {@link qr} data. + */ + mode?: "numeric" | "alphanumeric" | "octet" | undefined; + + /** + * QR code mask pattern from 0-7. + * + * Defaults to choosing a mask based on the given {@link qr} data that tries to + * avoid problematic patterns in the resulting QR code. + */ + mask?: number | undefined; + + /** + * Padding on all sides of the QR code, specified as multiples of the size of a QR code pixel. + * + * The padding does not affect the size of the QR code itself, even if {@link fit} is specified. + * + * Defaults to `0`. + */ + padding?: number | undefined; +} + +/** + * Base type for most content elements. + */ +export interface ContentBase extends Style { + overlayPattern?: PatternFill; + overlayOpacity?: number; + /** + * Style or style reference to apply. + */ + style?: StyleReference | undefined; + + /** + * Absolute position of the element from the top-left corner of the current page. + * + * If set, the element does not occupy any space in the normal content layout. + * + * In this case, the element is rendered above elements defined earlier in the + * document content, but below elements defined later. + */ + absolutePosition?: Position | undefined; + + /** + * Relative position of the element from the position it would normally be rendered in. + * + * If set, the element does not occupy any space in the normal content layout. + * + * In this case, the element is rendered above elements defined earlier in the + * document content, but below elements defined later. + */ + relativePosition?: Position | undefined; + + /** + * Controls whether to insert a page break before or after the element. + * + * For more complex page break logic, use {@link TDocumentDefinitions.pageBreakBefore}. + */ + pageBreak?: PageBreak | undefined; + + /** + * Sets the page orientation. + * + * Only relevant when used in combination with {@link pageBreak}. + */ + pageOrientation?: PageOrientation | undefined; + + /** + * Sets the headline level for the current element. + * + * This value is not currently used by pdfmake itself. + * It is, however, passed to the {@link TDocumentDefinitions.pageBreakBefore} callback, where you + * can use it to automatically insert page breaks before elements with certain headline levels. + */ + headlineLevel?: number | undefined; + + /** + * Controls whether the element should be kept together on the same page. + * + * Defaults to `false`. + */ + unbreakable?: boolean | undefined; +} + +/** + * Link element. + * Extended by {@link ContentText} and {@link ContentImage}. + */ +export interface ContentLink { + /** + * URL to open when the element is clicked on. + * + * Use in combination with a `text` or `image` property. + */ + link?: string | undefined; + + /** + * Page to jump to when the element is clicked on. + * + * Use in combination with a `text` or `image` property. + * + * To link to another element, use {@link linkToDestination}, `textReference` + * or `pageReference` instead. + */ + linkToPage?: number | undefined; + + /** + * `id` of an element to jump to when the element is clicked on. + * + * Use in combination with a `text` or `image` property. + * + * - To display the target element's content, use `textReference` instead. + * - To display the target element's page number, use `pageReference` instead. + * + * To link to a fixed page number (without a reference target), use `linkToPage` instead. + */ + linkToDestination?: string | undefined; +} + +/** + * Document section. Only allowed at the root level of the document. + */ +export interface ContentSection extends ForbidOtherElementProperties<"section"> { + /** + * Content within the document section. + */ + section: Content; + + /** + * Size of the section's pages. + * + * Defaults to the document-wide value. + */ + pageSize?: TDocumentDefinitions["pageSize"] | "inherit" | null; + + /** + * Orientation of the section's pages. + * + * Defaults to the document-wide value. + */ + pageOrientation?: TDocumentDefinitions["pageOrientation"] | "inherit" | null; + + /** + * Margins around the content on each page of the section. + * + * Defaults to the document-wide value. + */ + pageMargins?: TDocumentDefinitions["pageMargins"] | "inherit" | null; + + /** + * Header content that is repeated on every page of the section. + * + * Defaults to the document-wide value. + */ + header?: TDocumentDefinitions["header"] | "inherit" | null; + + /** + * Footer content that is repeated on every page of the section. + * + * Defaults to the document-wide value. + */ + footer?: TDocumentDefinitions["footer"] | "inherit" | null; + + /** + * Content that is rendered behind the section's content, and repeated for every page. + * + * Defaults to the document-wide value. + */ + background?: TDocumentDefinitions["background"] | "inherit" | null; + + /** + * Watermark that is rendered on top of each page of the section. + * + * Defaults to the document-wide value. + */ + watermark?: TDocumentDefinitions["watermark"] | "inherit" | null; +} + +/** + * Table of contents. + * + * One document may contain more than one table of contents. + * In this case, you should assign each additional table of contents a unique `id`. + * This allows you to add items to it using the {@link ContentTocItem.tocItem} property. + */ +export interface TableOfContent { + /** + * Title displayed at the top of the table of contents. + */ + title?: Content | undefined; + + /** + * Margin around each item in `pt`. + * + * Can be overridden per item using {@link ContentTocItem.tocMargin}. + * + * Defaults to `0`. + */ + textMargin?: Margins | undefined; + + /** + * Style or style reference to apply to each item. + * + * Can be overridden per item using {@link ContentTocItem.tocStyle}. + */ + textStyle?: StyleReference | undefined; + + /** + * Style or style reference to apply to the page numbers. + * + * Can be overridden per item using {@link ContentTocItem.tocNumberStyle}. + */ + numberStyle?: StyleReference | undefined; + + /** + * ID to differentiate multiple tables of contents: + * - Without an ID set, a table of content contains all items setting + * {@link ContentTocItem.tocItem} to `true` + * - With an ID set, a table of content contains all items setting + * {@link ContentTocItem.tocItem} to its ID + */ + id?: string | undefined; + + /** + * If set to `true`, the table of contents is hidden when it contains no items. + */ + hideEmpty?: boolean | undefined; + + /** + * Controls how the items are sorted. + * + * Defaults to `page`. + */ + sortBy?: "page" | "title" | undefined; + + /** + * Specifies the locale used for sorting as BCP 47 language tag, e.g. `en-US`. + * + * Only relevant if {@link sortBy} is set to `title`. + * + * Defaults to the system locale. + */ + sortLocale?: string | undefined; + + /** + * If set to `true`, adds all items to outlines / bookmarks (any existing outline settings on texts are respected) + */ + outlines?: boolean | undefined; +} + +/** + * Additional properties of {@link Content} objects that are used as columns. + */ +export interface ColumnProperties { + /** + * Column width. + * + * Defaults to `*`. + */ + width?: Size | undefined; +} + +/** + * Column used as part of {@link ContentColumns}. + */ +export type Column = Content & ColumnProperties; + +/** + * List marker type of a {@link ContentOrderedList}: + * - `decimal`: 1, 2, 3 + * - `lower-alpha`: a, b, c + * - `upper-alpha`: A, B, C + * - `lower-roman`: i, ii, iii + * - `upper-roman`: I, II, III + * - `none`: no marker + */ +export type OrderedListType = + | "decimal" + | "lower-alpha" + | "upper-alpha" + | "lower-roman" + | "upper-roman" + | "none"; + +/** + * Additional properties of {@link Content} objects that are used as items + * of an ordered list. + */ +export interface OrderedListElementProperties { + /** + * Overrides the counter for this list item. + * + * For a non-decimal {@link listType}, the number is mapped to the corresponding + * marker string (e.g. `1` => `A` for `upper-alpha`). + * + * Does not influence the counters for the other list items. + */ + counter?: number | undefined; + + /** + * Overrides the list marker type for this list item. + * + * Defaults to the list's {@link ContentOrderedList.type}. + */ + listType?: OrderedListType | undefined; + + /** + * Color of the list marker (i.e. number). + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to the list's marker color. + */ + markerColor?: string | undefined; +} + +/** + * Item of a {@link ContentOrderedList}. + */ +export type OrderedListElement = Content & OrderedListElementProperties; + +/** + * List marker type of a {@link ContentUnorderedList}: + * - `disc`: a solid circle + * - `square`: a solid square + * - `circle`: an outlined circle + * - `none`: no marker + */ +export type UnorderedListType = "disc" | "square" | "circle" | "none"; + +/** + * Additional properties of {@link Content} objects that are used as items + * of an unordered list. + */ +export interface UnorderedListElementProperties { + /** + * Overrides the list marker type for this list item. + * + * Defaults to the list's {@link ContentUnorderedList.type}. + */ + listType?: UnorderedListType | undefined; + + /** + * Color of the list marker (i.e. bullet point). + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to the list's marker color. + */ + markerColor?: string | undefined; +} + +/** + * Item of a {@link ContentUnorderedList}. + */ +export type UnorderedListElement = Content & UnorderedListElementProperties; + +/** + * Child elements of a {@link ContentCanvas}. + */ +export type CanvasElement = CanvasRect | CanvasPolyline | CanvasLine | CanvasEllipse; + +/** + * Type to render the ends of lines in a canvas: + * - `butt` renders a short square line end + * - `square` renders a long square line end + * - `round` renders a long round line end + */ +export type CanvasLineCap = "butt" | "round" | "square"; + +/** + * Type to render joints between lines of different angles in a canvas: + * - `miter` renders sharp edges + * - `round` renders round edges + * - `bevel` adds diagonal edges + */ +export type CanvasLineJoin = "miter" | "round" | "bevel"; + +/** + * A rectangle as part of a {@link ContentCanvas}. + */ +export interface CanvasRect extends CanvasLineElement, CanvasFilledElement { + type: "rect"; + + /** Horizontal position from the left edge of the canvas element in `pt`. */ + x: number; + + /** Vertical position from the top of the canvas element in `pt`. */ + y: number; + + /** Width in `pt`. */ + w: number; + + /** Height in `pt`. */ + h: number; + + /** + * Corner radius in `pt`. + * + * Defaults to `0`. + */ + r?: number | undefined; +} + +/** + * Point of a {@link CanvasPolyline}. + */ +export interface Point { + /** Horizontal position from the left edge of the canvas element in `pt`. */ + x: number; + + /** Vertical position from the top of the canvas element in `pt`. */ + y: number; +} + +/** + * A line or shape consisting of multiple points as part of a {@link ContentCanvas}. + */ +export interface CanvasPolyline extends CanvasLineElement, CanvasFilledElement { + type: "polyline"; + + /** + * The points that make up the line. + */ + points: Point[]; + + /** + * Controls whether to draw a line between the last and the first specified {@link points}. + * + * Defaults to `false`. + */ + closePath?: boolean | undefined; + + /** + * Line end type. + * + * Defaults to `butt`. + */ + lineCap?: CanvasLineCap | undefined; +} + +/** + * A simple line as part of a {@link ContentCanvas}. + */ +export interface CanvasLine extends CanvasLineElement { + type: "line"; + + /** Horizontal line start position from the left in `pt`. */ + x1: number; + + /** Vertical line start position from the top in `pt`. */ + y1: number; + + /** Horizontal line end position from the left in `pt`. */ + x2: number; + + /** Vertical line end position from the top in `pt`. */ + y2: number; + + /** + * Line end type. + * + * Defaults to `butt`. + */ + lineCap?: CanvasLineCap | undefined; +} + +/** + * An ellipse or circle as part of a {@link ContentCanvas}. + */ +export interface CanvasEllipse extends CanvasLineElement, CanvasFilledElement { + type: "ellipse"; + + /** Horizontal position from the left edge of the canvas element in `pt`. */ + x: number; + + /** Vertical position from the top edge of the canvas element in `pt`. */ + y: number; + + /** Horizontal radius in `pt`. */ + r1: number; + + /** + * Vertical radius in `pt`. + * + * Defaults to the same value as {@link r1}. + */ + r2?: number | undefined; +} + +/** + * Base interface for all {@link ContentCanvas} child elements that can be filled. + */ +export interface CanvasFilledElement { + /** + * Background color the element is filled with. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`, + * as well as a reference to a pattern. + * + * To fill the element with a gradient, use {@link linearGradient} instead. + */ + color?: string | PatternFill | undefined; + + /** + * Opacity of the {@link color} or {@link linearGradient}. + * Must be between 0 (fully transparent) and 1 (fully opaque). + * + * Defaults to `1`. + */ + fillOpacity?: number | undefined; + + /** + * Linear horizontal gradient the element is filled with. + * + * The given stops are distributed equally from left to right. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * To fill the element with a solid color, use {@link color} instead. + */ + linearGradient?: string[] | undefined; +} + +/** + * Base interface for all {@link ContentCanvas} child elements that have a line. + */ +export interface CanvasLineElement { + /** + * Line width in `pt`. + * + * Defaults to `1`. + */ + lineWidth?: number | undefined; + + /** + * Line color. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to `black` if the element has no `color` set; defaults to no line otherwise. + */ + lineColor?: string | undefined; + + /** + * Opacity of the {@link lineColor}. + * Must be between 0 (fully transparent) and 1 (fully opaque). + * + * Defaults to `1`. + */ + strokeOpacity?: number | undefined; + + /** + * Makes the line dashed. + * + * Defaults to a solid line. + */ + dash?: Dash | undefined; + + /** + * Rendering of joints between lines of different angles. + * + * Defaults to `miter`. + */ + lineJoin?: CanvasLineJoin | undefined; +} + +/** + * Horizontal image alignment within its container. + */ +export type ImageAlignment = "left" | "right" | "center"; + +/** + * Vertical image alignment within its container. + */ +export type ImageVerticalAlignment = "top" | "bottom" | "center"; + +/** + * Container to completely cover with an image, possibly cutting it off horizontally + * or vertically. + */ +export interface ImageCover { + /** + * Container width in `pt`. + * + * Defaults to the image's (specified or native) width. + */ + width?: number | undefined; + + /** + * Container height in `pt`. + * + * Defaults to the image's (specified or native) width. + */ + height?: number | undefined; + + /** + * Horizontal alignment of the image inside the cover container if it is wider. + * + * Defaults to `center`. + */ + align?: ImageAlignment | undefined; + + /** + * Vertical alignment of the image inside the cover container if it is higher. + * + * Defaults to `center`. + */ + valign?: ImageVerticalAlignment | undefined; +} + +/** + * Dictionary of reusable style definitions that can be referenced by their key. + */ +export interface StyleDictionary { + [name: string]: NamedStyle; +} + +/** + * Supported PDF versions. + */ +export type PDFVersion = "1.3" | "1.4" | "1.5" | "1.6" | "1.7" | "1.7ext3"; + +/** + * Supported PDF subsets. + */ +export type PDFSubset = + | "PDF/A-1" + | "PDF/A-1a" + | "PDF/A-1b" + | "PDF/A-2" + | "PDF/A-2a" + | "PDF/A-2b" + | "PDF/A-3" + | "PDF/A-3a" + | "PDF/A-3b" + | "PDF/UA"; + +/** + * Watermark that is rendered on top of each page. + */ +export interface Watermark { + /** Text of the watermark. */ + text: string; + + /** + * Opacity of the {@link text}. + * Must be between 0 (fully transparent) and 1 (fully opaque). + * + * Defaults to `0.6`. + */ + opacity?: number | undefined; + + /** + * Clock-wise rotation angle of the {@link text}, with `0` being normal text + * from left to right, and `90` being vertical text from top to bottom. + * + * Defaults to an angle from the bottom left to the top right depending on the page size + * (~ `305` for A4). + */ + angle?: number | undefined; + + /** + * Name of the font. + * + * Only built-in and globally declared fonts are available, regardless of the fonts + * installed on the system. + * + * Defaults to `Roboto`. + */ + font?: string | undefined; + + /** + * Font size in `pt`. + * + * Defaults to a heuristic depending on the length of {@link text} to cover most of the page. + */ + fontSize?: number | undefined; + + /** + * Color of the {@link text}. + * + * Supports well-known color names like `blue` or hexadecimal color strings like `#ccffcc`. + * + * Defaults to `black`. + */ + color?: string | undefined; + + /** + * Controls whether the {@link text} is bold. + * + * Defaults to `false`. + */ + bold?: boolean | undefined; + + /** + * Controls whether the {@link text} is italic. + * + * Defaults to `false`. + */ + italics?: boolean | undefined; +} + +/** + * PDF tiling pattern definition. + */ +export interface Pattern { + /** Bounding box that defines the dimensions of the pattern in `pt`. */ + boundingBox: [number, number, number, number]; + + /** Horizontal step size in `pt`. */ + xStep: number; + + /** Vertical step size in `pt`. */ + yStep: number; + + /** PDF tiling pattern string. */ + pattern: string; +} + +/** + * Definition of an image to be embedded into the document. + */ +export interface ImageDefinition { + /** + * Image URL. + * + * Available options: + * - Data URLs + * - Remote URLs via http:// or https:// + * + * Supported image formats: JPEG, PNG + * + * SVG images can only be used in the document content using the `svg` property. + */ + url: string; + + /** + * HTTP headers to include in the image request, if {@link url} is a remote URL. + */ + headers?: Record; +} + +/** + * Document attachment. + */ +export interface Attachment { + /** + * Attachment source. + * + * Available options: + * - Data URLs + * - Remote URLs via http:// or https:// + * - File paths (on the server) + */ + src: string; + + /** + * File name of the attachment. + */ + name?: string | undefined; + + /** + * Description of the attachment. + */ + description?: string | undefined; +} + +/** + * Complete definition of a PDF document. + */ +export interface TDocumentDefinitions { + /** + * Main content of the document. + * + * Rendered inside the configured {@link pageMargins}. + */ + content: Content; + + /** + * Content that is rendered behind the document's {@link content}, and repeated for every page. + * + * Independent of the configured {@link pageMargins}. + */ + background?: DynamicBackground | Content | undefined; + + /** + * Controls whether to compress the resulting PDF document. + * + * Regardless of this value, any image files added to the document are embedded without + * recompression. This flag merely applies a lossless compression (similar to ZIP compression) + * to the whole finished PDF document. + * + * To control the size of the resulting PDF file and the quality of its images, optimize your + * image files before adding them: + * - For line art, try to find an SVG file, which often offers better quality at smaller file sizes. + * - Downscale large raster images to the smallest size that still looks good. + * - Use the file format (JPEG/PNG) and compression settings that yield the best compromise + * between file size and quality. + * + * Defaults to `true`. + */ + compress?: boolean | undefined; + + /** + * Default styles that apply to the complete document. + */ + defaultStyle?: Style | undefined; + + /** + * Footer content that is repeated on every page. + * + * **Note:** If the footer's content exceeds the available space as defined by + * {@link pageMargins}, it is not rendered at all. + */ + footer?: DynamicContent | Content | undefined; + + /** + * Header content that is repeated on every page. + * + * **Note:** If the header's content exceeds the available space as defined by + * {@link pageMargins}, it is not rendered at all. + */ + header?: DynamicContent | Content | undefined; + + /** + * Dictionary of images to be embedded into the document. + * + * The specified images can be referenced from content elements by their key. + * + * Available options: + * - A data URL + * - A remote URL via http:// or https:// + * - An object including a URL and additional HTTP headers + * + * Supported image formats: JPEG, PNG + * + * SVG images can only be used in the document content using the `svg` property. + */ + images?: Record | undefined; + + /** + * Metadata to embed into the document. + */ + info?: TDocumentInformation | undefined; + + /** + * Callback to determine where to break pages. + * Called repeatedly until no more page breaks are added. + * + * Not called for nodes that have `pageBreak: 'before'` set. + * + * @param currentNode - The current content node to check. + * @param nodeQueries - container to request additional information about the node. + * + * @returns whether to insert a page break before the current node. + */ + pageBreakBefore?: + | ((currentNode: Node, nodeQueries: NodeQueries) => boolean) + | undefined; + + /** + * Margins around the {@link content} on each page. + * + * If a {@link header} or {@link footer} is specified, the page margins must + * leave sufficient room for it to be rendered at all. + * + * Defaults to `40`. + */ + pageMargins?: Margins | undefined; + + /** + * Orientation of the document's pages. + * + * Defaults to `portrait` for standard page sizes; if a custom {@link pageSize} is given, + * it defaults to the orientation set through its width and height. + */ + pageOrientation?: PageOrientation | undefined; + + /** + * Size of the document's pages. + * + * Defaults to `A4`. + */ + pageSize?: PageSize | undefined; + + /** + * Dictionary for reusable styles to be referenced by their key throughout the document. + * + * To define styles that should apply by default, use {@link defaultStyle} instead. + */ + styles?: StyleDictionary | undefined; + + /** + * Password required to open the document. + * + * If set, the document is encrypted. + * Setting the {@link version} influences the encryption method used. + * + * An empty string is treated as "no password". + */ + userPassword?: string | undefined; + + /** + * Password required to get full access to the document. + * + * Use in combination with {@link permissions}. + * + * An empty string is treated as "no password". + * + * Does not encrypt the document; use {@link userPassword} for that. + */ + ownerPassword?: string | undefined; + + /** + * Permissions for accessing or modifying the document in different ways. + * + * The PDF file cannot enforce these permissions by itself. + * It relies on PDF viewer applications to respect them. + * + * Only relevant if {@link ownerPassword} is set. + * + * Defaults to `{}` (everything is forbidden) + */ + permissions?: PDFKit.DocumentPermissions | undefined; + + /** + * Version of the PDF specification the document is created with. + * + * Influences the encryption method used in combination with {@link userPassword}. + * The PDF content is always created with version 1.3. + * + * Defaults to `1.3`. + */ + version?: PDFVersion | undefined; + + /** + * Subset of the PDF specification the document is created with. + */ + subset?: PDFSubset | undefined; + + /** + * Controls whether the document is marked as a tagged PDF. + * + * Defaults to `false`. + */ + tagged?: boolean | undefined; + + /** + * Controls whether the document title should be displayed in the window title of the PDF viewer. + * + * Defaults to `false`. + */ + displayTitle?: boolean | undefined; + + /** + * Watermark that is rendered on top of each page. + */ + watermark?: string | Watermark | undefined; + + /** + * Dictionary of reusable pattern definitions that can be referenced by their key. + */ + patterns?: Record | undefined; + + /** + * Document language as BCP 47 language tag, e.g. `en-US`. + */ + language?: string | undefined; + + /** + * Document attachments that can be referenced by their key. + * + * To embed attachment files, use {@link files} instead. + */ + attachments?: Record | undefined; + + /** + * Document attachment files to embed into the document, that can be referenced by their key. + */ + files?: Record | undefined; +} + +/** + * Start position of a node in the document. + */ +export interface NodeStartPosition { + /** Page number (starting from 1) the node starts on. */ + pageNumber: number; + + /** Orientation of the page the node starts on. */ + pageOrientation: PageOrientation; + + /** Height of the page in `pt`, with the vertical page margins subtracted. */ + pageInnerHeight: number; + + /** Width of the page in `pt`, with the horizontal page margins subtracted. */ + pageInnerWidth: number; + + /** Horizontal start position from the left edge of the page in `pt`. */ + left: number; + + /** Vertical start position from the top of the page in `pt`. */ + top: number; + + /** + * Same as {@link top}, but as a relative value between the top and bottom page margin: + * 0 corresponds with the top page margin, 1 corresponds with the bottom page margin. + */ + verticalRatio: number; + + /** + * Same as {@link left}, but as a relative value between the left and right page margin: + * 0 corresponds with the left page margin, 1 corresponds with the right page margin. + */ + horizontalRatio: number; +} + +/** + * Information about a node that is being rendered. + */ +export interface Node { + /** Text content. */ + text?: Content | undefined; + + /** Unordered list elements. */ + ul?: UnorderedListElement[] | undefined; + + /** Ordered list elements. */ + ol?: OrderedListElement[] | undefined; + + /** Table content. */ + table?: Table | undefined; + + /** Image URL or reference. */ + image?: string | undefined; + + /** QR code content. */ + qr?: string | undefined; + + /** Canvas / vector elements. */ + canvas?: CanvasElement[] | undefined; + + /** SVG image content. */ + svg?: string | undefined; + + /** Column elements. */ + columns?: Column[] | undefined; + + /** The node's ID. */ + id?: string | undefined; + + /** Headline level specified on the node's content element. */ + headlineLevel?: number | undefined; + + /** Styles or style references applied to the node. */ + style?: StyleReference | undefined; + + /** The node's specified page break. */ + pageBreak?: PageBreak | undefined; + + /** Page orientation at the node's start position. */ + pageOrientation?: PageOrientation | undefined; + + /** Array containing all page numbers (starting from 1) the node spans across. */ + pageNumbers: number[]; + + /** Total number of pages in the document. */ + pages: number; + + /** Indicates whether the node is a {@link ContentStack}. */ + stack: boolean; + + /** Start position of the node. */ + startPosition: NodeStartPosition; +} + +/** + * Container to request additional information about a {@link Node}. + */ +export interface NodeQueries { + /** + * Returns the nodes after the current one on the same page. + */ + getFollowingNodesOnPage: () => Node[]; + + /** + * Returns the nodes on the next page. + */ + getNodesOnNextPage: () => Node[]; + + /** + * Returns the nodes before the current one on the same page. + */ + getPreviousNodesOnPage: () => Node[]; +} + +/** + * Information about the effective page size. + */ +export interface ContextPageSize { + /** Page height in `pt`. */ + height: number; + + /** Page width in `pt`. */ + width: number; + + /** Page orientation. */ + orientation: PageOrientation; +} + +export interface BufferOptions { + fontLayoutCache?: boolean | undefined; + bufferPages?: boolean | undefined; +} + +/** Shared asynchronous output methods. */ +export interface TCreatedPdf { + getStream(): Promise; + getBuffer(): Promise; + getBase64(): Promise; + getDataUrl(): Promise; +} +export interface NodeOutputDocument extends TCreatedPdf { + write(fileName: string): Promise; +} +export interface BrowserOutputDocument extends TCreatedPdf { + getBlob(): Promise; + download(fileName?: string): Promise; + open(win?: Window | null): Promise; + print(win?: Window | null): Promise; +} +export interface ValidationDiagnostic { + severity: 'error' | 'warning'; + code: string; + path: string; + message: string; +} +export interface ValidationOptions { + /** Unknown properties become errors; default: warnings (custom metadata is supported). */ + strict?: boolean; + /** Maximum reported diagnostics (default 100). */ + maxDiagnostics?: number; + /** Maximum nesting depth (default 100). */ + maxDepth?: number; +} +export interface ValidationResult { + valid: boolean; + errors: ValidationDiagnostic[]; + warnings: ValidationDiagnostic[]; + /** Checks deferred until rendering, without executing application callbacks. */ + deferred: string[]; + truncated: boolean; +} +export interface DocumentValidationError extends Error { + code: 'PDFMAKE_VALIDATION_ERROR'; + phase: 'validation'; + diagnostics: ValidationDiagnostic[]; +} +export interface CreatePdfOptions extends BufferOptions { + /** Opt-in preflight; rendering still validates dynamic values and resources. */ + validation?: boolean | ValidationOptions; +} +export interface PdfMakeBase { + createPdf(definition: TDocumentDefinitions, options?: CreatePdfOptions): Output; + /** Inspect untrusted data without mutation, resource access or executing callbacks. */ + validateDocument(definition: unknown, options?: ValidationOptions): ValidationResult; + setProgressCallback(callback?: ProgressCallback): void; + fonts: TFontDictionary; + addFonts(fonts: TFontDictionary): void; + setFonts(fonts: TFontDictionary): void; + clearFonts(): void; + addTableLayouts(layouts: Record): void; + setTableLayouts(layouts: Record): void; + clearTableLayouts(): void; + setUrlAccessPolicy(callback?: (url: string) => boolean): void; +} +export interface NodePdfMake extends PdfMakeBase { + setLocalAccessPolicy(callback?: (path: string) => boolean): void; +} +export interface BrowserPdfMake extends PdfMakeBase { + addVirtualFileSystem(files: TVirtualFileSystem): void; + addFontContainer(container: TFontContainer): void; +} + +/** + * Callback to track the document generation process. + * + * @param progress Current progress between 0 and 1. + */ +export type ProgressCallback = (progress: number) => void; + +// disable automatic exporting +export {}; diff --git a/webpack.config.js b/webpack.config.js index 7ccc87f72..40dd89846 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,6 +1,5 @@ var path = require('path'); var TerserPlugin = require('terser-webpack-plugin'); -var StringReplacePlugin = require("string-replace-webpack-plugin"); var webpack = require('webpack'); var pkg = require('./package.json'); @@ -88,16 +87,7 @@ module.exports = { { test: /FileSaver.min.js$/, use: { - loader: StringReplacePlugin.replace({ - replacements: [ - { - pattern: '"download"in HTMLAnchorElement.prototype', - replacement: function () { - return '(typeof HTMLAnchorElement !== "undefined" && "download" in HTMLAnchorElement.prototype)'; - } - } - ] - }) + loader: path.join(__dirname, 'scripts/file-saver-loader.cjs') } }, ] @@ -126,7 +116,6 @@ module.exports = { process: 'process/browser', // require "process" library, fix "process is not defined" error, source: https://stackoverflow.com/a/64553486 Buffer: ['buffer', 'Buffer'] // require "buffer" library, fix "Buffer is not defined" error, source: https://github.com/webpack/changelog-v5/issues/10#issuecomment-615877593 }), - new StringReplacePlugin(), new webpack.BannerPlugin({ banner: banner, raw: true