From 232dc925aa113d91f156e7f923009cffd14a7d88 Mon Sep 17 00:00:00 2001 From: alenvelocity Date: Thu, 8 Oct 2026 23:05:06 +0530 Subject: [PATCH] Rewrite the interpreter and rebuild the site The previous interpreter did not compile on master (the random library was missing its imports), lexed in quadratic time, dropped statements it could not parse, and modelled control flow as values. The browser build needed nightly Rust and Emscripten. This replaces it with a workspace of three crates on stable Rust 2024: the language (span-tracking lexer, Pratt parser, Result-based evaluator, a Host trait for I/O), the meowscript CLI, and a wasm-bindgen entry point built with wasm-pack for wasm32-unknown-unknown. Language changes, with every existing keyword and nya: package kept: mew for null, && and ||, string escapes, block comments, named pawction declarations, furrever with a condition, fur ~ loops, amew into object keys and array elements, reference semantics for furrballs and objects, block scoping, errors with line and column plus a caret, and a standard library of about 70 functions with arity checks. The site is rebuilt on Next 16, React 19, Tailwind 4, and CodeMirror 6. The interpreter runs in a Web Worker with a Stop button, output streams as it is printed, and the docs render the library reference from the interpreter's own tables. CI runs fmt, clippy, tests, and the site build. --- .cargo/config.toml | 7 +- .editorconfig | 18 + .github/workflows/ci.yml | 54 + .gitignore | 4 +- CONTRIBUTING.md | 85 +- Cargo.lock | 1590 +---- Cargo.toml | 39 +- DESIGN.md | 76 + README.md | 122 +- crates/meowscript-cli/Cargo.toml | 25 + crates/meowscript-cli/src/main.rs | 236 + crates/meowscript-wasm/Cargo.toml | 21 + crates/meowscript-wasm/src/lib.rs | 68 + crates/meowscript/Cargo.toml | 12 + crates/meowscript/src/ast.rs | 223 + crates/meowscript/src/env.rs | 112 + crates/meowscript/src/error.rs | 153 + crates/meowscript/src/host.rs | 163 + crates/meowscript/src/interpreter.rs | 953 +++ crates/meowscript/src/lexer.rs | 432 ++ crates/meowscript/src/lib.rs | 50 + crates/meowscript/src/parser.rs | 784 +++ crates/meowscript/src/rng.rs | 99 + crates/meowscript/src/span.rs | 83 + crates/meowscript/src/stdlib/array.rs | 388 ++ crates/meowscript/src/stdlib/fs.rs | 60 + crates/meowscript/src/stdlib/math.rs | 225 + crates/meowscript/src/stdlib/mod.rs | 194 + crates/meowscript/src/stdlib/random.rs | 78 + crates/meowscript/src/stdlib/string.rs | 208 + crates/meowscript/src/stdlib/util.rs | 144 + crates/meowscript/src/token.rs | 194 + crates/meowscript/src/value.rs | 303 + crates/meowscript/tests/examples.rs | 99 + examples/closures.meow | 17 + examples/closures.out | 4 + examples/fizzbuzz.meow | 15 + examples/fizzbuzz.out | 15 + examples/furrball.meow | 24 + examples/furrball.out | 10 + examples/hello.meow | 5 + examples/hello.out | 2 + examples/lib/kitty_math.meow | 13 + examples/naptime.meow | 17 + examples/packages.meow | 6 + examples/packages.out | 3 + examples/recursion.meow | 14 + examples/recursion.out | 11 + examples/toy.meow | 23 + examples/whiskers.meow | 17 + examples/whiskers.out | 12 + examples/yarn.meow | 24 + lib.js | 4 - makefile | 5 - rust-toolchain.toml | 4 + rustfmt.toml | 2 + site/.gitignore | 11 +- site/README.md | 100 +- site/components/Code.tsx | 144 - site/components/CodeDropdown.tsx | 88 - site/components/Features.tsx | 50 - site/components/Head.tsx | 38 - site/content/docs.md | 255 + site/eslint.config.mjs | 11 + site/lib/MeowScriptWorker.ts | 69 - site/lib/create_meowscript_worker.ts | 21 - site/lib/docs.md | 98 - site/lib/docs.ts | 19 - site/lib/example.ts | 133 - site/lib/syntax.ts | 25 - site/next.config.js | 7 - site/next.config.ts | 15 + site/package-lock.json | 2506 -------- site/package.json | 53 +- site/pages/_app.tsx | 11 - site/pages/api/hello.ts | 13 - site/pages/index.tsx | 84 - site/pnpm-lock.yaml | 5163 +++++++++++++++++ site/pnpm-workspace.yaml | 3 + site/postcss.config.js | 6 - site/public/FiraCode-Light.woff | Bin 132208 -> 0 bytes site/public/FiraCode-Light.woff2 | Bin 101840 -> 0 bytes site/public/FiraCode-Regular.woff | Bin 134276 -> 0 bytes site/public/meowscript.js | 19 - site/public/meowscript.wasm | Bin 347558 -> 0 bytes site/public/{image.png => og.png} | Bin site/public/wasm/meowscript.js | 331 ++ site/public/wasm/meowscript_bg.wasm | Bin 0 -> 304426 bytes site/scripts/build-wasm.mjs | 35 + site/scripts/sync-examples.mjs | 38 + site/scripts/sync-stdlib.mjs | 54 + site/src/app/docs/page.tsx | 64 + site/src/app/globals.css | 225 + site/src/app/icon.svg | 10 + site/src/app/layout.tsx | 63 + site/src/app/not-found.tsx | 24 + site/src/app/page.tsx | 120 + site/src/components/CheatSheet.tsx | 85 + site/src/components/CodeBlock.tsx | 38 + site/src/components/Editor.tsx | 97 + site/src/components/Output.tsx | 130 + site/src/components/Paw.tsx | 13 + site/src/components/Playground.tsx | 111 + site/src/components/PlaygroundLoader.tsx | 30 + site/src/components/SiteFooter.tsx | 13 + site/src/components/SiteHeader.tsx | 24 + site/src/components/StdlibReference.tsx | 72 + site/src/components/TryItButton.tsx | 21 + .../fonts}/FiraCode-Regular.woff2 | Bin site/src/generated/examples.ts | 65 + site/src/generated/stdlib.ts | 478 ++ site/src/lib/meow.worker.ts | 63 + site/src/lib/meowscript-language.ts | 262 + site/src/lib/protocol.ts | 8 + site/src/lib/try-it.ts | 21 + site/src/lib/use-meowscript.ts | 155 + site/src/lib/wasm-types.ts | 18 + site/styles/global.css | 96 - site/tailwind.config.js | 25 - site/tsconfig.json | 26 +- site/type/types.ts | 3 - src/ast/mod.rs | 157 - src/ast/token.rs | 72 - src/evaluation/globals.rs | 41 - src/evaluation/library.rs | 63 - src/evaluation/mod.rs | 657 --- src/evaluation/object.rs | 112 - src/evaluation/store.rs | 72 - src/lexer.rs | 208 - src/lib.rs | 35 - src/main.rs | 68 - src/parser.rs | 657 --- src/repl.rs | 44 - src/std_library/array.rs | 120 - src/std_library/fs.rs | 103 - src/std_library/math.rs | 152 - src/std_library/mod.rs | 31 - src/std_library/random.rs | 51 - src/std_library/string.rs | 61 - src/std_library/util.rs | 55 - 140 files changed, 14146 insertions(+), 7922 deletions(-) create mode 100644 .editorconfig create mode 100644 .github/workflows/ci.yml create mode 100644 DESIGN.md create mode 100644 crates/meowscript-cli/Cargo.toml create mode 100644 crates/meowscript-cli/src/main.rs create mode 100644 crates/meowscript-wasm/Cargo.toml create mode 100644 crates/meowscript-wasm/src/lib.rs create mode 100644 crates/meowscript/Cargo.toml create mode 100644 crates/meowscript/src/ast.rs create mode 100644 crates/meowscript/src/env.rs create mode 100644 crates/meowscript/src/error.rs create mode 100644 crates/meowscript/src/host.rs create mode 100644 crates/meowscript/src/interpreter.rs create mode 100644 crates/meowscript/src/lexer.rs create mode 100644 crates/meowscript/src/lib.rs create mode 100644 crates/meowscript/src/parser.rs create mode 100644 crates/meowscript/src/rng.rs create mode 100644 crates/meowscript/src/span.rs create mode 100644 crates/meowscript/src/stdlib/array.rs create mode 100644 crates/meowscript/src/stdlib/fs.rs create mode 100644 crates/meowscript/src/stdlib/math.rs create mode 100644 crates/meowscript/src/stdlib/mod.rs create mode 100644 crates/meowscript/src/stdlib/random.rs create mode 100644 crates/meowscript/src/stdlib/string.rs create mode 100644 crates/meowscript/src/stdlib/util.rs create mode 100644 crates/meowscript/src/token.rs create mode 100644 crates/meowscript/src/value.rs create mode 100644 crates/meowscript/tests/examples.rs create mode 100644 examples/closures.meow create mode 100644 examples/closures.out create mode 100644 examples/fizzbuzz.meow create mode 100644 examples/fizzbuzz.out create mode 100644 examples/furrball.meow create mode 100644 examples/furrball.out create mode 100644 examples/hello.meow create mode 100644 examples/hello.out create mode 100644 examples/lib/kitty_math.meow create mode 100644 examples/naptime.meow create mode 100644 examples/packages.meow create mode 100644 examples/packages.out create mode 100644 examples/recursion.meow create mode 100644 examples/recursion.out create mode 100644 examples/toy.meow create mode 100644 examples/whiskers.meow create mode 100644 examples/whiskers.out create mode 100644 examples/yarn.meow delete mode 100644 lib.js delete mode 100644 makefile create mode 100644 rust-toolchain.toml create mode 100644 rustfmt.toml delete mode 100644 site/components/Code.tsx delete mode 100644 site/components/CodeDropdown.tsx delete mode 100644 site/components/Features.tsx delete mode 100644 site/components/Head.tsx create mode 100644 site/content/docs.md create mode 100644 site/eslint.config.mjs delete mode 100644 site/lib/MeowScriptWorker.ts delete mode 100644 site/lib/create_meowscript_worker.ts delete mode 100644 site/lib/docs.md delete mode 100644 site/lib/docs.ts delete mode 100644 site/lib/example.ts delete mode 100644 site/lib/syntax.ts delete mode 100644 site/next.config.js create mode 100644 site/next.config.ts delete mode 100644 site/package-lock.json delete mode 100644 site/pages/_app.tsx delete mode 100644 site/pages/api/hello.ts delete mode 100644 site/pages/index.tsx create mode 100644 site/pnpm-lock.yaml create mode 100644 site/pnpm-workspace.yaml delete mode 100644 site/postcss.config.js delete mode 100644 site/public/FiraCode-Light.woff delete mode 100644 site/public/FiraCode-Light.woff2 delete mode 100644 site/public/FiraCode-Regular.woff delete mode 100644 site/public/meowscript.js delete mode 100644 site/public/meowscript.wasm rename site/public/{image.png => og.png} (100%) create mode 100644 site/public/wasm/meowscript.js create mode 100644 site/public/wasm/meowscript_bg.wasm create mode 100644 site/scripts/build-wasm.mjs create mode 100644 site/scripts/sync-examples.mjs create mode 100644 site/scripts/sync-stdlib.mjs create mode 100644 site/src/app/docs/page.tsx create mode 100644 site/src/app/globals.css create mode 100644 site/src/app/icon.svg create mode 100644 site/src/app/layout.tsx create mode 100644 site/src/app/not-found.tsx create mode 100644 site/src/app/page.tsx create mode 100644 site/src/components/CheatSheet.tsx create mode 100644 site/src/components/CodeBlock.tsx create mode 100644 site/src/components/Editor.tsx create mode 100644 site/src/components/Output.tsx create mode 100644 site/src/components/Paw.tsx create mode 100644 site/src/components/Playground.tsx create mode 100644 site/src/components/PlaygroundLoader.tsx create mode 100644 site/src/components/SiteFooter.tsx create mode 100644 site/src/components/SiteHeader.tsx create mode 100644 site/src/components/StdlibReference.tsx create mode 100644 site/src/components/TryItButton.tsx rename site/{public => src/fonts}/FiraCode-Regular.woff2 (100%) create mode 100644 site/src/generated/examples.ts create mode 100644 site/src/generated/stdlib.ts create mode 100644 site/src/lib/meow.worker.ts create mode 100644 site/src/lib/meowscript-language.ts create mode 100644 site/src/lib/protocol.ts create mode 100644 site/src/lib/try-it.ts create mode 100644 site/src/lib/use-meowscript.ts create mode 100644 site/src/lib/wasm-types.ts delete mode 100644 site/styles/global.css delete mode 100644 site/tailwind.config.js delete mode 100644 site/type/types.ts delete mode 100644 src/ast/mod.rs delete mode 100644 src/ast/token.rs delete mode 100644 src/evaluation/globals.rs delete mode 100644 src/evaluation/library.rs delete mode 100644 src/evaluation/mod.rs delete mode 100644 src/evaluation/object.rs delete mode 100644 src/evaluation/store.rs delete mode 100644 src/lexer.rs delete mode 100644 src/lib.rs delete mode 100644 src/main.rs delete mode 100644 src/parser.rs delete mode 100644 src/repl.rs delete mode 100644 src/std_library/array.rs delete mode 100644 src/std_library/fs.rs delete mode 100644 src/std_library/math.rs delete mode 100644 src/std_library/mod.rs delete mode 100644 src/std_library/random.rs delete mode 100644 src/std_library/string.rs delete mode 100644 src/std_library/util.rs diff --git a/.cargo/config.toml b/.cargo/config.toml index bd6886f..c83caff 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,2 +1,5 @@ -[target.wasm32-unknown-emscripten] -rustflags = ["-C", "link-args=--js-library lib.js -O3 -s MODULARIZE=1 -s EXPORT_NAME=MeowScript -s -s EXPORTED_RUNTIME_METHODS=[FS,intArrayFromString,writeArrayToMemory,_malloc,UTF8ToString]"] \ No newline at end of file +# The interpreter recurses on the stack, so give the WebAssembly build +# more room than the 1 MiB default. Linear memory grows on demand, so the +# cost is reserved address space, not RAM. +[target.wasm32-unknown-unknown] +rustflags = ["-C", "link-arg=-zstack-size=33554432"] diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..39cc72e --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = space +indent_size = 4 + +[*.{ts,tsx,js,mjs,json,css,md,yml,yaml}] +indent_size = 2 + +[*.meow] +indent_size = 4 + +[Makefile] +indent_style = tab diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..40149c8 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,54 @@ +name: CI + +on: + push: + branches: [master] + pull_request: + +env: + CARGO_TERM_COLOR: always + +jobs: + rust: + name: Interpreter + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + targets: wasm32-unknown-unknown + - uses: Swatinem/rust-cache@v2 + - name: Format + run: cargo fmt --all --check + - name: Clippy + run: cargo clippy --workspace --all-targets -- -D warnings + - name: Clippy (wasm) + run: cargo clippy -p meowscript-wasm --target wasm32-unknown-unknown -- -D warnings + - name: Test + run: cargo test --workspace + - name: Generated site tables are up to date + working-directory: site + run: | + node scripts/sync-examples.mjs + node scripts/sync-stdlib.mjs + git diff --exit-code -- src/generated + + site: + name: Site + runs-on: ubuntu-latest + defaults: + run: + working-directory: site + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + cache-dependency-path: site/pnpm-lock.yaml + - run: pnpm install --frozen-lockfile + - run: pnpm typecheck + - run: pnpm lint + - run: pnpm build diff --git a/.gitignore b/.gitignore index ccb5166..92d5234 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /target -.vscode \ No newline at end of file +.vscode +.idea +*.tsbuildinfo diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a0487f6..72e6fd2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,49 +1,64 @@ -# Contributing to Meowscript 🐾 +# Contributing to MeowScript -## Getting Started +How the project fits together, and how to change it without breaking anything. -1. **Fork the Repository**: - - Navigate to the [Meowscript GitHub repository](https://github.com/AlenVelocity/MeowScript). - - Click on the "Fork" button in the top right corner to create a copy of the repository in your GitHub account. +## Setup -2. **Clone Your Fork**: - ```bash - git clone https://github.com//MeowScript - cd MeowScript - ``` +You need a Rust toolchain (stable, 1.88 or newer) and, for the site, Node 22 with pnpm. On Windows the GNU toolchain works without Visual Studio: `rustup-init --default-host x86_64-pc-windows-gnu`. -3. **Create a New Branch**: - ```bash - git checkout -b - ``` +```bash +git clone https://github.com/AlenVelocity/MeowScript +cd MeowScript +cargo test --workspace +``` + +## Where things live + +| Path | What | +| --- | --- | +| `crates/meowscript/src/lexer.rs` | text to tokens, with byte spans | +| `crates/meowscript/src/parser.rs` | tokens to AST (`ast.rs`); Pratt parser for operators | +| `crates/meowscript/src/interpreter.rs` | evaluates the AST; control flow travels as `Interrupt` | +| `crates/meowscript/src/value.rs` | runtime values and how they print | +| `crates/meowscript/src/stdlib/` | the prelude and the `nya:` pawckages, one file each | +| `crates/meowscript/src/host.rs` | the `Host` trait: printing, files, sleeping, randomness | +| `crates/meowscript-cli` | the `meowscript` binary | +| `crates/meowscript-wasm` | the browser entry point (`run`, `version`, `keywords`) | +| `examples/` | programs run by the test suite; a `.out` file is a snapshot | +| `site/` | the Next.js playground and docs | + +## Making changes -## Writing Code +**Keywords and syntax.** Add the token in `token.rs` (both `keyword()` and `KEYWORDS`), lex it, parse it, evaluate it, and add a test next to the others in each file. Then add it to the cheat sheet in `site/src/components/CheatSheet.tsx`, the reference in `site/content/docs.md`, and the highlighter's keyword list in `site/src/lib/meowscript-language.ts`. -- Ensure your code adheres to the cat-themed nature of Meowscript, replacing traditional keywords with feline-inspired terms. -- Maintain the paw-some (although not easily readable) syntax of Meowscript. -- Feel free to expand the standard library with more cat-themed functions and utilities. -- Before pushing code, ensure it is well-commented and consistent with the existing code style. +**Built-in functions.** Add a row to the right pawckage's table in `crates/meowscript/src/stdlib/`. The `arity` is checked before your function runs, so indexing `args` inside it is safe. The helpers in `stdlib/mod.rs` (`number`, `string`, `array`, `callable`) pull typed arguments with consistent error messages. Functions that take callbacks call `interp.call(f, args, None)`. The docs site generates its library reference from these tables, so the `doc` string is what people read. -## Submitting Changes +**Examples.** Drop a `.meow` file in `examples/`. Run `UPDATE_SNAPSHOTS=1 cargo test -p meowscript --test examples` to write its `.out` file, then read the `.out` to check it is what you meant. Programs that sleep or read input get a `// test: skip` comment instead. To show it in the playground, add its name to `ORDER` in `site/scripts/sync-examples.mjs`. -1. **Commit Your Changes**: - ```bash - git commit -m "Describe your changes" - ``` +**Error messages.** They start with a cat exclamation chosen by `ErrorKind`, then say what went wrong and, where possible, what to do instead. -2. **Push Your Changes**: - ```bash - git push origin - ``` +**Comments.** Only where the code can't say why. A comment that repeats the function name or the next line gets removed in review. -3. **Open a Pull Request**: - - Navigate to the [Meowscript GitHub repository](https://github.com/AlenVelocity/MeowScript). - - Click on "New Pull Request" and compare your branch to the main Meowscript repository. - - Provide a detailed description of your changes. +## Before you push -## Code Review +```bash +cargo fmt --all +cargo clippy --workspace --all-targets -- -D warnings +cargo clippy -p meowscript-wasm --target wasm32-unknown-unknown -- -D warnings +cargo test --workspace +``` -- Once your pull request is submitted, maintainers and contributors can review your proposed changes and request any necessary modifications. +If you touched the interpreter or the standard library, also refresh what the site ships: -Thank you for contributing to Meowscript! Your efforts help make coding a paw-sitive experience. +```bash +cd site +pnpm build:wasm # needs wasm-pack +pnpm sync # regenerates src/generated/* +pnpm typecheck && pnpm lint && pnpm build ``` + +and commit the results in `site/public/wasm` and `site/src/generated`. CI checks that the generated tables match the code. + +## Pull requests + +Say what changed and why. If it changes the language, show a before and after. diff --git a/Cargo.lock b/Cargo.lock index 1478ea6..fd625e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,1475 +1,234 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] -name = "addr2line" -version = "0.20.0" +name = "anstyle" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aho-corasick" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" -dependencies = [ - "memchr", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "ansi_term" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" -dependencies = [ - "winapi", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "backtrace" -version = "0.3.68" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bumpalo" -version = "3.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" - -[[package]] -name = "bytes" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "time", - "wasm-bindgen", - "winapi", -] - -[[package]] -name = "chrono-tz" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c39203181991a7dd4343b8005bd804e7a9a37afb8ac070e43771e8c820bbde" -dependencies = [ - "chrono", - "chrono-tz-build", - "phf", -] - -[[package]] -name = "chrono-tz-build" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f509c3a87b33437b05e2458750a0700e5bdd6956176773e6c7d6dd15a283a0c" -dependencies = [ - "parse-zoneinfo", - "phf", - "phf_codegen", -] - -[[package]] -name = "clap" -version = "2.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" -dependencies = [ - "ansi_term", - "atty", - "bitflags", - "strsim", - "textwrap", - "unicode-width", - "vec_map", -] - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cpufeatures" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" -dependencies = [ - "libc", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "encoding_rs" -version = "0.8.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-sink" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-core", - "futures-io", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "gimli" -version = "0.27.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" - -[[package]] -name = "h2" -version = "0.3.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[package]] -name = "hyper" -version = "0.14.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.2", - "libc", - "windows-sys", -] - -[[package]] -name = "ipnet" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" - -[[package]] -name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "js-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.147" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "log" -version = "0.4.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "meowscript" -version = "0.1.0" -dependencies = [ - "chrono", - "chrono-tz", - "lazy_static", - "pest", - "pest_derive", - "rand", - "reqwest", - "structopt", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" -dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", -] - -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.2", - "libc", -] - -[[package]] -name = "object" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "openssl" -version = "0.10.55" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" -dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.26", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.90" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "parse-zoneinfo" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" -dependencies = [ - "regex", -] - -[[package]] -name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "pest" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d2d1d55045829d65aad9d389139882ad623b33b904e7c9f1b10c5b8927298e5" -dependencies = [ - "thiserror", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f94bca7e7a599d89dea5dfa309e217e7906c3c007fb9c3299c40b10d6a315d3" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d490fe7e8556575ff6911e45567ab95e71617f43781e5c05490dc8d75c965c" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.26", -] - -[[package]] -name = "pest_meta" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2674c66ebb4b4d9036012091b537aae5878970d6999f81a265034d85b136b341" -dependencies = [ - "once_cell", - "pest", - "sha2", -] - -[[package]] -name = "phf" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" -dependencies = [ - "phf_shared", -] - -[[package]] -name = "phf_codegen" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" -dependencies = [ - "phf_generator", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -dependencies = [ - "phf_shared", - "rand", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" -dependencies = [ - "siphasher", - "uncased", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fe8a65d69dd0808184ebb5f836ab526bb259db23c657efa38711b1072ee47f0" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags", -] - -[[package]] -name = "regex" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39354c10dd07468c2e73926b23bb9c2caca74c5501e38a35da70406f1d923310" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" - -[[package]] -name = "reqwest" -version = "0.11.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustix" -version = "0.37.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" -dependencies = [ - "bitflags", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "ryu" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - -[[package]] -name = "schannel" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" -dependencies = [ - "windows-sys", -] +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" [[package]] -name = "security-framework" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "serde" -version = "1.0.173" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91f70896d6720bc714a4a57d22fc91f1db634680e65c8efe13323f1fa38d53f" - -[[package]] -name = "serde_json" -version = "1.0.103" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d03b412469450d4404fe8499a268edd7f8b79fecb074b0d812ad64ca21f4031b" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha2" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "siphasher" -version = "0.3.10" +name = "bumpalo" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] -name = "slab" -version = "0.4.8" +name = "cfg-if" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] +checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600" [[package]] -name = "socket2" -version = "0.4.9" +name = "clap" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "aa8876b300ab35ba921adea3dfd70157a46249b33f95c9084ae5709785478946" dependencies = [ - "libc", - "winapi", + "clap_builder", + "clap_derive", ] [[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "structopt" -version = "0.3.26" +name = "clap_builder" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" +checksum = "ec0797fb7aeb1406c84efac526901f7ec3ead2124f946b494e72879d4b54704d" dependencies = [ - "clap", - "lazy_static", - "structopt-derive", + "anstyle", + "clap_lex", + "strsim", ] [[package]] -name = "structopt-derive" -version = "0.4.18" +name = "clap_derive" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" +checksum = "f9c751b79415d4e559e3d1fcf128e09e720eb673a06d26cf6f392d37d75b66e0" dependencies = [ "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45c3457aacde3c65315de5031ec191ce46604304d2446e803d71ade03308d970" -dependencies = [ "proc-macro2", "quote", - "unicode-ident", -] - -[[package]] -name = "tempfile" -version = "3.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" -dependencies = [ - "autocfg", - "cfg-if", - "fastrand", - "redox_syscall", - "rustix", - "windows-sys", + "syn", ] [[package]] -name = "textwrap" -version = "0.11.0" +name = "clap_lex" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] +checksum = "1c133bc6a41be0d194c306b5506d15e6feeea7b1d6604bd3f8310dfb2ca96486" [[package]] -name = "thiserror" -version = "1.0.43" +name = "equivalent" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42" -dependencies = [ - "thiserror-impl", -] +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] -name = "thiserror-impl" -version = "1.0.43" +name = "futures-core" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.26", -] +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] -name = "time" -version = "0.1.45" +name = "futures-task" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] -name = "tinyvec" -version = "1.6.0" +name = "futures-util" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ - "tinyvec_macros", + "futures-core", + "futures-task", + "pin-project-lite", + "slab", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "hashbrown" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] -name = "tokio" -version = "1.29.1" +name = "heck" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" -dependencies = [ - "autocfg", - "backtrace", - "bytes", - "libc", - "mio", - "num_cpus", - "pin-project-lite", - "socket2", - "windows-sys", -] +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] -name = "tokio-native-tls" -version = "0.3.1" +name = "indexmap" +version = "2.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +checksum = "cc4e190f5d26ca7051642629da2c52fc03bde85a03197c99408dcd291734c855" dependencies = [ - "native-tls", - "tokio", + "equivalent", + "hashbrown", ] [[package]] -name = "tokio-util" -version = "0.7.8" +name = "js-sys" +version = "0.3.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5" dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", + "cfg-if", + "futures-util", + "wasm-bindgen", ] [[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +name = "meowscript" +version = "1.0.0" dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-core", + "indexmap", ] [[package]] -name = "tracing-core" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +name = "meowscript-cli" +version = "1.0.0" dependencies = [ - "once_cell", + "clap", + "meowscript", ] [[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "ucd-trie" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" - -[[package]] -name = "uncased" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b9bc53168a4be7402ab86c3aad243a84dd7381d09be0eddc81280c1da95ca68" +name = "meowscript-wasm" +version = "1.0.0" dependencies = [ - "version_check", + "js-sys", + "meowscript", + "wasm-bindgen", ] [[package]] -name = "unicode-bidi" -version = "0.3.13" +name = "once_cell" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] -name = "unicode-ident" -version = "1.0.11" +name = "pin-project-lite" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] -name = "unicode-normalization" -version = "0.1.22" +name = "proc-macro2" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ - "tinyvec", + "unicode-ident", ] [[package]] -name = "unicode-segmentation" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - -[[package]] -name = "unicode-width" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" - -[[package]] -name = "url" -version = "2.4.0" +name = "quote" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", + "proc-macro2", ] [[package]] -name = "vcpkg" -version = "0.2.15" +name = "rustversion" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] -name = "vec_map" -version = "0.8.2" +name = "slab" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] -name = "version_check" -version = "0.9.4" +name = "strsim" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] -name = "want" -version = "0.3.1" +name = "syn" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" dependencies = [ - "try-lock", + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "unicode-ident" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409" dependencies = [ "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" -dependencies = [ - "bumpalo", - "log", "once_cell", - "proc-macro2", - "quote", - "syn 2.0.26", + "rustversion", + "wasm-bindgen-macro", "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1477,135 +236,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.26", - "wasm-bindgen-backend", + "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" - -[[package]] -name = "web-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" +version = "0.2.129" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6" dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - -[[package]] -name = "winreg" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" -dependencies = [ - "winapi", + "unicode-ident", ] diff --git a/Cargo.toml b/Cargo.toml index 209d54f..00d07b3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,22 +1,23 @@ -[package] -name = "meowscript" -version = "0.1.0" -edition = "2021" +[workspace] +resolver = "2" +members = [ + "crates/meowscript", + "crates/meowscript-cli", + "crates/meowscript-wasm", +] -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[workspace.package] +version = "1.0.0" +edition = "2024" +repository = "https://github.com/AlenVelocity/MeowScript" +rust-version = "1.88" -[dependencies] -pest = "2.1" -pest_derive = "2.1" -rand = "0.8.5" -lazy_static = "1.4.0" -reqwest = { version = "0.11.10", features = ["blocking", "json"] } +[workspace.dependencies] +meowscript = { path = "crates/meowscript", version = "1.0.0" } +indexmap = "2" -[[bin]] -name = "meowscript" -path = "src/main.rs" - -[target.'cfg(not(target_os = "emscripten"))'.dependencies] -structopt = "0.3.23" -chrono = "0.4.19" -chrono-tz = "0.6.0" +[profile.release] +opt-level = 3 +lto = true +codegen-units = 1 +strip = true diff --git a/DESIGN.md b/DESIGN.md new file mode 100644 index 0000000..38453a1 --- /dev/null +++ b/DESIGN.md @@ -0,0 +1,76 @@ +# Design notes for the MeowScript site + +The site at `site/` is a playground first and a landing page second. These notes record the choices so later changes stay consistent. Tokens live in `site/src/app/globals.css`. + +## Brief + +**Subject.** A toy programming language whose keywords are cat puns, with a real tree-walking interpreter written in Rust and compiled to WebAssembly. Its world is terminals, warm fur, yarn, and late-night tinkering. Playful, and still a working tool: the interpreter runs and the errors are specific. + +**Audience.** Developers arriving from GitHub or a tweet with about thirty seconds of curiosity. Mostly on a desktop, sometimes on a phone. They want to see a program run and understand the puns. + +**Job.** Run a MeowScript program and watch the cat answer. Then learn what the keywords mean. + +**Surface.** A working tool with a thin marketing wrapper. The playground sits at the top of the page, not below a hero and feature cards. + +## Plan + +**Color.** Dark only, because it is a code playground and the content is syntax-highlighted code. The neutrals are warm, tinted toward amber like a tabby, rather than blue-grey. + +| Token | Value | Role | +| --- | --- | --- | +| `bg` | `#171310` | page | +| `surface` | `#201a15` | editor, output, code listings | +| `surface-2` | `#2a231c` | inline code, hover rows | +| `line` | `#3b3128` | borders and table rules | +| `text` | `#f1e8d8` | body (15:1 on `bg`) | +| `text-soft` | `#cdbfab` | secondary prose, operators in code | +| `muted` | `#a09078` | labels, hints, comments (5.3:1 on `bg`) | +| `accent` | `#f0a048` | tabby orange: the Run button, the paw marks, keywords, link hover | +| `paw` | `#e9a9bd` | strings in code only | +| `catnip` | `#a7d79c` | numbers and `purrfect`/`clawful`/`mew` in code only | +| `danger` | `#f0846f` | errors in output, the Stop button, the squiggle | + +The accent appears in four places: the primary button, the paw marks, keywords in code, and link hover. Headings and borders stay neutral so it keeps meaning something. + +**Type.** Baloo 2 (700, 800) for headings: rounded and a little chunky, which reads as soft and cat-like without becoming a children's book. Fira Code (400) for body and code, self-hosted. Setting prose in the code font says "everything here is code" and carries the old site's identity forward; ligatures are turned off outside code so prose doesn't get `=>` arrows. Scale: 13 / 14 / 15 / 18 / 24 / 40 (52 on wide screens). + +**Layout.** One left-aligned column, 1120px wide at most, 72 characters for docs prose. Narrow layout first: the editor stacks above the output, and on large screens they sit side by side at 3:2. + +``` +[paw meowscript Docs GitHub] + +The purrfect programming language. . . +One paragraph. . . . + . . +Example [yarn.meow v] Clear [paw Run] ++------------------------------+ +-----------------+ +| editor | | output | +| | | | ++------------------------------+ | Ready v1.0.0 | + +-----------------+ +Cat to human (table) +Batteries, in a bag of nya (package list) +Run it on your own machine +footer +``` + +**Signature.** The output panel's voice. Every line a program prints with `meow` starts with `Meow!`, and the site sets that word in the accent with a small paw in front of it, so the program's output is visibly the cat talking. The status bar speaks the same way: "Playing…" while a program runs, "Purring" when it finishes, "Hissed" when it fails, and an error's cat exclamation ("Hiss!", "Meowch!") is set in the display face. + +**Small jokes, placed once each.** A trail of faint paw prints walks from the headline toward the Run button on wide screens. "purrfect" in the headline carries a spellchecker squiggle, because it is misspelled on purpose. The paw on the logo and on the Run button tilts on hover. The 404 page is headed "Meow-sterious." None of these repeat elsewhere. + +## Checked against the defaults + +No gradients, no centered hero with three cards, no emoji as icons (the paw is one inline SVG, reused by reference), no uppercase letter-spaced labels, no numbered markers, no scroll animations. The one near-default is "dark background with one warm accent"; it stays because the accent is tied to the subject (an orange tabby) and the surfaces are tinted toward it rather than neutral. + +## States + +- Interpreter loading: Run reads "Loading…" and is disabled; the output panel says so. +- Empty output: a faint paw and "Press Run, or Ctrl+Enter in the editor, to hear from the cat." +- Running: Run becomes Stop (outlined, `danger`). Stop terminates the worker and starts a fresh one. +- Error: the interpreter's rendered error, with its caret line, in `danger` and preserved whitespace. +- Worker failed to start: an explanation and a link to the issue tracker. +- Output over 3000 lines: the oldest are trimmed with a note. + +## Motion + +The paw trail fades in once on load, staggered, 240ms per print. Hover tilts on the two paws, 150ms. Button presses nudge one pixel. `scroll-behavior: smooth` for in-page links. All of it is off under `prefers-reduced-motion`. diff --git a/README.md b/README.md index 19b3d8b..5814f15 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,101 @@ -
- -# Meowscript 🐾 -Meowscript is an simple interpurrter inspired buy our feline friends +# MeowScript -
+A small scripting language where the keywords are cat puns. `purrhaps` is if, `pawction` is function, `tail` is return, and every program announces itself with a `meow`. The interpreter is written in Rust and also runs in the browser as WebAssembly. -Try it out [here](https://meowscript.vercel.app/) +Try it at [meowscript.vercel.app](https://meowscript.vercel.app). -## Features +```meow +pawckage "nya:furrball"; -- **Cat inspired keywords**: Meowscript replaces traditional programming keywords with cat-related terms. Like `purrhaps`, `pawction`, `hiss` ect. (Bonus points if you can guess what these ones do) +scratch cats = ["Tom", "Luna", "Salem"]; -- **Paw-some syntax**: Meowscript's syntax is not really designed to be easy to read. But it's fun.. I guess +pawction introduce(cat) { + purrhaps cat == "Salem" { + tail cat + " (a witch's familiar)"; + } + tail cat; +} -- **Adorable standard library**: Meowscript comes with a standard library filled with cat-themed functions and utilities. From `scratch` to `meow`, the standard library adds makes your coding experience much cuter -## Running Locally +fur cat ~ cats { + meow("This is", introduce(cat)); +} +``` -To get started with Meowscript, follow these steps: +``` +Meow! This is Tom +Meow! This is Luna +Meow! This is Salem (a witch's familiar) +``` -1. **Installation**: Clone the repository +## The language in one table + +| Cat | Human | +| --- | --- | +| `scratch x = 1;` | declare | +| `amew x = 2;` | assign (also `amew cat's age = 4;` and `amew arr[0] = 1;`) | +| `pawction f(a, b) { tail a + b; }` | function and return | +| `purrhaps … { } meowtually { }` | if / else (an expression) | +| `furrever { }`, `furrever cond { }` | loop forever, loop while | +| `fur item ~ things { }` | for each (furrballs, whiskers, object keys, or `0..n`) | +| `hiss;` / `continue;` | break / continue | +| `purrfect`, `clawful`, `mew` | true, false, null | +| `furreal x` | typeof: `"number"`, `"whiskers"`, `"furrball"`, … | +| `cat's name`, `cat["name"]` | property access | +| `x ~ things` | membership | +| `pawckage "nya:furrball";` | import a built-in library, or `"./file.meow"` | + +Strings are *whiskers*, arrays are *furrballs*. Operators follow Python's precedence (`6 & 3 == 2` is `(6 & 3) == 2`), only `mew` and `clawful` are falsy, and dividing by zero is an error. The reference is in the [docs](https://meowscript.vercel.app/docs), or at [`site/content/docs.md`](site/content/docs.md). + +Errors point at the problem: -```bash -git clone https://github.com/AlenVelocity/MeowScript -cd MeowScript +``` +Meow-sterious! name error: `cuont` hasn't been `scratch`ed yet; did you mean `count`? + --> toys.meow:3:6 + | + 3 | meow(cuont); + | ^^^^^ ``` -2. **Writing Meowscript Code**: Create a new file with the `.ms` extension and start writing your cueteejnjeejnfkjnwdwnfnqf Meowscript code. +## Install - ```rust - scratch main = pawction () { - scratch x = 10; - scratch y = 5; +With a Rust toolchain: - purrhaps (x > y) { - meow("Meow! x is greater than y!"); - } meowtually { - meow("Meow! x is not greater than y!"); - } - }; +```bash +cargo install --git https://github.com/AlenVelocity/MeowScript meowscript-cli +``` + +``` +meowscript # the REPL +meowscript hello.meow # run a file +meowscript eval "1 + 2" # evaluate a snippet +meowscript packages # what the nya: pawckages contain +``` - main(); - ``` +## Layout -3. **Running Meowscript Code**: For now you have to build your own binary or use cargo to run MeowScript +``` +crates/meowscript the language: lexer, parser, interpreter, standard library +crates/meowscript-cli the `meowscript` binary (runner and REPL) +crates/meowscript-wasm the wasm-bindgen entry point for the browser +examples/ programs; those with a .out file are snapshot-tested +site/ the playground and docs (Next.js) +``` - ``` - cargo run run your_file.meow - ``` +The interpreter reaches the outside world only through a `Host` trait. The CLI gives it a terminal, the tests give it a buffer, and the browser build gives it a callback that posts lines to the page. - > There are 2 'run's 'cause 1st "run" is required by cargo and the 2nd one is for the built binary. This will make much more sense in the future - - You can also try the REPL by just running: - ``` - cargo run - ``` +## Development ---- - -The main purpose of this project was for me to learn/understand rust better so it's not had to see some inconsistencies with my code. Feel free to conttibute and make MeowScript more purrfect +```bash +cargo test --workspace # unit tests, doctests, and every example +cargo run -p meowscript-cli -- examples/yarn.meow +cargo clippy --workspace --all-targets -- -D warnings +cargo fmt --all +``` +For the site, see [site/README.md](site/README.md). After changing the Rust code, run `pnpm build:wasm && pnpm sync` there to refresh the WebAssembly and the generated tables. +The first version of this interpreter is in the git history before the rewrite. This one replaces it with a byte-indexed lexer that records spans, a Pratt parser that reports where it got stuck, an evaluator that returns `Result` instead of error values, and a browser build on stable Rust with wasm-bindgen instead of Emscripten. +## Contributing - +See [CONTRIBUTING.md](CONTRIBUTING.md). Cat puns welcome. diff --git a/crates/meowscript-cli/Cargo.toml b/crates/meowscript-cli/Cargo.toml new file mode 100644 index 0000000..8c94230 --- /dev/null +++ b/crates/meowscript-cli/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "meowscript-cli" +description = "Command line runner and REPL for MeowScript" +version.workspace = true +edition.workspace = true +repository.workspace = true +rust-version.workspace = true + +[[bin]] +name = "meowscript" +path = "src/main.rs" + +[dependencies] +meowscript.workspace = true +# Colour output is left off on purpose: it pulls in `windows-sys`, which +# needs `dlltool` on the windows-gnu toolchain. Everything else in clap's +# default set is kept. +clap = { version = "4", default-features = false, features = [ + "std", + "derive", + "help", + "usage", + "error-context", + "suggestions", +] } diff --git a/crates/meowscript-cli/src/main.rs b/crates/meowscript-cli/src/main.rs new file mode 100644 index 0000000..f6bbdc6 --- /dev/null +++ b/crates/meowscript-cli/src/main.rs @@ -0,0 +1,236 @@ +use clap::{Parser, Subcommand}; +use meowscript::host::NativeHost; +use meowscript::{Interpreter, Value}; +use std::path::PathBuf; +use std::process::ExitCode; + +// The evaluator recurses on the Rust stack, so run it on a thread with room to spare. +const STACK_SIZE: usize = 256 * 1024 * 1024; + +#[derive(Parser)] +#[command( + name = "meowscript", + version, + about = "The purrfect programming language 🐾" +)] +struct Cli { + #[command(subcommand)] + command: Option, + + /// A .meow file to run (same as `meowscript run FILE`). + file: Option, +} + +#[derive(Subcommand)] +enum Command { + /// Run a .meow file. + Run { file: PathBuf }, + /// Evaluate a snippet of MeowScript and print its value. + Eval { code: String }, + /// Start the interactive prompt (the default with no arguments). + Repl, + /// List the built-in `nya:` pawckages and what they contain. + Packages { + /// Print as JSON, for tooling such as the docs site. + #[arg(long)] + json: bool, + }, +} + +fn main() -> ExitCode { + let cli = Cli::parse(); + let command = match (cli.command, cli.file) { + (Some(c), _) => c, + (None, Some(file)) => Command::Run { file }, + (None, None) => Command::Repl, + }; + + let worker = std::thread::Builder::new() + .name("meowscript".into()) + .stack_size(STACK_SIZE) + .spawn(move || match command { + Command::Run { file } => run_file(&file), + Command::Eval { code } => eval(&code), + Command::Repl => repl::start(), + Command::Packages { json } => { + if json { + packages_json(); + } else { + packages(); + } + ExitCode::SUCCESS + } + }) + .expect("spawn interpreter thread"); + + worker.join().unwrap_or(ExitCode::FAILURE) +} + +fn run_file(path: &PathBuf) -> ExitCode { + let source = match std::fs::read_to_string(path) { + Ok(s) => s, + Err(e) => { + eprintln!("Scratched! could not read `{}`: {e}", path.display()); + return ExitCode::FAILURE; + } + }; + let mut interp = Interpreter::new(NativeHost); + interp.set_base_dir(path.parent().map(|p| p.to_string_lossy().into_owned())); + match interp.run(&source) { + Ok(_) => ExitCode::SUCCESS, + Err(e) => { + eprintln!("{}", e.render(&source, Some(&path.display().to_string()))); + ExitCode::FAILURE + } + } +} + +fn eval(code: &str) -> ExitCode { + let mut interp = Interpreter::new(NativeHost); + match interp.run(code) { + Ok(Value::Null) => ExitCode::SUCCESS, + Ok(value) => { + println!("{}", value.repr()); + ExitCode::SUCCESS + } + Err(e) => { + eprintln!("{}", e.render(code, None)); + ExitCode::FAILURE + } + } +} + +fn packages() { + println!("Always available:"); + for b in meowscript::stdlib::PRELUDE { + println!(" {:<14} {}", b.name, b.doc); + } + for pkg in meowscript::stdlib::PACKAGES { + println!("\npawckage \"{}\"; {}", pkg.name, pkg.doc); + for b in pkg.builtins { + println!(" {:<14} {}", b.name, b.doc); + } + for (name, _) in pkg.constants { + println!(" {:<14} constant", name); + } + } +} + +// Hand-rolled so the binary doesn't need a JSON crate; the shape is small and stable. +fn packages_json() { + fn quote(s: &str) -> String { + let mut out = String::with_capacity(s.len() + 2); + out.push('"'); + for c in s.chars() { + match c { + '"' => out.push_str("\\\""), + '\\' => out.push_str("\\\\"), + '\n' => out.push_str("\\n"), + c if (c as u32) < 0x20 => out.push_str(&format!("\\u{:04x}", c as u32)), + c => out.push(c), + } + } + out.push('"'); + out + } + fn builtin(b: &meowscript::value::Builtin) -> String { + format!( + "{{\"name\":{},\"arity\":{},\"doc\":{}}}", + quote(b.name), + quote(&b.arity.describe()), + quote(b.doc) + ) + } + + let prelude: Vec = meowscript::stdlib::PRELUDE.iter().map(builtin).collect(); + let packages: Vec = meowscript::stdlib::PACKAGES + .iter() + .map(|pkg| { + let functions: Vec = pkg.builtins.iter().map(builtin).collect(); + let constants: Vec = pkg + .constants + .iter() + .map(|(name, value)| { + // JSON has no infinity. + let value = if value.is_finite() { + value.to_string() + } else { + quote(&meowscript::value::format_number(*value)) + }; + format!("{{\"name\":{},\"value\":{value}}}", quote(name)) + }) + .collect(); + format!( + "{{\"name\":{},\"doc\":{},\"functions\":[{}],\"constants\":[{}]}}", + quote(pkg.name), + quote(pkg.doc), + functions.join(","), + constants.join(",") + ) + }) + .collect(); + println!( + "{{\"version\":{},\"prelude\":[{}],\"packages\":[{}]}}", + quote(meowscript::VERSION), + prelude.join(","), + packages.join(",") + ); +} + +// Unfinished input (an open `{`, say) carries over to the next line. +mod repl { + use super::*; + use std::io::{BufRead, Write}; + + pub fn start() -> ExitCode { + println!( + "MeowScript {}. Type a line to run it. An empty line clears unfinished input; `scram` leaves.", + meowscript::VERSION + ); + let stdin = std::io::stdin(); + let mut stdout = std::io::stdout(); + let mut interp = Interpreter::new(NativeHost); + let mut pending = String::new(); + + loop { + let prompt = if pending.is_empty() { ">> " } else { ".. " }; + let _ = write!(stdout, "{prompt}"); + let _ = stdout.flush(); + + let mut line = String::new(); + match stdin.lock().read_line(&mut line) { + Ok(0) => { + println!("\nBye! 🐾"); + return ExitCode::SUCCESS; + } + Ok(_) => {} + Err(e) => { + eprintln!("could not read input: {e}"); + return ExitCode::FAILURE; + } + } + let line = line.trim_end_matches(['\n', '\r']); + + if line.trim().is_empty() { + pending.clear(); + continue; + } + if pending.is_empty() && line.trim() == "scram" { + println!("Bye! 🐾"); + return ExitCode::SUCCESS; + } + if !pending.is_empty() { + pending.push('\n'); + } + pending.push_str(line); + + match interp.run(&pending) { + Ok(Value::Null) => {} + Ok(value) => println!("{}", value.repr()), + Err(e) if e.incomplete => continue, + Err(e) => eprintln!("{}", e.render(&pending, None)), + } + pending.clear(); + } + } +} diff --git a/crates/meowscript-wasm/Cargo.toml b/crates/meowscript-wasm/Cargo.toml new file mode 100644 index 0000000..a5e94a6 --- /dev/null +++ b/crates/meowscript-wasm/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "meowscript-wasm" +description = "MeowScript compiled to WebAssembly for the browser playground" +version.workspace = true +edition.workspace = true +repository.workspace = true +rust-version.workspace = true +publish = false + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +meowscript.workspace = true +wasm-bindgen = "0.2" +js-sys = "0.3" + +# Rust emits bulk-memory and non-trapping float-to-int instructions by +# default now; the wasm-opt that wasm-pack downloads must be told to allow them. +[package.metadata.wasm-pack.profile.release] +wasm-opt = ["-O3", "--enable-bulk-memory", "--enable-nontrapping-float-to-int", "--enable-sign-ext", "--enable-mutable-globals"] diff --git a/crates/meowscript-wasm/src/lib.rs b/crates/meowscript-wasm/src/lib.rs new file mode 100644 index 0000000..42d3522 --- /dev/null +++ b/crates/meowscript-wasm/src/lib.rs @@ -0,0 +1,68 @@ +//! Browser entry point, built with `wasm-pack build --target web`. The playground calls `run` +//! from a Web Worker so an endless loop can be stopped by terminating the worker. + +use meowscript::{Host, Interpreter}; +use wasm_bindgen::prelude::*; + +struct JsHost { + on_output: js_sys::Function, +} + +impl Host for JsHost { + fn print(&mut self, line: &str) { + let _ = self + .on_output + .call1(&JsValue::NULL, &JsValue::from_str(line)); + } + + // Workers have no blocking sleep. Spinning is fine off the main thread, and output already + // posted keeps flowing. + fn sleep(&mut self, millis: f64) { + let end = js_sys::Date::now() + millis; + while js_sys::Date::now() < end { + std::hint::spin_loop(); + } + } + + fn now_millis(&mut self) -> f64 { + js_sys::Date::now() + } + + fn read_line(&mut self, _prompt: &str) -> meowscript::Result { + Err(meowscript::Error::io( + "`kibble` can't read input in the browser playground yet", + )) + } + + fn random_seed(&mut self) -> u64 { + let time = js_sys::Date::now() as u64; + let noise = (js_sys::Math::random() * (1u64 << 53) as f64) as u64; + time.rotate_left(17) ^ noise + } +} + +/// Calls `on_output` once per printed line. Rejects with the rendered error text on failure. +#[wasm_bindgen] +pub fn run(source: &str, on_output: &js_sys::Function) -> Result<(), JsValue> { + let host = JsHost { + on_output: on_output.clone(), + }; + let mut interp = Interpreter::new(host); + interp + .run(source) + .map(|_| ()) + .map_err(|e| JsValue::from_str(&e.render(source, None))) +} + +#[wasm_bindgen] +pub fn version() -> String { + meowscript::VERSION.to_string() +} + +#[wasm_bindgen] +pub fn keywords() -> Vec { + meowscript::token::TokenKind::KEYWORDS + .iter() + .map(|k| k.to_string()) + .collect() +} diff --git a/crates/meowscript/Cargo.toml b/crates/meowscript/Cargo.toml new file mode 100644 index 0000000..af5a754 --- /dev/null +++ b/crates/meowscript/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "meowscript" +description = "The purrfect programming language: a cat-themed scripting language and its interpreter" +version.workspace = true +edition.workspace = true +repository.workspace = true +rust-version.workspace = true + +[dependencies] +indexmap.workspace = true + +[dev-dependencies] diff --git a/crates/meowscript/src/ast.rs b/crates/meowscript/src/ast.rs new file mode 100644 index 0000000..5be9825 --- /dev/null +++ b/crates/meowscript/src/ast.rs @@ -0,0 +1,223 @@ +use crate::span::Span; +use std::fmt; +use std::rc::Rc; + +#[derive(Clone, Debug, PartialEq)] +pub struct Program { + pub stmts: Vec, +} + +#[derive(Clone, Debug, PartialEq)] +pub struct Block { + pub stmts: Vec, + pub span: Span, +} + +#[derive(Clone, Debug, PartialEq)] +pub struct Ident { + pub name: Rc, + pub span: Span, +} + +#[derive(Clone, Debug, PartialEq)] +pub struct Stmt { + pub kind: StmtKind, + pub span: Span, +} + +#[derive(Clone, Debug, PartialEq)] +pub enum StmtKind { + Let { + name: Ident, + value: Expr, + }, + /// `target` is an `Ident`, `Index`, or `Member` expression; the parser checks. + Assign { + target: Expr, + value: Expr, + }, + Return { + value: Option, + }, + Import { + path: String, + span: Span, + }, + Break, + Continue, + FnDecl { + name: Ident, + func: Rc, + }, + Loop { + cond: Option, + body: Block, + }, + ForIn { + var: Ident, + iter: Expr, + body: Block, + }, + Expr(Expr), +} + +/// Shared through `Rc` so closures don't clone the body on every evaluation of a `pawction` expression. +#[derive(Clone, Debug, PartialEq)] +pub struct FuncDef { + pub name: Option>, + pub params: Vec, + pub body: Block, +} + +#[derive(Clone, Debug, PartialEq)] +pub struct Expr { + pub kind: ExprKind, + pub span: Span, +} + +#[derive(Clone, Debug, PartialEq)] +pub enum ExprKind { + Null, + Bool(bool), + Number(f64), + Str(Rc), + Ident(Rc), + Array(Vec), + Object(Vec<(Expr, Expr)>), + Unary { + op: UnaryOp, + operand: Box, + }, + Binary { + op: BinaryOp, + left: Box, + right: Box, + }, + If { + cond: Box, + then: Block, + otherwise: Option>, + }, + Function(Rc), + Call { + callee: Box, + args: Vec, + }, + Index { + object: Box, + index: Box, + }, + Member { + object: Box, + name: Ident, + }, +} + +#[derive(Clone, Debug, PartialEq)] +pub enum Else { + If(Expr), + Block(Block), +} + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum UnaryOp { + Neg, + Not, + Typeof, +} + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum BinaryOp { + Add, + Sub, + Mul, + Div, + Rem, + Eq, + NotEq, + Lt, + Gt, + LtEq, + GtEq, + BitAnd, + BitOr, + BitXor, + Shl, + Shr, + And, + Or, + In, +} + +impl BinaryOp { + /// Left and right binding powers. Right is one higher so every operator is left-associative. + pub fn binding_power(self) -> (u8, u8) { + use BinaryOp::*; + let base = match self { + Or => 1, + And => 3, + Eq | NotEq => 5, + Lt | Gt | LtEq | GtEq | In => 7, + BitOr => 9, + BitXor => 11, + BitAnd => 13, + Shl | Shr => 15, + Add | Sub => 17, + Mul | Div | Rem => 19, + }; + (base, base + 1) + } + + pub fn symbol(self) -> &'static str { + use BinaryOp::*; + match self { + Add => "+", + Sub => "-", + Mul => "*", + Div => "/", + Rem => "%", + Eq => "==", + NotEq => "!=", + Lt => "<", + Gt => ">", + LtEq => "<=", + GtEq => ">=", + BitAnd => "&", + BitOr => "|", + BitXor => "^", + Shl => "<<", + Shr => ">>", + And => "&&", + Or => "||", + In => "~", + } + } +} + +impl UnaryOp { + pub fn symbol(self) -> &'static str { + match self { + UnaryOp::Neg => "-", + UnaryOp::Not => "!", + UnaryOp::Typeof => "furreal", + } + } +} + +impl fmt::Display for BinaryOp { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(self.symbol()) + } +} + +impl fmt::Display for UnaryOp { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(self.symbol()) + } +} + +impl Expr { + pub fn ends_with_block(&self) -> bool { + matches!(self.kind, ExprKind::If { .. } | ExprKind::Function(_)) + } +} diff --git a/crates/meowscript/src/env.rs b/crates/meowscript/src/env.rs new file mode 100644 index 0000000..30610c2 --- /dev/null +++ b/crates/meowscript/src/env.rs @@ -0,0 +1,112 @@ +//! `scratch` defines in the innermost scope; `amew` updates the nearest scope that has the name. + +use crate::value::Value; +use std::cell::RefCell; +use std::collections::HashMap; +use std::rc::Rc; + +#[derive(Clone)] +pub struct Env(Rc>); + +struct Scope { + vars: HashMap, Value>, + parent: Option, +} + +impl Default for Env { + fn default() -> Self { + Self::new() + } +} + +impl Env { + pub fn new() -> Env { + Env(Rc::new(RefCell::new(Scope { + vars: HashMap::new(), + parent: None, + }))) + } + + pub fn child(&self) -> Env { + Env(Rc::new(RefCell::new(Scope { + vars: HashMap::new(), + parent: Some(self.clone()), + }))) + } + + pub fn define(&self, name: impl Into>, value: Value) { + self.0.borrow_mut().vars.insert(name.into(), value); + } + + pub fn get(&self, name: &str) -> Option { + let mut current = Some(self.clone()); + while let Some(env) = current { + let scope = env.0.borrow(); + if let Some(v) = scope.vars.get(name) { + return Some(v.clone()); + } + current = scope.parent.clone(); + } + None + } + + pub fn assign(&self, name: &str, value: Value) -> bool { + let mut current = Some(self.clone()); + while let Some(env) = current { + let mut scope = env.0.borrow_mut(); + if let Some(slot) = scope.vars.get_mut(name) { + *slot = value; + return true; + } + current = scope.parent.clone(); + } + false + } + + pub fn has_local(&self, name: &str) -> bool { + self.0.borrow().vars.contains_key(name) + } + + pub fn local_bindings(&self) -> Vec<(Rc, Value)> { + self.0 + .borrow() + .vars + .iter() + .map(|(k, v)| (k.clone(), v.clone())) + .collect() + } + + pub fn visible_names(&self) -> Vec> { + let mut names = Vec::new(); + let mut current = Some(self.clone()); + while let Some(env) = current { + let scope = env.0.borrow(); + names.extend(scope.vars.keys().cloned()); + current = scope.parent.clone(); + } + names + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn lookups_fall_through_and_assignments_update_the_owner() { + let global = Env::new(); + global.define("x", Value::from(1.0)); + let inner = global.child(); + assert_eq!(inner.get("x"), Some(Value::from(1.0))); + + inner.define("x", Value::from(2.0)); + assert_eq!(inner.get("x"), Some(Value::from(2.0))); + assert_eq!(global.get("x"), Some(Value::from(1.0))); + + let deeper = inner.child(); + assert!(deeper.assign("x", Value::from(3.0))); + assert_eq!(inner.get("x"), Some(Value::from(3.0))); + assert_eq!(global.get("x"), Some(Value::from(1.0))); + assert!(!deeper.assign("nope", Value::Null)); + } +} diff --git a/crates/meowscript/src/error.rs b/crates/meowscript/src/error.rs new file mode 100644 index 0000000..ea3da34 --- /dev/null +++ b/crates/meowscript/src/error.rs @@ -0,0 +1,153 @@ +use crate::span::{Span, line_text, position}; +use std::fmt; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum ErrorKind { + Syntax, + Name, + Type, + Arity, + Import, + Io, + Runtime, +} + +impl ErrorKind { + pub fn label(self) -> &'static str { + match self { + ErrorKind::Syntax => "syntax error", + ErrorKind::Name => "name error", + ErrorKind::Type => "type error", + ErrorKind::Arity => "arity error", + ErrorKind::Import => "import error", + ErrorKind::Io => "io error", + ErrorKind::Runtime => "runtime error", + } + } + + pub fn exclamation(self) -> &'static str { + match self { + ErrorKind::Syntax => "Meowch!", + ErrorKind::Name => "Meow-sterious!", + ErrorKind::Type => "Furbidden!", + ErrorKind::Arity => "Paws off!", + ErrorKind::Import => "Lost kitten!", + ErrorKind::Io => "Scratched!", + ErrorKind::Runtime => "Hiss!", + } + } +} + +#[derive(Clone, Debug, PartialEq)] +pub struct Error { + pub kind: ErrorKind, + pub message: String, + pub span: Option, + /// The parser ran out of input mid-construct. The REPL keeps reading lines when it sees this. + pub incomplete: bool, +} + +impl Error { + pub fn new(kind: ErrorKind, message: impl Into) -> Self { + Self { + kind, + message: message.into(), + span: None, + incomplete: false, + } + } + + pub fn syntax(message: impl Into, span: Span) -> Self { + Self::new(ErrorKind::Syntax, message).at(span) + } + + pub fn name(message: impl Into) -> Self { + Self::new(ErrorKind::Name, message) + } + + pub fn type_(message: impl Into) -> Self { + Self::new(ErrorKind::Type, message) + } + + pub fn arity(message: impl Into) -> Self { + Self::new(ErrorKind::Arity, message) + } + + pub fn import(message: impl Into) -> Self { + Self::new(ErrorKind::Import, message) + } + + pub fn io(message: impl Into) -> Self { + Self::new(ErrorKind::Io, message) + } + + pub fn runtime(message: impl Into) -> Self { + Self::new(ErrorKind::Runtime, message) + } + + pub fn at(mut self, span: Span) -> Self { + self.span = Some(span); + self + } + + /// Only fills in a missing span, so the innermost expression keeps its position. + pub fn or_at(mut self, span: Span) -> Self { + self.span.get_or_insert(span); + self + } + + pub fn incomplete(mut self) -> Self { + self.incomplete = true; + self + } + + pub fn render(&self, source: &str, filename: Option<&str>) -> String { + let mut out = self.to_string(); + let Some(span) = self.span else { + return out; + }; + let pos = position(source, span.start); + let line = line_text(source, span.start); + let gutter = pos.line.to_string(); + let pad = " ".repeat(gutter.len()); + let name = filename.unwrap_or(""); + let remaining = line.chars().count().saturating_sub(pos.column - 1).max(1); + let width = span.len().clamp(1, remaining); + out.push_str(&format!( + "\n {pad}--> {name}:{pos}\n {pad} |\n {gutter} | {line}\n {pad} | {caret_pad}{carets}", + caret_pad = " ".repeat(pos.column - 1), + carets = "^".repeat(width), + )); + out + } +} + +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!( + f, + "{} {}: {}", + self.kind.exclamation(), + self.kind.label(), + self.message + ) + } +} + +impl std::error::Error for Error {} + +pub type Result = std::result::Result; + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn render_points_at_the_span() { + let src = "scratch x = ;"; + let err = Error::syntax("expected an expression, found `;`", Span::new(12, 13)); + let text = err.render(src, Some("test.meow")); + assert!(text.contains("test.meow:1:13"), "{text}"); + assert!(text.ends_with('^'), "{text}"); + } +} diff --git a/crates/meowscript/src/host.rs b/crates/meowscript/src/host.rs new file mode 100644 index 0000000..6c96383 --- /dev/null +++ b/crates/meowscript/src/host.rs @@ -0,0 +1,163 @@ +//! The interpreter reaches the outside world only through a `Host`, which is what lets the same +//! crate run on the command line, in tests, and in a browser. + +use crate::error::{Error, Result}; +use std::cell::RefCell; +use std::rc::Rc; + +pub trait Host { + /// `line` has no trailing newline. + fn print(&mut self, line: &str); + + fn read_line(&mut self, prompt: &str) -> Result { + let _ = prompt; + Err(Error::io("there is no keyboard to read from here")) + } + + fn sleep(&mut self, millis: f64) { + let _ = millis; + } + + fn now_millis(&mut self) -> f64 { + 0.0 + } + + fn read_file(&mut self, path: &str) -> Result { + let _ = path; + Err(Error::io("there is no scratchpad (filesystem) here")) + } + + fn write_file(&mut self, path: &str, contents: &str, append: bool) -> Result<()> { + let _ = (path, contents, append); + Err(Error::io("there is no scratchpad (filesystem) here")) + } + + fn file_exists(&mut self, path: &str) -> bool { + let _ = path; + false + } + + fn random_seed(&mut self) -> u64 { + 0x9E37_79B9_7F4A_7C15 + } +} + +/// Collects output in memory. Clones share the buffer, so keep one and give the other to the +/// interpreter. +#[derive(Clone, Default)] +pub struct BufferHost { + lines: Rc>>, + seed: u64, +} + +impl BufferHost { + pub fn new() -> Self { + Self::default() + } + + pub fn with_seed(seed: u64) -> Self { + Self { + seed, + ..Self::default() + } + } + + pub fn lines(&self) -> Vec { + self.lines.borrow().clone() + } + + pub fn output(&self) -> String { + self.lines.borrow().join("\n") + } + + pub fn take(&self) -> Vec { + std::mem::take(&mut *self.lines.borrow_mut()) + } +} + +impl Host for BufferHost { + fn print(&mut self, line: &str) { + self.lines.borrow_mut().push(line.to_string()); + } + + fn random_seed(&mut self) -> u64 { + self.seed + } +} + +#[cfg(not(target_arch = "wasm32"))] +pub struct NativeHost; + +#[cfg(not(target_arch = "wasm32"))] +impl Host for NativeHost { + fn print(&mut self, line: &str) { + use std::io::Write; + let stdout = std::io::stdout(); + let mut lock = stdout.lock(); + let _ = writeln!(lock, "{line}"); + let _ = lock.flush(); + } + + fn read_line(&mut self, prompt: &str) -> Result { + use std::io::{BufRead, Write}; + let mut stdout = std::io::stdout(); + let _ = write!(stdout, "{prompt}"); + let _ = stdout.flush(); + let mut line = String::new(); + std::io::stdin() + .lock() + .read_line(&mut line) + .map_err(|e| Error::io(format!("could not read input: {e}")))?; + while line.ends_with(['\n', '\r']) { + line.pop(); + } + Ok(line) + } + + fn sleep(&mut self, millis: f64) { + if millis > 0.0 { + std::thread::sleep(std::time::Duration::from_secs_f64(millis / 1000.0)); + } + } + + fn now_millis(&mut self) -> f64 { + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .map(|d| d.as_secs_f64() * 1000.0) + .unwrap_or(0.0) + } + + fn read_file(&mut self, path: &str) -> Result { + std::fs::read_to_string(path) + .map_err(|e| Error::io(format!("could not read `{path}`: {e}"))) + } + + fn write_file(&mut self, path: &str, contents: &str, append: bool) -> Result<()> { + use std::io::Write; + let mut file = std::fs::OpenOptions::new() + .create(true) + .write(true) + .append(append) + .truncate(!append) + .open(path) + .map_err(|e| Error::io(format!("could not open `{path}`: {e}")))?; + file.write_all(contents.as_bytes()) + .map_err(|e| Error::io(format!("could not write `{path}`: {e}"))) + } + + fn file_exists(&mut self, path: &str) -> bool { + std::path::Path::new(path).exists() + } + + fn random_seed(&mut self) -> u64 { + use std::hash::{BuildHasher, Hasher}; + let mut hasher = std::collections::hash_map::RandomState::new().build_hasher(); + hasher.write_u128( + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .map(|d| d.as_nanos()) + .unwrap_or(0), + ); + hasher.finish() + } +} diff --git a/crates/meowscript/src/interpreter.rs b/crates/meowscript/src/interpreter.rs new file mode 100644 index 0000000..594cc8e --- /dev/null +++ b/crates/meowscript/src/interpreter.rs @@ -0,0 +1,953 @@ +//! Tree-walking evaluator. `tail`, `hiss`, `continue`, and errors travel up through the `Err` +//! side of [`Flow`], so the happy path only deals with values. + +use crate::ast::*; +use crate::env::Env; +use crate::error::{Error, Result}; +use crate::host::Host; +use crate::parser::parse; +use crate::rng::Rng; +use crate::span::Span; +use crate::stdlib; +use crate::value::{Closure, Value, format_number}; +use indexmap::IndexMap; +use std::rc::Rc; + +pub const MAX_CALL_DEPTH: usize = 1000; +const MAX_IMPORT_DEPTH: usize = 32; + +enum Interrupt { + Return(Value), + Break(Span), + Continue(Span), + Error(Error), +} + +impl From for Interrupt { + fn from(e: Error) -> Self { + Interrupt::Error(e) + } +} + +type Flow = std::result::Result; + +pub struct Interpreter { + host: Box, + prelude: Env, + env: Env, + rng: Rng, + call_depth: usize, + import_depth: usize, + base_dir: Option, +} + +impl Interpreter { + pub fn new(host: impl Host + 'static) -> Self { + Self::with_boxed_host(Box::new(host)) + } + + pub fn with_boxed_host(mut host: Box) -> Self { + let seed = host.random_seed(); + let prelude = Env::new(); + stdlib::install_prelude(&prelude); + let env = prelude.child(); + Self { + host, + prelude, + env, + rng: Rng::seeded(seed), + call_depth: 0, + import_depth: 0, + base_dir: None, + } + } + + pub fn host(&mut self) -> &mut dyn Host { + &mut *self.host + } + + pub fn rng(&mut self) -> &mut Rng { + &mut self.rng + } + + pub fn reseed(&mut self, seed: u64) { + self.rng = Rng::seeded(seed); + } + + /// Where relative `pawckage "./file.meow"` paths resolve from. + pub fn set_base_dir(&mut self, dir: Option) { + self.base_dir = dir; + } + + /// Runs in the current global scope, so a REPL can call it repeatedly. Returns the value of + /// the last expression statement. + pub fn run(&mut self, source: &str) -> Result { + let program = parse(source)?; + self.exec_program(&program) + } + + pub fn call(&mut self, callee: Value, args: Vec, span: Option) -> Result { + let attach = |e: Error| match span { + Some(s) => e.or_at(s), + None => e, + }; + match callee { + Value::Builtin(b) => { + if !b.arity.accepts(args.len()) { + return Err(attach(Error::arity(format!( + "`{}` takes {}, but got {}", + b.name, + b.arity.describe(), + args.len() + )))); + } + (b.func)(self, args).map_err(attach) + } + Value::Function(closure) => { + let def = &closure.def; + let name = def + .name + .as_deref() + .map_or("this pawction".to_string(), |n| format!("`{n}`")); + if def.params.len() != args.len() { + let n = def.params.len(); + return Err(attach(Error::arity(format!( + "{name} takes {n} argument{}, but got {}", + if n == 1 { "" } else { "s" }, + args.len() + )))); + } + if self.call_depth >= MAX_CALL_DEPTH { + return Err(attach(Error::runtime(format!( + "pawctions are nested more than {MAX_CALL_DEPTH} calls deep; is there a recursion with no way out?" + )))); + } + let env = closure.env.child(); + for (param, arg) in def.params.iter().zip(args) { + env.define(param.name.clone(), arg); + } + self.call_depth += 1; + let saved = std::mem::replace(&mut self.env, env); + let result = self.exec_stmts(&def.body.stmts); + self.env = saved; + self.call_depth -= 1; + match result { + Ok(v) | Err(Interrupt::Return(v)) => Ok(v), + Err(Interrupt::Error(e)) => Err(e), + Err(Interrupt::Break(s)) => { + Err(Error::runtime("`hiss` only works inside a loop").at(s)) + } + Err(Interrupt::Continue(s)) => { + Err(Error::runtime("`continue` only works inside a loop").at(s)) + } + } + } + other => Err(attach(Error::type_(format!( + "only pawctions can be called, and this is a {}", + other.type_name() + )))), + } + } + + pub fn print(&mut self, line: &str) { + self.host.print(line); + } + + fn exec_program(&mut self, program: &Program) -> Result { + match self.exec_stmts(&program.stmts) { + Ok(v) | Err(Interrupt::Return(v)) => Ok(v), + Err(Interrupt::Error(e)) => Err(e), + Err(Interrupt::Break(s)) => { + Err(Error::runtime("`hiss` only works inside a loop").at(s)) + } + Err(Interrupt::Continue(s)) => { + Err(Error::runtime("`continue` only works inside a loop").at(s)) + } + } + } + + // A block's value is its last statement's, which is how `purrhaps` works as an expression + // and how a pawction returns without `tail`. + fn exec_stmts(&mut self, stmts: &[Stmt]) -> Flow { + let mut last = Value::Null; + for stmt in stmts { + last = self.exec_stmt(stmt)?; + } + Ok(last) + } + + fn exec_block(&mut self, block: &Block) -> Flow { + let child = self.env.child(); + let saved = std::mem::replace(&mut self.env, child); + let result = self.exec_stmts(&block.stmts); + self.env = saved; + result + } + + fn exec_stmt(&mut self, stmt: &Stmt) -> Flow { + match &stmt.kind { + StmtKind::Let { name, value } => { + let v = self.eval(value)?; + self.env.define(name.name.clone(), v); + Ok(Value::Null) + } + StmtKind::Assign { target, value } => { + let v = self.eval(value)?; + self.assign(target, v)?; + Ok(Value::Null) + } + StmtKind::Return { value } => { + let v = match value { + Some(e) => self.eval(e)?, + None => Value::Null, + }; + Err(Interrupt::Return(v)) + } + StmtKind::Import { path, span } => { + self.import(path, *span)?; + Ok(Value::Null) + } + StmtKind::Break => Err(Interrupt::Break(stmt.span)), + StmtKind::Continue => Err(Interrupt::Continue(stmt.span)), + StmtKind::FnDecl { name, func } => { + let closure = Closure { + def: func.clone(), + env: self.env.clone(), + }; + self.env + .define(name.name.clone(), Value::Function(Rc::new(closure))); + Ok(Value::Null) + } + StmtKind::Loop { cond, body } => { + loop { + if let Some(cond) = cond + && !self.eval(cond)?.is_truthy() + { + break; + } + match self.exec_block(body) { + Ok(_) | Err(Interrupt::Continue(_)) => {} + Err(Interrupt::Break(_)) => break, + Err(other) => return Err(other), + } + } + Ok(Value::Null) + } + StmtKind::ForIn { var, iter, body } => { + let iterable = self.eval(iter)?; + let items = self.iterate(&iterable).map_err(|e| e.at(iter.span))?; + for item in items { + let scope = self.env.child(); + scope.define(var.name.clone(), item); + let saved = std::mem::replace(&mut self.env, scope); + let result = self.exec_block(body); + self.env = saved; + match result { + Ok(_) | Err(Interrupt::Continue(_)) => {} + Err(Interrupt::Break(_)) => break, + Err(other) => return Err(other), + } + } + Ok(Value::Null) + } + StmtKind::Expr(expr) => self.eval(expr), + } + } + + fn iterate(&self, value: &Value) -> Result> { + Ok(match value { + Value::Array(items) => items.borrow().clone(), + Value::Str(s) => s.chars().map(|c| Value::str(c.to_string())).collect(), + Value::Object(map) => map.borrow().keys().map(|k| Value::Str(k.clone())).collect(), + Value::Number(n) if *n >= 0.0 && n.fract() == 0.0 => { + (0..*n as u64).map(|i| Value::Number(i as f64)).collect() + } + Value::Number(n) => { + return Err(Error::type_(format!( + "`fur` over a number counts from 0 up to it, so it needs a whole number of at least 0, not {}", + format_number(*n) + ))); + } + other => { + return Err(Error::type_(format!( + "`fur` can walk over a furrball, whiskers, object, or number, not a {}", + other.type_name() + ))); + } + }) + } + + fn assign(&mut self, target: &Expr, value: Value) -> Flow<()> { + match &target.kind { + ExprKind::Ident(name) => { + if self.env.assign(name, value) { + Ok(()) + } else { + Err(Error::name(format!( + "can't `amew {name}` because `{name}` was never `scratch`ed{}", + self.suggestion(name) + )) + .at(target.span) + .into()) + } + } + ExprKind::Index { object, index } => { + let obj = self.eval(object)?; + let idx = self.eval(index)?; + self.set_index(&obj, &idx, value) + .map_err(|e| e.or_at(target.span).into()) + } + ExprKind::Member { object, name } => { + let obj = self.eval(object)?; + let key = Value::Str(name.name.clone()); + self.set_index(&obj, &key, value) + .map_err(|e| e.or_at(target.span).into()) + } + _ => Err(Error::syntax("this can't be assigned to", target.span).into()), + } + } + + fn set_index(&mut self, obj: &Value, index: &Value, value: Value) -> Result<()> { + match (obj, index) { + (Value::Array(items), Value::Number(n)) => { + let mut items = items.borrow_mut(); + let len = items.len(); + let i = array_index(*n, len).ok_or_else(|| out_of_bounds(*n, len))?; + items[i] = value; + Ok(()) + } + (Value::Array(_), other) => Err(Error::type_(format!( + "furrball indexes are numbers, not {}", + other.type_name() + ))), + (Value::Object(map), key) => { + let key = object_key(key)?; + map.borrow_mut().insert(key, value); + Ok(()) + } + (Value::Str(_), _) => Err(Error::type_( + "whiskers can't be changed in place; build a new string with `+` or `replace` instead", + )), + (other, _) => Err(Error::type_(format!( + "can't assign into a {}", + other.type_name() + ))), + } + } + + // Errors with no position yet get this expression's span, so the innermost culprit wins. + fn eval(&mut self, expr: &Expr) -> Flow { + self.eval_inner(expr).map_err(|i| match i { + Interrupt::Error(e) => Interrupt::Error(e.or_at(expr.span)), + other => other, + }) + } + + fn eval_inner(&mut self, expr: &Expr) -> Flow { + Ok(match &expr.kind { + ExprKind::Null => Value::Null, + ExprKind::Bool(b) => Value::Bool(*b), + ExprKind::Number(n) => Value::Number(*n), + ExprKind::Str(s) => Value::Str(s.clone()), + ExprKind::Ident(name) => match self.env.get(name) { + Some(v) => v, + None => { + return Err(Error::name(format!( + "`{name}` hasn't been `scratch`ed yet{}", + self.suggestion(name) + )) + .into()); + } + }, + ExprKind::Array(items) => { + let mut out = Vec::with_capacity(items.len()); + for item in items { + out.push(self.eval(item)?); + } + Value::array(out) + } + ExprKind::Object(entries) => { + let mut map = IndexMap::with_capacity(entries.len()); + for (key, value) in entries { + let k = self.eval(key)?; + let k = object_key(&k).map_err(|e| e.at(key.span))?; + let v = self.eval(value)?; + map.insert(k, v); + } + Value::object(map) + } + ExprKind::Unary { op, operand } => { + let v = self.eval(operand)?; + match op { + UnaryOp::Not => Value::Bool(!v.is_truthy()), + UnaryOp::Typeof => Value::str(v.type_name()), + UnaryOp::Neg => match v { + Value::Number(n) => Value::Number(-n), + other => { + return Err(Error::type_(format!( + "`-` needs a number, not a {}", + other.type_name() + )) + .into()); + } + }, + } + } + ExprKind::Binary { + op: BinaryOp::And, + left, + right, + } => { + let l = self.eval(left)?; + if l.is_truthy() { self.eval(right)? } else { l } + } + ExprKind::Binary { + op: BinaryOp::Or, + left, + right, + } => { + let l = self.eval(left)?; + if l.is_truthy() { l } else { self.eval(right)? } + } + ExprKind::Binary { op, left, right } => { + let l = self.eval(left)?; + let r = self.eval(right)?; + binary(*op, &l, &r)? + } + ExprKind::If { + cond, + then, + otherwise, + } => { + if self.eval(cond)?.is_truthy() { + self.exec_block(then)? + } else { + match otherwise.as_deref() { + Some(Else::If(e)) => self.eval(e)?, + Some(Else::Block(b)) => self.exec_block(b)?, + None => Value::Null, + } + } + } + ExprKind::Function(def) => Value::Function(Rc::new(Closure { + def: def.clone(), + env: self.env.clone(), + })), + ExprKind::Call { callee, args } => { + let f = self.eval(callee)?; + let mut values = Vec::with_capacity(args.len()); + for arg in args { + values.push(self.eval(arg)?); + } + self.call(f, values, Some(expr.span))? + } + ExprKind::Index { object, index } => { + let obj = self.eval(object)?; + let idx = self.eval(index)?; + get_index(&obj, &idx)? + } + ExprKind::Member { object, name } => { + let obj = self.eval(object)?; + get_index(&obj, &Value::Str(name.name.clone()))? + } + }) + } + + fn import(&mut self, path: &str, span: Span) -> Result<()> { + if let Some(name) = path.strip_prefix("nya:") { + let Some(pkg) = stdlib::package(name) else { + let names: Vec<_> = stdlib::PACKAGES + .iter() + .map(|p| format!("`{}`", p.name)) + .collect(); + return Err(Error::import(format!( + "there is no built-in pawckage called `nya:{name}`; the ones I know are {}", + names.join(", ") + )) + .at(span)); + }; + pkg.install(&self.env); + return Ok(()); + } + + if self.import_depth >= MAX_IMPORT_DEPTH { + return Err(Error::import( + "pawckages are importing each other in a circle (or nested absurdly deep)", + ) + .at(span)); + } + + let resolved = self.resolve_path(path); + let source = self.host.read_file(&resolved).map_err(|e| { + Error::import(format!("couldn't load pawckage `{path}`: {}", e.message)).at(span) + })?; + let program = parse(&source).map_err(|e| { + Error::import(format!( + "inside pawckage `{path}`:\n{}", + e.render(&source, Some(&resolved)) + )) + .at(span) + })?; + + let module_env = self.prelude.child(); + let saved_env = std::mem::replace(&mut self.env, module_env.clone()); + let saved_dir = std::mem::replace(&mut self.base_dir, parent_dir(&resolved)); + self.import_depth += 1; + let result = self.exec_program(&program); + self.import_depth -= 1; + self.base_dir = saved_dir; + self.env = saved_env; + result.map_err(|e| { + Error::import(format!( + "inside pawckage `{path}`:\n{}", + e.render(&source, Some(&resolved)) + )) + .at(span) + })?; + + // A module's own `nya:` imports stay private to it. + for (name, value) in module_env.local_bindings() { + if !stdlib::is_package_provided(&name, &value) { + self.env.define(name, value); + } + } + Ok(()) + } + + fn resolve_path(&self, path: &str) -> String { + let mut p = std::path::PathBuf::from(path); + if p.extension().is_none() { + p.set_extension("meow"); + } + if p.is_absolute() { + return p.to_string_lossy().into_owned(); + } + match &self.base_dir { + Some(dir) if !dir.is_empty() => std::path::Path::new(dir) + .join(p) + .to_string_lossy() + .into_owned(), + _ => p.to_string_lossy().into_owned(), + } + } + + fn suggestion(&self, name: &str) -> String { + let mut candidates: Vec> = self.env.visible_names(); + candidates.sort(); + candidates.dedup(); + let best = candidates + .iter() + .map(|c| (edit_distance(name, c), c)) + .filter(|(d, c)| *d <= 2 && c.len() > 1) + .min_by_key(|(d, _)| *d); + match best { + Some((_, c)) => format!("; did you mean `{c}`?"), + None => String::new(), + } + } +} + +fn binary(op: BinaryOp, l: &Value, r: &Value) -> Result { + use BinaryOp::*; + use Value::*; + let v = match (op, l, r) { + (Add, Number(a), Number(b)) => Number(a + b), + (Add, Str(a), _) => Value::str(format!("{a}{r}")), + (Add, _, Str(b)) => Value::str(format!("{l}{b}")), + (Add, Array(a), Array(b)) => { + let mut items = a.borrow().clone(); + items.extend(b.borrow().iter().cloned()); + Value::array(items) + } + (Sub, Number(a), Number(b)) => Number(a - b), + (Mul, Number(a), Number(b)) => Number(a * b), + (Mul, Str(s), Number(n)) | (Mul, Number(n), Str(s)) => { + if *n < 0.0 || n.fract() != 0.0 { + return Err(Error::type_(format!( + "whiskers can be repeated a whole number of times, not {}", + format_number(*n) + ))); + } + Value::str(s.repeat(*n as usize)) + } + (Div, Number(a), Number(b)) => { + if *b == 0.0 { + return Err(Error::runtime("can't divide by zero")); + } + Number(a / b) + } + (Rem, Number(a), Number(b)) => { + if *b == 0.0 { + return Err(Error::runtime( + "can't take the remainder of dividing by zero", + )); + } + Number(a % b) + } + (Eq, _, _) => Bool(l == r), + (NotEq, _, _) => Bool(l != r), + (Lt, Number(a), Number(b)) => Bool(a < b), + (Gt, Number(a), Number(b)) => Bool(a > b), + (LtEq, Number(a), Number(b)) => Bool(a <= b), + (GtEq, Number(a), Number(b)) => Bool(a >= b), + (Lt, Str(a), Str(b)) => Bool(a < b), + (Gt, Str(a), Str(b)) => Bool(a > b), + (LtEq, Str(a), Str(b)) => Bool(a <= b), + (GtEq, Str(a), Str(b)) => Bool(a >= b), + (BitAnd, Number(a), Number(b)) => Number((*a as i64 & *b as i64) as f64), + (BitOr, Number(a), Number(b)) => Number((*a as i64 | *b as i64) as f64), + (BitXor, Number(a), Number(b)) => Number((*a as i64 ^ *b as i64) as f64), + (Shl, Number(a), Number(b)) => Number((*a as i64).wrapping_shl(*b as u32) as f64), + (Shr, Number(a), Number(b)) => Number((*a as i64).wrapping_shr(*b as u32) as f64), + (In, _, Array(items)) => Bool(items.borrow().contains(l)), + (In, _, Object(map)) => Bool(map.borrow().contains_key(&*object_key(l)?)), + (In, Str(needle), Str(hay)) => Bool(hay.contains(&**needle)), + (And | Or, _, _) => unreachable!("short-circuit operators are handled by the evaluator"), + _ => { + return Err(Error::type_(format!( + "`{op}` doesn't work between {} and {}", + article(l.type_name()), + article(r.type_name()) + ))); + } + }; + Ok(v) +} + +fn get_index(obj: &Value, index: &Value) -> Result { + match (obj, index) { + (Value::Array(items), Value::Number(n)) => { + let items = items.borrow(); + array_index(*n, items.len()) + .map(|i| items[i].clone()) + .ok_or_else(|| out_of_bounds(*n, items.len())) + } + (Value::Str(s), Value::Number(n)) => { + let len = s.chars().count(); + array_index(*n, len) + .and_then(|i| s.chars().nth(i)) + .map(|c| Value::str(c.to_string())) + .ok_or_else(|| out_of_bounds(*n, len)) + } + (Value::Object(map), key) => { + let key = object_key(key)?; + Ok(map.borrow().get(&*key).cloned().unwrap_or(Value::Null)) + } + (Value::Array(_) | Value::Str(_), other) => Err(Error::type_(format!( + "{} indexes are numbers, not {}", + obj.type_name(), + article(other.type_name()) + ))), + (other, _) => Err(Error::type_(format!( + "can't index into {}", + article(other.type_name()) + ))), + } +} + +/// Negative indexes count from the end. +pub(crate) fn array_index(n: f64, len: usize) -> Option { + if n.fract() != 0.0 || n.is_nan() { + return None; + } + let i = n as i64; + let i = if i < 0 { i + len as i64 } else { i }; + (0..len as i64).contains(&i).then_some(i as usize) +} + +fn out_of_bounds(n: f64, len: usize) -> Error { + if n.fract() != 0.0 { + Error::type_(format!( + "indexes are whole numbers, not {}", + format_number(n) + )) + } else if len == 0 { + Error::runtime(format!( + "index {} is out of bounds; this one is empty", + format_number(n) + )) + } else { + Error::runtime(format!( + "index {} is out of bounds; valid indexes are 0 to {} (or -1 to -{} from the end)", + format_number(n), + len - 1, + len + )) + } +} + +/// Object keys are always strings; numbers and booleans are converted. +pub(crate) fn object_key(v: &Value) -> Result> { + match v { + Value::Str(s) => Ok(s.clone()), + Value::Number(_) | Value::Bool(_) => Ok(v.to_string().into()), + other => Err(Error::type_(format!( + "object keys are whiskers, not {}", + article(other.type_name()) + ))), + } +} + +fn article(type_name: &str) -> String { + match type_name { + "mew" => "mew".to_string(), + "whiskers" => "whiskers".to_string(), + "object" => "an object".to_string(), + other => format!("a {other}"), + } +} + +fn parent_dir(path: &str) -> Option { + std::path::Path::new(path) + .parent() + .map(|p| p.to_string_lossy().into_owned()) +} + +fn edit_distance(a: &str, b: &str) -> usize { + let a: Vec = a.chars().collect(); + let b: Vec = b.chars().collect(); + let mut prev: Vec = (0..=b.len()).collect(); + let mut cur = vec![0; b.len() + 1]; + for (i, ca) in a.iter().enumerate() { + cur[0] = i + 1; + for (j, cb) in b.iter().enumerate() { + let cost = usize::from(ca != cb); + cur[j + 1] = (prev[j] + cost).min(prev[j + 1] + 1).min(cur[j] + 1); + } + std::mem::swap(&mut prev, &mut cur); + } + prev[b.len()] +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::host::BufferHost; + + fn run(src: &str) -> (Result, Vec) { + let host = BufferHost::new(); + let mut interp = Interpreter::new(host.clone()); + let result = interp.run(src); + (result, host.take()) + } + + fn eval(src: &str) -> Value { + run(src).0.unwrap() + } + + fn output(src: &str) -> Vec { + let (r, lines) = run(src); + r.unwrap(); + lines + } + + fn error(src: &str) -> Error { + run(src).0.unwrap_err() + } + + #[test] + fn arithmetic_and_precedence() { + assert_eq!(eval("1 + 2 * 3"), Value::from(7.0)); + assert_eq!(eval("(1 + 2) * 3"), Value::from(9.0)); + assert_eq!(eval("10 % 3"), Value::from(1.0)); + assert_eq!(eval("-2 * -3"), Value::from(6.0)); + assert_eq!(eval("1 + 2 << 1"), Value::from(6.0)); + assert_eq!(eval("6 & 3 == 2"), Value::from(true)); + } + + #[test] + fn strings_concatenate_with_anything() { + assert_eq!( + eval(r#""a" + 1 + purrfect + mew"#), + Value::from("a1purrfectmew") + ); + assert_eq!(eval(r#""ab" * 3"#), Value::from("ababab")); + assert_eq!(eval(r#""b" > "a""#), Value::from(true)); + } + + #[test] + fn variables_and_scopes() { + assert_eq!(eval("scratch x = 1; amew x = x + 1; x"), Value::from(2.0)); + assert_eq!( + eval("scratch x = 1; purrhaps purrfect { amew x = 5; } x"), + Value::from(5.0) + ); + assert_eq!( + eval("scratch x = 1; purrhaps purrfect { scratch x = 5; } x"), + Value::from(1.0) + ); + let e = error("amew y = 1;"); + assert_eq!(e.kind, crate::error::ErrorKind::Name); + let e = error("scratch count = 1; meow(cuont);"); + assert!(e.message.contains("did you mean `count`"), "{}", e.message); + } + + #[test] + fn functions_closures_and_recursion() { + assert_eq!( + eval("pawction add(a, b) { tail a + b; } add(2, 3)"), + Value::from(5.0) + ); + assert_eq!( + eval("scratch f = pawction(x) { x * 2 }; f(4)"), + Value::from(8.0) + ); + assert_eq!( + eval( + "pawction fib(n) { purrhaps n < 2 { tail n; } tail fib(n - 1) + fib(n - 2); } fib(15)" + ), + Value::from(610.0) + ); + let src = "pawction counter() { scratch n = 0; tail pawction() { amew n = n + 1; tail n; }; } \ + scratch c = counter(); c(); c(); c()"; + assert_eq!(eval(src), Value::from(3.0)); + let e = error("pawction f(a) {} f(1, 2)"); + assert!( + e.message.contains("`f` takes 1 argument, but got 2"), + "{}", + e.message + ); + } + + #[test] + fn deep_recursion_is_an_error_not_a_crash() { + let handle = std::thread::Builder::new() + .stack_size(64 * 1024 * 1024) + .spawn(|| error("pawction down(n) { tail down(n + 1); } down(0)")) + .unwrap(); + let e = handle.join().unwrap(); + assert!(e.message.contains("recursion"), "{}", e.message); + } + + #[test] + fn if_is_an_expression() { + assert_eq!( + eval("purrhaps clawful { 1 } meowtually purrhaps purrfect { 2 } meowtually { 3 }"), + Value::from(2.0) + ); + assert_eq!( + eval("scratch x = purrhaps (1 > 2) { \"big\" } meowtually { \"small\" }; x"), + Value::from("small") + ); + assert_eq!(eval("purrhaps clawful { 1 }"), Value::Null); + } + + #[test] + fn truthiness() { + assert_eq!(eval("!mew"), Value::from(true)); + assert_eq!(eval("!0"), Value::from(false)); + assert_eq!(eval(r#"!"""#), Value::from(false)); + assert_eq!(eval("mew || 3"), Value::from(3.0)); + assert_eq!(eval("1 && 2"), Value::from(2.0)); + assert_eq!(eval("clawful && undefined_name"), Value::from(false)); + } + + #[test] + fn loops() { + assert_eq!( + output( + "scratch i = 0; furrever { purrhaps i == 3 { hiss; } purr(i); amew i = i + 1; }" + ), + vec!["0", "1", "2"] + ); + assert_eq!( + output("scratch i = 0; furrever i < 2 { purr(i); amew i = i + 1; }"), + vec!["0", "1"] + ); + assert_eq!( + output("fur x ~ [1, 2, 3] { purrhaps x == 2 { continue; } purr(x); }"), + vec!["1", "3"] + ); + assert_eq!(output("fur c ~ \"ab\" { purr(c); }"), vec!["a", "b"]); + assert_eq!( + output("fur k ~ { a: 1, b: 2 } { purr(k); }"), + vec!["a", "b"] + ); + assert_eq!(output("fur i ~ 3 { purr(i); }"), vec!["0", "1", "2"]); + assert!(error("hiss;").message.contains("inside a loop")); + assert!( + error("pawction f() { hiss; } furrever { f(); }") + .message + .contains("inside a loop") + ); + } + + #[test] + fn furrballs_are_shared_and_indexable() { + assert_eq!(eval("scratch a = [1, 2, 3]; a[-1]"), Value::from(3.0)); + assert_eq!( + eval("scratch a = [1, 2, 3]; scratch b = a; amew b[0] = 9; a[0]"), + Value::from(9.0) + ); + assert_eq!( + eval("[1, 2] + [3]"), + Value::array(vec![1.0.into(), 2.0.into(), 3.0.into()]) + ); + assert_eq!(eval("2 ~ [1, 2]"), Value::from(true)); + assert_eq!(eval("\"b\"[0]"), Value::from("b")); + let e = error("[1, 2][5]"); + assert!(e.message.contains("out of bounds"), "{}", e.message); + assert!(error("[1][0.5]").message.contains("whole")); + } + + #[test] + fn objects_and_possessives() { + let src = r#"scratch cat = { name: "Tom", "age": 3 }; amew cat's age = 4; cat's age + cat["age"]"#; + assert_eq!(eval(src), Value::from(8.0)); + assert_eq!(eval("scratch o = {}; amew o's x = 1; o"), eval("{ x: 1 }")); + assert_eq!(eval("{ a: 1 }'s missing"), Value::Null); + assert_eq!(eval("\"a\" ~ { a: 1 }"), Value::from(true)); + assert_eq!(eval("scratch n = \"k\"; { [n]: 1 }'s k"), Value::from(1.0)); + assert_eq!(eval("scratch k = 2; { k }"), eval("{ k: 2 }")); + assert_eq!(eval("furreal { }"), Value::from("object")); + } + + #[test] + fn typeof_names() { + assert_eq!(eval("furreal mew"), Value::from("mew")); + assert_eq!(eval("furreal 1"), Value::from("number")); + assert_eq!(eval("furreal \"\""), Value::from("whiskers")); + assert_eq!(eval("furreal []"), Value::from("furrball")); + assert_eq!(eval("furreal purrfect"), Value::from("boolean")); + assert_eq!(eval("furreal pawction() {}"), Value::from("pawction")); + assert_eq!(eval("furreal meow"), Value::from("pawction")); + } + + #[test] + fn meow_prefixes_and_purr_does_not() { + assert_eq!( + output("meow(\"hi\", 1); purr(\"hi\", 1); meow();"), + vec!["Meow! hi 1", "hi 1", "Meow!"] + ); + } + + #[test] + fn errors_carry_positions() { + let src = "scratch x = 1;\nscratch y = x / 0;"; + let e = error(src); + assert_eq!( + e.span.map(|s| crate::span::position(src, s.start).line), + Some(2) + ); + let e = error("meow(nope)"); + assert_eq!(e.span, Some(Span::new(5, 9))); + } + + #[test] + fn packages() { + assert_eq!( + eval("pawckage \"nya:catculator\"; floor(PI)"), + Value::from(3.0) + ); + let e = error("pawckage \"nya:dogs\";"); + assert!(e.message.contains("nya:furrball"), "{}", e.message); + assert!(error("floor(1)").message.contains("hasn't been")); + } + + #[test] + fn return_value_of_a_program_is_its_last_expression() { + assert_eq!(eval("1; 2; scratch x = 3;"), Value::Null); + assert_eq!(eval("1; 2"), Value::from(2.0)); + assert_eq!(eval("tail 7; 8"), Value::from(7.0)); + } +} diff --git a/crates/meowscript/src/lexer.rs b/crates/meowscript/src/lexer.rs new file mode 100644 index 0000000..aa6cc28 --- /dev/null +++ b/crates/meowscript/src/lexer.rs @@ -0,0 +1,432 @@ +use crate::error::{Error, Result}; +use crate::span::Span; +use crate::token::{Token, TokenKind}; + +pub fn tokenize(source: &str) -> Result> { + Lexer { + src: source, + pos: 0, + } + .run() +} + +struct Lexer<'a> { + src: &'a str, + pos: usize, +} + +impl<'a> Lexer<'a> { + fn run(mut self) -> Result> { + let mut tokens = Vec::new(); + loop { + self.skip_trivia()?; + let start = self.pos; + let Some(c) = self.peek() else { + tokens.push(Token { + kind: TokenKind::Eof, + span: Span::new(start, start), + }); + return Ok(tokens); + }; + let kind = match c { + '"' => self.string()?, + '\'' => self.possessive()?, + c if c.is_ascii_digit() => self.number()?, + c if is_ident_start(c) => self.ident(), + _ => self.punct()?, + }; + tokens.push(Token { + kind, + span: Span::new(start, self.pos), + }); + } + } + + fn peek(&self) -> Option { + self.src[self.pos..].chars().next() + } + + fn peek_at(&self, n: usize) -> Option { + self.src[self.pos..].chars().nth(n) + } + + fn bump(&mut self) -> Option { + let c = self.peek()?; + self.pos += c.len_utf8(); + Some(c) + } + + fn eat(&mut self, expected: char) -> bool { + if self.peek() == Some(expected) { + self.pos += expected.len_utf8(); + true + } else { + false + } + } + + fn skip_trivia(&mut self) -> Result<()> { + loop { + match (self.peek(), self.peek_at(1)) { + (Some(c), _) if c.is_whitespace() => { + self.bump(); + } + (Some('/'), Some('/')) => { + while let Some(c) = self.peek() { + if c == '\n' { + break; + } + self.bump(); + } + } + (Some('/'), Some('*')) => { + let start = self.pos; + self.pos += 2; + loop { + match (self.peek(), self.peek_at(1)) { + (Some('*'), Some('/')) => { + self.pos += 2; + break; + } + (None, _) => { + return Err(Error::syntax( + "this block comment never closes; it needs a `*/`", + Span::new(start, self.pos), + ) + .incomplete()); + } + _ => { + self.bump(); + } + } + } + } + _ => return Ok(()), + } + } + } + + fn ident(&mut self) -> TokenKind { + let start = self.pos; + while let Some(c) = self.peek() { + if is_ident_continue(c) { + self.bump(); + } else { + break; + } + } + let text = &self.src[start..self.pos]; + TokenKind::keyword(text).unwrap_or_else(|| TokenKind::Ident(text.to_string())) + } + + // A fraction needs digits on both sides of the dot, so `1.` and `arr[0].x` are reported + // rather than mis-lexed. + fn number(&mut self) -> Result { + let start = self.pos; + self.digits(); + if self.peek() == Some('.') && self.peek_at(1).is_some_and(|c| c.is_ascii_digit()) { + self.bump(); + self.digits(); + } + if matches!(self.peek(), Some('e' | 'E')) { + let save = self.pos; + self.bump(); + if matches!(self.peek(), Some('+' | '-')) { + self.bump(); + } + if self.peek().is_some_and(|c| c.is_ascii_digit()) { + self.digits(); + } else { + self.pos = save; + } + } + let text: String = self.src[start..self.pos] + .chars() + .filter(|&c| c != '_') + .collect(); + text.parse::().map(TokenKind::Number).map_err(|_| { + Error::syntax( + format!("`{text}` is not a number I understand"), + Span::new(start, self.pos), + ) + }) + } + + fn digits(&mut self) { + while let Some(c) = self.peek() { + if c.is_ascii_digit() || c == '_' { + self.bump(); + } else { + break; + } + } + } + + fn string(&mut self) -> Result { + let start = self.pos; + self.bump(); + let mut text = String::new(); + loop { + let Some(c) = self.bump() else { + return Err(Error::syntax( + "this string never closes; it needs a closing `\"`", + Span::new(start, self.pos), + ) + .incomplete()); + }; + match c { + '"' => return Ok(TokenKind::Str(text)), + '\\' => { + let escape_start = self.pos - 1; + let Some(e) = self.bump() else { + return Err(Error::syntax( + "this string never closes; it needs a closing `\"`", + Span::new(start, self.pos), + ) + .incomplete()); + }; + match e { + 'n' => text.push('\n'), + 't' => text.push('\t'), + 'r' => text.push('\r'), + '0' => text.push('\0'), + '\\' => text.push('\\'), + '"' => text.push('"'), + '\'' => text.push('\''), + 'u' => text.push(self.unicode_escape(escape_start)?), + other => { + return Err(Error::syntax( + format!( + "`\\{other}` is not an escape I know; try \\n, \\t, \\\", \\\\ or \\u{{…}}" + ), + Span::new(escape_start, self.pos), + )); + } + } + } + c => text.push(c), + } + } + } + + fn unicode_escape(&mut self, escape_start: usize) -> Result { + let bad = |end: usize| { + Error::syntax( + "unicode escapes look like \\u{1F431}", + Span::new(escape_start, end), + ) + }; + if !self.eat('{') { + return Err(bad(self.pos)); + } + let digits_start = self.pos; + while self.peek().is_some_and(|c| c.is_ascii_hexdigit()) { + self.bump(); + } + let digits = &self.src[digits_start..self.pos]; + if !self.eat('}') || digits.is_empty() || digits.len() > 6 { + return Err(bad(self.pos)); + } + u32::from_str_radix(digits, 16) + .ok() + .and_then(char::from_u32) + .ok_or_else(|| bad(self.pos)) + } + + fn possessive(&mut self) -> Result { + let start = self.pos; + self.bump(); + if self.peek() == Some('s') && !self.peek_at(1).is_some_and(is_ident_continue) { + self.bump(); + return Ok(TokenKind::Possessive); + } + Err(Error::syntax( + "a lone `'` doesn't mean anything; strings use double quotes and property access is `'s`", + Span::new(start, self.pos), + )) + } + + fn punct(&mut self) -> Result { + let start = self.pos; + let c = self + .bump() + .expect("punct is only called with a char available"); + let kind = match c { + '=' if self.eat('=') => TokenKind::Eq, + '=' => TokenKind::Assign, + '!' if self.eat('=') => TokenKind::NotEq, + '!' => TokenKind::Bang, + '<' if self.eat('<') => TokenKind::Shl, + '<' if self.eat('=') => TokenKind::LtEq, + '<' => TokenKind::Lt, + '>' if self.eat('>') => TokenKind::Shr, + '>' if self.eat('=') => TokenKind::GtEq, + '>' => TokenKind::Gt, + '&' if self.eat('&') => TokenKind::AndAnd, + '&' => TokenKind::Amp, + '|' if self.eat('|') => TokenKind::OrOr, + '|' => TokenKind::Pipe, + '+' => TokenKind::Plus, + '-' => TokenKind::Minus, + '*' => TokenKind::Star, + '/' => TokenKind::Slash, + '%' => TokenKind::Percent, + '^' => TokenKind::Caret, + '~' => TokenKind::Tilde, + '(' => TokenKind::LParen, + ')' => TokenKind::RParen, + '{' => TokenKind::LBrace, + '}' => TokenKind::RBrace, + '[' => TokenKind::LBracket, + ']' => TokenKind::RBracket, + ',' => TokenKind::Comma, + ':' => TokenKind::Colon, + ';' => TokenKind::Semicolon, + other => { + return Err(Error::syntax( + format!("I don't know what to do with `{other}`"), + Span::new(start, self.pos), + )); + } + }; + Ok(kind) + } +} + +fn is_ident_start(c: char) -> bool { + c == '_' || c.is_alphabetic() +} + +fn is_ident_continue(c: char) -> bool { + c == '_' || c.is_alphanumeric() +} + +#[cfg(test)] +mod tests { + use super::*; + + fn kinds(src: &str) -> Vec { + tokenize(src).unwrap().into_iter().map(|t| t.kind).collect() + } + + #[test] + fn empty_input_is_just_eof() { + assert_eq!(kinds(""), vec![TokenKind::Eof]); + assert_eq!(kinds(" \n\t"), vec![TokenKind::Eof]); + } + + #[test] + fn keywords_and_identifiers() { + assert_eq!( + kinds("scratch cat = purrfect;"), + vec![ + TokenKind::Scratch, + TokenKind::Ident("cat".into()), + TokenKind::Assign, + TokenKind::Purrfect, + TokenKind::Semicolon, + TokenKind::Eof + ] + ); + assert_eq!( + kinds("scratchy"), + vec![TokenKind::Ident("scratchy".into()), TokenKind::Eof] + ); + assert_eq!( + kinds("cat_2"), + vec![TokenKind::Ident("cat_2".into()), TokenKind::Eof] + ); + } + + #[test] + fn numbers() { + assert_eq!(kinds("42"), vec![TokenKind::Number(42.0), TokenKind::Eof]); + assert_eq!(kinds("3.5"), vec![TokenKind::Number(3.5), TokenKind::Eof]); + assert_eq!( + kinds("1_000"), + vec![TokenKind::Number(1000.0), TokenKind::Eof] + ); + assert_eq!( + kinds("2e3"), + vec![TokenKind::Number(2000.0), TokenKind::Eof] + ); + } + + #[test] + fn strings_with_escapes() { + assert_eq!( + kinds(r#""meow\n\"purr\" \u{1F431}""#), + vec![TokenKind::Str("meow\n\"purr\" 🐱".into()), TokenKind::Eof] + ); + } + + #[test] + fn unterminated_string_is_incomplete() { + let err = tokenize("\"meow").unwrap_err(); + assert!(err.incomplete); + assert_eq!(err.span, Some(Span::new(0, 5))); + } + + #[test] + fn possessive() { + assert_eq!( + kinds("cat's name"), + vec![ + TokenKind::Ident("cat".into()), + TokenKind::Possessive, + TokenKind::Ident("name".into()), + TokenKind::Eof + ] + ); + assert!(tokenize("cat'sname").is_err()); + assert!(tokenize("'hello'").is_err()); + } + + #[test] + fn operators() { + assert_eq!( + kinds("a <= b << c && d || !e != f"), + vec![ + TokenKind::Ident("a".into()), + TokenKind::LtEq, + TokenKind::Ident("b".into()), + TokenKind::Shl, + TokenKind::Ident("c".into()), + TokenKind::AndAnd, + TokenKind::Ident("d".into()), + TokenKind::OrOr, + TokenKind::Bang, + TokenKind::Ident("e".into()), + TokenKind::NotEq, + TokenKind::Ident("f".into()), + TokenKind::Eof + ] + ); + } + + #[test] + fn comments_are_skipped() { + assert_eq!( + kinds("1 // one\n/* two\nlines */ 2"), + vec![ + TokenKind::Number(1.0), + TokenKind::Number(2.0), + TokenKind::Eof + ] + ); + assert!(tokenize("/* open").unwrap_err().incomplete); + } + + #[test] + fn spans_are_byte_ranges() { + let toks = tokenize("ab \"c\"").unwrap(); + assert_eq!(toks[0].span, Span::new(0, 2)); + assert_eq!(toks[1].span, Span::new(4, 7)); + } + + #[test] + fn unknown_character() { + let err = tokenize("a @ b").unwrap_err(); + assert_eq!(err.span, Some(Span::new(2, 3))); + } +} diff --git a/crates/meowscript/src/lib.rs b/crates/meowscript/src/lib.rs new file mode 100644 index 0000000..fec05b7 --- /dev/null +++ b/crates/meowscript/src/lib.rs @@ -0,0 +1,50 @@ +//! MeowScript, a small cat-themed scripting language. +//! +//! ``` +//! use meowscript::{BufferHost, Interpreter}; +//! +//! let host = BufferHost::new(); +//! let mut interp = Interpreter::new(host.clone()); +//! interp.run(r#" +//! scratch cat = { name: "Whiskers", lives: 9 }; +//! meow(cat's name, "has", cat's lives, "lives"); +//! "#).unwrap(); +//! assert_eq!(host.output(), "Meow! Whiskers has 9 lives"); +//! ``` + +pub mod ast; +pub mod env; +pub mod error; +pub mod host; +pub mod interpreter; +pub mod lexer; +pub mod parser; +pub mod rng; +pub mod span; +pub mod stdlib; +pub mod token; +pub mod value; + +pub use error::{Error, ErrorKind, Result}; +pub use host::{BufferHost, Host}; +pub use interpreter::Interpreter; +pub use value::Value; + +pub const VERSION: &str = env!("CARGO_PKG_VERSION"); + +/// Runs a program; the error, if any, comes back rendered with its source excerpt. +pub fn run_with_host( + source: &str, + host: impl Host + 'static, +) -> std::result::Result { + let mut interp = Interpreter::new(host); + interp.run(source).map_err(|e| e.render(source, None)) +} + +/// Runs a program and returns what it printed, plus the rendered error if it failed. +pub fn capture(source: &str) -> (Vec, Option) { + let host = BufferHost::new(); + let mut interp = Interpreter::new(host.clone()); + let result = interp.run(source); + (host.take(), result.err().map(|e| e.render(source, None))) +} diff --git a/crates/meowscript/src/parser.rs b/crates/meowscript/src/parser.rs new file mode 100644 index 0000000..5990b1d --- /dev/null +++ b/crates/meowscript/src/parser.rs @@ -0,0 +1,784 @@ +//! Recursive descent with Pratt precedence climbing. Stops at the first error. + +use crate::ast::*; +use crate::error::{Error, Result}; +use crate::lexer::tokenize; +use crate::span::Span; +use crate::token::{Token, TokenKind}; +use std::rc::Rc; + +pub fn parse(source: &str) -> Result { + let tokens = tokenize(source)?; + Parser { tokens, pos: 0 }.program() +} + +struct Parser { + tokens: Vec, + pos: usize, +} + +impl Parser { + fn peek(&self) -> &Token { + &self.tokens[self.pos.min(self.tokens.len() - 1)] + } + + fn peek_kind(&self) -> &TokenKind { + &self.peek().kind + } + + fn peek_at(&self, n: usize) -> &TokenKind { + &self.tokens[(self.pos + n).min(self.tokens.len() - 1)].kind + } + + fn at_eof(&self) -> bool { + matches!(self.peek_kind(), TokenKind::Eof) + } + + fn advance(&mut self) -> Token { + let tok = self.peek().clone(); + if !self.at_eof() { + self.pos += 1; + } + tok + } + + fn at(&self, kind: &TokenKind) -> bool { + self.peek_kind() == kind + } + + fn eat(&mut self, kind: &TokenKind) -> Option { + if self.at(kind) { + Some(self.advance()) + } else { + None + } + } + + fn expect(&mut self, kind: &TokenKind, context: &str) -> Result { + if self.at(kind) { + Ok(self.advance()) + } else { + Err(self.error_here(format!( + "expected `{}` {context}, found {}", + kind.symbol(), + self.peek_kind() + ))) + } + } + + fn expect_ident(&mut self, context: &str) -> Result { + match self.peek_kind() { + TokenKind::Ident(_) => { + let tok = self.advance(); + let TokenKind::Ident(name) = tok.kind else { + unreachable!() + }; + Ok(Ident { + name: name.into(), + span: tok.span, + }) + } + found => { + let msg = match found { + k if TokenKind::keyword(k.symbol()).is_some() => format!( + "expected a name {context}, found the keyword `{}` (keywords can't be used as names)", + k.symbol() + ), + k => format!("expected a name {context}, found {k}"), + }; + Err(self.error_here(msg)) + } + } + } + + fn error_here(&self, message: impl Into) -> Error { + let tok = self.peek(); + let err = Error::syntax(message, tok.span); + if self.at_eof() { err.incomplete() } else { err } + } + + fn program(&mut self) -> Result { + let mut stmts = Vec::new(); + while !self.at_eof() { + stmts.push(self.statement()?); + } + Ok(Program { stmts }) + } + + fn block(&mut self, context: &str) -> Result { + let open = self.expect(&TokenKind::LBrace, context)?; + let mut stmts = Vec::new(); + while !self.at(&TokenKind::RBrace) { + if self.at_eof() { + return Err( + Error::syntax("this block never closes; it needs a `}`", open.span) + .incomplete(), + ); + } + stmts.push(self.statement()?); + } + let close = self.advance(); + Ok(Block { + stmts, + span: open.span.to(close.span), + }) + } + + fn statement(&mut self) -> Result { + let start = self.peek().span; + let kind = match self.peek_kind() { + TokenKind::Scratch => self.let_stmt()?, + TokenKind::Amew => self.assign_stmt()?, + TokenKind::Tail => self.return_stmt()?, + TokenKind::Pawckage => self.import_stmt()?, + TokenKind::Hiss => { + self.advance(); + self.end_statement("`hiss`")?; + StmtKind::Break + } + TokenKind::Continue => { + self.advance(); + self.end_statement("`continue`")?; + StmtKind::Continue + } + TokenKind::Pawction if matches!(self.peek_at(1), TokenKind::Ident(_)) => { + self.fn_decl()? + } + TokenKind::Furrever => self.loop_stmt()?, + TokenKind::Fur => self.for_stmt()?, + TokenKind::Semicolon => { + return Err(self.error_here("stray `;`; there is no statement before it")); + } + _ => { + let expr = self.expression(0)?; + if expr.ends_with_block() { + self.eat(&TokenKind::Semicolon); + } else { + self.end_statement("this expression")?; + } + StmtKind::Expr(expr) + } + }; + let end = self.tokens[self.pos.saturating_sub(1)].span; + Ok(Stmt { + kind, + span: start.to(end), + }) + } + + // The `;` may be left out before a closing `}` and at the end of the input. + fn end_statement(&mut self, what: &str) -> Result<()> { + if self.eat(&TokenKind::Semicolon).is_some() || self.at(&TokenKind::RBrace) || self.at_eof() + { + return Ok(()); + } + let prev_end = self.tokens[self.pos.saturating_sub(1)].span.end; + Err(Error::syntax( + format!("expected `;` after {what}, found {}", self.peek_kind()), + Span::new(prev_end, prev_end), + )) + } + + fn let_stmt(&mut self) -> Result { + self.advance(); + let name = self.expect_ident("after `scratch`")?; + self.expect( + &TokenKind::Assign, + &format!("after `scratch {}`", name.name), + )?; + let value = self.expression(0)?; + self.end_statement(&format!("`scratch {} = ...`", name.name))?; + Ok(StmtKind::Let { name, value }) + } + + fn assign_stmt(&mut self) -> Result { + self.advance(); + let target = self.postfix_chain()?; + if !matches!( + target.kind, + ExprKind::Ident(_) | ExprKind::Index { .. } | ExprKind::Member { .. } + ) { + return Err(Error::syntax( + "`amew` can only assign to a variable, `thing's key`, or `thing[index]`", + target.span, + )); + } + self.expect(&TokenKind::Assign, "after the `amew` target")?; + let value = self.expression(0)?; + self.end_statement("the `amew` assignment")?; + Ok(StmtKind::Assign { target, value }) + } + + fn return_stmt(&mut self) -> Result { + self.advance(); + let value = + if self.at(&TokenKind::Semicolon) || self.at(&TokenKind::RBrace) || self.at_eof() { + None + } else { + Some(self.expression(0)?) + }; + self.end_statement("`tail`")?; + Ok(StmtKind::Return { value }) + } + + fn import_stmt(&mut self) -> Result { + self.advance(); + let tok = self.advance(); + let TokenKind::Str(path) = tok.kind else { + return Err(Error::syntax( + format!( + "`pawckage` needs a quoted name like \"nya:furrball\" or \"./cat.meow\", found {}", + tok.kind + ), + tok.span, + )); + }; + self.end_statement("`pawckage`")?; + Ok(StmtKind::Import { + path, + span: tok.span, + }) + } + + fn fn_decl(&mut self) -> Result { + self.advance(); + let name = self.expect_ident("after `pawction`")?; + let params = self.params()?; + let body = self.block("to start the pawction body")?; + self.eat(&TokenKind::Semicolon); + let func = Rc::new(FuncDef { + name: Some(name.name.clone()), + params, + body, + }); + Ok(StmtKind::FnDecl { name, func }) + } + + fn loop_stmt(&mut self) -> Result { + self.advance(); + let cond = if self.at(&TokenKind::LBrace) { + None + } else { + Some(self.expression(0)?) + }; + let body = self.block("to start the `furrever` body")?; + Ok(StmtKind::Loop { cond, body }) + } + + fn for_stmt(&mut self) -> Result { + self.advance(); + let parens = self.eat(&TokenKind::LParen).is_some(); + let var = self.expect_ident("after `fur`")?; + if self.eat(&TokenKind::Tilde).is_none() { + return Err(self.error_here(format!( + "expected `~` after `fur {}` (as in `fur toy ~ toys`), found {}", + var.name, + self.peek_kind() + ))); + } + let iter = self.expression(0)?; + if parens { + self.expect(&TokenKind::RParen, "to close the `fur (...)`")?; + } + let body = self.block("to start the `fur` body")?; + Ok(StmtKind::ForIn { var, iter, body }) + } + + fn expression(&mut self, min_bp: u8) -> Result { + let mut left = self.unary()?; + while let Some(op) = binary_op(self.peek_kind()) { + let (lbp, rbp) = op.binding_power(); + if lbp < min_bp { + break; + } + self.advance(); + let right = self.expression(rbp)?; + let span = left.span.to(right.span); + left = Expr { + kind: ExprKind::Binary { + op, + left: Box::new(left), + right: Box::new(right), + }, + span, + }; + } + Ok(left) + } + + fn unary(&mut self) -> Result { + let op = match self.peek_kind() { + TokenKind::Minus => UnaryOp::Neg, + TokenKind::Bang => UnaryOp::Not, + TokenKind::Furreal => UnaryOp::Typeof, + _ => return self.postfix_chain(), + }; + let start = self.advance().span; + let operand = self.unary()?; + let span = start.to(operand.span); + Ok(Expr { + kind: ExprKind::Unary { + op, + operand: Box::new(operand), + }, + span, + }) + } + + fn postfix_chain(&mut self) -> Result { + let mut expr = self.primary()?; + loop { + expr = match self.peek_kind() { + TokenKind::LParen => { + self.advance(); + let args = self.comma_list( + &TokenKind::RParen, + "to close the call", + Self::expression0, + )?; + let end = self.tokens[self.pos - 1].span; + let span = expr.span.to(end); + Expr { + kind: ExprKind::Call { + callee: Box::new(expr), + args, + }, + span, + } + } + TokenKind::LBracket => { + self.advance(); + let index = self.expression(0)?; + let close = self.expect(&TokenKind::RBracket, "to close the index")?; + let span = expr.span.to(close.span); + Expr { + kind: ExprKind::Index { + object: Box::new(expr), + index: Box::new(index), + }, + span, + } + } + TokenKind::Possessive => { + self.advance(); + let name = self.expect_ident("after `'s`")?; + let span = expr.span.to(name.span); + Expr { + kind: ExprKind::Member { + object: Box::new(expr), + name, + }, + span, + } + } + _ => return Ok(expr), + }; + } + } + + fn expression0(&mut self) -> Result { + self.expression(0) + } + + fn primary(&mut self) -> Result { + let tok = self.peek().clone(); + let span = tok.span; + let kind = match tok.kind { + TokenKind::Number(n) => { + self.advance(); + ExprKind::Number(n) + } + TokenKind::Str(s) => { + self.advance(); + ExprKind::Str(s.into()) + } + TokenKind::Ident(name) => { + self.advance(); + ExprKind::Ident(name.into()) + } + TokenKind::Purrfect => { + self.advance(); + ExprKind::Bool(true) + } + TokenKind::Clawful => { + self.advance(); + ExprKind::Bool(false) + } + TokenKind::Mew => { + self.advance(); + ExprKind::Null + } + TokenKind::LParen => { + self.advance(); + let inner = self.expression(0)?; + let close = self.expect(&TokenKind::RParen, "to close the parenthesis")?; + return Ok(Expr { + kind: inner.kind, + span: span.to(close.span), + }); + } + TokenKind::LBracket => { + self.advance(); + let items = self.comma_list( + &TokenKind::RBracket, + "to close the furrball", + Self::expression0, + )?; + let end = self.tokens[self.pos - 1].span; + return Ok(Expr { + kind: ExprKind::Array(items), + span: span.to(end), + }); + } + TokenKind::LBrace => return self.object_literal(), + TokenKind::Pawction => return self.function_expr(), + TokenKind::Purrhaps => return self.if_expr(), + TokenKind::Meowtually => { + return Err(self.error_here("`meowtually` needs a `purrhaps` before it")); + } + TokenKind::Eof => { + return Err(self.error_here("expected an expression, found end of input")); + } + other => { + let hint = match other { + TokenKind::Amew => " (did you mean `scratch` to declare a new variable?)", + TokenKind::Assign => " (use `==` to compare, `amew` to assign)", + _ => "", + }; + return Err(self.error_here(format!("expected an expression, found {other}{hint}"))); + } + }; + Ok(Expr { kind, span }) + } + + fn if_expr(&mut self) -> Result { + let start = self.advance().span; + let cond = self.expression(0)?; + let then = self.block("to start the `purrhaps` body")?; + let mut end = then.span; + let otherwise = if self.eat(&TokenKind::Meowtually).is_some() { + if self.at(&TokenKind::Purrhaps) { + let nested = self.if_expr()?; + end = nested.span; + Some(Box::new(Else::If(nested))) + } else { + let block = self.block("after `meowtually`")?; + end = block.span; + Some(Box::new(Else::Block(block))) + } + } else { + None + }; + Ok(Expr { + kind: ExprKind::If { + cond: Box::new(cond), + then, + otherwise, + }, + span: start.to(end), + }) + } + + fn function_expr(&mut self) -> Result { + let start = self.advance().span; + let name = match self.peek_kind() { + TokenKind::Ident(_) => Some(self.expect_ident("")?.name), + _ => None, + }; + let params = self.params()?; + let body = self.block("to start the pawction body")?; + let span = start.to(body.span); + Ok(Expr { + kind: ExprKind::Function(Rc::new(FuncDef { name, params, body })), + span, + }) + } + + fn params(&mut self) -> Result> { + self.expect(&TokenKind::LParen, "to start the parameter list")?; + let params = self.comma_list(&TokenKind::RParen, "to close the parameter list", |p| { + p.expect_ident("in the parameter list") + })?; + let mut seen: Vec<&str> = Vec::new(); + for p in ¶ms { + if seen.contains(&&*p.name) { + return Err(Error::syntax( + format!("parameter `{}` is listed twice", p.name), + p.span, + )); + } + seen.push(&p.name); + } + Ok(params) + } + + fn object_literal(&mut self) -> Result { + let start = self.advance().span; + let mut entries = Vec::new(); + loop { + if self.at(&TokenKind::RBrace) { + break; + } + let key_tok = self.advance(); + let key = match key_tok.kind { + TokenKind::Ident(name) => { + // `{ name }` is shorthand for `{ name: name }`. + if self.at(&TokenKind::Comma) || self.at(&TokenKind::RBrace) { + let key = Expr { + kind: ExprKind::Str(name.clone().into()), + span: key_tok.span, + }; + let value = Expr { + kind: ExprKind::Ident(name.into()), + span: key_tok.span, + }; + entries.push((key, value)); + if self.eat(&TokenKind::Comma).is_none() { + break; + } + continue; + } + Expr { + kind: ExprKind::Str(name.into()), + span: key_tok.span, + } + } + TokenKind::Str(s) => Expr { + kind: ExprKind::Str(s.into()), + span: key_tok.span, + }, + TokenKind::Number(n) => Expr { + kind: ExprKind::Str(crate::value::format_number(n).into()), + span: key_tok.span, + }, + TokenKind::LBracket => { + let inner = self.expression(0)?; + let close = self.expect(&TokenKind::RBracket, "to close the computed key")?; + Expr { + kind: inner.kind, + span: key_tok.span.to(close.span), + } + } + TokenKind::Eof => { + return Err( + Error::syntax("this object never closes; it needs a `}`", start) + .incomplete(), + ); + } + other => { + return Err(Error::syntax( + format!("object keys are names or strings, found {other}"), + key_tok.span, + )); + } + }; + self.expect(&TokenKind::Colon, "after the object key")?; + let value = self.expression(0)?; + entries.push((key, value)); + if self.eat(&TokenKind::Comma).is_none() { + break; + } + } + let close = self.expect(&TokenKind::RBrace, "to close the object")?; + Ok(Expr { + kind: ExprKind::Object(entries), + span: start.to(close.span), + }) + } + + // Allows a trailing comma and an empty list. + fn comma_list( + &mut self, + close: &TokenKind, + context: &str, + mut item: impl FnMut(&mut Self) -> Result, + ) -> Result> { + let mut items = Vec::new(); + loop { + if self.eat(close).is_some() { + return Ok(items); + } + if self.at_eof() { + return Err(self.error_here(format!("expected `{}` {context}", close.symbol()))); + } + items.push(item(self)?); + if self.eat(&TokenKind::Comma).is_none() { + self.expect(close, context)?; + return Ok(items); + } + } + } +} + +fn binary_op(kind: &TokenKind) -> Option { + Some(match kind { + TokenKind::Plus => BinaryOp::Add, + TokenKind::Minus => BinaryOp::Sub, + TokenKind::Star => BinaryOp::Mul, + TokenKind::Slash => BinaryOp::Div, + TokenKind::Percent => BinaryOp::Rem, + TokenKind::Eq => BinaryOp::Eq, + TokenKind::NotEq => BinaryOp::NotEq, + TokenKind::Lt => BinaryOp::Lt, + TokenKind::Gt => BinaryOp::Gt, + TokenKind::LtEq => BinaryOp::LtEq, + TokenKind::GtEq => BinaryOp::GtEq, + TokenKind::Amp => BinaryOp::BitAnd, + TokenKind::Pipe => BinaryOp::BitOr, + TokenKind::Caret => BinaryOp::BitXor, + TokenKind::Shl => BinaryOp::Shl, + TokenKind::Shr => BinaryOp::Shr, + TokenKind::AndAnd => BinaryOp::And, + TokenKind::OrOr => BinaryOp::Or, + TokenKind::Tilde => BinaryOp::In, + _ => return None, + }) +} + +#[cfg(test)] +mod tests { + use super::*; + + fn parse_expr(src: &str) -> Expr { + let program = parse(src).unwrap(); + match program.stmts.into_iter().next().unwrap().kind { + StmtKind::Expr(e) => e, + other => panic!("expected expression statement, got {other:?}"), + } + } + + fn show(e: &Expr) -> String { + match &e.kind { + ExprKind::Number(n) => crate::value::format_number(*n), + ExprKind::Ident(i) => i.to_string(), + ExprKind::Str(s) => format!("{s:?}"), + ExprKind::Bool(b) => b.to_string(), + ExprKind::Null => "mew".into(), + ExprKind::Unary { op, operand } => format!("({op} {})", show(operand)), + ExprKind::Binary { op, left, right } => { + format!("({} {op} {})", show(left), show(right)) + } + ExprKind::Call { callee, args } => { + let args: Vec<_> = args.iter().map(show).collect(); + format!("{}({})", show(callee), args.join(", ")) + } + ExprKind::Index { object, index } => format!("{}[{}]", show(object), show(index)), + ExprKind::Member { object, name } => format!("{}'s {}", show(object), name.name), + ExprKind::Array(items) => { + let items: Vec<_> = items.iter().map(show).collect(); + format!("[{}]", items.join(", ")) + } + other => format!("{other:?}"), + } + } + + #[test] + fn precedence_matches_python_not_c() { + assert_eq!(show(&parse_expr("1 + 2 * 3;")), "(1 + (2 * 3))"); + assert_eq!(show(&parse_expr("1 & 2 == 3;")), "((1 & 2) == 3)"); + assert_eq!(show(&parse_expr("1 + 2 << 3;")), "((1 + 2) << 3)"); + assert_eq!(show(&parse_expr("a || b && c;")), "(a || (b && c))"); + assert_eq!(show(&parse_expr("a < b == c > d;")), "((a < b) == (c > d))"); + assert_eq!(show(&parse_expr("1 - 2 - 3;")), "((1 - 2) - 3)"); + assert_eq!(show(&parse_expr("x ~ xs && y;")), "((x ~ xs) && y)"); + } + + #[test] + fn unary_binds_tighter_than_binary_but_looser_than_postfix() { + assert_eq!(show(&parse_expr("-a[0] + 1;")), "((- a[0]) + 1)"); + assert_eq!(show(&parse_expr("!f(x)'s ok;")), "(! f(x)'s ok)"); + assert_eq!(show(&parse_expr("furreal x + 1;")), "((furreal x) + 1)"); + } + + #[test] + fn postfix_chains() { + assert_eq!( + show(&parse_expr("cats[0]'s toys[1](2);")), + "cats[0]'s toys[1](2)" + ); + } + + #[test] + fn statements_need_semicolons_except_before_brace_or_eof() { + assert!(parse("scratch x = 1").is_ok()); + assert!(parse("scratch x = 1; scratch y = 2").is_ok()); + let err = parse("scratch x = 1 scratch y = 2;").unwrap_err(); + assert!(err.message.contains("expected `;`"), "{}", err.message); + assert!(parse("pawction f() { tail 1 }").is_ok()); + assert!(parse("purrhaps (x) { 1 } meowtually { 2 } meow(1);").is_ok()); + } + + #[test] + fn if_else_chains() { + let e = parse_expr("purrhaps a { 1 } meowtually purrhaps b { 2 } meowtually { 3 }"); + let ExprKind::If { + otherwise: Some(else1), + .. + } = e.kind + else { + panic!() + }; + let Else::If(nested) = *else1 else { panic!() }; + let ExprKind::If { + otherwise: Some(else2), + .. + } = nested.kind + else { + panic!() + }; + assert!(matches!(*else2, Else::Block(_))); + } + + #[test] + fn function_declaration_and_expression() { + let p = parse("pawction add(a, b) { tail a + b; } scratch f = pawction(x) { x };").unwrap(); + assert!(matches!(p.stmts[0].kind, StmtKind::FnDecl { .. })); + assert!(matches!(p.stmts[1].kind, StmtKind::Let { .. })); + assert!( + parse("pawction f(a, a) {}") + .unwrap_err() + .message + .contains("twice") + ); + } + + #[test] + fn assignment_targets() { + assert!(parse("amew x = 1;").is_ok()); + assert!(parse("amew cat's age = 4;").is_ok()); + assert!(parse("amew arr[0] = 4;").is_ok()); + assert!(parse("amew f() = 4;").is_err()); + assert!(parse("amew 1 = 4;").is_err()); + } + + #[test] + fn loops() { + assert!(parse("furrever { hiss; }").is_ok()); + assert!(parse("furrever i < 3 { amew i = i + 1; }").is_ok()); + assert!(parse("furrever (i < 3) { continue; }").is_ok()); + assert!(parse("fur x ~ xs { meow(x); }").is_ok()); + assert!(parse("fur (x ~ xs) { meow(x); }").is_ok()); + assert!(parse("fur x in xs {}").unwrap_err().message.contains("`~`")); + } + + #[test] + fn object_literals() { + assert!(parse(r#"scratch c = { name: "Tom", "age": 3, 1: 2, [k]: v, short, };"#).is_ok()); + assert!(parse("scratch c = {};").is_ok()); + assert!(parse("scratch c = { 1 + 1: 2 };").is_err()); + } + + #[test] + fn incomplete_input_is_flagged() { + assert!(parse("pawction f() {").unwrap_err().incomplete); + assert!(parse("scratch x = [1, 2").unwrap_err().incomplete); + assert!(parse("scratch x = ").unwrap_err().incomplete); + assert!(!parse("scratch x = )").unwrap_err().incomplete); + } + + #[test] + fn keyword_as_name_gets_a_hint() { + let err = parse("scratch tail = 1;").unwrap_err(); + assert!(err.message.contains("keyword"), "{}", err.message); + } +} diff --git a/crates/meowscript/src/rng.rs b/crates/meowscript/src/rng.rs new file mode 100644 index 0000000..e0ce60f --- /dev/null +++ b/crates/meowscript/src/rng.rs @@ -0,0 +1,99 @@ +//! xoshiro256**. Fine for picking a toy out of the toy box, not for cryptography. + +pub struct Rng { + state: [u64; 4], +} + +impl Rng { + pub fn seeded(seed: u64) -> Self { + // splitmix64 spreads a weak seed (such as a small integer) across the whole state. + let mut x = seed; + let mut next = || { + x = x.wrapping_add(0x9E37_79B9_7F4A_7C15); + let mut z = x; + z = (z ^ (z >> 30)).wrapping_mul(0xBF58_476D_1CE4_E5B9); + z = (z ^ (z >> 27)).wrapping_mul(0x94D0_49BB_1331_11EB); + z ^ (z >> 31) + }; + Self { + state: [next(), next(), next(), next()], + } + } + + pub fn next_u64(&mut self) -> u64 { + let s = &mut self.state; + let result = s[1].wrapping_mul(5).rotate_left(7).wrapping_mul(9); + let t = s[1] << 17; + s[2] ^= s[0]; + s[3] ^= s[1]; + s[1] ^= s[2]; + s[0] ^= s[3]; + s[2] ^= t; + s[3] = s[3].rotate_left(45); + result + } + + pub fn next_f64(&mut self) -> f64 { + (self.next_u64() >> 11) as f64 * (1.0 / (1u64 << 53) as f64) + } + + pub fn range_f64(&mut self, lo: f64, hi: f64) -> f64 { + let (lo, hi) = if lo <= hi { (lo, hi) } else { (hi, lo) }; + lo + (hi - lo) * self.next_f64() + } + + /// Inclusive on both ends. + pub fn range_i64(&mut self, lo: i64, hi: i64) -> i64 { + let (lo, hi) = if lo <= hi { (lo, hi) } else { (hi, lo) }; + let width = (hi - lo) as u64 + 1; + lo + (self.next_u64() % width) as i64 + } + + pub fn index(&mut self, len: usize) -> usize { + (self.next_u64() % len as u64) as usize + } + + pub fn shuffle(&mut self, items: &mut [T]) { + for i in (1..items.len()).rev() { + let j = self.index(i + 1); + items.swap(i, j); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn same_seed_same_sequence() { + let mut a = Rng::seeded(42); + let mut b = Rng::seeded(42); + for _ in 0..10 { + assert_eq!(a.next_u64(), b.next_u64()); + } + } + + #[test] + fn floats_stay_in_range() { + let mut rng = Rng::seeded(7); + for _ in 0..10_000 { + let f = rng.next_f64(); + assert!((0.0..1.0).contains(&f)); + let r = rng.range_f64(5.0, 10.0); + assert!((5.0..10.0).contains(&r)); + let i = rng.range_i64(-3, 3); + assert!((-3..=3).contains(&i)); + } + } + + #[test] + fn shuffle_keeps_every_item() { + let mut rng = Rng::seeded(1); + let mut items: Vec<_> = (0..20).collect(); + rng.shuffle(&mut items); + let mut sorted = items.clone(); + sorted.sort(); + assert_eq!(sorted, (0..20).collect::>()); + } +} diff --git a/crates/meowscript/src/span.rs b/crates/meowscript/src/span.rs new file mode 100644 index 0000000..4871cc7 --- /dev/null +++ b/crates/meowscript/src/span.rs @@ -0,0 +1,83 @@ +use std::fmt; + +/// Half-open byte range `[start, end)` into the source text. +#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)] +pub struct Span { + pub start: usize, + pub end: usize, +} + +impl Span { + pub const fn new(start: usize, end: usize) -> Self { + Self { start, end } + } + + pub fn to(self, other: Span) -> Span { + Span::new(self.start, other.end.max(self.start)) + } + + pub fn len(self) -> usize { + self.end.saturating_sub(self.start) + } + + pub fn is_empty(self) -> bool { + self.len() == 0 + } +} + +/// 1-based line and column. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Position { + pub line: usize, + pub column: usize, +} + +impl fmt::Display for Position { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + write!(f, "{}:{}", self.line, self.column) + } +} + +/// Columns count characters, not bytes, so they match what an editor shows. +pub fn position(source: &str, offset: usize) -> Position { + let offset = offset.min(source.len()); + let before = &source[..offset]; + let line = before.matches('\n').count() + 1; + let line_start = before.rfind('\n').map_or(0, |i| i + 1); + let column = before[line_start..].chars().count() + 1; + Position { line, column } +} + +pub fn line_text(source: &str, offset: usize) -> &str { + let offset = offset.min(source.len()); + let start = source[..offset].rfind('\n').map_or(0, |i| i + 1); + let end = source[offset..] + .find('\n') + .map_or(source.len(), |i| offset + i); + source[start..end].trim_end_matches('\r') +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn positions_are_one_based() { + let src = "ab\ncd"; + assert_eq!(position(src, 0), Position { line: 1, column: 1 }); + assert_eq!(position(src, 1), Position { line: 1, column: 2 }); + assert_eq!(position(src, 3), Position { line: 2, column: 1 }); + assert_eq!(position(src, 4), Position { line: 2, column: 2 }); + } + + #[test] + fn columns_count_chars() { + let src = "🐱x"; + assert_eq!(position(src, 4).column, 2); + } + + #[test] + fn line_text_strips_newline() { + assert_eq!(line_text("one\ntwo\r\nthree", 5), "two"); + } +} diff --git a/crates/meowscript/src/stdlib/array.rs b/crates/meowscript/src/stdlib/array.rs new file mode 100644 index 0000000..4ed1571 --- /dev/null +++ b/crates/meowscript/src/stdlib/array.rs @@ -0,0 +1,388 @@ +//! `push`, `pounce`, and `shuffle` change the furrball they are given. Everything else returns a +//! new one. + +use super::{Package, array, callable, number, slice_bound, wrong_type}; +use crate::error::{Error, Result}; +use crate::interpreter::Interpreter; +use crate::value::{Arity, Builtin, Value, format_number}; +use std::cmp::Ordering; + +pub const INCLUDES: Builtin = Builtin { + name: "includes", + arity: Arity::Exact(2), + func: includes, + doc: "Whether a furrball has an item, or whiskers contain a substring. Same as `~`.", +}; + +pub const INDEX_OF: Builtin = Builtin { + name: "index_of", + arity: Arity::Exact(2), + func: index_of, + doc: "Where an item (or substring) first appears, or -1.", +}; + +pub const REVERSE: Builtin = Builtin { + name: "reverse", + arity: Arity::Exact(1), + func: reverse, + doc: "A reversed copy of a furrball or whiskers.", +}; + +pub const SLICE: Builtin = Builtin { + name: "slice", + arity: Arity::Between(2, 3), + func: slice, + doc: "A copy of part of a furrball or whiskers, from `start` up to (not including) `end`. Negative counts from the end.", +}; + +pub static PACKAGE: Package = Package { + name: "nya:furrball", + doc: "Everything for furrballs (arrays).", + builtins: &[ + Builtin { + name: "push", + arity: Arity::AtLeast(2), + func: push, + doc: "Add items to the end of a furrball. Changes it in place and returns it.", + }, + Builtin { + name: "pounce", + arity: Arity::Exact(1), + func: pounce, + doc: "Remove and return the last item, or mew if the furrball is empty.", + }, + Builtin { + name: "top", + arity: Arity::Exact(1), + func: top, + doc: "The first item, or mew.", + }, + Builtin { + name: "last", + arity: Arity::Exact(1), + func: last, + doc: "The last item, or mew.", + }, + Builtin { + name: "bottom", + arity: Arity::Exact(1), + func: bottom, + doc: "A new furrball with everything but the first item.", + }, + INCLUDES, + INDEX_OF, + Builtin { + name: "map", + arity: Arity::Exact(2), + func: map, + doc: "A new furrball made by calling the pawction on each item.", + }, + Builtin { + name: "filter", + arity: Arity::Exact(2), + func: filter, + doc: "A new furrball of the items the pawction says purrfect to.", + }, + Builtin { + name: "reduce", + arity: Arity::Between(2, 3), + func: reduce, + doc: "Fold a furrball into one value with `pawction(total, item)`, starting from the optional initial value.", + }, + Builtin { + name: "each", + arity: Arity::Exact(2), + func: each, + doc: "Call the pawction on every item. Returns mew.", + }, + Builtin { + name: "find", + arity: Arity::Exact(2), + func: find, + doc: "The first item the pawction says purrfect to, or mew.", + }, + Builtin { + name: "range", + arity: Arity::Between(1, 3), + func: range, + doc: "Numbers from `start` (default 0) up to but not including `end`, in `step`s (default 1).", + }, + REVERSE, + Builtin { + name: "sort", + arity: Arity::Between(1, 2), + func: sort, + doc: "A sorted copy. Give a `pawction(a, b)` returning a number to decide the order.", + }, + Builtin { + name: "join", + arity: Arity::Between(1, 2), + func: join, + doc: "Glue the items into whiskers with a separator (default none).", + }, + SLICE, + Builtin { + name: "concat", + arity: Arity::AtLeast(1), + func: concat, + doc: "A new furrball with the items of all the given furrballs.", + }, + ], + constants: &[], +}; + +fn push(_: &mut Interpreter, args: Vec) -> Result { + let arr = array("push", &args, 0)?; + arr.borrow_mut().extend(args[1..].iter().cloned()); + Ok(args[0].clone()) +} + +fn pounce(_: &mut Interpreter, args: Vec) -> Result { + let arr = array("pounce", &args, 0)?; + let popped = arr.borrow_mut().pop(); + Ok(popped.unwrap_or(Value::Null)) +} + +fn top(_: &mut Interpreter, args: Vec) -> Result { + let arr = array("top", &args, 0)?; + let first = arr.borrow().first().cloned(); + Ok(first.unwrap_or(Value::Null)) +} + +fn last(_: &mut Interpreter, args: Vec) -> Result { + let arr = array("last", &args, 0)?; + let last = arr.borrow().last().cloned(); + Ok(last.unwrap_or(Value::Null)) +} + +fn bottom(_: &mut Interpreter, args: Vec) -> Result { + let arr = array("bottom", &args, 0)?; + let rest = arr.borrow().iter().skip(1).cloned().collect(); + Ok(Value::array(rest)) +} + +fn includes(_: &mut Interpreter, args: Vec) -> Result { + Ok(match (&args[0], &args[1]) { + (Value::Array(a), item) => Value::Bool(a.borrow().contains(item)), + (Value::Str(s), Value::Str(needle)) => Value::Bool(s.contains(&**needle)), + (Value::Str(_), other) => return Err(wrong_type("includes", 1, "whiskers", other)), + (other, _) => return Err(wrong_type("includes", 0, "a furrball or whiskers", other)), + }) +} + +fn index_of(_: &mut Interpreter, args: Vec) -> Result { + let found = match (&args[0], &args[1]) { + (Value::Array(a), item) => a.borrow().iter().position(|v| v == item), + (Value::Str(s), Value::Str(needle)) => { + s.find(&**needle).map(|byte| s[..byte].chars().count()) + } + (Value::Str(_), other) => return Err(wrong_type("index_of", 1, "whiskers", other)), + (other, _) => return Err(wrong_type("index_of", 0, "a furrball or whiskers", other)), + }; + Ok(Value::Number(found.map_or(-1.0, |i| i as f64))) +} + +fn map(interp: &mut Interpreter, args: Vec) -> Result { + let arr = array("map", &args, 0)?; + let f = callable("map", &args, 1)?; + let items = arr.borrow().clone(); + let mut out = Vec::with_capacity(items.len()); + for item in items { + out.push(interp.call(f.clone(), vec![item], None)?); + } + Ok(Value::array(out)) +} + +fn filter(interp: &mut Interpreter, args: Vec) -> Result { + let arr = array("filter", &args, 0)?; + let f = callable("filter", &args, 1)?; + let items = arr.borrow().clone(); + let mut out = Vec::new(); + for item in items { + if interp + .call(f.clone(), vec![item.clone()], None)? + .is_truthy() + { + out.push(item); + } + } + Ok(Value::array(out)) +} + +fn reduce(interp: &mut Interpreter, args: Vec) -> Result { + let arr = array("reduce", &args, 0)?; + let f = callable("reduce", &args, 1)?; + let items = arr.borrow().clone(); + let mut iter = items.into_iter(); + let mut total = match args.get(2) { + Some(initial) => initial.clone(), + None => iter.next().ok_or_else(|| { + Error::runtime("`reduce` of an empty furrball needs an initial value") + })?, + }; + for item in iter { + total = interp.call(f.clone(), vec![total, item], None)?; + } + Ok(total) +} + +fn each(interp: &mut Interpreter, args: Vec) -> Result { + let arr = array("each", &args, 0)?; + let f = callable("each", &args, 1)?; + let items = arr.borrow().clone(); + for item in items { + interp.call(f.clone(), vec![item], None)?; + } + Ok(Value::Null) +} + +fn find(interp: &mut Interpreter, args: Vec) -> Result { + let arr = array("find", &args, 0)?; + let f = callable("find", &args, 1)?; + let items = arr.borrow().clone(); + for item in items { + if interp + .call(f.clone(), vec![item.clone()], None)? + .is_truthy() + { + return Ok(item); + } + } + Ok(Value::Null) +} + +fn range(_: &mut Interpreter, args: Vec) -> Result { + let (start, end, step) = match args.len() { + 1 => (0.0, number("range", &args, 0)?, 1.0), + 2 => (number("range", &args, 0)?, number("range", &args, 1)?, 1.0), + _ => ( + number("range", &args, 0)?, + number("range", &args, 1)?, + number("range", &args, 2)?, + ), + }; + if step == 0.0 { + return Err(Error::runtime( + "`range` can't step by 0; it would never arrive", + )); + } + let count = ((end - start) / step).ceil().max(0.0); + if count > 10_000_000.0 { + return Err(Error::runtime(format!( + "`range` would make {} numbers, which is more than I'm willing to hold", + format_number(count) + ))); + } + let items = (0..count as usize) + .map(|i| Value::Number(start + step * i as f64)) + .collect(); + Ok(Value::array(items)) +} + +fn reverse(_: &mut Interpreter, args: Vec) -> Result { + Ok(match &args[0] { + Value::Array(a) => Value::array(a.borrow().iter().rev().cloned().collect()), + Value::Str(s) => Value::str(s.chars().rev().collect::()), + other => return Err(wrong_type("reverse", 0, "a furrball or whiskers", other)), + }) +} + +fn sort(interp: &mut Interpreter, args: Vec) -> Result { + let arr = array("sort", &args, 0)?; + let mut items = arr.borrow().clone(); + if args.len() > 1 { + let cmp = callable("sort", &args, 1)?; + let mut failure = None; + items.sort_by(|a, b| { + if failure.is_some() { + return Ordering::Equal; + } + match interp.call(cmp.clone(), vec![a.clone(), b.clone()], None) { + Ok(Value::Number(n)) => n.partial_cmp(&0.0).unwrap_or(Ordering::Equal), + Ok(other) => { + failure = Some(Error::type_(format!( + "the `sort` pawction must return a number (negative, zero, or positive), not {}", + other.type_name() + ))); + Ordering::Equal + } + Err(e) => { + failure = Some(e); + Ordering::Equal + } + } + }); + if let Some(e) = failure { + return Err(e); + } + return Ok(Value::array(items)); + } + let all_numbers = items.iter().all(|v| matches!(v, Value::Number(_))); + let all_strings = items.iter().all(|v| matches!(v, Value::Str(_))); + if all_numbers { + items.sort_by(|a, b| match (a, b) { + (Value::Number(x), Value::Number(y)) => x.partial_cmp(y).unwrap_or(Ordering::Equal), + _ => Ordering::Equal, + }); + } else if all_strings { + items.sort_by(|a, b| match (a, b) { + (Value::Str(x), Value::Str(y)) => x.cmp(y), + _ => Ordering::Equal, + }); + } else { + return Err(Error::type_( + "`sort` can order a furrball of only numbers or only whiskers; for anything else give it a pawction(a, b)", + )); + } + Ok(Value::array(items)) +} + +fn join(_: &mut Interpreter, args: Vec) -> Result { + let arr = array("join", &args, 0)?; + let sep = match args.get(1) { + Some(v) => v.to_string(), + None => String::new(), + }; + let joined = arr + .borrow() + .iter() + .map(|v| v.to_string()) + .collect::>() + .join(&sep); + Ok(Value::from(joined)) +} + +fn slice(_: &mut Interpreter, args: Vec) -> Result { + let start = number("slice", &args, 1)?; + let end = if args.len() > 2 { + Some(number("slice", &args, 2)?) + } else { + None + }; + Ok(match &args[0] { + Value::Array(a) => { + let a = a.borrow(); + let lo = slice_bound(start, a.len()); + let hi = end.map_or(a.len(), |e| slice_bound(e, a.len())).max(lo); + Value::array(a[lo..hi].to_vec()) + } + Value::Str(s) => { + let chars: Vec = s.chars().collect(); + let lo = slice_bound(start, chars.len()); + let hi = end + .map_or(chars.len(), |e| slice_bound(e, chars.len())) + .max(lo); + Value::str(chars[lo..hi].iter().collect::()) + } + other => return Err(wrong_type("slice", 0, "a furrball or whiskers", other)), + }) +} + +fn concat(_: &mut Interpreter, args: Vec) -> Result { + let mut out = Vec::new(); + for i in 0..args.len() { + let a = array("concat", &args, i)?; + out.extend(a.borrow().iter().cloned()); + } + Ok(Value::array(out)) +} diff --git a/crates/meowscript/src/stdlib/fs.rs b/crates/meowscript/src/stdlib/fs.rs new file mode 100644 index 0000000..0d27e12 --- /dev/null +++ b/crates/meowscript/src/stdlib/fs.rs @@ -0,0 +1,60 @@ +use super::{Package, string}; +use crate::error::Result; +use crate::interpreter::Interpreter; +use crate::value::{Arity, Builtin, Value}; + +pub static PACKAGE: Package = Package { + name: "nya:scratchpad", + doc: "Reading and writing files. Not available in the browser.", + builtins: &[ + Builtin { + name: "read_file", + arity: Arity::Exact(1), + func: read_file, + doc: "The whole contents of a file as whiskers.", + }, + Builtin { + name: "write_file", + arity: Arity::Exact(2), + func: write_file, + doc: "Write whiskers to a file, replacing what was there.", + }, + Builtin { + name: "append_file", + arity: Arity::Exact(2), + func: append_file, + doc: "Add whiskers to the end of a file.", + }, + Builtin { + name: "exists", + arity: Arity::Exact(1), + func: exists, + doc: "Whether a file or directory is there.", + }, + ], + constants: &[], +}; + +fn read_file(interp: &mut Interpreter, args: Vec) -> Result { + let path = string("read_file", &args, 0)?; + interp.host().read_file(&path).map(Value::from) +} + +fn write_file(interp: &mut Interpreter, args: Vec) -> Result { + let path = string("write_file", &args, 0)?; + let contents = args[1].to_string(); + interp.host().write_file(&path, &contents, false)?; + Ok(Value::Null) +} + +fn append_file(interp: &mut Interpreter, args: Vec) -> Result { + let path = string("append_file", &args, 0)?; + let contents = args[1].to_string(); + interp.host().write_file(&path, &contents, true)?; + Ok(Value::Null) +} + +fn exists(interp: &mut Interpreter, args: Vec) -> Result { + let path = string("exists", &args, 0)?; + Ok(Value::Bool(interp.host().file_exists(&path))) +} diff --git a/crates/meowscript/src/stdlib/math.rs b/crates/meowscript/src/stdlib/math.rs new file mode 100644 index 0000000..fea14e8 --- /dev/null +++ b/crates/meowscript/src/stdlib/math.rs @@ -0,0 +1,225 @@ +use super::{Package, number}; +use crate::error::{Error, Result}; +use crate::interpreter::Interpreter; +use crate::value::{Arity, Builtin, Value}; + +pub const RANDOM: Builtin = Builtin { + name: "random", + arity: Arity::Between(0, 2), + func: random, + doc: "A random number: in [0, 1) with no arguments, [0, n) with one, or [min, max) with two.", +}; + +macro_rules! unary { + ($name:ident, $f:expr) => { + fn $name(_: &mut Interpreter, args: Vec) -> Result { + let n = number(stringify!($name), &args, 0)?; + Ok(Value::Number($f(n))) + } + }; +} + +unary!(round, f64::round); +unary!(ceil, f64::ceil); +unary!(floor, f64::floor); +unary!(trunc, f64::trunc); +unary!(abs, f64::abs); +unary!(sqrt, f64::sqrt); +unary!(sin, f64::sin); +unary!(cos, f64::cos); +unary!(tan, f64::tan); +unary!(log2, f64::log2); +unary!(log10, f64::log10); +unary!(ln, f64::ln); +unary!(exp, f64::exp); + +pub static PACKAGE: Package = Package { + name: "nya:catculator", + doc: "Maths. Angles are in radians.", + builtins: &[ + RANDOM, + Builtin { + name: "round", + arity: Arity::Exact(1), + func: round, + doc: "Round to the nearest whole number.", + }, + Builtin { + name: "ceil", + arity: Arity::Exact(1), + func: ceil, + doc: "Round up.", + }, + Builtin { + name: "floor", + arity: Arity::Exact(1), + func: floor, + doc: "Round down.", + }, + Builtin { + name: "trunc", + arity: Arity::Exact(1), + func: trunc, + doc: "Drop the fractional part.", + }, + Builtin { + name: "abs", + arity: Arity::Exact(1), + func: abs, + doc: "Distance from zero.", + }, + Builtin { + name: "sqrt", + arity: Arity::Exact(1), + func: sqrt, + doc: "Square root.", + }, + Builtin { + name: "sin", + arity: Arity::Exact(1), + func: sin, + doc: "Sine (radians).", + }, + Builtin { + name: "cos", + arity: Arity::Exact(1), + func: cos, + doc: "Cosine (radians).", + }, + Builtin { + name: "tan", + arity: Arity::Exact(1), + func: tan, + doc: "Tangent (radians).", + }, + Builtin { + name: "log2", + arity: Arity::Exact(1), + func: log2, + doc: "Logarithm base 2.", + }, + Builtin { + name: "log10", + arity: Arity::Exact(1), + func: log10, + doc: "Logarithm base 10.", + }, + Builtin { + name: "ln", + arity: Arity::Exact(1), + func: ln, + doc: "Natural logarithm.", + }, + Builtin { + name: "exp", + arity: Arity::Exact(1), + func: exp, + doc: "e raised to the power.", + }, + Builtin { + name: "pow", + arity: Arity::Exact(2), + func: pow, + doc: "`base` raised to `exponent`.", + }, + Builtin { + name: "modulo", + arity: Arity::Exact(2), + func: modulo, + doc: "Remainder that is never negative for a positive divisor, unlike `%`.", + }, + Builtin { + name: "min", + arity: Arity::AtLeast(1), + func: min, + doc: "The smallest of the numbers, or of one furrball of numbers.", + }, + Builtin { + name: "max", + arity: Arity::AtLeast(1), + func: max, + doc: "The largest of the numbers, or of one furrball of numbers.", + }, + Builtin { + name: "clamp", + arity: Arity::Exact(3), + func: clamp, + doc: "Keep a number between `low` and `high`.", + }, + ], + constants: &[ + ("PI", std::f64::consts::PI), + ("TAU", std::f64::consts::TAU), + ("E", std::f64::consts::E), + ("INFINITY", f64::INFINITY), + ], +}; + +fn random(interp: &mut Interpreter, args: Vec) -> Result { + let (lo, hi) = match args.len() { + 0 => (0.0, 1.0), + 1 => (0.0, number("random", &args, 0)?), + _ => (number("random", &args, 0)?, number("random", &args, 1)?), + }; + Ok(Value::Number(interp.rng().range_f64(lo, hi))) +} + +fn pow(_: &mut Interpreter, args: Vec) -> Result { + Ok(Value::Number( + number("pow", &args, 0)?.powf(number("pow", &args, 1)?), + )) +} + +fn modulo(_: &mut Interpreter, args: Vec) -> Result { + let a = number("modulo", &args, 0)?; + let b = number("modulo", &args, 1)?; + if b == 0.0 { + return Err(Error::runtime("can't take `modulo` by zero")); + } + Ok(Value::Number(a.rem_euclid(b))) +} + +// Accepts either `f(1, 2, 3)` or `f([1, 2, 3])`. +fn numbers(fname: &str, args: &[Value]) -> Result> { + if let [Value::Array(items)] = args { + let items = items.borrow(); + return items + .iter() + .enumerate() + .map(|(i, v)| match v { + Value::Number(n) => Ok(*n), + other => Err(Error::type_(format!( + "`{fname}` wants a furrball of numbers, but item {i} is {}", + other.type_name() + ))), + }) + .collect(); + } + (0..args.len()).map(|i| number(fname, args, i)).collect() +} + +fn min(_: &mut Interpreter, args: Vec) -> Result { + let ns = numbers("min", &args)?; + Ok(ns + .into_iter() + .reduce(f64::min) + .map_or(Value::Null, Value::Number)) +} + +fn max(_: &mut Interpreter, args: Vec) -> Result { + let ns = numbers("max", &args)?; + Ok(ns + .into_iter() + .reduce(f64::max) + .map_or(Value::Null, Value::Number)) +} + +fn clamp(_: &mut Interpreter, args: Vec) -> Result { + let x = number("clamp", &args, 0)?; + let lo = number("clamp", &args, 1)?; + let hi = number("clamp", &args, 2)?; + if lo > hi { + return Err(Error::runtime("`clamp` needs `low` to be at most `high`")); + } + Ok(Value::Number(x.clamp(lo, hi))) +} diff --git a/crates/meowscript/src/stdlib/mod.rs b/crates/meowscript/src/stdlib/mod.rs new file mode 100644 index 0000000..59ab256 --- /dev/null +++ b/crates/meowscript/src/stdlib/mod.rs @@ -0,0 +1,194 @@ +//! The prelude is always available; everything else arrives with `pawckage "nya:";`. +//! Every function is a plain Rust `fn` in a static table, so adding one means adding a row. + +mod array; +mod fs; +mod math; +mod random; +mod string; +mod util; + +use crate::env::Env; +use crate::error::{Error, Result}; +use crate::interpreter::Interpreter; +use crate::value::{Arity, Array, Builtin, Object, Value, format_number}; +use std::rc::Rc; + +pub struct Package { + pub name: &'static str, + pub doc: &'static str, + pub builtins: &'static [Builtin], + pub constants: &'static [(&'static str, f64)], +} + +impl Package { + pub fn install(&'static self, env: &Env) { + for b in self.builtins { + env.define(b.name, Value::Builtin(b)); + } + for (name, value) in self.constants { + env.define(*name, Value::Number(*value)); + } + } +} + +pub static PACKAGES: &[&Package] = &[ + &util::PACKAGE, + &array::PACKAGE, + &string::PACKAGE, + &math::PACKAGE, + &random::PACKAGE, + &fs::PACKAGE, +]; + +pub fn package(short_name: &str) -> Option<&'static Package> { + PACKAGES + .iter() + .copied() + .find(|p| p.name.strip_prefix("nya:") == Some(short_name)) +} + +/// Whether a binding came from a `nya:` package, so a file `pawckage` doesn't re-export the +/// packages it imported for itself. +pub fn is_package_provided(name: &str, value: &Value) -> bool { + match value { + Value::Builtin(_) => true, + Value::Number(n) => PACKAGES + .iter() + .flat_map(|p| p.constants) + .any(|(cname, cvalue)| *cname == name && cvalue.to_bits() == n.to_bits()), + _ => false, + } +} + +pub static PRELUDE: &[Builtin] = &[ + Builtin { + name: "meow", + arity: Arity::AtLeast(0), + func: meow, + doc: "Print the arguments on one line, announced with \"Meow!\".", + }, + Builtin { + name: "purr", + arity: Arity::AtLeast(0), + func: purr, + doc: "Print the arguments on one line, separated by spaces.", + }, + Builtin { + name: "log", + arity: Arity::AtLeast(0), + func: purr, + doc: "The same as `purr`, for people who miss JavaScript.", + }, + util::LENGTH, +]; + +pub fn install_prelude(env: &Env) { + for b in PRELUDE { + env.define(b.name, Value::Builtin(b)); + } +} + +fn join_display(args: &[Value]) -> String { + args.iter() + .map(|v| v.to_string()) + .collect::>() + .join(" ") +} + +fn meow(interp: &mut Interpreter, args: Vec) -> Result { + let line = if args.is_empty() { + "Meow!".to_string() + } else { + format!("Meow! {}", join_display(&args)) + }; + interp.print(&line); + Ok(Value::Null) +} + +fn purr(interp: &mut Interpreter, args: Vec) -> Result { + interp.print(&join_display(&args)); + Ok(Value::Null) +} + +fn wrong_type(fname: &str, index: usize, expected: &str, got: &Value) -> Error { + Error::type_(format!( + "`{fname}` wants {expected} as argument {}, but got {}", + index + 1, + got.type_name() + )) +} + +fn number(fname: &str, args: &[Value], i: usize) -> Result { + match args.get(i) { + Some(Value::Number(n)) => Ok(*n), + Some(other) => Err(wrong_type(fname, i, "a number", other)), + None => Err(Error::arity(format!( + "`{fname}` is missing argument {}", + i + 1 + ))), + } +} + +fn integer(fname: &str, args: &[Value], i: usize) -> Result { + let n = number(fname, args, i)?; + if n.fract() != 0.0 || !n.is_finite() { + return Err(Error::type_(format!( + "`{fname}` wants a whole number as argument {}, but got {}", + i + 1, + format_number(n) + ))); + } + Ok(n as i64) +} + +fn string(fname: &str, args: &[Value], i: usize) -> Result> { + match args.get(i) { + Some(Value::Str(s)) => Ok(s.clone()), + Some(other) => Err(wrong_type(fname, i, "whiskers", other)), + None => Err(Error::arity(format!( + "`{fname}` is missing argument {}", + i + 1 + ))), + } +} + +fn array(fname: &str, args: &[Value], i: usize) -> Result { + match args.get(i) { + Some(Value::Array(a)) => Ok(a.clone()), + Some(other) => Err(wrong_type(fname, i, "a furrball", other)), + None => Err(Error::arity(format!( + "`{fname}` is missing argument {}", + i + 1 + ))), + } +} + +fn object(fname: &str, args: &[Value], i: usize) -> Result { + match args.get(i) { + Some(Value::Object(o)) => Ok(o.clone()), + Some(other) => Err(wrong_type(fname, i, "an object", other)), + None => Err(Error::arity(format!( + "`{fname}` is missing argument {}", + i + 1 + ))), + } +} + +fn callable(fname: &str, args: &[Value], i: usize) -> Result { + match args.get(i) { + Some(v @ (Value::Function(_) | Value::Builtin(_))) => Ok(v.clone()), + Some(other) => Err(wrong_type(fname, i, "a pawction", other)), + None => Err(Error::arity(format!( + "`{fname}` is missing argument {}", + i + 1 + ))), + } +} + +/// Clamps a possibly negative slice bound into `0..=len`. +fn slice_bound(n: f64, len: usize) -> usize { + let i = n as i64; + let i = if i < 0 { i + len as i64 } else { i }; + i.clamp(0, len as i64) as usize +} diff --git a/crates/meowscript/src/stdlib/random.rs b/crates/meowscript/src/stdlib/random.rs new file mode 100644 index 0000000..4da3bbb --- /dev/null +++ b/crates/meowscript/src/stdlib/random.rs @@ -0,0 +1,78 @@ +use super::math::RANDOM; +use super::{Package, array, integer, number}; +use crate::error::{Error, Result}; +use crate::interpreter::Interpreter; +use crate::value::{Arity, Builtin, Value}; + +pub static PACKAGE: Package = Package { + name: "nya:rundamn", + doc: "Random numbers, choices, and shuffles.", + builtins: &[ + Builtin { + name: "seed", + arity: Arity::Exact(1), + func: seed, + doc: "Restart the random sequence from a number, so runs repeat exactly.", + }, + RANDOM, + Builtin { + name: "uniform", + arity: Arity::Exact(2), + func: uniform, + doc: "A random float in [a, b).", + }, + Builtin { + name: "randint", + arity: Arity::Exact(2), + func: randint, + doc: "A random whole number from a to b, including both ends.", + }, + Builtin { + name: "choice", + arity: Arity::Exact(1), + func: choice, + doc: "A random item from a furrball.", + }, + Builtin { + name: "shuffle", + arity: Arity::Exact(1), + func: shuffle, + doc: "Shuffle a furrball in place and return it.", + }, + ], + constants: &[], +}; + +fn seed(interp: &mut Interpreter, args: Vec) -> Result { + let n = number("seed", &args, 0)?; + interp.reseed(n.to_bits()); + Ok(Value::Null) +} + +fn uniform(interp: &mut Interpreter, args: Vec) -> Result { + let a = number("uniform", &args, 0)?; + let b = number("uniform", &args, 1)?; + Ok(Value::Number(interp.rng().range_f64(a, b))) +} + +fn randint(interp: &mut Interpreter, args: Vec) -> Result { + let a = integer("randint", &args, 0)?; + let b = integer("randint", &args, 1)?; + Ok(Value::Number(interp.rng().range_i64(a, b) as f64)) +} + +fn choice(interp: &mut Interpreter, args: Vec) -> Result { + let arr = array("choice", &args, 0)?; + let items = arr.borrow(); + if items.is_empty() { + return Err(Error::runtime("`choice` can't pick from an empty furrball")); + } + let i = interp.rng().index(items.len()); + Ok(items[i].clone()) +} + +fn shuffle(interp: &mut Interpreter, args: Vec) -> Result { + let arr = array("shuffle", &args, 0)?; + interp.rng().shuffle(&mut arr.borrow_mut()); + Ok(args[0].clone()) +} diff --git a/crates/meowscript/src/stdlib/string.rs b/crates/meowscript/src/stdlib/string.rs new file mode 100644 index 0000000..1558d59 --- /dev/null +++ b/crates/meowscript/src/stdlib/string.rs @@ -0,0 +1,208 @@ +use super::array::{INCLUDES, INDEX_OF, REVERSE, SLICE}; +use super::{Package, integer, string}; +use crate::error::{Error, Result}; +use crate::interpreter::Interpreter; +use crate::value::{Arity, Builtin, Value}; + +pub static PACKAGE: Package = Package { + name: "nya:whiskers", + doc: "Everything for whiskers (strings).", + builtins: &[ + Builtin { + name: "in_whiskers", + arity: Arity::Exact(1), + func: in_whiskers, + doc: "Turn anything into whiskers, the way `meow` would print it.", + }, + Builtin { + name: "pawrse", + arity: Arity::Exact(1), + func: pawrse, + doc: "Read a number out of whiskers, or mew if there isn't one.", + }, + Builtin { + name: "replace", + arity: Arity::Exact(3), + func: replace, + doc: "Replace every occurrence of `from` with `to`.", + }, + Builtin { + name: "split", + arity: Arity::Between(1, 2), + func: split, + doc: "Split into a furrball on a separator. With no separator, splits on whitespace.", + }, + Builtin { + name: "upper", + arity: Arity::Exact(1), + func: upper, + doc: "SHOUTING.", + }, + Builtin { + name: "lower", + arity: Arity::Exact(1), + func: lower, + doc: "whispering.", + }, + Builtin { + name: "trim", + arity: Arity::Exact(1), + func: trim, + doc: "Strip whitespace from both ends.", + }, + Builtin { + name: "starts_with", + arity: Arity::Exact(2), + func: starts_with, + doc: "Whether the whiskers begin with the given prefix.", + }, + Builtin { + name: "ends_with", + arity: Arity::Exact(2), + func: ends_with, + doc: "Whether the whiskers end with the given suffix.", + }, + INCLUDES, + INDEX_OF, + Builtin { + name: "chars", + arity: Arity::Exact(1), + func: chars, + doc: "A furrball of the individual characters.", + }, + Builtin { + name: "repeat", + arity: Arity::Exact(2), + func: repeat, + doc: "The whiskers repeated that many times. Same as `*`.", + }, + Builtin { + name: "pad_start", + arity: Arity::Between(2, 3), + func: pad_start, + doc: "Pad on the left to a width, with spaces or the given filler.", + }, + Builtin { + name: "pad_end", + arity: Arity::Between(2, 3), + func: pad_end, + doc: "Pad on the right to a width, with spaces or the given filler.", + }, + REVERSE, + SLICE, + ], + constants: &[], +}; + +fn in_whiskers(_: &mut Interpreter, args: Vec) -> Result { + Ok(Value::from(args[0].to_string())) +} + +fn pawrse(_: &mut Interpreter, args: Vec) -> Result { + Ok(match &args[0] { + Value::Number(n) => Value::Number(*n), + Value::Str(s) => s + .trim() + .parse::() + .map(Value::Number) + .unwrap_or(Value::Null), + _ => Value::Null, + }) +} + +fn replace(_: &mut Interpreter, args: Vec) -> Result { + let s = string("replace", &args, 0)?; + let from = string("replace", &args, 1)?; + let to = string("replace", &args, 2)?; + if from.is_empty() { + return Err(Error::runtime( + "`replace` can't replace an empty string; there's nothing to find", + )); + } + Ok(Value::from(s.replace(&*from, &to))) +} + +fn split(_: &mut Interpreter, args: Vec) -> Result { + let s = string("split", &args, 0)?; + let parts: Vec = match args.get(1) { + None => s.split_whitespace().map(Value::from).collect(), + Some(_) => { + let sep = string("split", &args, 1)?; + if sep.is_empty() { + s.chars().map(|c| Value::str(c.to_string())).collect() + } else { + s.split(&*sep).map(Value::from).collect() + } + } + }; + Ok(Value::array(parts)) +} + +fn upper(_: &mut Interpreter, args: Vec) -> Result { + Ok(Value::from(string("upper", &args, 0)?.to_uppercase())) +} + +fn lower(_: &mut Interpreter, args: Vec) -> Result { + Ok(Value::from(string("lower", &args, 0)?.to_lowercase())) +} + +fn trim(_: &mut Interpreter, args: Vec) -> Result { + Ok(Value::from(string("trim", &args, 0)?.trim())) +} + +fn starts_with(_: &mut Interpreter, args: Vec) -> Result { + let s = string("starts_with", &args, 0)?; + let prefix = string("starts_with", &args, 1)?; + Ok(Value::Bool(s.starts_with(&*prefix))) +} + +fn ends_with(_: &mut Interpreter, args: Vec) -> Result { + let s = string("ends_with", &args, 0)?; + let suffix = string("ends_with", &args, 1)?; + Ok(Value::Bool(s.ends_with(&*suffix))) +} + +fn chars(_: &mut Interpreter, args: Vec) -> Result { + let s = string("chars", &args, 0)?; + Ok(Value::array( + s.chars().map(|c| Value::str(c.to_string())).collect(), + )) +} + +fn repeat(_: &mut Interpreter, args: Vec) -> Result { + let s = string("repeat", &args, 0)?; + let n = integer("repeat", &args, 1)?; + if n < 0 { + return Err(Error::type_( + "`repeat` can't repeat something a negative number of times", + )); + } + Ok(Value::from(s.repeat(n as usize))) +} + +fn pad(fname: &str, args: &[Value], at_start: bool) -> Result { + let s = string(fname, args, 0)?; + let width = integer(fname, args, 1)?.max(0) as usize; + let fill = match args.get(2) { + Some(_) => string(fname, args, 2)?, + None => " ".into(), + }; + let len = s.chars().count(); + if fill.is_empty() || len >= width { + return Ok(Value::Str(s)); + } + let padding: String = fill.chars().cycle().take(width - len).collect(); + Ok(Value::from(if at_start { + format!("{padding}{s}") + } else { + format!("{s}{padding}") + })) +} + +fn pad_start(_: &mut Interpreter, args: Vec) -> Result { + pad("pad_start", &args, true) +} + +fn pad_end(_: &mut Interpreter, args: Vec) -> Result { + pad("pad_end", &args, false) +} diff --git a/crates/meowscript/src/stdlib/util.rs b/crates/meowscript/src/stdlib/util.rs new file mode 100644 index 0000000..acd6644 --- /dev/null +++ b/crates/meowscript/src/stdlib/util.rs @@ -0,0 +1,144 @@ +use super::{Package, callable, number, object, string, wrong_type}; +use crate::error::{Error, Result}; +use crate::interpreter::Interpreter; +use crate::value::{Arity, Builtin, Value}; + +pub const LENGTH: Builtin = Builtin { + name: "length", + arity: Arity::Exact(1), + func: length, + doc: "How many characters, items, or keys something has.", +}; + +pub static PACKAGE: Package = Package { + name: "nya:clawtility", + doc: "Input, timing, objects, and other everyday tools.", + builtins: &[ + LENGTH, + Builtin { + name: "kibble", + arity: Arity::Between(0, 1), + func: kibble, + doc: "Read a line of input. Shows the prompt first if you give one.", + }, + Builtin { + name: "nap", + arity: Arity::Exact(1), + func: nap, + doc: "Pause for that many milliseconds.", + }, + Builtin { + name: "now", + arity: Arity::Exact(0), + func: now, + doc: "Milliseconds since the Unix epoch.", + }, + Builtin { + name: "keys", + arity: Arity::Exact(1), + func: keys, + doc: "A furrball of an object's keys, in insertion order.", + }, + Builtin { + name: "values", + arity: Arity::Exact(1), + func: values, + doc: "A furrball of an object's values, in insertion order.", + }, + Builtin { + name: "remove", + arity: Arity::Exact(2), + func: remove, + doc: "Remove a key from an object. Returns the removed value, or mew.", + }, + Builtin { + name: "assert", + arity: Arity::Between(1, 2), + func: assert, + doc: "Stop with an error unless the first argument is truthy.", + }, + Builtin { + name: "apply", + arity: Arity::Exact(2), + func: apply, + doc: "Call a pawction with a furrball of arguments.", + }, + ], + constants: &[], +}; + +fn length(_: &mut Interpreter, args: Vec) -> Result { + Ok(match &args[0] { + Value::Str(s) => Value::from(s.chars().count()), + Value::Array(a) => Value::from(a.borrow().len()), + Value::Object(o) => Value::from(o.borrow().len()), + other => { + return Err(wrong_type( + "length", + 0, + "whiskers, a furrball, or an object", + other, + )); + } + }) +} + +fn kibble(interp: &mut Interpreter, args: Vec) -> Result { + let prompt = match args.first() { + Some(v) => v.to_string(), + None => String::new(), + }; + interp.host().read_line(&prompt).map(Value::from) +} + +fn nap(interp: &mut Interpreter, args: Vec) -> Result { + let ms = number("nap", &args, 0)?; + if ms < 0.0 { + return Err(Error::type_( + "`nap` can't sleep for a negative amount of time", + )); + } + interp.host().sleep(ms); + Ok(Value::Null) +} + +fn now(interp: &mut Interpreter, _: Vec) -> Result { + Ok(Value::Number(interp.host().now_millis())) +} + +fn keys(_: &mut Interpreter, args: Vec) -> Result { + let o = object("keys", &args, 0)?; + let keys = o.borrow().keys().map(|k| Value::Str(k.clone())).collect(); + Ok(Value::array(keys)) +} + +fn values(_: &mut Interpreter, args: Vec) -> Result { + let o = object("values", &args, 0)?; + let values = o.borrow().values().cloned().collect(); + Ok(Value::array(values)) +} + +fn remove(_: &mut Interpreter, args: Vec) -> Result { + let o = object("remove", &args, 0)?; + let key = string("remove", &args, 1)?; + let removed = o.borrow_mut().shift_remove(&*key); + Ok(removed.unwrap_or(Value::Null)) +} + +fn assert(_: &mut Interpreter, args: Vec) -> Result { + if args[0].is_truthy() { + return Ok(Value::Null); + } + let message = match args.get(1) { + Some(m) => format!("assertion failed: {m}"), + None => "assertion failed".to_string(), + }; + Err(Error::runtime(message)) +} + +fn apply(interp: &mut Interpreter, args: Vec) -> Result { + let f = callable("apply", &args, 0)?; + let call_args = super::array("apply", &args, 1)?; + let call_args = call_args.borrow().clone(); + interp.call(f, call_args, None) +} diff --git a/crates/meowscript/src/token.rs b/crates/meowscript/src/token.rs new file mode 100644 index 0000000..3afdce9 --- /dev/null +++ b/crates/meowscript/src/token.rs @@ -0,0 +1,194 @@ +use crate::span::Span; +use std::fmt; + +#[derive(Clone, Debug, PartialEq)] +pub enum TokenKind { + Ident(String), + Number(f64), + Str(String), + + /// `scratch`: declare + Scratch, + /// `amew`: assign + Amew, + /// `pawction`: function + Pawction, + /// `purrhaps`: if + Purrhaps, + /// `meowtually`: else + Meowtually, + /// `tail`: return + Tail, + /// `pawckage`: import + Pawckage, + /// `purrfect`: true + Purrfect, + /// `clawful`: false + Clawful, + /// `mew`: null + Mew, + /// `furreal`: typeof + Furreal, + /// `furrever`: loop + Furrever, + /// `fur`: for-each + Fur, + /// `hiss`: break + Hiss, + Continue, + + Assign, + Eq, + NotEq, + Lt, + Gt, + LtEq, + GtEq, + Plus, + Minus, + Star, + Slash, + Percent, + Bang, + Amp, + Pipe, + Caret, + Shl, + Shr, + AndAnd, + OrOr, + /// `~`: membership + Tilde, + /// `'s`: property access + Possessive, + + LParen, + RParen, + LBrace, + RBrace, + LBracket, + RBracket, + Comma, + Colon, + Semicolon, + + Eof, +} + +impl TokenKind { + pub fn keyword(ident: &str) -> Option { + Some(match ident { + "scratch" => TokenKind::Scratch, + "amew" => TokenKind::Amew, + "pawction" => TokenKind::Pawction, + "purrhaps" => TokenKind::Purrhaps, + "meowtually" => TokenKind::Meowtually, + "tail" => TokenKind::Tail, + "pawckage" => TokenKind::Pawckage, + "purrfect" => TokenKind::Purrfect, + "clawful" => TokenKind::Clawful, + "mew" => TokenKind::Mew, + "furreal" => TokenKind::Furreal, + "furrever" => TokenKind::Furrever, + "fur" => TokenKind::Fur, + "hiss" => TokenKind::Hiss, + "continue" => TokenKind::Continue, + _ => return None, + }) + } + + pub const KEYWORDS: &'static [&'static str] = &[ + "scratch", + "amew", + "pawction", + "purrhaps", + "meowtually", + "tail", + "pawckage", + "purrfect", + "clawful", + "mew", + "furreal", + "furrever", + "fur", + "hiss", + "continue", + ]; + + pub fn describe(&self) -> String { + match self { + TokenKind::Ident(name) => format!("identifier `{name}`"), + TokenKind::Number(n) => format!("number `{n}`"), + TokenKind::Str(_) => "a string".to_string(), + TokenKind::Eof => "end of input".to_string(), + other => format!("`{}`", other.symbol()), + } + } + + pub fn symbol(&self) -> &'static str { + match self { + TokenKind::Ident(_) => "identifier", + TokenKind::Number(_) => "number", + TokenKind::Str(_) => "string", + TokenKind::Scratch => "scratch", + TokenKind::Amew => "amew", + TokenKind::Pawction => "pawction", + TokenKind::Purrhaps => "purrhaps", + TokenKind::Meowtually => "meowtually", + TokenKind::Tail => "tail", + TokenKind::Pawckage => "pawckage", + TokenKind::Purrfect => "purrfect", + TokenKind::Clawful => "clawful", + TokenKind::Mew => "mew", + TokenKind::Furreal => "furreal", + TokenKind::Furrever => "furrever", + TokenKind::Fur => "fur", + TokenKind::Hiss => "hiss", + TokenKind::Continue => "continue", + TokenKind::Assign => "=", + TokenKind::Eq => "==", + TokenKind::NotEq => "!=", + TokenKind::Lt => "<", + TokenKind::Gt => ">", + TokenKind::LtEq => "<=", + TokenKind::GtEq => ">=", + TokenKind::Plus => "+", + TokenKind::Minus => "-", + TokenKind::Star => "*", + TokenKind::Slash => "/", + TokenKind::Percent => "%", + TokenKind::Bang => "!", + TokenKind::Amp => "&", + TokenKind::Pipe => "|", + TokenKind::Caret => "^", + TokenKind::Shl => "<<", + TokenKind::Shr => ">>", + TokenKind::AndAnd => "&&", + TokenKind::OrOr => "||", + TokenKind::Tilde => "~", + TokenKind::Possessive => "'s", + TokenKind::LParen => "(", + TokenKind::RParen => ")", + TokenKind::LBrace => "{", + TokenKind::RBrace => "}", + TokenKind::LBracket => "[", + TokenKind::RBracket => "]", + TokenKind::Comma => ",", + TokenKind::Colon => ":", + TokenKind::Semicolon => ";", + TokenKind::Eof => "end of input", + } + } +} + +impl fmt::Display for TokenKind { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(&self.describe()) + } +} + +#[derive(Clone, Debug, PartialEq)] +pub struct Token { + pub kind: TokenKind, + pub span: Span, +} diff --git a/crates/meowscript/src/value.rs b/crates/meowscript/src/value.rs new file mode 100644 index 0000000..ab1df35 --- /dev/null +++ b/crates/meowscript/src/value.rs @@ -0,0 +1,303 @@ +//! Strings are immutable and shared. Furrballs and objects are reference types, like in +//! JavaScript: `push` on one variable is seen through every other variable holding it. + +use crate::ast::FuncDef; +use crate::env::Env; +use crate::error::Result; +use crate::interpreter::Interpreter; +use indexmap::IndexMap; +use std::cell::RefCell; +use std::fmt; +use std::rc::Rc; + +pub type Array = Rc>>; +pub type Object = Rc, Value>>>; + +#[derive(Clone)] +pub enum Value { + Null, + Bool(bool), + Number(f64), + Str(Rc), + Array(Array), + Object(Object), + Function(Rc), + Builtin(&'static Builtin), +} + +pub struct Closure { + pub def: Rc, + pub env: Env, +} + +pub struct Builtin { + pub name: &'static str, + pub arity: Arity, + pub func: BuiltinFn, + pub doc: &'static str, +} + +pub type BuiltinFn = fn(&mut Interpreter, Vec) -> Result; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum Arity { + Exact(usize), + AtLeast(usize), + Between(usize, usize), +} + +impl Arity { + pub fn accepts(self, n: usize) -> bool { + match self { + Arity::Exact(k) => n == k, + Arity::AtLeast(k) => n >= k, + Arity::Between(lo, hi) => (lo..=hi).contains(&n), + } + } + + pub fn describe(self) -> String { + let plural = |n: usize| if n == 1 { "argument" } else { "arguments" }; + match self { + Arity::Exact(k) => format!("exactly {k} {}", plural(k)), + Arity::AtLeast(k) => format!("at least {k} {}", plural(k)), + Arity::Between(lo, hi) => format!("between {lo} and {hi} arguments"), + } + } +} + +impl Value { + pub fn array(items: Vec) -> Value { + Value::Array(Rc::new(RefCell::new(items))) + } + + pub fn object(map: IndexMap, Value>) -> Value { + Value::Object(Rc::new(RefCell::new(map))) + } + + pub fn str(s: impl Into>) -> Value { + Value::Str(s.into()) + } + + pub fn type_name(&self) -> &'static str { + match self { + Value::Null => "mew", + Value::Bool(_) => "boolean", + Value::Number(_) => "number", + Value::Str(_) => "whiskers", + Value::Array(_) => "furrball", + Value::Object(_) => "object", + Value::Function(_) | Value::Builtin(_) => "pawction", + } + } + + /// Zero and the empty string are truthy, so `purrhaps (count)` does not skip zero. + pub fn is_truthy(&self) -> bool { + !matches!(self, Value::Null | Value::Bool(false)) + } + + /// Like `Display`, but strings are quoted. + pub fn repr(&self) -> String { + let mut out = String::new(); + self.repr_into(&mut out, 0); + out + } + + fn repr_into(&self, out: &mut String, depth: usize) { + if depth > 24 { + out.push_str("..."); + return; + } + match self { + Value::Str(s) => { + out.push('"'); + for c in s.chars() { + match c { + '"' => out.push_str("\\\""), + '\\' => out.push_str("\\\\"), + '\n' => out.push_str("\\n"), + '\t' => out.push_str("\\t"), + '\r' => out.push_str("\\r"), + c => out.push(c), + } + } + out.push('"'); + } + Value::Array(items) => { + out.push('['); + for (i, item) in items.borrow().iter().enumerate() { + if i > 0 { + out.push_str(", "); + } + item.repr_into(out, depth + 1); + } + out.push(']'); + } + Value::Object(map) => { + out.push('{'); + for (i, (k, v)) in map.borrow().iter().enumerate() { + if i > 0 { + out.push_str(", "); + } + if is_plain_key(k) { + out.push_str(k); + } else { + Value::Str(k.clone()).repr_into(out, depth + 1); + } + out.push_str(": "); + v.repr_into(out, depth + 1); + } + out.push('}'); + } + other => out.push_str(&other.to_string()), + } + } +} + +fn is_plain_key(k: &str) -> bool { + let mut chars = k.chars(); + match chars.next() { + Some(c) if c == '_' || c.is_alphabetic() => chars.all(|c| c == '_' || c.is_alphanumeric()), + _ => false, + } +} + +pub fn format_number(n: f64) -> String { + if n.is_nan() { + "NaN".to_string() + } else if n.is_infinite() { + if n > 0.0 { + "Infinity".to_string() + } else { + "-Infinity".to_string() + } + } else if n == 0.0 { + "0".to_string() + } else { + n.to_string() + } +} + +impl fmt::Display for Value { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Value::Null => f.write_str("mew"), + Value::Bool(true) => f.write_str("purrfect"), + Value::Bool(false) => f.write_str("clawful"), + Value::Number(n) => f.write_str(&format_number(*n)), + Value::Str(s) => f.write_str(s), + Value::Array(_) | Value::Object(_) => f.write_str(&self.repr()), + Value::Function(c) => match &c.def.name { + Some(name) => write!(f, ""), + None => f.write_str(""), + }, + Value::Builtin(b) => write!(f, "", b.name), + } + } +} + +impl fmt::Debug for Value { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.write_str(&self.repr()) + } +} + +/// Structural for data, identity for functions. +impl PartialEq for Value { + fn eq(&self, other: &Self) -> bool { + match (self, other) { + (Value::Null, Value::Null) => true, + (Value::Bool(a), Value::Bool(b)) => a == b, + (Value::Number(a), Value::Number(b)) => a == b, + (Value::Str(a), Value::Str(b)) => a == b, + (Value::Array(a), Value::Array(b)) => Rc::ptr_eq(a, b) || *a.borrow() == *b.borrow(), + (Value::Object(a), Value::Object(b)) => { + Rc::ptr_eq(a, b) || { + let (a, b) = (a.borrow(), b.borrow()); + a.len() == b.len() && a.iter().all(|(k, v)| b.get(k) == Some(v)) + } + } + (Value::Function(a), Value::Function(b)) => Rc::ptr_eq(a, b), + (Value::Builtin(a), Value::Builtin(b)) => std::ptr::eq(*a, *b), + _ => false, + } + } +} + +impl From for Value { + fn from(n: f64) -> Self { + Value::Number(n) + } +} + +impl From for Value { + fn from(n: usize) -> Self { + Value::Number(n as f64) + } +} + +impl From for Value { + fn from(b: bool) -> Self { + Value::Bool(b) + } +} + +impl From<&str> for Value { + fn from(s: &str) -> Self { + Value::Str(s.into()) + } +} + +impl From for Value { + fn from(s: String) -> Self { + Value::Str(s.into()) + } +} + +impl From> for Value { + fn from(items: Vec) -> Self { + Value::array(items) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn numbers_print_like_a_human_would_write_them() { + assert_eq!(format_number(3.0), "3"); + assert_eq!(format_number(3.5), "3.5"); + assert_eq!(format_number(-0.0), "0"); + assert_eq!(format_number(1e21), "1000000000000000000000"); + assert_eq!(format_number(f64::INFINITY), "Infinity"); + } + + #[test] + fn repr_quotes_nested_strings_only() { + let v = Value::array(vec![Value::from("a"), Value::from(1.0), Value::Null]); + assert_eq!(v.to_string(), r#"["a", 1, mew]"#); + assert_eq!(Value::from("a").to_string(), "a"); + assert_eq!(Value::from("a\"b").repr(), r#""a\"b""#); + } + + #[test] + fn objects_print_in_insertion_order() { + let mut map = IndexMap::new(); + map.insert("name".into(), Value::from("Tom")); + map.insert("has space".into(), Value::from(true)); + assert_eq!( + Value::object(map).to_string(), + r#"{name: "Tom", "has space": purrfect}"# + ); + } + + #[test] + fn equality_is_structural_for_data() { + assert_eq!( + Value::array(vec![Value::from(1.0)]), + Value::array(vec![Value::from(1.0)]) + ); + assert_ne!(Value::from(1.0), Value::from("1")); + assert_ne!(Value::Null, Value::Bool(false)); + } +} diff --git a/crates/meowscript/tests/examples.rs b/crates/meowscript/tests/examples.rs new file mode 100644 index 0000000..b8313f7 --- /dev/null +++ b/crates/meowscript/tests/examples.rs @@ -0,0 +1,99 @@ +//! Runs every program in `examples/`. One with a sibling `.out` file must print exactly that; +//! one without must only run without error. `// test: skip` marks programs that sleep or read +//! input. `UPDATE_SNAPSHOTS=1` rewrites the `.out` files. + +use meowscript::{BufferHost, Error, Host, Interpreter, Result}; +use std::path::{Path, PathBuf}; + +#[derive(Clone)] +struct ExampleHost(BufferHost); + +impl Host for ExampleHost { + fn print(&mut self, line: &str) { + self.0.print(line); + } + + fn read_file(&mut self, path: &str) -> Result { + std::fs::read_to_string(path) + .map_err(|e| Error::io(format!("could not read `{path}`: {e}"))) + } + + fn file_exists(&mut self, path: &str) -> bool { + Path::new(path).exists() + } + + fn random_seed(&mut self) -> u64 { + 1 + } +} + +fn examples_dir() -> PathBuf { + Path::new(env!("CARGO_MANIFEST_DIR")) + .join("..") + .join("..") + .join("examples") +} + +#[test] +fn examples_run_and_match_their_snapshots() { + let dir = examples_dir(); + let mut programs: Vec = std::fs::read_dir(&dir) + .expect("examples directory") + .filter_map(|e| e.ok().map(|e| e.path())) + .filter(|p| p.extension().is_some_and(|x| x == "meow")) + .collect(); + programs.sort(); + assert!( + !programs.is_empty(), + "no examples found in {}", + dir.display() + ); + + let update = std::env::var_os("UPDATE_SNAPSHOTS").is_some(); + let mut failures = Vec::new(); + let mut checked = 0; + + for path in programs { + let name = path.file_name().unwrap().to_string_lossy().into_owned(); + let source = std::fs::read_to_string(&path).unwrap(); + if source.contains("// test: skip") { + continue; + } + checked += 1; + + let host = ExampleHost(BufferHost::new()); + let mut interp = Interpreter::new(host.clone()); + interp.set_base_dir(Some(dir.to_string_lossy().into_owned())); + + if let Err(e) = interp.run(&source) { + failures.push(format!( + "{name} failed:\n{}", + e.render(&source, Some(&name)) + )); + continue; + } + + let snapshot = path.with_extension("out"); + let actual = { + let mut s = host.0.output(); + s.push('\n'); + s + }; + if update { + std::fs::write(&snapshot, &actual).unwrap(); + } else if snapshot.exists() { + let expected = std::fs::read_to_string(&snapshot) + .unwrap() + .replace("\r\n", "\n"); + if expected != actual { + failures.push(format!( + "{name} printed something different from {}:\n--- expected\n{expected}--- actual\n{actual}", + snapshot.file_name().unwrap().to_string_lossy() + )); + } + } + } + + assert!(checked > 0, "every example was skipped"); + assert!(failures.is_empty(), "\n{}", failures.join("\n\n")); +} diff --git a/examples/closures.meow b/examples/closures.meow new file mode 100644 index 0000000..628996b --- /dev/null +++ b/examples/closures.meow @@ -0,0 +1,17 @@ +// Pawctions remember the scope they were born in. +pawction make_counter(name) { + scratch count = 0; + tail pawction() { + amew count = count + 1; + meow(name, "has been petted", count, "times"); + tail count; + }; +} + +scratch pet_tom = make_counter("Tom"); +scratch pet_luna = make_counter("Luna"); + +pet_tom(); +pet_tom(); +pet_luna(); +pet_tom(); diff --git a/examples/closures.out b/examples/closures.out new file mode 100644 index 0000000..d42d6a1 --- /dev/null +++ b/examples/closures.out @@ -0,0 +1,4 @@ +Meow! Tom has been petted 1 times +Meow! Tom has been petted 2 times +Meow! Luna has been petted 1 times +Meow! Tom has been petted 3 times diff --git a/examples/fizzbuzz.meow b/examples/fizzbuzz.meow new file mode 100644 index 0000000..8fe0331 --- /dev/null +++ b/examples/fizzbuzz.meow @@ -0,0 +1,15 @@ +// The classic, with a cat's vocabulary. +pawction fizzbuzz(n) { + purrhaps n % 15 == 0 { + tail "FizzBuzz"; + } meowtually purrhaps n % 3 == 0 { + tail "Fizz"; + } meowtually purrhaps n % 5 == 0 { + tail "Buzz"; + } + tail n; +} + +fur i ~ 15 { + purr(fizzbuzz(i + 1)); +} diff --git a/examples/fizzbuzz.out b/examples/fizzbuzz.out new file mode 100644 index 0000000..0a934f2 --- /dev/null +++ b/examples/fizzbuzz.out @@ -0,0 +1,15 @@ +1 +2 +Fizz +4 +Buzz +Fizz +7 +8 +Fizz +Buzz +11 +Fizz +13 +14 +FizzBuzz diff --git a/examples/furrball.meow b/examples/furrball.meow new file mode 100644 index 0000000..acbca90 --- /dev/null +++ b/examples/furrball.meow @@ -0,0 +1,24 @@ +// A tour of the nya:furrball pawckage. +pawckage "nya:furrball"; + +scratch cats = ["Tom", "Garfield", "Felix", "Salem"]; +push(cats, "Luna"); +purr("We have", length(cats), "cats:", join(cats, ", ")); + +scratch shouty = map(cats, pawction(name) { name + "!" }); +purr(shouty); + +scratch short_names = filter(cats, pawction(name) { length(name) <= 4 }); +purr("Short names:", short_names); + +scratch letters = reduce(cats, pawction(total, name) { total + length(name) }, 0); +purr("Letters in all the names:", letters); + +purr("Sorted:", sort(cats)); +purr("Backwards:", reverse(cats)); +purr("The middle two:", slice(cats, 1, 3)); +purr("Is Salem here?", "Salem" ~ cats); +purr("Squares:", map(range(1, 6), pawction(n) { n * n })); + +scratch last_cat = pounce(cats); +purr(last_cat, "left, so now there are", length(cats)); diff --git a/examples/furrball.out b/examples/furrball.out new file mode 100644 index 0000000..e88397f --- /dev/null +++ b/examples/furrball.out @@ -0,0 +1,10 @@ +We have 5 cats: Tom, Garfield, Felix, Salem, Luna +["Tom!", "Garfield!", "Felix!", "Salem!", "Luna!"] +Short names: ["Tom", "Luna"] +Letters in all the names: 25 +Sorted: ["Felix", "Garfield", "Luna", "Salem", "Tom"] +Backwards: ["Luna", "Salem", "Felix", "Garfield", "Tom"] +The middle two: ["Garfield", "Felix"] +Is Salem here? purrfect +Squares: [1, 4, 9, 16, 25] +Luna left, so now there are 4 diff --git a/examples/hello.meow b/examples/hello.meow new file mode 100644 index 0000000..83d1cc1 --- /dev/null +++ b/examples/hello.meow @@ -0,0 +1,5 @@ +// Every program starts with a meow. +meow("Hello, world!"); + +// purr prints without the announcement. +purr("The cat says:", "meow", 3, "times"); diff --git a/examples/hello.out b/examples/hello.out new file mode 100644 index 0000000..60497be --- /dev/null +++ b/examples/hello.out @@ -0,0 +1,2 @@ +Meow! Hello, world! +The cat says: meow 3 times diff --git a/examples/lib/kitty_math.meow b/examples/lib/kitty_math.meow new file mode 100644 index 0000000..76a6d1e --- /dev/null +++ b/examples/lib/kitty_math.meow @@ -0,0 +1,13 @@ +// A pawckage is just a .meow file. Everything scratched at the top level +// is shared with whoever pawckages it. The nya: pawckages it uses stay private. +pawckage "nya:catculator"; + +scratch NINE_LIVES = 9; + +pawction lives_left(deaths) { + tail max(NINE_LIVES - deaths, 0); +} + +pawction circle_area(radius) { + tail round(PI * radius * radius); +} diff --git a/examples/naptime.meow b/examples/naptime.meow new file mode 100644 index 0000000..0118f15 --- /dev/null +++ b/examples/naptime.meow @@ -0,0 +1,17 @@ +// test: skip (this one sleeps) +// nap() pauses the program. In the playground, watch the output arrive live. +pawckage "nya:clawtility"; +pawckage "nya:rundamn"; + +pawction take_a_nap() { + furrever { + meow("...zZz..."); + nap(600); + purrhaps randint(1, 3) == 3 { + hiss; + } + } + meow("I woke up! ^-^"); +} + +take_a_nap(); diff --git a/examples/packages.meow b/examples/packages.meow new file mode 100644 index 0000000..7c1e343 --- /dev/null +++ b/examples/packages.meow @@ -0,0 +1,6 @@ +// Pulling in another file with pawckage. The path is relative to this file. +pawckage "./lib/kitty_math.meow"; + +purr("A cat that fell off the sofa twice has", lives_left(2), "lives left."); +purr("A round cat of radius 3 covers about", circle_area(3), "square paws."); +purr("Nine lives is", NINE_LIVES); diff --git a/examples/packages.out b/examples/packages.out new file mode 100644 index 0000000..9772e1d --- /dev/null +++ b/examples/packages.out @@ -0,0 +1,3 @@ +A cat that fell off the sofa twice has 7 lives left. +A round cat of radius 3 covers about 28 square paws. +Nine lives is 9 diff --git a/examples/recursion.meow b/examples/recursion.meow new file mode 100644 index 0000000..d8c9614 --- /dev/null +++ b/examples/recursion.meow @@ -0,0 +1,14 @@ +// Recursion, and purrhaps as an expression. +pawction fib(n) { + purrhaps n < 2 { tail n; } + tail fib(n - 1) + fib(n - 2); +} + +pawction factorial(n) { + purrhaps n <= 1 { 1 } meowtually { n * factorial(n - 1) } +} + +fur i ~ 10 { + purr("fib(" + i + ") =", fib(i)); +} +purr("10! =", factorial(10)); diff --git a/examples/recursion.out b/examples/recursion.out new file mode 100644 index 0000000..f926554 --- /dev/null +++ b/examples/recursion.out @@ -0,0 +1,11 @@ +fib(0) = 0 +fib(1) = 1 +fib(2) = 1 +fib(3) = 2 +fib(4) = 3 +fib(5) = 5 +fib(6) = 8 +fib(7) = 13 +fib(8) = 21 +fib(9) = 34 +10! = 3628800 diff --git a/examples/toy.meow b/examples/toy.meow new file mode 100644 index 0000000..546386a --- /dev/null +++ b/examples/toy.meow @@ -0,0 +1,23 @@ +// Random choices from the nya:rundamn pawckage. +pawckage "nya:rundamn"; + +scratch toy_box = ["Feather Wand", "Catnip Mouse", "Yarn Ball", "Squeaky Mouse"]; + +pawction play_with(toy) { + scratch sessions = randint(3, 6); + meow("Let's play with the", toy + "!"); + + fur session ~ sessions { + purrhaps toy == "Feather Wand" { + meow("Chasing the feather!"); + } meowtually purrhaps toy == "Squeaky Mouse" { + meow("Squeak! Squeak!"); + } meowtually { + meow("Having fun with the", toy); + } + } + + meow("I'm tired now. Time for a catnap!"); +} + +play_with(choice(toy_box)); diff --git a/examples/whiskers.meow b/examples/whiskers.meow new file mode 100644 index 0000000..8ebc8d6 --- /dev/null +++ b/examples/whiskers.meow @@ -0,0 +1,17 @@ +// A tour of the nya:whiskers pawckage. +pawckage "nya:whiskers"; + +scratch greeting = " meow meow, purr "; +purr("[" + trim(greeting) + "]"); +purr(upper(trim(greeting))); +purr(split(trim(greeting), " ")); +purr(replace(trim(greeting), "meow", "nya")); +purr(starts_with(trim(greeting), "meow"), ends_with(trim(greeting), "purr")); +purr(pawrse("42") + 1, pawrse("nine")); +purr(pad_start("7", 3, "0"), "|" + pad_end("cat", 6, ".") + "|"); +purr(reverse("stressed")); +purr(length("🐱 cat"), "characters"); + +fur letter ~ "cat" { + purr(letter, "-", letter * 3); +} diff --git a/examples/whiskers.out b/examples/whiskers.out new file mode 100644 index 0000000..956efba --- /dev/null +++ b/examples/whiskers.out @@ -0,0 +1,12 @@ +[meow meow, purr] +MEOW MEOW, PURR +["meow", "meow,", "purr"] +nya nya, purr +purrfect purrfect +43 mew +007 |cat...| +desserts +5 characters +c - ccc +a - aaa +t - ttt diff --git a/examples/yarn.meow b/examples/yarn.meow new file mode 100644 index 0000000..f3800e0 --- /dev/null +++ b/examples/yarn.meow @@ -0,0 +1,24 @@ +// Objects, the possessive 's, and a loop with a condition. +scratch cat = { + name: "Whiskers", + age: 3, + breed: "Siamese", + color: "seal point", +}; + +scratch months = cat's age * 12; +meow(cat's name, "is a", cat's color, cat's breed, "cat. He is", months, "months old."); + +pawction play_with_yarn(lives) { + meow("Let's play with yarn!"); + furrever lives > 0 { + meow(cat's name, "is playing with yarn, round", 10 - lives); + amew lives = lives - 1; + } + meow("Finished playing with yarn!"); +} + +play_with_yarn(9); + +amew cat's age = cat's age + 1; +meow("Happy birthday!", cat's name, "is now", cat's age); diff --git a/lib.js b/lib.js deleted file mode 100644 index c965486..0000000 --- a/lib.js +++ /dev/null @@ -1,4 +0,0 @@ -mergeInto(LibraryManager.library, { - bark: function() { - } -}) \ No newline at end of file diff --git a/makefile b/makefile deleted file mode 100644 index 4f7e3fd..0000000 --- a/makefile +++ /dev/null @@ -1,5 +0,0 @@ -.PHONY: -wasm: - cargo build --release --target wasm32-unknown-emscripten -Z build-std=panic_abort,std - cp target/wasm32-unknown-emscripten/release/meowscript.js site/public/meowscript.js - cp target/wasm32-unknown-emscripten/release/meowscript.wasm site/public/meowscript.wasm \ No newline at end of file diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..c38c8a8 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "stable" +components = ["rustfmt", "clippy"] +targets = ["wasm32-unknown-unknown"] diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..ed49ca7 --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,2 @@ +edition = "2024" +max_width = 100 diff --git a/site/.gitignore b/site/.gitignore index c87c9b3..43bcb3e 100644 --- a/site/.gitignore +++ b/site/.gitignore @@ -1,12 +1,7 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - # dependencies /node_modules /.pnp -.pnp.js - -# testing -/coverage +.pnp.* # next.js /.next/ @@ -25,8 +20,8 @@ yarn-debug.log* yarn-error.log* .pnpm-debug.log* -# local env files -.env*.local +# env files +.env* # vercel .vercel diff --git a/site/README.md b/site/README.md index 72dcdef..7042792 100644 --- a/site/README.md +++ b/site/README.md @@ -1,96 +1,18 @@ -# MeowScript -## the purrfect programming language +# MeowScript site - -Meow Script is a simple interpreter inspired by cats, designed to make programming fun and intuitive. - -## Table of Contents - -- [Introduction](#introduction) -- [Features](#features) -- [Getting Started](#getting-started) -- [Documentation](#documentation) -- [Playground](#playground) -- [Contributing](#contributing) -- [License](#license) - -## Introduction - -Welcome to the Meow Script Interpreter repository! Meow Script is a playful and easy-to-learn programming language that cat lovers will adore. This README provides an overview of the project, its features, and how to get started. - -## Features - -- 🐱 Simple and cat-themed syntax. -- 🎮 Interactive playground to experiment with Meow Script. -- 📚 Comprehensive documentation for learning and reference. -- 🚀 Built with Next.js for a fast and responsive web experience. - -## Getting Started - -Follow these steps to set up the Meow Script interpreter locally: - -1. Clone the repository: - - ```bash - git clone https://github.com/alenvelocity/meowscript.git -Install dependencies: - -bash -Copy code -cd meow-script-interpreter -npm install -Start the development server: - -bash -Copy code -npm run dev -Open your browser and navigate to http://localhost:3000 to access the MeowScript interpreter. - -Documentation -Explore our comprehensive documentation to learn more about Meow Script's syntax, features, and how to use it effectively. Whether you're a beginner or an experienced developer, our documentation will help you get started. - -Playground -Visit our interactive playground to experiment with Meow Script code in real-time. It's a great place to test your ideas and see how Meow Script works. - -Contributing -We welcome contributions from the open-source community. If you'd like to contribute to the Meow Script Interpreter project, please follow our contributing guidelines. - - -Happy coding! 😺 - - - -This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). - -## Getting Started - -First, run the development server: +The playground and docs at [meowscript.vercel.app](https://meowscript.vercel.app). Next.js 16, React 19, Tailwind 4, CodeMirror 6. The interpreter runs in the browser as WebAssembly, inside a Web Worker so a runaway loop can be stopped. ```bash -npm run dev -# or -yarn dev +pnpm install +pnpm dev # http://localhost:3000 ``` -Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. - -You can start editing the page by modifying `pages/index.tsx`. The page auto-updates as you edit the file. - -[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.ts`. - -The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages. - -## Learn More - -To learn more about Next.js, take a look at the following resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. - -You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome! - -## Deploy on Vercel +Three things are generated and committed, so the site builds anywhere without Rust: -The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. +| Command | Produces | From | +| ------------------ | ---------------------------- | -------------------------------------------- | +| `pnpm build:wasm` | `public/wasm/*` | `crates/meowscript-wasm` via wasm-pack | +| `pnpm sync` | `src/generated/examples.ts` | `../examples/*.meow` | +| `pnpm sync` | `src/generated/stdlib.ts` | `meowscript packages --json` (needs cargo) | -Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details. +`pnpm build` runs `pnpm sync` first. When the sources are not around (on Vercel, say), the sync scripts leave the committed files alone. After changing the Rust code, run `pnpm build:wasm` and `pnpm sync` and commit the results. diff --git a/site/components/Code.tsx b/site/components/Code.tsx deleted file mode 100644 index 970eebd..0000000 --- a/site/components/Code.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import 'prismjs/themes/prism-tomorrow.css' - -import classNames from 'classnames' -import Prism, { highlight } from 'prismjs' -import React, { useEffect, useRef, useState } from 'react' -import Editor from 'react-simple-code-editor' -import useBreakpoint from 'use-breakpoint' - -import { MeowScriptWorker } from '../lib/MeowScriptWorker' -import { createMeowScriptWorker } from '../lib/create_meowscript_worker' -import { examples } from '../lib/example' -import { meowScriptSyntax } from '../lib/syntax' -import CodeDropdown from './CodeDropdown' - -const BREAKPOINTS = { mobile: 0, tablet: 768, desktop: 1280 } - -const defaultText = - '

Let\'s paw-ceed with some purr-gramming!

' - -const hightlightWithLineNumbers = (input: string) => - highlight(input, meowScriptSyntax, 'meowScript') - .split('\n') - .map((line, i) => `${i + 1}${line}`) - .join('\n') - -const Code = () => { - const [code, setCode] = useState(examples.yarn) - const [terminalText, setTerminalText] = useState(defaultText) - const { breakpoint } = useBreakpoint(BREAKPOINTS, 'mobile') - - const [loaded, setLoaded] = useState(false) - const [running, setRunning] = useState(false) - const [isUpsideDown, setIsUpsideDown] = useState(false) - - const meowScriptRef = useRef() - const rightsideUpCached = useRef('') - - const switchExample = (code: string) => { - rightsideUpCached.current = code - setIsUpsideDown(false) - setCode(code) - } - - useEffect(() => { - const run = async () => { - const [meowScript, worker] = await createMeowScriptWorker() - worker.onmessage = e => { - switch (e.data.type) { - case 'stderr': { - setTerminalText( - text => - text + - `${e.data.data}` + - '
' - ) - break - } - case 'stdout': { - setTerminalText(text => text + e.data.data + '
') - break - } - } - } - meowScriptRef.current = meowScript - setLoaded(true) - } - run() - Prism.highlightAll() - }, []) - return ( -
-
-
-
- hightlightWithLineNumbers(code)} - onValueChange={(v: string) => setCode(v || '')} - value={code} - /> -
-
-
-
- - -
- -
-
-
-
-

- Running with WebAssembly (Wasm) compiled from Rust ✨ -

-
-
-
-
- ) -} - -export default Code diff --git a/site/components/CodeDropdown.tsx b/site/components/CodeDropdown.tsx deleted file mode 100644 index eb67bb9..0000000 --- a/site/components/CodeDropdown.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { Menu, Transition } from '@headlessui/react' -import { ChevronDownIcon } from '@heroicons/react/solid' -import classNames from 'classnames' -import React, { Fragment, useState } from 'react' - -import { examples } from '../lib/example' - -const exampleList = [ - 'yarn.meow', - 'fizzbuzz.meow', - 'toy.meow', - 'naptime.meow' -] - -const getExample = (name: string) => { - return examples[name.split('.')[0]] -} - -const Item = ({ - active, - name, - onClick -}: { - active: boolean - name: string - onClick: () => void -}) => { - return ( - - ) -} - -type Props = { - setCode: (s: string) => void -} - -const CodeDropdown = ({ setCode }: Props) => { - const [activeExample, setActiveExample] = useState(exampleList[0]) - return ( - -
- - {activeExample} - -
- - - -
- {exampleList.map(name => { - return ( - - {() => ( - { - setCode(getExample(name)) - setActiveExample(name) - }} - /> - )} - - ) - })} -
-
-
-
- ) -} - -export default CodeDropdown diff --git a/site/components/Features.tsx b/site/components/Features.tsx deleted file mode 100644 index 0f5952a..0000000 --- a/site/components/Features.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from 'react' - -const features = [ - { - name: 'Cat-inspired Keywords', - description: 'From purrhaps instead of if to meowtually instead of else, Meowscript adds a whole new level of catness to your programs.', - icon: '🐈' - }, - { - name: 'Paw-some Syntax', - description: - 'While being not easy to read, the syntax makes sure you have a Paw-some time writing code.', - icon: '😼' - }, - { - name: 'Fur-midable Performance', - description: 'Meowscript may be cute, but it\'s no kitten when it comes to performance. The language is designed to be fast, well faster than Python atleast.', - icon: '🙀' - } -] - -const Features = () => { - return ( -
-
-
- {features.map((feature, i) => ( -
-
-
- {feature.icon} -
-
-
- {feature.name}{' '} -
-
-
-
- {feature.description} -
-
- ))} -
-
-
- ) -} - -export default Features diff --git a/site/components/Head.tsx b/site/components/Head.tsx deleted file mode 100644 index f28379f..0000000 --- a/site/components/Head.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import NextHead from 'next/head' -import React from 'react' - -type MetaTag = { - name: string - content: string -} - -const metaTag = (name: string, content: string) => ({ name, content }) - -const title = '🐾 MeowScript' -const description = 'The Purrfect Programming Language' -const imageUrl = '/image.png' -const author = '@alenvelocity' - -const metaTags: MetaTag[] = [ - metaTag('description', description), - metaTag('og:title', title), - metaTag('og:description', description), - metaTag('og:image', imageUrl), - metaTag('twitter:card', 'summary'), - metaTag('twitter:site', title), - metaTag('twitter:title', title), - metaTag('twitter:creator', author), - metaTag('twitter:description', description), - metaTag('twitter:image', imageUrl) -] - -const Head = () => ( - - {title} - {metaTags.map(({ name, content }) => ( - - ))} - -) - -export default Head diff --git a/site/content/docs.md b/site/content/docs.md new file mode 100644 index 0000000..f783f4a --- /dev/null +++ b/site/content/docs.md @@ -0,0 +1,255 @@ +# MeowScript reference + +MeowScript is a small, dynamically typed scripting language. Its keywords are cat puns, its values are the usual ones under different names, and its interpreter is written in Rust. This page is the whole language. + +If you just want to poke at it, the [playground](/#playground) runs everything on this page. Every listing has a *Try it* button. + +## A first program + +```meow +scratch cat = { name: "Whiskers", lives: 9 }; + +pawction describe(c) { + tail c's name + " has " + c's lives + " lives"; +} + +meow(describe(cat)); +``` + +Statements end with a semicolon. You may leave it off before a closing `}` and at the very end of a file, and after anything that already ends in a `}` such as a `purrhaps` or a `pawction` declaration. + +Comments are `// to the end of the line` or `/* anywhere in between */`. + +## Printing + +`meow` prints its arguments separated by spaces, announced with `Meow!`. `purr` prints them without the announcement. `log` is the same as `purr`, for people who miss JavaScript. + +```meow +meow("hello", 42, purrfect); // Meow! hello 42 purrfect +purr("hello", 42, purrfect); // hello 42 purrfect +``` + +## Values + +| Type | Called | Looks like | +| --- | --- | --- | +| number | `number` | `42`, `3.5`, `1_000`, `2e3` | +| string | `whiskers` | `"meow"` | +| boolean | `boolean` | `purrfect`, `clawful` | +| null | `mew` | `mew` | +| array | `furrball` | `[1, 2, 3]` | +| object | `object` | `{ name: "Tom", age: 3 }` | +| function | `pawction` | `pawction(a, b) { tail a + b; }` | + +`furreal` tells you which one you have: `furreal []` is `"furrball"`. + +### Numbers + +All numbers are 64-bit floats. Whole numbers print without a decimal point. Dividing by zero is an error rather than infinity. + +### Whiskers + +Strings use double quotes and understand `\n`, `\t`, `\"`, `\\`, and `\u{1F431}`. They may span lines. + +`+` joins whiskers with anything, converting the other side the way `meow` would print it. `*` repeats. + +```meow +purr("cats: " + 3); // cats: 3 +purr("=^.^= " * 3); // =^.^= =^.^= =^.^= +purr("meow"[0]); // m +purr("meow"[-1]); // w +``` + +### Furrballs + +Furrballs are arrays. Indexes start at 0 and negative indexes count from the end. Reading past either end is an error, not `mew`. + +```meow +scratch toys = ["yarn", "box"]; +purr(toys[0], toys[-1]); // yarn box +amew toys[1] = "sunbeam"; +purr(toys); // ["yarn", "sunbeam"] +``` + +Furrballs and objects are shared, not copied. Two variables pointing at the same furrball see the same changes, like in JavaScript or Python. `==` compares contents, though, so `[1, 2] == [1, 2]` is `purrfect`. + +### Objects + +Objects are ordered maps from whiskers to values. Keys can be written bare or quoted; `{ name }` is short for `{ name: name }`; `[expr]` computes a key. + +Read a key with `obj's key` or `obj["key"]`. A key that isn't there gives `mew`. Write one with `amew`. + +```meow +scratch cat = { name: "Tom", "fur color": "grey" }; +purr(cat's name, cat["fur color"]); +amew cat's age = 4; +purr("age" ~ cat); // purrfect +``` + +## Variables + +`scratch` declares a variable in the current scope. `amew` changes one that already exists, searching outward through enclosing scopes. Using `amew` on a name that was never scratched is an error, and so is reading one, with a *did you mean* hint when there's a close match. + +```meow +scratch lives = 9; +purrhaps purrfect { + amew lives = lives - 1; // changes the outer `lives` + scratch lives = 100; // a new, inner `lives` +} +purr(lives); // 8 +``` + +Blocks, loops, and pawction calls each open a new scope. + +## Operators + +From loosest to tightest binding. Operators on the same row are applied left to right. + +| Operators | Meaning | +| --- | --- | +| `\|\|` | or (short-circuits, returns the deciding value) | +| `&&` | and (short-circuits, returns the deciding value) | +| `==` `!=` | equal, not equal (by contents) | +| `<` `>` `<=` `>=` `~` | compare; `~` is "is in" | +| `\|` | bitwise or | +| `^` | bitwise xor | +| `&` | bitwise and | +| `<<` `>>` | shift | +| `+` `-` | add, subtract (and join whiskers or furrballs) | +| `*` `/` `%` | multiply, divide, remainder (and repeat whiskers) | +| `-x` `!x` `furreal x` | negate, not, type of | +| `f(x)` `a[i]` `a's b` | call, index, property | + +This is the ordering Python and Rust use, so `6 & 3 == 2` means `(6 & 3) == 2`. + +`~` works on all three containers: `2 ~ [1, 2]`, `"age" ~ cat`, and `"ow" ~ "meow"`. + +Only `mew` and `clawful` are falsy. `0`, `""`, and `[]` are all truthy, so `purrhaps count { ... }` doesn't skip zero. + +## Conditions + +`purrhaps` is if, `meowtually` is else. Parentheses around the condition are optional. Chains work as you'd expect. + +```meow +purrhaps hour < 6 { + meow("too early"); +} meowtually purrhaps hour < 12 { + meow("breakfast time"); +} meowtually { + meow("second breakfast time"); +} +``` + +`purrhaps` is an expression. A block's value is the value of its last statement, so you can use it on the right of a `scratch` or as the last line of a pawction. + +```meow +scratch mood = purrhaps fed { "purring" } meowtually { "plotting" }; +``` + +## Loops + +`furrever` loops forever, or while a condition holds if you give one. `hiss` breaks out; `continue` skips to the next round. + +```meow +scratch n = 0; +furrever { + amew n = n + 1; + purrhaps n % 2 == 0 { continue; } + purrhaps n > 7 { hiss; } + purr(n); +} + +furrever n > 0 { + amew n = n - 3; +} +``` + +`fur` walks over something: the items of a furrball, the characters of whiskers, the keys of an object, or the numbers from 0 up to (not including) a number. + +```meow +fur toy ~ ["yarn", "box"] { purr(toy); } +fur letter ~ "cat" { purr(letter); } +fur key ~ { a: 1, b: 2 } { purr(key); } +fur i ~ 3 { purr(i); } // 0 1 2 +``` + +## Pawctions + +Declare a named pawction, or make an anonymous one and keep it in a variable. Either way they are values: pass them around, return them, put them in furrballs. + +```meow +pawction add(a, b) { + tail a + b; +} + +scratch double = pawction(x) { x * 2 }; + +purr(add(2, 3), double(4)); +``` + +`tail` returns. If a pawction runs off the end, it returns the value of its last statement, which is why `double` above works without one. A pawction with no useful last statement returns `mew`. + +Pawctions close over the scope they were made in: + +```meow +pawction counter() { + scratch n = 0; + tail pawction() { + amew n = n + 1; + tail n; + }; +} + +scratch next = counter(); +next(); next(); +purr(next()); // 3 +``` + +Calling with the wrong number of arguments is an error. So is nesting calls more than a thousand deep, which usually means a recursion with no way out. + +## Pawckages + +`pawckage` pulls in a library. The built-in ones start with `nya:` and are listed under [Standard library](#standard-library). + +```meow +pawckage "nya:furrball"; +pawckage "nya:catculator"; + +purr(map(range(5), pawction(n) { round(sqrt(n)) })); +``` + +Any `.meow` file is also a pawckage. Everything `scratch`ed or declared at its top level becomes available to whoever imports it. Paths are relative to the importing file, and the `.meow` can be left off. + +```meow +pawckage "./lib/kitty_math"; +purr(lives_left(2)); +``` + +File pawckages need a filesystem, so they work from the command line but not in the browser playground. + +## Errors + +Every error says what went wrong and points at where: + +``` +Furbidden! type error: `-` doesn't work between whiskers and a number + --> toys.meow:4:12 + | + 4 | scratch n = "nine" - 1; + | ^^^^^^^^^^ +``` + +The exclamation tells you the kind: *Meowch!* for syntax, *Meow-sterious!* for an unknown name, *Furbidden!* for a type mismatch, *Paws off!* for the wrong number of arguments, *Lost kitten!* for a pawckage that can't be found, *Scratched!* for file trouble, and *Hiss!* for everything else at run time. + +## The command line + +``` +cargo install --git https://github.com/AlenVelocity/MeowScript meowscript-cli + +meowscript # start the REPL +meowscript hello.meow # run a file +meowscript eval "1 + 2" # evaluate a snippet +meowscript packages # list the nya: pawckages +``` + +The REPL keeps reading lines while a block is open, prints the value of each expression, and leaves when you type `scram`. diff --git a/site/eslint.config.mjs b/site/eslint.config.mjs new file mode 100644 index 0000000..51f2730 --- /dev/null +++ b/site/eslint.config.mjs @@ -0,0 +1,11 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + globalIgnores([".next/**", "out/**", "build/**", "next-env.d.ts", "public/wasm/**", "src/generated/**"]), +]); + +export default eslintConfig; diff --git a/site/lib/MeowScriptWorker.ts b/site/lib/MeowScriptWorker.ts deleted file mode 100644 index 345dc60..0000000 --- a/site/lib/MeowScriptWorker.ts +++ /dev/null @@ -1,69 +0,0 @@ -import * as Comlink from 'comlink' - -// @ts-ignore -// eslint-disable-next-line no-undef -importScripts('/meowscript.js') - -export class MeowScriptWorker { - module: any - - async initWasm() { - // @ts-ignore - // eslint-disable-next-line no-undef - this.module = await MeowScript({ - mainScriptUrlOrBlob: '/meowscript.js', - locateFile: (path: string) => { - if (path === 'meowscript.wasm') { - return `/${path}` - } - }, - print: (t: string) => { - // @ts-ignore - postMessage({ type: 'stdout', data: t }) - }, - printErr: (t: string) => { - // @ts-ignore - postMessage({ type: 'stderr', data: t }) - } - }) - - console.log(this.module) - } - - run(code: string, isUpsideDown: boolean) { - const ptr = this.passStringToWasm(code) - - // `_interpret()` will take ownership of `ptr` and deallocate it - this.module._interpret(ptr, isUpsideDown) - } - - flip(code: string, upsideDown: boolean): string { - const ptr = this.passStringToWasm(code) - - const lenPtr = this.module._alloc(4) - const outputPtr = this.module._flip_text(ptr, lenPtr, upsideDown) - const outputLen = this.getLen(lenPtr) - - const str = this.module.UTF8ToString(outputPtr, outputLen) - - this.module._dealloc(lenPtr, 4) - this.module._dealloc(outputPtr, outputLen) - - return str - } - - passStringToWasm(str: string) { - const intArray = this.module.intArrayFromString(str) - const ptr = this.module._alloc(intArray.length) - this.module.writeArrayToMemory(intArray, ptr) - - return ptr - } - - getLen(lenPtr: number) { - const buf = new Uint8Array(this.module.HEAPU8, lenPtr, 4) - return (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0] - } -} - -Comlink.expose(MeowScriptWorker) diff --git a/site/lib/create_meowscript_worker.ts b/site/lib/create_meowscript_worker.ts deleted file mode 100644 index de8eb0f..0000000 --- a/site/lib/create_meowscript_worker.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as Comlink from 'comlink' - -import type { MeowScriptWorker } from './MeowScriptWorker' - -export const createMeowScriptWorker = async (): Promise< - [wrapped: MeowScriptWorker, underlying: Worker] -> => { - // @ts-ignore - const worker = new Worker(new URL('./MeowScriptWorker.ts', import.meta.url)) - - // @ts-ignore - const WorkerClass: new ( - ..._args: ConstructorParameters - ) => // @ts-ignore - InstanceType> = Comlink.wrap(worker) - - const meowScriptWorker: MeowScriptWorker = await new WorkerClass() - await meowScriptWorker.initWasm() - - return [meowScriptWorker, worker] -} diff --git a/site/lib/docs.md b/site/lib/docs.md deleted file mode 100644 index d172251..0000000 --- a/site/lib/docs.md +++ /dev/null @@ -1,98 +0,0 @@ -# Docs -`MeowScript` is a dynamically-typed and interpreted language inspired by cat-puns - -## Keywords - -- `scratch`: Used to declare a variable. For example, `scratch x = 10;` declares a variable `x` with the value `10`. - -- `amew`: Used to reassign a new value to an existing variable. For example, `amew x = 5;` changes the value of the variable `x` to `5`. -- `pawction`: Used to define a function. For example, - ``` - scratch greet = pawction() { - meow("Meow!"); - }; - ``` -defines a function `greet` that prints "Meow!" to the console. -- `purrhaps`: Used to start an if statement. Example: - ``` - purrhaps x > y { - meow(x is greater than y!"); - } - ``` - - -- `meowtually`: Used to start the else block of an if statement. Example: - -``` -purrhaps x > y { - meow("x is greater than y!"); -} meowtually { - meow("x is not greater than y!"); -} -``` - - -- `tail`: Used to return a value from a function. Example -``` -scratch add = pawction(a, b) { - tail a + b; -} -``` - -- `pawckage`: Used to include external code from other packages. For example, -``` -pawckage "file.meow"; -``` -> NOTE: SEMICOLON IS NOT OPTIONAL - - -## Types / Variables - -All of the types are similar to other C-like languages, but we have specific names for certain types - -`whiskers` - Strings - -Eg: ```scratch say = "Meow!";``` - -Note: They must be enclosed in double quotes - -`furrball` - Arrays - -Eg: ```scratch words = ["Meow", "Nya", "Nyo"];``` - -Boolean: -- `purrfect`: Represents the boolean value `true`. -- `clawful`: Represents the boolean value `false`. - -The `furreal` operator can be used to check the type of a variable. For example, `furreal x;` checks the type of variable `x`. - -## Loops - -There's only a single type of loop in MeowScript - -The keyword `furrever` can be used to start a loop that runs indefinitely. For example, `furrever { scratch("Meow!"); }` runs the block of code inside the loop forever. - -### Loop Control -The following keywords can be used for manupilating the contorl flow of the loop - -- `hiss`: Used to break out of a loop. For example, `furrever { hiss; }` will break the loop immediately. -- `continue`: Used to skip the current iteration and continue to the next one in a loop. For example, `pawction loop() { furrever { continue; } }` will run the loop indefinitely but will skip each iteration. - -## Standard Libraries - -Meowscript comes with a lot of Builtin Functions. - -### General - - -meow() -- Prints the given values into the stdout -``` -meow([...values]) -``` - -The following will be documented soon. Refer the [src](https://github.com/AlenVelocity/MeowScript/tree/master/src/std_library) for now -### Lib 1 nya:clawtility -### Lib 2 nya:catculator -### Lib 3 nya:whiskers -### Lib 2 nya:furrball diff --git a/site/lib/docs.ts b/site/lib/docs.ts deleted file mode 100644 index d5c1957..0000000 --- a/site/lib/docs.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { readFile } from 'fs' -import { join } from 'path' - -const docs = join(process.cwd(), 'lib', 'docs.md') - -export const readDocsFile = async () => { - return new Promise((resolve, reject) => { - readFile( - docs, - { - encoding: 'utf8' - }, - (err, data) => { - if (err) return reject(err) - return resolve(data) - } - ) - }) -} diff --git a/site/lib/example.ts b/site/lib/example.ts deleted file mode 100644 index 26ac9d7..0000000 --- a/site/lib/example.ts +++ /dev/null @@ -1,133 +0,0 @@ -const naptime = ` -// --------- NOTE ---------------------------------------------------------------- -// This program will not function properly in the browser due to WASM Limitations. -// Please use a compiled Binary -// ------------------------------------------------------------------------------- -pawckage "nya:clawtility"; -pawckage "nya:catculator"; - -scratch take_a_nap = pawction () { - - scratch done = 0; - - furrever { - meow("...zZz..."); - nap(3000); - - amew done = round(random(1, 3)); - - purrhaps (done == 3) { - hiss; - } - } - - meow("I woke up! ^-^") -}; - -take_a_nap();` - -const yarn = `pawckage "nya:catculator"; -pawckage "nya:clawtility"; - -scratch cat = { - "name": "Whiskers", - "age": 3, - "breed": "Siamese", - "color": "seal point", -}; - -meow(""); -scratch age = cat's age * 12; - -meow(cat's name, "is a", cat's color, cat's breed, "cat!", "He is", age, "months old."); - -scratch play_with_yarn = pawction () { - scratch yarn_length = 0; - - meow("Let's play with yarn!"); - - scratch lives = 9; - furrever { - purrhaps (yarn_length == lives) { - hiss; - } - meow(cat's name, "is playing with yarn loop ", -lives + 10); - amew lives = lives - 1; - } - - meow("Finished playing with yarn!"); -}; - - -play_with_yarn();` - -const toy = `pawckage "nya:clawtility"; -pawckage "nya:catculator"; - -scratch toy_box = ["Feather Wand", "Catnip Mouse", "Yarn Ball", "Squeaky Mouse"]; - -scratch play_with_toy = pawction (toy) { - scratch play_count = round(random(3, 6)); - scratch play_session = 1; - - scratch t = toy_box[toy]; - meow("Let's play with the ", t); - - furrever { - purrhaps (play_session != play_count) { - purrhaps (toy == 1) { - meow("Chasing the feather!"); - } meowtually purrhaps (toy == 4) { - meow("Squeak! Squeak!"); - } meowtually { - meow("Having fun with the ", t); - } - amew play_session = play_session + 1; - } meowtually { - meow("I'm tired now. Time for a catnap!"); - hiss; - } - } -}; - -scratch main = pawction() { - - play_with_toy(round(random(0, 3))); - -}; - -main(); -` - -const fizzbuzz = ` -scratch fizzbuzz = pawction (x) { - purrhaps (x % 15 == 0) { - tail "FizzBuzz"; - } meowtually purrhaps (x % 3 == 0) { - tail "Fizz"; - } meowtually purrhaps (x % 5 == 0) { - tail "Buzz"; - } meowtually { - tail x; - } -}; - - - -scratch i = 0; - -furrever { - purrhaps (i == 100) { - hiss; - } - meow(fizzbuzz(i)); - amew i = i + 1; -}` - - -export const examples: Record = { - naptime, - yarn, - toy, - fizzbuzz -} diff --git a/site/lib/syntax.ts b/site/lib/syntax.ts deleted file mode 100644 index 558cc8a..0000000 --- a/site/lib/syntax.ts +++ /dev/null @@ -1,25 +0,0 @@ -import Prism, { languages } from 'prismjs' - -export const meowScriptSyntax = languages.extend('clike', { - comment: [ - { - pattern: /\/\// - }, - { - pattern: /(^|[^\\:])\/\/.*/, - lookbehind: false, - greedy: true - } - ], - string: { - pattern: /(["`])(?:\\[\s\S]|(?!\1)[^\\])*\1/, - greedy: true - }, - keyword: /\b(?:scratch|amew|pawction|purrhaps|meowtually|tail|pawckage|purrfect|clawful|furreal|furrever|hiss|continue)\b/, - boolean: /\b(?:BUGGER ALL|NAH|YEAH)\b/, - number: /(?:(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i, - operator: - /[*/%^!=]=?|~|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./ -}) - -Prism.languages.meowScript = meowScriptSyntax diff --git a/site/next.config.js b/site/next.config.js deleted file mode 100644 index ae88795..0000000 --- a/site/next.config.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - reactStrictMode: true, - swcMinify: true, -} - -module.exports = nextConfig diff --git a/site/next.config.ts b/site/next.config.ts new file mode 100644 index 0000000..1210056 --- /dev/null +++ b/site/next.config.ts @@ -0,0 +1,15 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + reactStrictMode: true, + turbopack: { + rules: { + "*.css": { + loaders: ["@tailwindcss/turbopack"], + as: "*.css", + }, + }, + }, +}; + +export default nextConfig; diff --git a/site/package-lock.json b/site/package-lock.json deleted file mode 100644 index 029de72..0000000 --- a/site/package-lock.json +++ /dev/null @@ -1,2506 +0,0 @@ -{ - "name": "site", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "site", - "version": "0.1.0", - "dependencies": { - "@headlessui/react": "^1.7.15", - "@heroicons/react": "^1.0.6", - "@tailwindcss/aspect-ratio": "^0.4.2", - "@types/node": "20.4.2", - "@types/react": "18.2.15", - "@types/react-dom": "18.2.7", - "comlink": "^4.4.1", - "next": "13.4.10", - "prismjs": "^1.29.0", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-markdown": "^8.0.7", - "react-simple-code-editor": "^0.13.1", - "typescript": "5.1.6", - "use-breakpoint": "^3.1.1" - }, - "devDependencies": { - "@types/classnames": "^2.3.1", - "@types/prismjs": "^1.26.0", - "autoprefixer": "^10.4.14", - "postcss": "^8.4.26", - "tailwindcss": "^3.3.3" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@headlessui/react": { - "version": "1.7.15", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.15.tgz", - "integrity": "sha512-OTO0XtoRQ6JPB1cKNFYBZv2Q0JMqMGNhYP1CjPvcJvjz8YGokz8oAj89HIYZGN0gZzn/4kk9iUpmMF4Q21Gsqw==", - "dependencies": { - "client-only": "^0.0.1" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "^16 || ^17 || ^18", - "react-dom": "^16 || ^17 || ^18" - } - }, - "node_modules/@heroicons/react": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-1.0.6.tgz", - "integrity": "sha512-JJCXydOFWMDpCP4q13iEplA503MQO3xLoZiKum+955ZCtHINWnx26CUxVxxFQu/uLb4LW3ge15ZpzIkXKkJ8oQ==", - "peerDependencies": { - "react": ">= 16" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, - "node_modules/@next/env": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.10.tgz", - "integrity": "sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==" - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.10.tgz", - "integrity": "sha512-4bsdfKmmg7mgFGph0UorD1xWfZ5jZEw4kKRHYEeTK9bT1QnMbPVPlVXQRIiFPrhoDQnZUoa6duuPUJIEGLV1Jg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.10.tgz", - "integrity": "sha512-ngXhUBbcZIWZWqNbQSNxQrB9T1V+wgfCzAor2olYuo/YpaL6mUYNUEgeBMhr8qwV0ARSgKaOp35lRvB7EmCRBg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.10.tgz", - "integrity": "sha512-SjCZZCOmHD4uyM75MVArSAmF5Y+IJSGroPRj2v9/jnBT36SYFTORN8Ag/lhw81W9EeexKY/CUg2e9mdebZOwsg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.10.tgz", - "integrity": "sha512-F+VlcWijX5qteoYIOxNiBbNE8ruaWuRlcYyIRK10CugqI/BIeCDzEDyrHIHY8AWwbkTwe6GRHabMdE688Rqq4Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.10.tgz", - "integrity": "sha512-WDv1YtAV07nhfy3i1visr5p/tjiH6CeXp4wX78lzP1jI07t4PnHHG1WEDFOduXh3WT4hG6yN82EQBQHDi7hBrQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.10.tgz", - "integrity": "sha512-zFkzqc737xr6qoBgDa3AwC7jPQzGLjDlkNmt/ljvQJ/Veri5ECdHjZCUuiTUfVjshNIIpki6FuP0RaQYK9iCRg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.10.tgz", - "integrity": "sha512-IboRS8IWz5mWfnjAdCekkl8s0B7ijpWeDwK2O8CdgZkoCDY0ZQHBSGiJ2KViAG6+BJVfLvcP+a2fh6cdyBr9QQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.10.tgz", - "integrity": "sha512-bSA+4j8jY4EEiwD/M2bol4uVEu1lBlgsGdvM+mmBm/BbqofNBfaZ2qwSbwE2OwbAmzNdVJRFRXQZ0dkjopTRaQ==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.10.tgz", - "integrity": "sha512-g2+tU63yTWmcVQKDGY0MV1PjjqgZtwM4rB1oVVi/v0brdZAcrcTV+04agKzWtvWroyFz6IqtT0MoZJA7PNyLVw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", - "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@tailwindcss/aspect-ratio": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.2.tgz", - "integrity": "sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==", - "peerDependencies": { - "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" - } - }, - "node_modules/@types/classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-zeOWb0JGBoVmlQoznvqXbE0tEC/HONsnoUNH19Hc96NFsTAwTXbTqb8FMYkru1F/iqp7a18Ws3nWJvtA1sHD1A==", - "deprecated": "This is a stub types definition. classnames provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "classnames": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/hast": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.5.tgz", - "integrity": "sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@types/mdast": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", - "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - }, - "node_modules/@types/node": { - "version": "20.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", - "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==" - }, - "node_modules/@types/prismjs": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.0.tgz", - "integrity": "sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "node_modules/@types/react": { - "version": "18.2.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.15.tgz", - "integrity": "sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", - "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" - }, - "node_modules/@types/unist": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", - "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==" - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], - "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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==" - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "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" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001517", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", - "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", - "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" - } - ] - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==", - "dev": true - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "node_modules/comlink": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz", - "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==" - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - }, - "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/electron-to-chromium": { - "version": "1.4.466", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.466.tgz", - "integrity": "sha512-TSkRvbXRXD8BwhcGlZXDsbI2lRoP8dvqR7LQnqQNk9KxXBc4tG8O+rTuXgTyIpEdiqSGKEBSqrxdqEntnjNncA==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, - "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==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/hast-util-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", - "dependencies": { - "has": "^1.0.3" - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jiti": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", - "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "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==" - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/mdast-util-definitions": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", - "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", - "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dependencies": { - "@types/mdast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-destination": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/next": { - "version": "13.4.10", - "resolved": "https://registry.npmjs.org/next/-/next-13.4.10.tgz", - "integrity": "sha512-4ep6aKxVTQ7rkUW2fBLhpBr/5oceCuf4KmlUpvG/aXuDTIf9mexNSpabUD6RWPspu6wiJJvozZREhXhueYO36A==", - "dependencies": { - "@next/env": "13.4.10", - "@swc/helpers": "0.5.1", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1", - "watchpack": "2.4.0", - "zod": "3.21.4" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=16.8.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.4.10", - "@next/swc-darwin-x64": "13.4.10", - "@next/swc-linux-arm64-gnu": "13.4.10", - "@next/swc-linux-arm64-musl": "13.4.10", - "@next/swc-linux-x64-gnu": "13.4.10", - "@next/swc-linux-x64-musl": "13.4.10", - "@next/swc-win32-arm64-msvc": "13.4.10", - "@next/swc-win32-ia32-msvc": "13.4.10", - "@next/swc-win32-x64-msvc": "13.4.10" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "fibers": ">= 3.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "fibers": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "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==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss": { - "version": "8.4.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.26.tgz", - "integrity": "sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dependencies": { - "camelcase-css": "^2.0.1" - }, - "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" - } - }, - "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - }, - "engines": { - "node": ">= 14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dependencies": { - "postcss-selector-parser": "^6.0.11" - }, - "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/property-information": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", - "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/react-markdown": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-8.0.7.tgz", - "integrity": "sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/prop-types": "^15.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "prop-types": "^15.0.0", - "property-information": "^6.0.0", - "react-is": "^18.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "@types/react": ">=16", - "react": ">=16" - } - }, - "node_modules/react-simple-code-editor": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/react-simple-code-editor/-/react-simple-code-editor-0.13.1.tgz", - "integrity": "sha512-XYeVwRZwgyKtjNIYcAEgg2FaQcCZwhbarnkJIV20U2wkCU9q/CPFBo8nRXrK4GXUz3AvbqZFsZRrpUTkqqEYyQ==", - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dependencies": { - "pify": "^2.3.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/remark-parse": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", - "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-rehype": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", - "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-to-hast": "^12.1.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", - "dependencies": { - "loose-envify": "^1.1.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/style-to-object": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz", - "integrity": "sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==", - "dependencies": { - "inline-style-parser": "0.1.1" - } - }, - "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/sucrase": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", - "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tailwindcss": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", - "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.18.2", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" - }, - "node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==" - }, - "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-generated": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", - "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "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" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/use-breakpoint": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use-breakpoint/-/use-breakpoint-3.1.1.tgz", - "integrity": "sha512-zJ2a9sqdiOnsYwjZryOuq+SIDRP2vWsl7iWDUJ7Xid9t29zF1oLZjkEE+uRooPB/98YT+784rCFIvmKhV6VqLg==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "react": ">=16.8", - "react-dom": ">=16.8" - } - }, - "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==" - }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/site/package.json b/site/package.json index efee42c..6854539 100644 --- a/site/package.json +++ b/site/package.json @@ -1,35 +1,40 @@ { - "name": "site", - "version": "0.1.0", + "name": "meowscript-site", + "version": "1.0.0", "private": true, + "description": "Playground and docs for MeowScript, the purrfect programming language", "scripts": { "dev": "next dev", + "prebuild": "pnpm sync", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "eslint", + "typecheck": "tsc --noEmit", + "sync": "node scripts/sync-examples.mjs && node scripts/sync-stdlib.mjs", + "build:wasm": "node scripts/build-wasm.mjs" }, "dependencies": { - "@headlessui/react": "^1.7.15", - "@heroicons/react": "^1.0.6", - "@tailwindcss/aspect-ratio": "^0.4.2", - "@types/node": "20.4.2", - "@types/react": "18.2.15", - "@types/react-dom": "18.2.7", - "comlink": "^4.4.1", - "next": "13.4.10", - "prismjs": "^1.29.0", - "react": "18.2.0", - "react-dom": "18.2.0", - "react-markdown": "^8.0.7", - "react-simple-code-editor": "^0.13.1", - "typescript": "5.1.6", - "use-breakpoint": "^3.1.1" + "@codemirror/autocomplete": "^6.18.0", + "@codemirror/commands": "^6.8.0", + "@codemirror/language": "^6.11.0", + "@codemirror/state": "^6.5.0", + "@codemirror/view": "^6.36.0", + "@lezer/highlight": "^1.2.0", + "next": "16.4.0", + "react": "19.3.0", + "react-dom": "19.3.0", + "react-markdown": "^10.1.0", + "remark-gfm": "^4.0.1" }, "devDependencies": { - "@types/classnames": "^2.3.1", - "@types/prismjs": "^1.26.0", - "autoprefixer": "^10.4.14", - "postcss": "^8.4.26", - "tailwindcss": "^3.3.3" - } + "@tailwindcss/turbopack": "^4.3.3", + "@types/node": "^22", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.4.0", + "tailwindcss": "^4.3.3", + "typescript": "^5.9.3" + }, + "packageManager": "pnpm@11.5.1" } diff --git a/site/pages/_app.tsx b/site/pages/_app.tsx deleted file mode 100644 index 18b3e74..0000000 --- a/site/pages/_app.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import '../styles/global.css' -import type { AppProps } from 'next/app' - -export default function App({ Component, pageProps }: AppProps) { - - return ( - <> - - - ) -} diff --git a/site/pages/api/hello.ts b/site/pages/api/hello.ts deleted file mode 100644 index f8bcc7e..0000000 --- a/site/pages/api/hello.ts +++ /dev/null @@ -1,13 +0,0 @@ -// Next.js API route support: https://nextjs.org/docs/api-routes/introduction -import type { NextApiRequest, NextApiResponse } from 'next' - -type Data = { - name: string -} - -export default function handler( - req: NextApiRequest, - res: NextApiResponse -) { - res.status(200).json({ name: 'John Doe' }) -} diff --git a/site/pages/index.tsx b/site/pages/index.tsx deleted file mode 100644 index 4e851ee..0000000 --- a/site/pages/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import Code from '../components/Code' -import Features from '../components/Features' -import Head from '../components/Head' -import { GetStaticProps } from 'next' -import React from 'react' -import ReactMarkdown from 'react-markdown' - -import { readDocsFile } from '../lib/docs' - -type Props = { - docs: string -} - -const Landing = ({ docs }: Props) => { - return ( - <> - -
-
-
-
-

- MeowScript🐾 -

-

- The Purrfect Programming Language -

- -
-

- Made by{' '} - - @Alen - - , inspired by{' '} - - 🐱 - -

-
-
-
-
- - -
-
- {docs} -
-
-
- - ) -} - -export default Landing - -export const getStaticProps: GetStaticProps = async () => { - const docs = await readDocsFile() - return { - props: { - docs - } - } -} diff --git a/site/pnpm-lock.yaml b/site/pnpm-lock.yaml new file mode 100644 index 0000000..30ae9a5 --- /dev/null +++ b/site/pnpm-lock.yaml @@ -0,0 +1,5163 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@codemirror/autocomplete': + specifier: ^6.18.0 + version: 6.20.3 + '@codemirror/commands': + specifier: ^6.8.0 + version: 6.11.1 + '@codemirror/language': + specifier: ^6.11.0 + version: 6.12.4 + '@codemirror/state': + specifier: ^6.5.0 + version: 6.7.6 + '@codemirror/view': + specifier: ^6.36.0 + version: 6.43.13 + '@lezer/highlight': + specifier: ^1.2.0 + version: 1.2.5 + next: + specifier: 16.4.0 + version: 16.4.0(@babel/core@7.29.7)(@types/node@22.20.5)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + react: + specifier: 19.3.0 + version: 19.3.0 + react-dom: + specifier: 19.3.0 + version: 19.3.0(react@19.3.0) + react-markdown: + specifier: ^10.1.0 + version: 10.1.0(@types/react@19.3.0)(react@19.3.0) + remark-gfm: + specifier: ^4.0.1 + version: 4.0.1 + devDependencies: + '@tailwindcss/turbopack': + specifier: ^4.3.3 + version: 4.3.3 + '@types/node': + specifier: ^22 + version: 22.20.5 + '@types/react': + specifier: ^19 + version: 19.3.0 + '@types/react-dom': + specifier: ^19 + version: 19.3.0(@types/react@19.3.0) + eslint: + specifier: ^9 + version: 9.39.5(jiti@2.7.0) + eslint-config-next: + specifier: 16.4.0 + version: 16.4.0(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + tailwindcss: + specifier: ^4.3.3 + version: 4.3.3 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + +packages: + + '@alloc/quick-lru@5.3.0': + resolution: {integrity: sha512-U4+70Pc5ZS9osnCBCE5Jha/ciHM+Yp+CNMNC/7HvYbNRk1Ldd+f7qO65W5qfhu/TCv+/ozljlXXe9Nj8419DMA==} + engines: {node: '>=10'} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.9': + resolution: {integrity: sha512-CjXrNHTnvqBVqHgdBysY3vk2T8tpJHb5/RMeHJBTyVa9xgugCB0CJTx/3oO8RV2QRQP391RWpB7D6hLjm8V9uA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + + '@codemirror/autocomplete@6.20.3': + resolution: {integrity: sha512-tlosUqb+3BbxCxZdu4tKeRghPFC+QM7q4X5YhKV2eCmPG+1r2F3f4AaSz5sCrFqUtX4Jh20VFTKecl16MgiV9g==} + + '@codemirror/commands@6.11.1': + resolution: {integrity: sha512-O/4hG3SC1YwcmQ0d2UVNDs+AsaNWd1iHVxbTeEBuqH+6bExAiPK3iS/BvpY6rZGURALv4ZD3sIgcCmRvw3ehBg==} + + '@codemirror/language@6.12.4': + resolution: {integrity: sha512-1q4PaT+o6PbgpkJt4Q8Fv5XJxTy4FUZ4MWETtyiDw3J0Pyr9E2vqcKL+k9wcvjNTIsauxvE7OfmWj3FRPHQ76A==} + + '@codemirror/state@6.7.6': + resolution: {integrity: sha512-kAz+AncRtKuIknedxT1bq4XwXv4UowhbkHU1myPrtVb/jZtImWuV5BXzv5vK6i3kYACsdiZiQKFQQ5Mq7elW8w==} + + '@codemirror/view@6.43.13': + resolution: {integrity: sha512-sihaFrUzAsYBQsL9J2t69y8nfMQGwcYmggAZsk+kjPbjYZMyuf2hU8tUNTZ+P+isb6XRr8JE22TZlJxBoVdH1A==} + + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + + '@eslint-community/eslint-utils@4.10.1': + resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.7': + resolution: {integrity: sha512-F42g89Qd5oAWtp0k0nnSrjziAKza7w8SVT4mStc18LZMaRb4J1HQAHLCalEtDCxrTuksx7NU9qsmeLwpOfPqWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.5': + resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.35.5': + resolution: {integrity: sha512-QRUlFQ0WxvdWyqqG/WtI3iupfD5rBzmCHXSdPsY91sAtVtTo7Q4cb6zOccZ3gqEqkr0f1As1ehLqmEpDsRf+lg==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.35.5': + resolution: {integrity: sha512-+BR255RhDlpygUpOc/Jdt1nT6DQ3XG/ERo5wbcdOf5Q320dKtPCKPLR1LJs9VGXRaMa8l1uUa0tkCNOXiAxZUw==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [darwin] + + '@img/sharp-freebsd-wasm32@0.35.5': + resolution: {integrity: sha512-Y/z91nEZ4uIBX5X3nfTovjU9lHNKFYbL2lpHCLVNmXQK03VIZvXBBt0KxbPGp2SdGSF+2mQU4e+hQaWOt86iAw==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.4': + resolution: {integrity: sha512-5R89nBYiRdUlSWJxPhO+GVtaXzXSxKnRu/xqMn3KTA3L9EB9Oy/P+Nn2f2vlhPuUdy/Zusb2DarbyTpGCfEDuw==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.3.4': + resolution: {integrity: sha512-iR2OKH80yi0U+dUplyh3/xdpFvps6YkCwsXenIJxqxR1v9o+xtKTGbS9H7cps+2Vxjc8B1j96p75NmTGjIhtpQ==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.3.4': + resolution: {integrity: sha512-Y3dgX/6lE2QhQb+Gxy0WZxfg9MEm/JBjamZpS2IklP7xIQoKN4hzAm7KcMVGtaVDt3neE9OKBC7vAfonA/Lr1A==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.3.4': + resolution: {integrity: sha512-LmRtTsOHuvM2+wlO2Db37dx5MiZhB0FvSunciw48YjdOkZz9KAiRbm8ujeMOA1INqmei5NapFxYEK1D1ZSidmw==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-ppc64@1.3.4': + resolution: {integrity: sha512-Le6boB8Tai0Nis+gIxIpKx68UDVVIqdR8Tin5Yf1z2LJJQLDJvCDRqRu+jC2qCoD+eIomonmOwB4smBRxfVpYQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-riscv64@1.3.4': + resolution: {integrity: sha512-aHkkIEHPRdQEegJN20MLmGtxYD9R2wQr3Cwpddnu5+YKMt6Uzax7S9h5gpZTo8wyrGuZSlfQ63OevL5mTyOC7Q==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.3.4': + resolution: {integrity: sha512-ra/mB6MikESDUO7Yg+Mi95bFBb9GsObURuhnOv3OqknjGe9sZrG8tCe9q0xSIGrtLgvgw0gKnFWcK4blSgQOuQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.3.4': + resolution: {integrity: sha512-GJ//SSXbnwSDes02umB3nDJLFcQzw8a18V8fyhqr6tV515tOEMdImjjxj1AoafMRz56F3PHgftnj1QEKSU1zkw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': + resolution: {integrity: sha512-hvulFwtjUcagsis6BBxHwGFwWoNZjgYmULGVrZcyfNbjA8hKILbRxGg15/7w5HDyXHXUos/j6baAWqnCyQ2DWA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.3.4': + resolution: {integrity: sha512-6zXKeE/p39I1AmA3cJG35eyBGNqNddLnUXjhwBnsGjFPWqf5VKkDBEqaEkPDoTEtkxwi2vv8Tcr2mDyP4So7Fg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.35.5': + resolution: {integrity: sha512-LYVx5JTsOM2CBzmxreh+nl64/3H6Xb09iSLknqH47z2T2DFFxDeFLP5y4dJwe6H7uGQlHPyEEtIqyo3DYsRwdQ==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.35.5': + resolution: {integrity: sha512-LEaXK2WdXVK5ykcw0buWyPMsmLLL2vpHLD6yrNSW+JGEL3BZPA4tpKN6iaMc4AxTTAoaX/sU1rOL51lcIz48ZQ==} + engines: {node: '>=20.9.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-ppc64@0.35.5': + resolution: {integrity: sha512-QVxAAq8evVRI9ia2vqgwrmWucn5Dfv+JdWzj75pD8omHLPSP7f8p20O8jxzjCcuCEQEOtYOZUmX1hkiZ0kdevA==} + engines: {node: '>=20.9.0'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-riscv64@0.35.5': + resolution: {integrity: sha512-LtdreXguaavKODPIfzJ4kffx7UNt1omwtK0rch4EBbbSTXPnxWmYSayXdLJw0fJzQ97kHt1gL/yh4tvU+nCyRQ==} + engines: {node: '>=20.9.0'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.35.5': + resolution: {integrity: sha512-UZasTOFiYzotTsGOCu42BfUzP6Tu6Do/947iRm1RsLKvlllxwGcn4RN27LibGWceix4Y+Pmw3jsnTcCQIgWjqA==} + engines: {node: '>=20.9.0'} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.35.5': + resolution: {integrity: sha512-SxFtLTeJInhAA9Q836kux2vZNeOBQEx658qvbboZScr0wIARym3IcGmW7KpVD5sbVg0Ojy+udFQdayYIZyoNog==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.35.5': + resolution: {integrity: sha512-9HbMclmI1zlNkFRs3z9/eBtDjfD0sGlrX1z6b1qwmiFY5ElDLh4BC0LPBdVp7z1DXFiKlIcznf+ZlsuZzLxQqg==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.35.5': + resolution: {integrity: sha512-4KOphqB035HrVdqLZfCgMzzERrQkkzOwRhl4OAkRO1YCldbaFjySXMaK534Mo0V+LndnlJk+sbUyLeU0ULyD1A==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.35.5': + resolution: {integrity: sha512-Ptsga1su4tQx+LLF1ECS9U6nz5kmrXKo6XVbtR48Ke3ZRxxgaWBu7IDtEe1quo8hiupwm6WFqxVlXaSf7IINGQ==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.5': + resolution: {integrity: sha512-hfhF/FmoQyTUkA0bIKFOtw536BQSeBMe6BF6QyWlrPxT754+TFLaZ7sKKTfvvM0yJgKgaYTwnFCIZ/GuDw5SUA==} + engines: {node: '>=20.9.0'} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.35.5': + resolution: {integrity: sha512-X4t7g+7ZA5DKblCBEXGjUqqemj4vczING/5viFwAL8h4N3qYeyjwdCvRLHi4EdOUI+2Z7UFlp1VM+p/AuEtm6Q==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.35.5': + resolution: {integrity: sha512-5Zm82LoBc43nhwNybZlG7Y1KO//Zhsn306fQl29ZOuStHLGTo3BWL83q3cznX0poxSAMuYL1On/BHBxkBeKr6A==} + engines: {node: ^20.9.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.35.5': + resolution: {integrity: sha512-x76eH0vEiHlcMQu8Y8IenntaACtddpT6W0wmXtWrnKcnKI7ME5DdgqhAD6SEWOEl1v2zDvkZDhFA9KnURwpfqg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [win32] + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@lezer/common@1.5.3': + resolution: {integrity: sha512-H0iErY4e43LpXbYDyBci5W4v/RwTgGV3YzYOlJPiGZ8RY8w51kVE+xLn1tg3Z6UmSfyETvtsUK3r7YsgDQEI7Q==} + + '@lezer/highlight@1.2.5': + resolution: {integrity: sha512-O1GMVKgtf5YspFaRzpmqkVgMtIk2HG9uMAbH6wdAIdNh3TVzCsch/+cRi+6l2//UGDKe6NB9BW3cvuR5ezMQ0w==} + + '@lezer/lr@1.4.10': + resolution: {integrity: sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==} + + '@marijn/find-cluster-break@1.0.4': + resolution: {integrity: sha512-Wy0V7+SGUjnF9/TkiM1hKVDPj7jKXduPNboMVtHTA8dySMURWqfg/JZ9E2Sq8JgSJmkl7k7Qe9FLeMSrSraWmQ==} + + '@napi-rs/wasm-runtime@1.2.5': + resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + + '@next/env@16.4.0': + resolution: {integrity: sha512-pyLlT5oafGlX8X7xjgGNXz5dNIDSxREm+qD6i9VLSZiZFopA/XWl8NM/KPmLx/8EG/++c49iid3gNWSQW1+2dQ==} + + '@next/eslint-plugin-next@16.4.0': + resolution: {integrity: sha512-ffeflB/dL8RrvWejQximw01pOpKHN692Y3FjDB82DCd0YVvXvBD6vY7mcZp27yvSVFVM6wA73xVodEKF4spizA==} + + '@next/swc-darwin-arm64@16.4.0': + resolution: {integrity: sha512-yyZ+9MgViAKLLb5l1gPBGjRwnq3teNLb5Zx6JEw8LzNSTjlsnp+baUHFxTgl7PpjCmKf48VQfyipG1eBflb48Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.4.0': + resolution: {integrity: sha512-RePEEejEj1Auf5s9qEcG0JbcDP3ceNUS/ofNX8AhxzgIjTVlZIHMatlp16YplcSMpsVo/ZMQHJTjbMYJznjGUg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.4.0': + resolution: {integrity: sha512-HhsyCqd+NpmvDDVY/LqkAN24f+QVvXh3ie+PfcwKinWL2Mu826JymQxJXGjAIfmJ4VlHjp4Pe/nZtXtUoEMAqw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-arm64-musl@16.4.0': + resolution: {integrity: sha512-sN9Pf+Zh+RpZAOmbR7d8KAA8T61CVhawtbEJ2Bk6QrRzx6Z/6haaF4UiwBzytM96GRRRWZh9/WALIEO3npMamA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@next/swc-linux-x64-gnu@16.4.0': + resolution: {integrity: sha512-D5M5xLWQVd1CvR+L7BickM1weRfmM41x3L1NWcnKY/oyJJqr1qwaCgmu3dMAhLBOMdZwSuDCRV6DJRRpiUkbDQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-x64-musl@16.4.0': + resolution: {integrity: sha512-8d5WLS6a9YalqpOgXdlbvonFu+sIgjA+CO6tGzetrpPVcUL56foa7B7664h41rAlbLi5fJwK4vWji3zf4QDy+w==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@next/swc-win32-arm64-msvc@16.4.0': + resolution: {integrity: sha512-sQuOIiW3snb48UwrBcDMvFA/u03qtw2LeuSIxFIQ9AJuW9UG/4Ddsfo+eV73PnZwBhyncMtsKVh7PrzMol2/fA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.4.0': + resolution: {integrity: sha512-6/33lCuxpdHUy27RegyGM/5uTpF7YZd3UR4D0gpkOA/tWY5YR7msbQjqPgCZmSmxrrTLGCXYA4A8vT2H5DPGTQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + + '@tailwindcss/node@4.3.3': + resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==} + + '@tailwindcss/oxide-android-arm64@4.3.3': + resolution: {integrity: sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.3.3': + resolution: {integrity: sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.3.3': + resolution: {integrity: sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.3.3': + resolution: {integrity: sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': + resolution: {integrity: sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': + resolution: {integrity: sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.3.3': + resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.3.3': + resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.3.3': + resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.3.3': + resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': + resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.3.3': + resolution: {integrity: sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.3.3': + resolution: {integrity: sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==} + engines: {node: '>= 20'} + + '@tailwindcss/turbopack@4.3.3': + resolution: {integrity: sha512-FgL4wRgItNdXcDjcgYUSd59gNsWqNVK4GotjZimZMmt7OOIkRNqH2QEUcRXLdBDXvwTsi5rkYxDxzfrFUkmObQ==} + + '@tybys/wasm-util@0.10.4': + resolution: {integrity: sha512-W3c4gRigFS0T/Ma4qIYF3GDAc5AQdHb1yL5znJT1Zv1YaD9Kitx656wBjvr19qbiosmZT8lWDM5BEMynUqX65A==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@22.20.5': + resolution: {integrity: sha512-U2+DNr+wSjpsTS/wZGYHq7GcwfuSmKiKvoPvK22zwTlRhU91yOniN4qRR5KhIjvif7ysw/dz/hKmfDH0Ris4aA==} + + '@types/react-dom@19.3.0': + resolution: {integrity: sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==} + peerDependencies: + '@types/react': ^19.3.0 + + '@types/react@19.3.0': + resolution: {integrity: sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@typescript-eslint/eslint-plugin@8.71.1': + resolution: {integrity: sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.71.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.71.1': + resolution: {integrity: sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.71.1': + resolution: {integrity: sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.71.1': + resolution: {integrity: sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.71.1': + resolution: {integrity: sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.71.1': + resolution: {integrity: sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.71.1': + resolution: {integrity: sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.71.1': + resolution: {integrity: sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.71.1': + resolution: {integrity: sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.71.1': + resolution: {integrity: sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ungap/structured-clone@1.4.0': + resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==} + + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.12.2': + resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.12.2': + resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} + cpu: [arm64] + os: [openharmony] + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==} + cpu: [x64] + os: [win32] + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.19.0: + resolution: {integrity: sha512-oJlA3XiRm7Cyk6qFD2Jn8ak9B7jSy0qy00ADO3+8dpT0LSjFihQYv4C02LFCSYJV3Q37xYwwRy5m+IpIiUzqWw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.2.0: + resolution: {integrity: sha512-VXY5eFRarnXcYxwBjJzPmEhH55+rmP79/+ueDhi0F+TuqfHCItagIHqxeUZrmgrOPa31QTh9H85DjX3FfJ0FTg==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.14.0: + resolution: {integrity: sha512-9WTZxEjsZ7b13TH8JPmbV2z8CHbl80/2hm3XPEG4JgNdQLK81IBRXmSxHfMAOkSqQeRxT/0dwNDz2GOm3zzpcQ==} + engines: {node: '>=4'} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + baseline-browser-mapping@2.11.27: + resolution: {integrity: sha512-ElY12DaROGuan+lMmZ8Cvo/ZUbXPe7Enc/9VU/b1T3Kp4dwytRcNdR8DoSJN5SNJT/CuvcCA0DHDVmMOCePdRQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + brace-expansion@1.1.21: + resolution: {integrity: sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==} + + brace-expansion@5.0.12: + resolution: {integrity: sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==} + engines: {node: 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.29.3: + resolution: {integrity: sha512-1R4kiYKXGViqEN0CnoDrXc1StD9niAwu+j2dukWzrD4bJgsD4lDmEp0CRbc6E/vYJIfTHwPmwyaKtVSudICdPA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001814: + resolution: {integrity: sha512-/Uaf1lAzr59XcMpW0o96WoEfr+VXK2OX4U9AgFoiSHsVJ4HppnIFUjtYzsyDH2+tgANaQb2/oxYGwCPapN1FpA==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + crelt@1.0.7: + resolution: {integrity: sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + electron-to-chromium@1.5.446: + resolution: {integrity: sha512-kWlGMPHzuitCKx0O+MbY1ZGvQmP14JtckrnGjD4JsusTxh2cX9wu4bb4rOYZqLSvENjFFrHzlqY8kXhseucR/w==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enhanced-resolve@5.26.0: + resolution: {integrity: sha512-9vhedylFonb2YGogzUKX6+Ja72gOJbN1QHAqdrvqLwhdl/QWbKopzoUC9EbQNVsAns/bx/4uyqalrQAoy1IByw==} + engines: {node: '>=10.13.0'} + + es-abstract-get@1.0.0: + resolution: {integrity: sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==} + engines: {node: '>= 0.4'} + + es-abstract@1.24.2: + resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.4.0: + resolution: {integrity: sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.4: + resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-next@16.4.0: + resolution: {integrity: sha512-2RHLYswzc+hNRktWAjIL6XAvwb1cKcjLawJ5KWywAxn/JivNHtG42ZigL1yobVXDqsimuuL2F9jcEcnHFzbppQ==} + peerDependencies: + eslint: '>=9.0.0' + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.10: + resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} + + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.14.0: + resolution: {integrity: sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-react-hooks@7.1.1: + resolution: {integrity: sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.5: + resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.20.3: + resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.4: + resolution: {integrity: sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.2.0: + resolution: {integrity: sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.14.3: + resolution: {integrity: sha512-++QEw4DIY7WGoukz+/+A/8dGYPT9l9yIadnmSgZ8Rjr3YVSVDipQSO9CdnJo9ePqFqUUqh+wk9uIaoiAwsiPkA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + + html-url-attributes@3.0.1: + resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.12: + resolution: {integrity: sha512-/8UvqAPU9DGTI9k4mxtf49U37Isfwr8Uts96+SBHIkFxPJnHS0Ew4f00sM4Scd8V8EjM0jUNtVDdv1kPdt35lg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.17.0: + resolution: {integrity: sha512-J/vG0zBCbIKOQFfufSwyXdMrsohyJIUNkrnmo6WZGzoM7tr/lsbfW5b2BvisL6zsyMzK9UxV9L6c7AoFbyXHOA==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + + is-document.all@1.0.0: + resolution: {integrity: sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdast-util-find-and-replace@3.0.3: + resolution: {integrity: sha512-xPgpDNl0/OXHsI7TlaIs22lWnH3KlpvZdXG1ET/m/YT2Hhdkx8lJV4kLphE6l9simyM4KPDFBwas08BgEob6Jw==} + + mdast-util-from-markdown@2.1.0: + resolution: {integrity: sha512-KRLgmPaP2H1ul2bpoJkOS+9pAcDAAj9Nu1mqLnh8NLeJG5tlvj42TH80PIGBpROWlRXLk0lDrWNuZCFy/tsB4A==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.1: + resolution: {integrity: sha512-OuJHqvr455pwu2OaOrir7dbzqs4jlWKOtlu9L6GjcIjjQwNyw02VntQsr/Ek6/A13vgnXfUhBekWRUP1OkNivw==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + + mdast-util-to-markdown@2.2.0: + resolution: {integrity: sha512-2Jn/ADrHFFyyniBMi0bncTbJqU78K3/TEYvzvwrWWzD9MYPUa/Gm4r3nOeKFQg/PDM5BsbDYdc8ackW4NTY6NA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@2.0.4: + resolution: {integrity: sha512-wxEeE8v8XVvOrxn1TZj74qYhAtTQsSqufHVS3uNVyT1MupXxhyaHk8/9xDNPh9BmL77QNDgWTkZ3RsYHB2ry7w==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.2: + resolution: {integrity: sha512-pRzm4kDTu0MjlmBkxmS9yYhw60nncfcEwu9NNdPFSQEFXS95ZKyIIyTSHu/o3ReBUrLKYEq+7YaXCRn/bPB4MA==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.1.0: + resolution: {integrity: sha512-fS8hnLIjnjvdQIj39Geug8wWsR0HrYZ43KShKxNfwT7t2LOHo/LbWZEzEaSOjwtjdCsjoE6syHhonEzW0zv0+Q==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-edit-map@1.0.0: + resolution: {integrity: sha512-Pa2ljlsEL6sVwFaYeyrOLSYbQt73JvGbPOYFq+9AElXiSnfI5Q4465RRZ1sHv7lDjDOnGRDDaqPXqClqWK/q1Q==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.3: + resolution: {integrity: sha512-oxB2Ik03hI0gv+VNn9tnh1t1YEe9MDPptViAEgfdf3YQHsn0pzGTgCdlSCJXcwhqm8phaEuM7zeEu3QQzVBrPg==} + + micromark@4.0.3: + resolution: {integrity: sha512-oGYfQzHSG5dOMovQcJ3fyTmZlWAWpi0XA0sJwJs+i6OT88o1+Jtw/8z0CmdowSLxGhhFK89rQ/oXph/wN02PNw==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + nanoid@3.3.20: + resolution: {integrity: sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + next@16.4.0: + resolution: {integrity: sha512-N2C+9q89Z/oLrsepSRS4jRMtwmUZAoZuAHU0e9T6+sAB5DdhADmrnOW+zjYijlrYFmVfmQhGVGy9eMFoB7UgKg==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-exports-info@1.6.2: + resolution: {integrity: sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==} + engines: {node: '>= 0.4'} + + node-releases@2.0.57: + resolution: {integrity: sha512-kQK9LGGFiHtrWiNhZtA7Qbw17AQz+dmsEKODRIVTXA9+e5MS/2gZEBhYJt13GrAz5/IOZKddH/0Z3TP/Zgo+yw==} + engines: {node: '>=18'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.2: + resolution: {integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==} + engines: {node: '>= 0.4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.7: + resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==} + engines: {node: '>=12'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss@8.5.23: + resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + property-information@7.2.0: + resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@19.3.0: + resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==} + peerDependencies: + react: ^19.3.0 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-markdown@10.1.0: + resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + + react@19.3.0: + resolution: {integrity: sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==} + engines: {node: '>=0.10.0'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@2.0.0-next.7: + resolution: {integrity: sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.4: + resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} + engines: {node: '>=0.4'} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + scheduler@0.28.0: + resolution: {integrity: sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + sharp@0.35.5: + resolution: {integrity: sha512-Ywn4OnzGukp7CDMrp08RQ50YKmuwG47brZgIVPTvBaaAfQlRlygrRqSrxdCiL9M+LlzLBiJ68IR1QqvzHyjC7g==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.1: + resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} + engines: {node: '>= 0.4'} + + source-map-js@1.2.2: + resolution: {integrity: sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==} + engines: {node: '>=0.10.0'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.1.0: + resolution: {integrity: sha512-tHNHTxInrYLCga9O9YGxWA3G9/nnzQw8UGAyqGx3Ar1pSTTzIuM4woFSq4SowkXCjJIwq5sIiQvEfRI9tCH1qQ==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.11: + resolution: {integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.10: + resolution: {integrity: sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-mod@4.1.4: + resolution: {integrity: sha512-XXWIQt633/EpAFx8aZDOTjBzrCaGmhvEQlQo6MVPfa2OzO2cWo+4hV9h+6UkHYlXGfy+ODXKUdP7Pthmcu5ATw==} + + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tailwindcss@4.3.3: + resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.5: + resolution: {integrity: sha512-0FHJvLPqZ7KJzp17O13jfsAjsqazgrxBu2zEK95PmUz8lv2+GjRuxUInCr2Rk9Dms3ihN21zJ929ZO43yJ95QQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.8: + resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.71.1: + resolution: {integrity: sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + + unrs-resolver@1.12.2: + resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==} + + update-browserslist-db@1.3.3: + resolution: {integrity: sha512-pJ2sYawQS0R/WI928Gj5GlPhTGzbMelq0+4INtSYNDV9ErKJcX6xjGWkoG/VnB3dpUm00zALaqkrUD77pO5TDQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.24: + resolution: {integrity: sha512-wk4Mf4pR5mRP7eYuuTBCIQ9d0ud2Fv2jRLQpfgnRjbOxAFHmjKFValgTpitVKzJJS8ajnYQV2Du1SZ8j6b/EUQ==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@4.6.5: + resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@alloc/quick-lru@5.3.0': {} + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.8': + dependencies: + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.29.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + + '@babel/parser@7.29.9': + dependencies: + '@babel/types': 7.29.8 + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.9 + '@babel/types': 7.29.8 + + '@babel/traverse@7.29.8': + 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.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@codemirror/autocomplete@6.20.3': + dependencies: + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.6 + '@codemirror/view': 6.43.13 + '@lezer/common': 1.5.3 + + '@codemirror/commands@6.11.1': + dependencies: + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.6 + '@codemirror/view': 6.43.13 + '@lezer/common': 1.5.3 + + '@codemirror/language@6.12.4': + dependencies: + '@codemirror/state': 6.7.6 + '@codemirror/view': 6.43.13 + '@lezer/common': 1.5.3 + '@lezer/highlight': 1.2.5 + '@lezer/lr': 1.4.10 + style-mod: 4.1.4 + + '@codemirror/state@6.7.6': + dependencies: + '@marijn/find-cluster-break': 1.0.4 + + '@codemirror/view@6.43.13': + dependencies: + '@codemirror/state': 6.7.6 + crelt: 1.0.7 + style-mod: 4.1.4 + w3c-keyname: 2.2.8 + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@eslint-community/eslint-utils@4.10.1(eslint@9.39.5(jiti@2.7.0))': + dependencies: + eslint: 9.39.5(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.5(jiti@2.7.0))': + dependencies: + eslint: 9.39.5(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.7': + dependencies: + ajv: 6.15.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.3.2 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.5': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@img/colour@1.1.0': + optional: true + + '@img/sharp-darwin-arm64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.3.4 + optional: true + + '@img/sharp-darwin-x64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.3.4 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.5': + dependencies: + '@img/sharp-wasm32': 0.35.5 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.3.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.3.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.3.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.3.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.3.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.3.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.3.4': + optional: true + + '@img/sharp-linux-arm64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.3.4 + optional: true + + '@img/sharp-linux-arm@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.3.4 + optional: true + + '@img/sharp-linux-ppc64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.3.4 + optional: true + + '@img/sharp-linux-riscv64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.3.4 + optional: true + + '@img/sharp-linux-s390x@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.3.4 + optional: true + + '@img/sharp-linux-x64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.3.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.35.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 + optional: true + + '@img/sharp-wasm32@0.35.5': + dependencies: + '@emnapi/runtime': 1.11.3 + optional: true + + '@img/sharp-webcontainers-wasm32@0.35.5': + dependencies: + '@img/sharp-wasm32': 0.35.5 + optional: true + + '@img/sharp-win32-arm64@0.35.5': + optional: true + + '@img/sharp-win32-ia32@0.35.5': + optional: true + + '@img/sharp-win32-x64@0.35.5': + optional: true + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.6.0': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.6.0 + + '@lezer/common@1.5.3': {} + + '@lezer/highlight@1.2.5': + dependencies: + '@lezer/common': 1.5.3 + + '@lezer/lr@1.4.10': + dependencies: + '@lezer/common': 1.5.3 + + '@marijn/find-cluster-break@1.0.4': {} + + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.4 + optional: true + + '@next/env@16.4.0': {} + + '@next/eslint-plugin-next@16.4.0(eslint@9.39.5(jiti@2.7.0))': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)) + fast-glob: 3.3.1 + transitivePeerDependencies: + - eslint + + '@next/swc-darwin-arm64@16.4.0': + optional: true + + '@next/swc-darwin-x64@16.4.0': + optional: true + + '@next/swc-linux-arm64-gnu@16.4.0': + optional: true + + '@next/swc-linux-arm64-musl@16.4.0': + optional: true + + '@next/swc-linux-x64-gnu@16.4.0': + optional: true + + '@next/swc-linux-x64-musl@16.4.0': + optional: true + + '@next/swc-win32-arm64-msvc@16.4.0': + optional: true + + '@next/swc-win32-x64-msvc@16.4.0': + optional: true + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.3 + + '@nolyfill/is-core-module@1.0.39': {} + + '@rtsao/scc@1.1.0': {} + + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.3.3': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.26.0 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.2 + tailwindcss: 4.3.3 + + '@tailwindcss/oxide-android-arm64@4.3.3': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.3.3': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.3.3': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.3.3': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.3.3': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.3.3': + optional: true + + '@tailwindcss/oxide@4.3.3': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.3 + '@tailwindcss/oxide-darwin-arm64': 4.3.3 + '@tailwindcss/oxide-darwin-x64': 4.3.3 + '@tailwindcss/oxide-freebsd-x64': 4.3.3 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.3 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.3 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.3 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.3 + '@tailwindcss/oxide-linux-x64-musl': 4.3.3 + '@tailwindcss/oxide-wasm32-wasi': 4.3.3 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 + + '@tailwindcss/turbopack@4.3.3': + dependencies: + '@alloc/quick-lru': 5.3.0 + '@tailwindcss/node': 4.3.3 + '@tailwindcss/oxide': 4.3.3 + tailwindcss: 4.3.3 + + '@tybys/wasm-util@0.10.4': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree-jsx@1.0.5': + dependencies: + '@types/estree': 1.0.9 + + '@types/estree@1.0.9': {} + + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + + '@types/node@22.20.5': + dependencies: + undici-types: 6.21.0 + + '@types/react-dom@19.3.0(@types/react@19.3.0)': + dependencies: + '@types/react': 19.3.0 + + '@types/react@19.3.0': + dependencies: + csstype: 3.2.3 + + '@types/unist@2.0.11': {} + + '@types/unist@3.0.3': {} + + '@typescript-eslint/eslint-plugin@8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/type-utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.71.1 + eslint: 9.39.5(jiti@2.7.0) + ignore: 7.0.12 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.71.1 + debug: 4.4.3 + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.71.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@5.9.3) + '@typescript-eslint/types': 8.71.1 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.71.1': + dependencies: + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 + + '@typescript-eslint/tsconfig-utils@8.71.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.5(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.71.1': {} + + '@typescript-eslint/typescript-estree@8.71.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.71.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.71.1(typescript@5.9.3) + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/visitor-keys': 8.71.1 + debug: 4.4.3 + minimatch: 10.2.6 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.71.1 + '@typescript-eslint/types': 8.71.1 + '@typescript-eslint/typescript-estree': 8.71.1(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.71.1': + dependencies: + '@typescript-eslint/types': 8.71.1 + eslint-visitor-keys: 5.0.1 + + '@ungap/structured-clone@1.4.0': {} + + '@unrs/resolver-binding-android-arm-eabi@1.12.2': + optional: true + + '@unrs/resolver-binding-android-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-loong64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.12.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.12.2': + optional: true + + '@unrs/resolver-binding-openharmony-arm64@1.12.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.12.2': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.2.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.12.2': + optional: true + + acorn-jsx@5.3.2(acorn@8.19.0): + dependencies: + acorn: 8.19.0 + + acorn@8.19.0: {} + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.2.0: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.2 + es-shim-unscopables: 1.1.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + ast-types-flow@0.0.8: {} + + async-function@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.14.0: {} + + axobject-query@4.1.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + baseline-browser-mapping@2.11.27: {} + + brace-expansion@1.1.21: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@5.0.12: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.29.3: + dependencies: + baseline-browser-mapping: 2.11.27 + caniuse-lite: 1.0.30001814 + electron-to-chromium: 1.5.446 + node-releases: 2.0.57 + update-browserslist-db: 1.3.3(browserslist@4.29.3) + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.9: + 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 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001814: {} + + ccount@2.0.1: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + character-reference-invalid@2.0.1: {} + + client-only@0.0.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + comma-separated-tokens@2.0.3: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + crelt@1.0.7: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.2.3: {} + + damerau-levenshtein@1.0.8: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decode-named-character-reference@1.3.0: + dependencies: + character-entities: 2.0.2 + + deep-is@0.1.4: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + dequal@2.0.3: {} + + detect-libc@2.1.2: {} + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.446: {} + + emoji-regex@9.2.2: {} + + enhanced-resolve@5.26.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + es-abstract-get@1.0.0: + dependencies: + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + is-callable: 1.2.7 + object-inspect: 1.13.4 + + es-abstract@1.24.2: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + 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.2 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.4 + function.prototype.name: 1.2.0 + 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.4 + 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.2 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.4 + 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.11 + string.prototype.trimend: 1.0.10 + 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.5 + typed-array-length: 1.0.8 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.24 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.4.0: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.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 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + math-intrinsics: 1.1.0 + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.4 + + es-to-primitive@1.3.4: + 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 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-config-next@16.4.0(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3): + dependencies: + '@next/eslint-plugin-next': 16.4.0(eslint@9.39.5(jiti@2.7.0)) + eslint: 9.39.5(jiti@2.7.0) + eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-react: 7.37.5(eslint@9.39.5(jiti@2.7.0)) + eslint-plugin-react-hooks: 7.1.1(eslint@9.39.5(jiti@2.7.0)) + globals: 16.4.0 + typescript-eslint: 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-import-resolver-node@0.3.10: + dependencies: + debug: 3.2.7 + is-core-module: 2.17.0 + resolve: 2.0.0-next.7 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 + eslint: 9.39.5(jiti@2.7.0) + get-tsconfig: 4.14.3 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.17 + unrs-resolver: 1.12.2 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.14.0(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0) + eslint-import-resolver-node: 0.3.10 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.2.0 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.5(jiti@2.7.0) + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)) + hasown: 2.0.4 + is-core-module: 2.17.0 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.10 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.5(jiti@2.7.0)): + dependencies: + aria-query: 5.3.2 + array-includes: 3.2.0 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.14.0 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.39.5(jiti@2.7.0) + hasown: 2.0.4 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-hooks@7.1.1(eslint@9.39.5(jiti@2.7.0)): + dependencies: + '@babel/core': 7.29.7 + '@babel/parser': 7.29.9 + eslint: 9.39.5(jiti@2.7.0) + hermes-parser: 0.25.1 + zod: 4.6.5 + zod-validation-error: 4.0.2(zod@4.6.5) + transitivePeerDependencies: + - supports-color + + eslint-plugin-react@7.37.5(eslint@9.39.5(jiti@2.7.0)): + dependencies: + array-includes: 3.2.0 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.4.0 + eslint: 9.39.5(jiti@2.7.0) + estraverse: 5.3.0 + hasown: 2.0.4 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.5 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.7 + semver: 6.3.1 + string.prototype.matchall: 4.1.0 + string.prototype.repeat: 1.0.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.5(jiti@2.7.0): + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.7 + '@eslint/js': 9.39.5 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + 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.4 + optionalDependencies: + jiti: 2.7.0 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.19.0 + acorn-jsx: 5.3.2(acorn@8.19.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-util-is-identifier-name@3.0.0: {} + + esutils@2.0.3: {} + + extend@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.20.3: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.7): + optionalDependencies: + picomatch: 4.0.7 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.4 + keyv: 4.5.4 + + flatted@3.4.4: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + function-bind@1.1.2: {} + + function.prototype.name@1.2.0: + 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 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.14.3: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + globals@14.0.0: {} + + globals@16.4.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + hast-util-to-jsx-runtime@2.3.6: + dependencies: + '@types/estree': 1.0.9 + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.1 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + style-to-js: 1.1.21 + unist-util-position: 5.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.5 + + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + html-url-attributes@3.0.1: {} + + ignore@5.3.2: {} + + ignore@7.0.12: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inline-style-parser@0.2.7: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.4 + side-channel: 1.1.1 + + is-alphabetical@2.0.1: {} + + is-alphanumerical@2.0.1: + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-bun-module@2.0.0: + dependencies: + semver: 7.8.5 + + is-callable@1.2.7: {} + + is-core-module@2.17.0: + dependencies: + hasown: 2.0.4 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-decimal@2.0.1: {} + + is-document.all@1.0.0: + dependencies: + call-bound: 1.0.4 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hexadecimal@2.0.1: {} + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-plain-obj@4.1.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.24 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + jiti@2.7.0: {} + + js-tokens@4.0.0: {} + + js-yaml@4.3.2: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.2.0 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.6.0 + + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} + + mdast-util-find-and-replace@3.0.3: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + mdast-util-from-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.3 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.3 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.1.0 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.1 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-expression@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-mdx-jsx@3.2.0: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + parse-entities: 4.0.2 + stringify-entities: 4.0.4 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-mdxjs-esm@2.0.1: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.1.0 + mdast-util-to-markdown: 2.2.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.1 + + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.4.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + + mdast-util-to-markdown@2.2.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-character: 2.1.1 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + unist-util-visit: 5.1.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + merge2@1.4.1: {} + + micromark-core-commonmark@2.0.4: + dependencies: + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.1.0 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-edit-map: 1.0.0 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.4 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm-table@2.1.2: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.3 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.2 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-factory-space@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.3 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.3.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-edit-map@1.0.0: + dependencies: + micromark-util-types: 2.0.3 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.3 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.3: {} + + micromark@4.0.3: + dependencies: + '@types/debug': 4.1.13 + debug: 4.4.3 + decode-named-character-reference: 1.3.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.4 + micromark-factory-space: 2.1.0 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-edit-map: 1.0.0 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.3 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.12 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.21 + + minimist@1.2.8: {} + + ms@2.1.3: {} + + nanoid@3.3.20: {} + + napi-postinstall@0.3.4: {} + + natural-compare@1.4.0: {} + + next@16.4.0(@babel/core@7.29.7)(@types/node@22.20.5)(react-dom@19.3.0(react@19.3.0))(react@19.3.0): + dependencies: + '@next/env': 16.4.0 + '@swc/helpers': 0.5.23 + baseline-browser-mapping: 2.11.27 + caniuse-lite: 1.0.30001814 + postcss: 8.5.23 + react: 19.3.0 + react-dom: 19.3.0(react@19.3.0) + styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.3.0) + optionalDependencies: + '@next/swc-darwin-arm64': 16.4.0 + '@next/swc-darwin-x64': 16.4.0 + '@next/swc-linux-arm64-gnu': 16.4.0 + '@next/swc-linux-arm64-musl': 16.4.0 + '@next/swc-linux-x64-gnu': 16.4.0 + '@next/swc-linux-x64-musl': 16.4.0 + '@next/swc-win32-arm64-msvc': 16.4.0 + '@next/swc-win32-x64-msvc': 16.4.0 + sharp: 0.35.5(@types/node@22.20.5) + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - babel-plugin-macros + + node-exports-info@1.6.2: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 + + node-releases@2.0.57: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-object-atoms: 1.1.2 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-entities@4.0.2: + dependencies: + '@types/unist': 2.0.11 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.3.0 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.7: {} + + possible-typed-array-names@1.1.0: {} + + postcss@8.5.23: + dependencies: + nanoid: 3.3.20 + picocolors: 1.1.1 + source-map-js: 1.2.2 + + prelude-ls@1.2.1: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + property-information@7.2.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@19.3.0(react@19.3.0): + dependencies: + react: 19.3.0 + scheduler: 0.28.0 + + react-is@16.13.1: {} + + react-markdown@10.1.0(@types/react@19.3.0)(react@19.3.0): + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/react': 19.3.0 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.1 + react: 19.3.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + react@19.3.0: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.9 + 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 + + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.1.0 + micromark-util-types: 2.0.3 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.1 + unified: 11.0.5 + vfile: 6.0.3 + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.2.0 + unified: 11.0.5 + + resolve-from@4.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@2.0.0-next.7: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.17.0 + node-exports-info: 1.6.2 + object-keys: 1.1.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-array-concat@1.1.4: + 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 + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + scheduler@0.28.0: {} + + semver@6.3.1: {} + + semver@7.8.5: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + + sharp@0.35.5(@types/node@22.20.5): + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.35.5 + '@img/sharp-darwin-x64': 0.35.5 + '@img/sharp-freebsd-wasm32': 0.35.5 + '@img/sharp-libvips-darwin-arm64': 1.3.4 + '@img/sharp-libvips-darwin-x64': 1.3.4 + '@img/sharp-libvips-linux-arm': 1.3.4 + '@img/sharp-libvips-linux-arm64': 1.3.4 + '@img/sharp-libvips-linux-ppc64': 1.3.4 + '@img/sharp-libvips-linux-riscv64': 1.3.4 + '@img/sharp-libvips-linux-s390x': 1.3.4 + '@img/sharp-libvips-linux-x64': 1.3.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.4 + '@img/sharp-linux-arm': 0.35.5 + '@img/sharp-linux-arm64': 0.35.5 + '@img/sharp-linux-ppc64': 0.35.5 + '@img/sharp-linux-riscv64': 0.35.5 + '@img/sharp-linux-s390x': 0.35.5 + '@img/sharp-linux-x64': 0.35.5 + '@img/sharp-linuxmusl-arm64': 0.35.5 + '@img/sharp-linuxmusl-x64': 0.35.5 + '@img/sharp-webcontainers-wasm32': 0.35.5 + '@img/sharp-win32-arm64': 0.35.5 + '@img/sharp-win32-ia32': 0.35.5 + '@img/sharp-win32-x64': 0.35.5 + '@types/node': 22.20.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.1: + 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 + + source-map-js@1.2.2: {} + + space-separated-tokens@2.0.2: {} + + stable-hash@0.0.5: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-abstract: 1.24.2 + + string.prototype.matchall@4.1.0: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.2 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.1 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.2 + + string.prototype.trim@1.2.11: + 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 + + string.prototype.trimend@1.0.10: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + es-object-atoms: 1.1.2 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + style-mod@4.1.4: {} + + style-to-js@1.1.21: + dependencies: + style-to-object: 1.0.14 + + style-to-object@1.0.14: + dependencies: + inline-style-parser: 0.2.7 + + styled-jsx@5.1.6(@babel/core@7.29.7)(react@19.3.0): + dependencies: + client-only: 0.0.1 + react: 19.3.0 + optionalDependencies: + '@babel/core': 7.29.7 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tailwindcss@4.3.3: {} + + tapable@2.3.3: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.9 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.5: + 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 + + typed-array-length@1.0.8: + 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 + + typescript-eslint@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.71.1(@typescript-eslint/parser@8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.71.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.71.1(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.21.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + unist-util-is@6.0.1: + dependencies: + '@types/unist': 3.0.3 + + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + + unist-util-visit@5.1.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + + unrs-resolver@1.12.2: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.12.2 + '@unrs/resolver-binding-android-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-arm64': 1.12.2 + '@unrs/resolver-binding-darwin-x64': 1.12.2 + '@unrs/resolver-binding-freebsd-x64': 1.12.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 + '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 + '@unrs/resolver-binding-linux-x64-musl': 1.12.2 + '@unrs/resolver-binding-openharmony-arm64': 1.12.2 + '@unrs/resolver-binding-wasm32-wasi': 1.12.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 + + update-browserslist-db@1.3.3(browserslist@4.29.3): + dependencies: + browserslist: 4.29.3 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + vfile-message@4.0.3: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.3 + + w3c-keyname@2.2.8: {} + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.2.0 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.24 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.24: + 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 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + yallist@3.1.1: {} + + yocto-queue@0.1.0: {} + + zod-validation-error@4.0.2(zod@4.6.5): + dependencies: + zod: 4.6.5 + + zod@4.6.5: {} + + zwitch@2.0.4: {} diff --git a/site/pnpm-workspace.yaml b/site/pnpm-workspace.yaml new file mode 100644 index 0000000..c2da90e --- /dev/null +++ b/site/pnpm-workspace.yaml @@ -0,0 +1,3 @@ +allowBuilds: + sharp: false + unrs-resolver: false diff --git a/site/postcss.config.js b/site/postcss.config.js deleted file mode 100644 index 85f717c..0000000 --- a/site/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {} - } -} diff --git a/site/public/FiraCode-Light.woff b/site/public/FiraCode-Light.woff deleted file mode 100644 index 9e99c41cefb92a69af87f7e7098dadfabc4601bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132208 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
1E&b9JmCeK27nLo25}CHmL+Ts0Ed%l$ zm(3&kZJzr~jCk))lDHMLBq}eOuhpc|~yJIrAoXn;++W ziI)31dD4CRx5k?xWpVx&oht8{S-cWuhFO9d=h{)c3S-+*f`;G=hN2=#2!@g>%TS7< zGR@x7QQ#eyUaX1d^4rzC^!C>nNtWVhxJm~ zN}f`ZIfHhS)k?lfn!Ugswu91;sQ0jn_lQmBh;!$lr1#lU$&SCUXlM*Jhxul(luGeb zI)}w}ptwwGm1dLqR;Zj#^VMpT#ZG{zWNbFKYq8UH|6jTl`^|Re+^-}l!t;pWpCH}) zbz|2lTv9a#at)a|7b(Qm*bqXIS7#1pvms(~#muq?SgFn~ucfEylqI6F$>?KclYjFR z#;h>VY%Ja6(@EV{4_yA_0RHv`D;mv0_KCZYBo9KV=^?7RPB*s0%9IP*VAPxcW7RQ+ z+*sdUle(z5l|DeJs8ky6v}#sFd$oC$l^YHI6MDxur9FdoO_&#Zf$yrzwe6*ThHf^C zfv*QC>GkGNK`OaYJsEbfA=J?~r$PPPMBn<^G*Mdc$Lf(o z!(F!F=7{9=TK6=pBlT1B>iwYY!S=V*vs}r?9W7^#$%7!LpV+asooF0$zV%ff-H(9- zBO#cl-$t-oNg#~M{Y#Lo)QaCKIBjKdAKvq_aRbGs%wr0*4@k8SL##;(eT(Y5u#P7@ z&R^*>WBdk_RXBu}KxVwo-OJk#m1=4X{3u4UaBxii;OowQtXUXr_1%O;i7};IQWP-v z+f>XOT2N3N5@G>=RuDyx@1k&a^f@LF{_1o{cS;C{mE3F+xbI|rORsvGNI9;%S|AQ! zA(Wu*Nf_>EAP$)HUQoMJpq(Btgb`Y(bu=a_Bgg!#3unW#P6HC&sr3jkZ7&l?w8Guv*>@jmA2hw*QJR3wig;8DKR+_841@f0wO|UUfJqu9e>}= ze!|Mqdw=|i6)wDt?tjS z91#CgcRtcP*gxDiB>I7V`W7b&WN&pp1)lVd4!&1rUANV?L${v{Pxrl40(qK&M<1h^ zVQEBuGpN`Z=~q5ZMrIZVyNhpQVNn}CPIdMC6DfFn&{xTELN{k?r2hqh>FRNGa$No+ zLu-wv&BMx1+`QXYPVG8tv$L_`zd*KpFdD4$@PB_)P*m8?gM_)do4mdLXO4lXx!K9# z@!wA-)`og#r-%E0HsO<%m){*1;}SAbvXe5?UTNlmL}}MnPAXpps8L|h0obXsXud(B z=m0>teMff3d#=?@s!G3K5b+$B_#$A zKv;73BP1mzI|vWJyMxCEN0-g?zpw37nChHvh`d6uR|@}IM0m{Zwr&7N_l*gzYj!TI z|J2)Wp1m)xYFTcpYObyFSbi#5e%bp}Uv9duuB>XEZYuw$wAHcXMbf0?qpG&P&iVJj z^udwB4awsgj)*}n$>Tki!RPHrNsTW};3ps1sqXs$q3}))%HxMXpf5MsFY|wQ{R)2F zw=*p@pWa7)H494x8|8ODlulaijmW9v%>`3SR%bb4CHibq( zXbDPl`K-3z94&R39sh0cLh;`QlOfYJ->}s&v(05;{@+>M6zIPm%=CBcE|{_X+R40b z9LS7$YDp($%+9k61L`R+BJ&2u=A)Ha9)E`w=#{u*43wL|sirUERm;);-P&irLruae_R|W7rnge~xcU44s)3Bsblcx){Wi zvjIT+9#XUuiQs40EQ$;KkQO$-u-B}h3kZRT^
j$^4{`|Z4RQufODxcT!Q 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 diff --git a/site/public/FiraCode-Light.woff2 b/site/public/FiraCode-Light.woff2 deleted file mode 100644 index 5084487d2e83b54efa34932e0d6ae1a9da9f3492..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101840 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�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�H~@B3xa)_hLhkzq*8~krCg@hV;CO36-?IP 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

apU{?d){wvn06okogB>9G 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

DGoh3{rIz|H3j1E=@`A1<) zjZvl81ruLlj7Sz%@9$JKy#Q0uVa9-A{q{EI`ck`dBe(CYgw(>}qp~H#t*_SQ4?4J& zGESeML&)ntUHY*$Zq~*P9^)z6xXyiC_nkIQJf62}6 zXPV$wJQ2{CY(@F=N1;Rv)rGEvBj1oRG`rL02LY{)tfp(nzN2Vj!oL~c@j z9$Jl^0ZtZ6-+4M{7cKWy7_6|{!!cX1CT)SjY)7!deRsZ0*VbwD;Fm!g_fpqCAL~T% z_3IIbpa;!)r~yC(njLe{`H!^f1Y7nzD?JU(6|Z6KBK(e6LgcmlJA6@=`4}aM2#6Ww zJQVnElx3hrr#Os|dp{NYw_75*NnZQt&nvfFf2O*;^5y;I`2CWu_78$)A@Ku+3Lzgcf!dtRXDj@E_y5glFt7^ z`>|`!Kp8v!@}K`a!>Xb5EqH;orH$Y>_8_ce!HzfayBD$oIgNjJ1H`JM0wPp#(nI-r zqB@4dkl{LiitdYa;jm4m&nL~eP!>LUY4@nsY{OY-0?8)~bE{|gl?Qfzpn$VzthAS} zNqoQHjo!r@Z9GLA*SU`i-YDb5<9WLncjpaXg!GMUy<1Lt=Dl;$rOzBs(wyL0M!WNh z3tvmSYyVuoRPx=V%qhNG(C*{P*U`pPv~j)1xVJVAX7?PszttQ&gCT-v*tloe)#uBJ z=vu$+u8j-b$e`&)5&hk1FlaPH3{m*>EcrwFk8I(4NPk8L(1J4|1i%200FX`xL&6mH zk@$nXKLr}`Kj>c`AE6Qd=!~W6o+UmCPS+J8r9?0Bv<)pl8X@Q3867p;BRbl-b=~Nw z?pbH-gn8FKURFk*bBpZ=8bUCaPXu>d!5ehc4pK4767A(4zA^ld!#6Gx{=KfnTOKZT zi%DRe2i$vFOhVgx;hI#AhI|opF#J!04${+GJ#5Xz%Dw3uh&4y;9Y9RXfZu2$@i;?fmXUTr)Khi6phaghT_dntLzgmfD{4r z>y0%RU!EwPQ>1>~AMF~v5wKwwi2@?Sj0TQ`O zlDsKeO^Z(hEE@2AWpqq@hd$=!>+*(F)Q6s2@RdomZk5?&2QWCh1&A%e4Wqmb@Hc`S{x)T ztA!pVibO$DL&;;E?&f}qyE%#{+`74(jXw8wISZoSdvxr$M;9!7Y~1+A7R+3-Waf;; zi)XO;Qb6r5x~o%PDJyxUXxgi#%U&s3wr9^?{BQTI_S*?SFZ!o6R(Fh;2sZ;80!ThU zM4qBuq$QUKtZcbBCcO5VH^|p+nM45^*$VvF6=W; zSH3iMy&o@^(I;|!u|9rss_xiZ%mUjxc8h79z@q5UzD=7sYj}$Kd9oHSZ71+@!C0q@ z0M-(MBr5nA0J^1Q-U%bIfg^h5$)oe-8#^wC((CTwif}SFPhNySA)f5tW zD4Z5S25MnAvB*h;hEnrD$GRHb=pDDx@g7qCE#kQ#PQh~(64!U?%ZL%HEJz?hPdqVY z1V9>z&K>pZRrDLbv2{2JS4c(bqqMzBnFiw6H9i$5j#Eq6Re2KsYeN!>o+Al0#(vH! zdEt3RgDer^WFMDhp#hn>1Q&YOhCI#3eO7;97O{lQeeq*f| zklH#i!M`OveTr?1v^VP5b|dQn@$4#GXtD7Rh?@*+ZZ(tJv0Lm}_HAXlvlgJ>V}xhT zKuA<;2HvCgAORA}$9M35Z^qrwP)AX9)q#ZJJc$(QQF#r|^Y$`GLI4uNA2g$G6M%pC zaPh}kCB>S!z)R(f<9|vf{yBj9EPA{0uMZzOw_w+T3r9cvtNP6aSgnnIL|0a(KnvC?VP z{l*l2Q>vRcBS&rOvSeV{vdzsV()z17(bTPXAQ+gQ9uw0d3R5!!eF5T(v2->(<>^9>Mp+3wy;&04r4wl~B4Ohz9GI4WU?H zO`K`5y#musyj~((+bn*-w8GqsuG!J~0%80Ho5)^eFKozO*1Qn(|I!hH4y}$DC2sFp zd=_~eT0JUCay<5$s9it+R85eApbBLUYJqC?Mw?Q(Q5qw^cB_@BcdFIgp=6*7&nmt@ zfM~S_#P7$6`O^6BSMtww?Kk{gIR$`lK>JOIYES#^tJHZH)^q!9KvGwhaTY3I!bzC8 zVEeGZ)eTxt7$SXJTOrL=cp&CLd_H6<`20X6b{c;BC3%}}H>WI|#NvKvK&UK5gi|8Z zT!gcg;XNvsVenjt__yi-6H!wArW7Fa>7?_@xs$}#Bhj1}0yrHz_=C8MY zuKMNQ-)>Y@POIqBv7+c$QANit71MMHf$TMQgX){Th~=k_B3B3ce!~?jaMB2oxz+{kf754MgnX*dTt6bbS8`Y2aD- zAYB?(Q#16yJ5f>k)M8N-F12$TuCCA^$E}rR^9hKvUg}mG7y9!9f;&P+!)cUu z+4&G3?W{n6xROM1PuXkXs>s^cYN(Op-<#pZ!~cI%`CUQ)k;!sDCq`YS6v-CB{!xN> zwSK1HHhz`*Bb_>2>wOr!_kcH2j9)9ibE_GCAE)&#+)MZ_1+7MdPC{b!GS#T9Q!&F} z^`KYK+z)APrOcs`E#|==LR7wZIqQF7%5u4^uwAEvQ4-WczobsVxy}v+lm@UvoGG{h zc2!{t?oA;#dWo7qi=uo%@y5fF0js~md)P2O3lHMSG(zPS`8~o-SjvZDG2b? z<3trJLzp`Sv1#C<;n4d)I1OLlV2gf-gMW-$-KR#S;@ivet2-R?9OqL@XK!DL=Th76 z-uzMvQ7AEjUPttWl7UjHGFeub+@Jw}ogoc)YAmTL5&+IL!^wcRwqs^N(ZP~;rAs@c=$*1B3eBwBWE*;iFnU_Bl^a$eTTby6lg|IQb$(8nF!_`bPH;~j$???98qv$rjB)*BFVez-Uv zv-sz6{BtDMM5aJ=sMT`SOG4Glt;DvXdTAwFqftlT|Hx{`JUPxjtvEdfK_clL)#*Dv zKA>R5(c@nQ(ov2*#-a;zChcfDtoz&Csru*k{or>T?!&`K;Z94Hts2y|8zbm}lB?i7i4ny~cQ-%D29 zJYM=`?@8VFj5z;{pW_f6;s0pWq@B5=p8iKSZx?(0o1fTY$42xW*Qw*bVA$mNyleZy zhh4Q|h1_p)uR6P0?N}=6xx(##2$84p&mkl|t0meffrw{DwhPMoJ^rB;D9y!ryRG+@H(@wCb&=|{{_tq=S1YeArlb+eku|$4% zgI4RZobxw`#E}P_SphNuy$qsovozW$?h-^WkkJ$bcO$ZroX?1Zg%9#vOXVeSV#UMi zn<&T%Hk%1C$C-IPH=o9YCWPHveJKsGik+mYZLIWf||NWcO zgjS{8#eQ5$w9ZO1c+|8rfGjJLQ`4Xt_!ANo=x=UdCVoP_6jBqJ3$cJcgt$}#kDNB- zG7HtbH`%r4pv$}k;Oj6S*ahZ)gosLVd_eo8JzxC%<%;F2+0QhZDDR#9Cf>V{R=8n9 z0I`jHQ&W+dO$kiW{F_cg6@3~J;h4~9({oiEl-FKQs-Gy<1mBhKIrB*Gt#cX`42{$F zfYh093&|IE!KD?arzNh5?LA`z#JIM@1|bt{T%K;^^rfKZ)e9t1Rfl4E^kRcv2zI27 zi~(?-vlNoTL2@B+cCjgg@uk`@1xu@onx3ks=7#uARjo$6T$&)$gp4NasgZM|VrGsS zxOsTf)=8D!x{n#$I=iY@`?Q?K-Mi{WPkD)bc*e1HQsJb+`C$I!G$cJe^HH|rTgE;w zoC&Y7)%ij!oDHvqE9lXE^r?VMA z#z-`tE4^MCtyAuEFE96#=k|>Ftw_hvP98q2ojiX|xqwRZpr*IM8Mvki+Ie$#vhu|R z3iD1r+P-|;rjHjJ)}B1M-mmoPx}guYAJD8AHI@G5KJdwhN8!Ra|oTkL>@_Z($- z=w1TT+W3^2mas2wZDRl4u;E^J>ks5Z{DlT4u&a8QC_E-IrQ)y!DjJx^WcMct%`S8qRhd$rP98&iaEaEr%m%|5ZJc*yb;O4AZ zJ}gksVdr#wC+?JRye&h5sE<*YuABu54L&}`k(@!s@H|wy1r_08!Djb@{2DDDoUuuq zBH)gzwVPi)ymMI1@Lfk9xqkdOZ2E@YW+hkHK#eNpXEW!~7Pv8cHZ#IcNZV01K=v^N z5Isr3D#6Jh$#x<6^g7{^2niMfP$p#}xCV4AaSA~x-)KNYP+W{5#h4NxB%m(Vo*t4e zwNiaP;?@W;C;?{G8rXi%|y-I8MXYU2hL ziT8Pg>Z71^u&0d9i@&JoaaeZ zN>E2Rr6L|}Qj1nh35pDiZydnhc#0K10hzZVr;kYL5+i?YG^A$UTFC8{iPGhng@J*b zK0%M+brJ)^F+QljDW^jhj1SUBp^J!*NFOO!$I`t_7h=+KNKBDIAaWS^&DBlR*@Ss2uI71&(u(O~o zR|^yiU8{KkJZVV@uSooTAKtj}*wKv}k7i_rhh=4Eb_}<4Y7IjQCIn?4+qPiFuA`Pi z;T(UHt)uz_ioHzaPz&l{+-9Bgs&=90?4J1=yi4vk#jI0?zX%RMw3rS`Bi%B)zHd5TVJco(P^tiZqoE{yY z?iJEqm{*%YLA$m&Jql~2cTD0n(w8ipyf?c>f?&sU*^kVUmQQ%D)Nx8Jluie)Sl_F+ z<1Ffn;XU(&pP1XwFLHXrP@*&dNtLi55u>D5#2U-7*Q%fu+Dcd`MneOfGDS!f#9&E6 zsMK{EAAVs(nWgoc3wF6Xj_F5^N70~1KXG0EvFbNwvBGcMiEPNSrnaDZLwnHaInqE{gJd6~(=W zOS*;2e=WCp;LX){RK@+G?_Ipq8=SsuNPK*bU)@AVM>$MF{RVn%W0r3r;Mqp8Z)IO^gGXr;n;I*Qz|ru z5z53ckX0$ZU%HwQ5W2$#qyhIe02l=gd{QH#%auTIp*L0>)64<|VC7tYAZid^luxYn zt-(GvsUS~ggW;`9Z2Ex{TeqJ0`s+i$YhL2S$OAcQ`O{A?XH4)RMAcvXQG4;j)#qyU z&(Ue2sDB2%=IqA!fhKiq>dZFP-~BP0Sn(S$UFVpo&5_P!=^;^LwntXCXutxb65g|tx2Sz>1OuUx zfs0aE7Rl<0?NV2k#t>V85T*&ZP*s@LD^0}@7pGTCy5%e%uw-oK#H^-^a=J7f(C7ra zc7hfUoFkRzuN&d$Ft(y=&TN#Y@Am2y7w;G@zjP~uQ+*lhJG%R8#aUDMkJXY#>a~M* zH;1i4g>cv|F#gfuV-F1Y zv$dc!EU(>++z0wMif!Adb!J}f*6)_r*I2M!^^8srW_KEw-eN+asa;x!2b%|-g641D z(N{3DmzP@C`Kmlp+arobjNWT?lW3ZV=N>WG)Lo*Ml*Vl$s!88^QEZbpwraIkg)eHM zN1a%Ij34-mTu9Gq*3RhyT(%l;p`#YCM)4!Pd6rFjncY6cZokAP^U|?=yIabc7yMIB zzjoxS^=|o^7Nh*Zn!SGB21!UfW&i6y5ej1K2MW`OZ$Ryafml!?N>9S*QL7?TMAch3 z<*bBDzjIXK0)_RV*1{EYinx6t&WYYv5pPhuD@KEmLVCE5m;-uM@ZibPxOG-Xm)nG% zHT?qnwZr$`x^=fM%I_+1AN6d9kQP}@%_0{^(oys_Nkk`2Qdg_`ewD>y{6}G`NE5gt z1Qd{}oOib{P>o0r@C*deo$hg`a9%~vH$0T;^ahzqI*k-+VqA>(-qn|P5I9&-*C;@Z8+ORCU!(;pdC zvv}bYuIJWdpPJ2e+-J*J5?o%fzISiOIlePj<>oo%@FUK5)et1TkHF(8H>38hh?`8t z>~PO_)zGF*tO~%)xfRyM?C;SV+tt)`cxd{Pb0fveg3A!xE8lUNPrs#W4^EMaspfX$ z16*b$k!FYt4G*KT-W!1U2y`UwQVAs&nWXu7v=*_^G(R~xxmj|v_&5v4eBzeXs+T#D zkW>IZ#3xapsFm71B!LQ!@u?lXrCz1|Glpa(_v?Ic%IbIK8wNbsHaTvlIjCi-ug|;} zmo9#M!eQ@aGalUFPq#I$`D{X1oONQG?DY`!F0`B2A#+S>%O>q(TC{u_Y`b=`H$F=N z<1aUED{EtEVr`jROJAB5&?trK47j%FU>|gHYh5bUI&EG?Q3nuoe6a?D=vEV@m2`^~ zT`KE)R4MAF{R;!%r2%c*w(Zom6X#1W4&%PhEPN;Cw|6Op-&diwI5KT;6yd8$J5ar!HE%}a66`#cxF`Cq|0Y_t?as- zz1lp!Kc-c5$+qRw1r?Y?qGnb+zh29%Q28Nbp&9vM1S%Vpx%C7QafLdRY{EmKAygwp zKo}d3sRGWO8>&*uWt-M;%&7qX8?UZkYN+VIYK{M^^0NQ6zKsmf6k&e9?#8uStE=HF ze(@yXs@;@f?e6h%%CivA6C=oav0hoy%Up_LvhrA6ozw&ELKpHZwVniojn<0Qb#f3e zGYt;a$wRR7`5$xUl$j6^fpHc|M|2V?7FHcyf?(2e4?Q<9z#OE>R9v(aA0Wj_=7wrx zyi_@S|DH8nhbH^Je&PdT+>!j>pMUHR@z&|v?}E9ulk`+7`}Lr+JD%3pT-N%Rcer;S zc&)EFCH`)?bh4I9*CAPv)dgHu_Y(b^qHu*=2oVqpjI1Map;Ig?t}mx^AT%_T*DwjT z+hc@=7MO0ME{mT81gY)gc%^lePX&6Zz1PVD!#Cy^418sg1B?s5-Lv=01$6zf29EKD zUK^&-=UajPr_7AP9=+LN_V8Ei!iinb@^i=Mf3h51!P?aNCcx)l9Y=|6WS7m&h}#B_&T%DfncaAn0L-H z>WLMs1|^W9xkH2)cK6WIUVnTs|BJ2bo*g{6_3)WFI}UDK^*cQ2I3y*q&QjD{=ZjyQ z+9P*re3OWsE0-)NfycNDHs7s(-vurAEewd;_!Vv3qvxF%Z{->%l3TyOU}6=y43xi8 zDhoKEY965v#AzRegfwgzVhyo`hcygtXbz5#!T4a^Mu2KL*FgTpg9B4NTLC&I@Ajo7 zKD%}w+O2cU*Y7`YM@vAO{`;SQ{(fsKz-R{9P~9=~X+0|3U!} zx|u0n#4AAP^x@&QE+(R55qZvnuaUfpOt=v5nj=YZ+}3F@Dcra=d68os_AsBP zU3&9gc|~e2zlt8+v+QqG;xBjkcCD;H$onwFmxcwK8p=fH>T^kmPSO#n*eU!Z$^G6z zo5y+Y*z3@vSwA4vmTA=Fc-TPAo?!Dgx`=W&gdF8=y+#5M&4PTBMLfa)s(v|9A&aV6 zQGp`Sx1n(I*#IfPv#JnblSi`^Q1P-de+B>h9JXKWNU|4}(Y=nbV*0&hw1b%cSt5c0 z(jQ9iJ-nST&p`&MPy{_hErwA#MZfp+1GVuU55*dYFZiMWu{m@1(c_m8pq6%~Be#6F zeCdDoe^OKP#s1?bw+(-?V#N!E)c4>0Yiaw9+cz&) z!io_7Z{ibecAH6w&}+2wstk%GMo}zM!t@4Hu(}3$j@OU_QUHiIins@dB zw(r}rb6wMdjswSe(;I6ZxbSmP*+%HSa!JMDX{i-2Ufg)L5qo-K|MMR_utw8=25_1~ z@r{S7xdcQM%y!vU!v0kCKhaOn-M$jLPPr}kUlbChD@#{dyR#M8%z4+o9S7M~7$iCi zZc~inUMm-`E}2{L!c$wGw=2B!zWt4e)!9%F3=B|n-DQwKmWrKa%!I6RW15ZFVk3g= zD6o)a8suBkNKGc2_QvHkUIVv`>RX(1F)pZeZua=3X30U#sBcC(f7kT4HAVat=kA&z zZDl6*EBmTEdw$9TU<8>KIA6D*a}1|*x43h6D0Ms%j9`$_D_!hNw-GMkx;ZvjOu!fG zIn@8SXX?&sF%94Ld!{Wv0)Qu!^l2Md$7w~Pfe+AEvRqG^xtJBJrQ;^H;LxO1-t_O1*=K&A+3)C_KWOoe9krG0!Uu)xI1TeS4U?U? z1kq^1j;_?O`%8|)ej_|2BuFCe1ujxk4eH+nLQhu3hgMfy(tTApreD>xvWIwp=X%hW zn@{%MIpwWWg$3;P=Dj~G8M?ioS4r-JA6Dq*^&dE~Q|Fmedya3mxukr+;x3y;jhHa) znFWR0273GE%+H^CY^ajUuG&Ch*v-=%WaQ+lR*)oVSR3sU!W&2gn{Dnlkh>WMedz_w z{Bh54cQb-?y*%^WMZYetPde0 z9marHK*s5RetZ~OU7j6lYLnZ2TvF3yb2C`>{@V}HFC0;Hykj^09KK^#_8a?BId5Jd z(E`Vx)K}aI(+H7wDY-(J6J`P(hFNrYBPxku=x|ZU(p*pGASG2OnD6|CMg$zhf?h8y zWVMFBDHU|i{2+PPMRqas(1@N7{a*gu1o*6)hoPevZC$gV7cJ?~1-sKuetJoeH@xT= zlfLG_x($x=L_tN#)ts(i5`~(#5vT#sf-~^-W4&_zh!-t1f)*VX*kd)A5)u*;6%vUF zqzTR(7rO{da~`Vqr%j1fyROjNP~$kb_WPH?Yr%q9AMc>+&1?arvsX_KT)wfSXzf}x zk?rY{MURbN&zi6AOrt8wR<7jdR_kX=$zWHXGhs)~5qs}6|6GASJ@mcu5FX}N8DykY z$%Gg2KAi`LMPyAlehr|-71I-Vu1BgAVvyP#g}*Pc?gw~q@!YSue;j)9+DEz4Gv7H9 zobkmQdy4jb%HCXCgt>Nq@V&pD&)*2+LrFmOF`-nVHeaeB_2gVF*sd8e^#$7-k(3A? zAF?NC!S*^m{adQeN6)(fPxJc=I`%9bm^~x8OHzlXZL=1nXMydn~Z zW=Q2d%lbJIdC(|1dUj}V&z|(1eKB^&5cyqkU3^*QwtX)rBoPIZ!Pj`Uwv*^95tKxD}v^Br@y_*Xo!BiBU)40p`EB4C=t$0*qHZaqDtVAbpj7yHT8 zca4M5b#IfP{3ao_v?%N6TK|UR7ZZxjFPbCBNeD z;sByuD^;^Y1w_!bwf}6{iQ;~%?mOY{l5T&;^}Uz*{1y^N5=mZGjyD+n0rW<3%Jot| z;_GV|sb-5bY~UwxWn-i>572J6C)zQ~D^^W*4dGBZ^*^-Kw3IXfqf|VC0csM7E>_Z0 zZf_&~vhKNKJ6q1-sIxASOFBg-CpWOcy24HA%QrewrU&`Nw@!hO8-?_;BZaPT%tu@Y z|9NQOb_o3pY8~fk4*rz0{bNfgi&i-i2v7Z($1K-!b;i<=IDeaprPw0^lGvMg@A%(Sj zDlfyZag&P|pB^Um$Y+GeNqjv4#6s*S&9EG95Kt)qbf`5_qLZo4Cx{nkJA zqv>-Nmc*_US{;QsT>Dr$4IHFoI26j!n0+Itq-3~4{s}a=h&a0S3O#^t?1&>&;LCB_Eh+ZnP?hZ zXZ@jC{DeAQho5l%shlovPJa^m+q?lN#*>18Z;?n$vlD(`gji{=Z<~8s9FW9#Y}n=R zYtWG-NK*X3cVxV2fbD24g?XVK6zl?#Rq1M>A5gx!AGmvjYoU; zIy-aS7WU`+zI4iuZZTR|+m$ zN73jIh-{0~*iiGTf|PBA!DJVvS^BOrm}R|D>FWhgU}Yxw>9r%ZM`bGu8uv;EX^>h| z=R3WTztfB2-L+?g5N+J9jZ?L5^5cA8j^WQYAhDz<%ik8}j?3t=nWU% z)cLuixNps410f!MTJ}+9?Goh7oUbyZC0hN`nOGkSd&Z!<4TKCNTn0*j!bMgQ%YjY| zrY+Vjp$`^TR=x+#F0y^F^L2LQ9ofofsuJ7t2d(z!Od)fgRb&o^YXoNOKT@r1y(@m( zayR_82L6+{BVcZ5V8(>;*%=*MG_;ATTpQVce)xS+>#1=CmtTh}KFqB)|e-cs||I7J^A|KuCyifulBqVP}yO%MXDX>XIAe9!%m&)4P?|jnoji zKj)J#-^Hn^w7Ilxv?G(g7}sm=3T$2AXincI?)%$E>Eoi=RNBmL2v?h%2G4gkYf)JV zZ&ku&mcm)v37*nwK?#|4+5P)HvF4V$Va=6qzdl>(nhzsU9uImT-RrDCiSi}NhH#S z(=tzYl|+&h(uVZO%8#T}N18TCOps+AM{R&ClN+Zx%3C#i`RcZFO6@MK&Km`t zl8??AbBTX8;T{eIiAn&N1EZ9#nanq_$9XXk6N(Jn!+2uqmhzJ>Rkl4bdi%c0f)V+L zn+b{eRC?B-EpUL%o;a*iEBMfvYrI&t*2Sw^?ia5veSB!Owe~vSygY+{D&D`cRoM+f zUdp{>s~cY3azA+WNA}eQ?gO7a;DbafUspRFzmL=UscgLiuWtFD;?;Yt=QO7%b9j=C zKWa_JtKzJA;?*tpgIDiR$zDLb`U}Vuz5;et`F3&V)N-Dri0?JufmgS<ww>$CbYVcMCtcwi`N8bM7&7w!AuyK`N%v#!P_E;`K&OToK;1SMy){JFLT-a+& z3!J+XpSv@k+nbo`$E#c1Vc7yOZ}JIL0P_Jc8eW~}S!rl>0apKJ5q!xa*|l46czyYn z^%Z>Db8Ii$DD5s`%~_jqrSm3=Grx$>-%`x)PeR>s>XQUc-Et>RJ+whc9h|zxgVXROA)RX}@$er=+U#^y6oQ;Lc%fk_!vw7K-;^;6Bg;;=T}l zL<2^EySd0tadMBFvu?y!PtA50*{MfN_-_w=Z zy=~FGyXW+aj_cP=X?k#*aKY*GIcvmsUguB$su+BF)5_DMMx9x;{>)%Sf1kwH`#L`t zek54Kl4~)8LL#u_?%J2=M-%LC4rovpOU_k3C3I|Z`r@V6E7`YSK6Puv@Q+`-`swVs zQ|F5tbO)OVPc_;!cK2aMV1B`<2}49)-B7{zSfs+Dqu9$W7Ihb_Xx&4P)Bq)dpPFfg z#sT;9Hs$_4;qFtqA$o$zJsT#%3~Y|r{w(hq)Opzq>>V>`q|!A}cbPXw{Jv*@-UcUq z{fSAuflPLB5q*Bl5NGp5HJ4-|>KgQC!Mi!4_FE*@@96+`&VqU%VsNe;)K6x1K+E5vRkbc9SV9W43p;2-44V{&W)%$Nco^z z{xYT>xVDA6sy*=9$sTxZi-y-$ceZ$1+uDfZwUam}Xxond_&7}pIX8BD>IvIMZ`P6F zO@_4H)pOzFQ;bWis!IGOJ-WExn$81K$F!ZjC;(QoS^8Bo<|igkXqz?flkLj>u6S>5 zdd8%rgsOvOr%&Mf=}w3|S+>@P*S6dbUVHMHy-U~6-(L-nJU4CwM8Qs0h(EHmf~~>t z=Qpx^MCh8qs7=*DYFk`LZGlL>H&R;xY9Bc~D}QB=S-Tg$ee~#!9dAvY^sbmxo0u8k zW*MJcRML_;;Pd`4+LrslXiF+a`}*@A?Rt3Iu`Lhnzjp3-DeycS`7RycI1cZ!ruah# zz|>*G;@G2#{OHE%cv-e0MjLei6{8)Fbkqmbwzz=WVWIa6)JC$T@_DcA-`rzQk1Yod zTt9jgmR+GQKFqdV5Tw1vS~-6>k6I&vHg-ef2y*L6VVA5kRp@0Y#iP1@59q zMs-Da=wt#ijCEGmvCw>eM>RExsBL-(;!q7>zW+}@^}mtadgXxe(*k`Hayt&r zFNPuOOW2N0TQ=`A`*N&yV)q0tbNX=`Z-$ULKM@ammRiM`pUL_Eu)L52V9jp4e|;n> z@#Sf)`BDDJ;7nT!AOW#<;Tf_a?ix>?TIvS44zTe8MBWTd@7tk6POIo>TS7y|O{v-? zl5hUd6nl|hQuEqEq(RJywb{|FMkJ2C&K2>J+uTllg45GG25$K!r|=UirJNM_4cZNtObriDNh=m5a( zxW?Fr>?d=V*~3+E^{=mf5JW=;pWeFd%%H*Nwr)Nx?okB;I!LzO6>Dv|2i6*KmMYeI zklFFszyDS~`6Ty3vo{ds@j)3pi#5Ahf%FCc{%G{WTZ5@P(E1LHwdMZ-#@c&T{=RY^ zBTLR|vb>=8pyeGaX=yOa$T&QjK9RF-4AXDglQS*UybW$l7%`|f<9@Mnwz_M7o-ux7tBbz9LZM}PRR`UH3Wo;^m>SbsD^(f?c52duoKsVr9b zf7_AGSD40$c4126T6$F|!n-$iTPEx^?V3_GGVfY)0cY_&g@_g_l-y zbh$ZemHe7>C_~Y|j&o6*OH-rOi9Ar7Hg|Y6{Rv(PV82zeX?%*!TurN;=KOv^@so<5 zu6~@d${ z^sjR}?WO2t>OG9fu2q>6Arj0<-8K}Tl>*RXy)iw`&bwX@he4>J{HVAOF z=48+?#@xEOJFYsfxTwRlnX~(6^;rMjjH$0zWY25WHE(Fi28avyYm?TkY}lZZY&NP< zYJOf;M*B|C{!)kDbNerx+@Sc+%F5b`h^PgL@4U$-LBaMOeJlF*C>xx!JTGDMsGNaA z^Aw*7ixK{cMu?-ffJ76mRF)bgc}f2TM{Sex?Xh>oQEMH)G!(VgAEM%%hIB|h!KSfkW_VSqtvw($tX02f3%<#wxX>IKhwXX}t8)fTVG1r!R zW3ELHgNqQq6z`tT-I~47R5lRV;@Jvc7G6zR|MvE_mz7Zg^{FObG)Rb@A498xlQ*lGiPgQ7NMQ^~5r? z_(>S%T!jTwon9|fCj}HKaKlkMVb%dWKQPE0M6F<`-67N*L!De%*>BFYU`|8te$z51 z$135Jo|c0f6(YtAmm!nA?binP`0JdG>)am{gxL-%ewv4|q#PO4E(9LQ!v+m4&8)0!y??y)c>cyQjumv|%yA=zI!blV2Rb_C4HW%e5Z}n>3`JWC z=aj^px|}*_clDyM3%=tH6MU~bElN4*Q)K+Gfy2r&Dl6OUA3t(!uHZaQK60p|OiZ3X zfD?qW*vxIa0bEWckj99e4h^BQ9+M-y?}nYWxnrjj6B8RJHnzv6nCza|Y0cdt#IFVj zZchb?2~@y=2S|=tQeJWIt`j=;ZGUWN*~>G$N>(JsPc@rcrkZ@GU6{M%?1%&U>kq8- zp`l%8@5zl%oSfQW!KYhc{H1FNfuSPx4R>uEzeAYPhR z!`B&bJyB-w`@~Dz{>OM}o4`wFWMp*6=)idq7MJ3Qm#!Z!-GtsZb8<&}LZwemKQhAj z-&ob&6DPfGWWchw%kR!Qtsnl2e0492&mwn5#DJf0iva_O8#w(tVd)Q_Jdu1^1# z96ZZiG16MeV(Dqj)mXqzhnh0RkL#Y%sYSzRx~>!xG%$PN$KSN<1vTDSfbqtA;iE18 z3w(5kN{t0h<@MHNb?tPRn|}EQU-zj0wXW=mkA87?*($#BL43Z4`At#C26`yVYVEbF zLRQz0kDjdIqg{d;r>GYnt=$$Vrq^0muWfsBl(;N<9ciM*Ur$1p^bQBN!Uk44ad^j8 zeEvy%y;ZVR=^zs9=k0-y)@~}dWe4&U0Z(W&9zH2na;1!<%3&MJR&*VcbcbHOAM{hOHmXi|0+5Ntgp0>7g%L}IIhsU;*NGQ=7l#{a1~ z#;jyNI&&#-*{*ucfjsDCMyGeHZ;IYszvAV|I{K#Xnw9-ZJLYe{w0e!f@gA&OE~m0D z*sZD?rHj5lkP&m?SmRc+7S(px|7hTzhmn3kC$5v4m37`GF1dl@@PtQiIFSpdyUxd- z6gXS*ha1jT^tc-=d-Hc|LDWVB$hzQr;H53@2MP!#JDW`n{ET{H0ZU!HbZ~H8yma$V zZ!P$+V$0jTCwAL5b z{Q%j(3ec~5{}^e@ePE=~=%^nf-3i^VGxw^F&ytx>K1n~7HlQc=G-ImFU*Yu04&}7v zA#Hd@!b5@rWIZOcQlrx=D^r=nSzTsHU2{KzL1a_CCb0k6!ux#xv{+ z#J~+^gb!IF+?WR^*m&5@`igzDQuJ)SN+{W<;Fkq1^kZTpO%PQP3_5D(RK*#oBulwm z?WH*e{#nu?oK>e&JUYB-Vt%VZqx%JNY?otmzN;!ZTa$3(t(C z8Kl+xa1Ud(>=|fWG_San9f1*-KL1`ZICqw+bbP>10`b9pfH94G;g~J%o+j~Ubp1GH zSEGv{l{Xu`hwL8Pt0e#B5Ob@6{j!^;+8abu|8{LEot){uc`6;pZvOmFamMt7k(b_r zeYLlGjDXT21;0F$(|1_5dg7NQgr9jpjV<@WFW39HCw{s9r~b$I<+OV6%e%aW>>AUn zv=_TtRR!_Y?J{$QdvW~oRAucC3w1IJp21b0d3XGF0{pJ|LHd&4hf(MaRC;Jg1dGoG zfvn~Bc;+7gxaA*Vqs4$g52Uc>8sn{}Z2@j4lm2+L&*%>G^ZTwDxN-H|F|P$eN$=+# z*zorBvd>E8)b?3Zn>8A6cEz=qnm}SX(>2XleB<2Vf7Cvr2L5ikp`W6DOtqyBraFvZ z&P7mNOtp%r*7()IFz3msqjwHwr=;FN?8)JMCaf^f@0Km9xn9(7|1_GnW{u;iqN1~J zte%E69OL(I7vVddpVc6W&mRqXowpYSBB|x+>_pNNy)+XebcFvDINljMOP9>?jhpxBmpw?$ zM`s0?kA8Oyw&lJs*y@3W7W6f7xuvvkTH>Ci?q+7mp>DbAf`%BLdsvOK3;m5|f4wB% z0l&7~1AeW}t$?rBgZ1>=?;L^fvk!*^wHnkfJEcWZ!zegiefl6xb-bzGsgv0sKi%Mh zB7X3P@4!CcA4H@u*OM!SePAaQN|ZY&#ujYyr`$(_84#iu2I&z|-!SxWHlD?6ZlsFi zFaREUmG+1%n+$4Rr`mlM6$kNKH1xHHrmKBMCvF5mjqL?l&QBB$wO*W%(p+pOX zi)3xN^06z%K^6US#w4HI?%!l)ZwN8JT=P5Y-=}$W*UXGDO&Skw4wtrkI3cW@8oLpBVqV!DR{~*2If1n-;@oz_xdWCOR+8zIrX#bFSd*i>WU%r}c zwq{LIk`UBrj|sBH^XiDch@n#NVT?knsB_GV=a-$DRVgVvjpL3Ze)vR4<7kJfF_R9B zZ#ed)W0xNre{L>BX0&_wgzWfCzhHci3EBOnAq7LHc(dLQOyTJzscRpYJs~w`>T}E3 zM0m9Ct7EtJ4Q9Xn)uhSUlL^gXZFTkWn%EKZUhO_%l48rS!P0lacKyoL16}06i}Q)~ z^+e20;M5hEx?YxofY!ySTkaR9-nc+ORxnmO{$%$vOD|rm?oLlG5b;70tz9>B>g?0( zR?!s1?f#_3!jdr-mH<>Ajrj^ue7{Rx_2bm*O;|`KNfGyvu%I1g6{G&kyiWToibr=& z%EE|P`hdimYr&@U!OE$QruLL6^@PR}5?BP+^KZJJ@E*x2gt*7{1U5Yu3|_$?E3v)1 zW794F4VxbC!lvIFnqF^|ubREYyH#XV-!;w$mz|fp7VAR~h@2pDpu_KuO}BVp(}PSv z!a_{pLE$cFxs`=vL#zT#M`ZfKcdp(1hW&ctL?zJRAD5JD`gaH2SGDu_ zDJi64(V~j^j_-#(_zathbiK)CXbj)aL7YF!vqEG1sjQ0)3zoPwrK1w)B}IfPawLw( zI=xQT7mIFJs>`R85{ofRO?qcSv8X@H~6c8Y5CYSvPDx?B;$U^mgU8VXkrQ1Jno8Wob>VbJj_)vYIcT1kXAN}8B z-rG|T$U6d4Q%(Gn^!?R`&NiD>8qUUB%9_R`Mf!%rrqO#^?B3y!Cp7f4Hg0rt*Jzr? zh0pgaL5lqwhTd z@0L1%cdIot)EZ-riHZ!hgj!7Ika_^`it?2v@a`P#Za}cR4MW0Tl=523gDmTEI~Rsm zlvK9Kh@e?)L_-QP`yp&dr!_2JEaY_Jv6G=Ecb~2qIz9-Nt^3vjwAKN$w^g@LWKj>k zjw$~O-#QZL>05tQ1cdj624##N%U$cu8`|h0w9@Kvt=H}MR<|E_oj%xFFKhe^aUQ*s zB)+3NoYMjJ6BhTpXdaU&+#^EhB;o1xm+%1!A6^qesi!^So{0DS)` zJag-iw2+-*C$WaZdO7pfi}m!9Ue7<<#OLC={b)VwC1Ou@^pWtFPh?3a7dqA0CYlkN zMDi^bOOz#wAHDb(gE8WcLWz{?UCzEQ31(ZGXQ{*syQ->o?R}_f*Mn@r9aRz`9IRYK ze8awH-|)YO7i`#2U%lK*&R#tvQ@r=)gorxideY*Y44`q=S8$es%2Z#9zbjW+dXBqz zBx4vd6J0#W%=72jT2@hmtdyU*mGxhG`F0V!+sQwNi1%tBJ|th6*or|pnX1VlS(2%VE2}%X;6RGH-7K06igZTd%dKCyHX4ajtBD#TX4JybgX)58lBeK#Wk4~2Ew1=y z{sG8X*E2d~u_(6}9S|HJ5UfaufS|w-zBf`eF(G)K%7?Zs8I{Uf9vNfF{@S{(l?U5twg-`iK9e;@N>3BZGc#1lHK#XrgStG`qsN*k-@e_Ey#CVQ6 z{+Sr}!F?;n7pmiJ#dr-N%JZ~99sl&6{Y1t77vl?+aienIea)YLL-Ypkq`Z$H8PwkC z;(V${(|s5~Ih>#t*)R|T7brTEb!J7amfmo@SW_ce){ElSPvATPDYIGBg3>`@{v;41GJ9(!s*nX?sCjd_E`=4bSIzkXIOA6U4E67){#|>l^&+- z0kIbYNhIlcUN2EaGBxH@1-ot}8B}jeW88}-v3`k+)gGX@e3Qu(X|g6J2I2Av6{bbJ z+b$FsGxffb`;EM~@_5C?QOZrlPVU}aRkeHHL+}fG|H%-x1eOIq3XNWHURI7b@QQ*6 zu!t+`I{Oy+xRv#n^RPB0=9Ad~dbr7UTN8@6w@{*$?76@=Ea0YQ=7)&F83wv?%=o6$ zXK#C~U^&EJhXf1zarZmpyX+`mxUt8^BkYxw5j`5U&1l;0@PCe-hS*28Ec|5q`U{KG znhlXYTI2MPv|D0QA^HwdNBm0WK%6f;T6>;4`u%L_bT!q!k{ zj1U!eRkxbbjo#u|2g%)rH0R-hO!iHUD5%@Y6tdjU-+?t+MeS)qWV@&-oT1Qwv1P=? zOyo1Wwy;Um5_kU<3cJ97z=lHD*+MW7lK`pEmp&51+P(xYIeNvy^DjwsyJIVzvYqdG zAgQV@;KTj5Ufu@ui)q)IzYI7Z1*!@#fALqvTPD;jUnPmq6ey01aF-=O0-ra5PNt^Q zm(Cso|9))E8Mu}!ie_avUXms0i`r1`N)k3E=3t2VB@#jkxnC-XQt$%!Q=4Vr9pJ$;%G}^riFceiVb`Q zx?fJn9on&d3;9c9YCFeH$4@js>g~vd>jk3|gSqUr;5vltohoE+b4Q+#Gh%)ED`H&8 zSVP@<;aUt_)C<=_;3#g4&g6z9w-~r3+#?2V3~_a)7D7ggfd{q{Wy5K$q6dpVck`m* zrM|oN9NcYiEHLcdubYQr<$X7uc;jzB{ru~#t+#o_aHRhO#MlTOVvtflThvvZM=a>) zLa#g5XeA)R8d4mKO*HR$l1RF-kO+HxoREcedmnjp_|C7>?Wo%u6;VX;x_Mx&FnA}Abgx5o<_W#pyo%9`Ny zzNix!T}f{LA41Ln$d)4t!!!GA+nPIT$F^-dSp;jxww=7#wr$&X3bAufcW(dFb@uk@ zd7E;5^;OsOKc{=TM<-sSe!k(vm)6^9&2#H|9&CK|sp~J?YWF9O9MW;6dgANP)uY#J zwN7*GYR%cF!?JMLeogDH85HDY76gwyQyF%@{>((waUAkwTs+#rItEpNC^Gsf@8Pg9W z8xAQLHB$7$q|E*3-@)ZdAu~H#INzo{eBiX5ZVZt8RPM#H&Om=Rc+GZHZal6P1i71T z3)QK5gt>q1@jsXJ4ds#SRJBQw9bl&qvye?V`m9{rb~@eaGx%<&TQdC^q%Kz zDV&U&=sA19X<#Q-^E_uXoF;Y(=^yoA;;09$GX_ozJ4GsxPB2TXY0K4y0WuN1QZ@DS zp}(6pF~3b!K_0)C`HawVb)2~;0dCrvJEV+xa$eefj&sq$9QlKr+&UdTn|YVRw`AV! z@IAmywml9X4Q}%6b@&)?lVP93U&5N-9RGSrUD5ZbtFXVW^v%LqOwUP29S^6Doh7uP zE;Ua7xmKqLCrWXy6;6f@@SJ<$G_Vs>yL9wzVlPuppQP?_D(xPp6YFZz#|>-_=Xg2n zB%H<6=H*Zer;eQ^*+0DFUr9JoinFzFGBnw9_J-5IPD~3uCxp|)PGR;(^&lJ`JEY;X zuv3)%MLK#Hu?H-t6I1twmC4>PxKo6a5A*A=bQ+qft@&I+{JL3*eRr`vIbNHr-hv&njsy1 zv$!WvP9LV;E2yMr^Y-|^qfMTNncr(U&%^pYtUpcuTiE>Hme)bu1m|dW7SqY{I;g7P zbg;7|`>VV*spW+er8xD%$xyN9bPFe@6{Vv$757ZasR#W%R`5!?7yLrpqck~eW&3!y zmxEbf9)TRTwayM+9ma6#*om@V$=aZQ;54ukXYco%^Wn6xQg4{Oacph; z=8cyXgcGGW^}<1I2&Y>(s14z)E}TLt^~UCE!YQIkFaJ%&eKxK!hjWbuyQ<^3&14R& zNpc1^IX~&})*Mf=eaiCM0C{pdPqU8=QO@obQ!-g2UQmuf35KC0-Eq2qaiJIPf zZzg)vdvepOxw7LoGrJ5gxtrX3pZ5J9A1S}XvpetEnKLt|{LUA$Lrz9UWJa?by`p;c zP)jP7(dZ-CCxUoio^llnR>pIhxbn_Bc^G04ljCy6BA2KXmpF7mK?ntzgG>=&$cPN~ zK#f-ri`^R;4XuG!yxO=Ijpc?2TEsrsgiD(y8v5_4Nb!n`9ef}pVCJV6pD8)JdTQ1D zc_r+kKd-?V~fcf;19mXIySaked*<=@A+~6xseE?3#3RM zp}K+$s5h$(GXR$2K*dsxRZ@NrZ&so!A*_;kP6Z#ioj#B9%5Lm!j5kO3jx}?aw1U(z zrHe@*K+(&cN4m8<&^==Li&cfYhn<{u?}`N%=bu~`*;H`f>G^?`3vXGs;G5L8$+&~; zUj0O6YBC8ksy=FbVCKZz=54<{z?q-bIO))dhPBPr)#Q_oqiKmQpYBBZETwWP(joPE z4T7Y2FalMYQNue|VodK}0XpgQon%Z>NK3LkVZ+hUcUC++SWdNe=&EWa&oj(yu3hj5 zw87xqA@wAce2p+_;XPNbA~Q;2*{m24P70SK$>j~e<;+KGSAMDp^|sT$HYHe8UO^&N zQQ?UEw`@AxdBb%@MLym)YQoU!oZ{IDlV@%|RkY--&08)n9)Ihkxy9vo%zI*ac4KMl z&Vg%Js;&-BpP6LK9oi?oU+mzv=eMu_dc*oJHe&YV^^u4v^@=aQH9EICo~=smUD zW~U%!UZI`kyhng6vE0HyK(5?EnGyB#+P8{Mk65Dek`5@2UeLordii>(ksa(BFGD=I z9!!}f=s8I+S%XX0)n=_JdgVx2;jdeoUanr(G;i^uM{DL?$)7Ovw(-l?t(g0;9zGsh zGPtA|2&hL>d*+OgBEGXUK6AA7TPL$*F zkNI?l*6hp`>Ca2Ai`?E~Kx3#s%xsFnZ18HN^bgyV{$tdi5jpmcmMuS$A2(+<)-G?# z-E$~=*37tx(|4RL+XR*$&38^9Z|d%sPY8JI z8X@{pMqRATCz_ruIcsO0PYQE3uoM$%;?|SF1%+dG^*fom-!EJq_Q*6j`Ox<3i}Z3_ z^@?;xLx!I`cEJ#`Fm`;IqIQMOc|ZE{(SK39Vi$?9)CdFzGrwJMbZ~S;n17JJF;MrH zemlkzP7N5io6O>GpPxPF#VuQ3teErC)=704GPcV@YRbr0s?3_w(&`MA>gsuN>f5i# ziH9yh@wZ>WxJw(C{P5_bKP+(;KXt9D>e^EX&`LVqKvsvqcv8IqqaNHZ-#HKB3%Iw& z<&CG#UANo2f3&t+ek*)L_65SV$%W%5C0K7AK4nvZw0Tp<7rEJ%<@)GR>!-N3p179XKkUC3@ zZPJ!aBm=BNrwtiYSUZd?8xmd#c`+ zdGo5#cQ3eeI5~3|C=J+*75Um`{JMztP0NwM?()oOY(5BS25lbw7sA%M_N&1b`$AfD(8Sb3{1CIih69?WMKz$4)`X z(Po!#wwpnsKX_jLO4}^meRyovZDSg4S+nS;z#od%j?CY+yP<8^-h(4%&y32y>D-m3 zSzAUfXsUj$PIa|vR(!&o88hbX%2}RMS)1E8E_-U;!c!w_6DvlVdYgg=F1WOL!S1oX zu`6$`*i-0ZbUKmM5Li*{wqgN@GdG?ZeX(t@etgQl7NMxh6F;#;Ywb>*lez zol)+3`!xjm@wxv1DVBrjczdBx#=sN+Sn>jdvFn_m;Soxie?krY>zhK7RFwo8;uAA&U~MrRP@6URIbG zKVnwiygegpZN=I4e)0Cin)7Rq{kTfhdQOq!I7jT5yfZPZuY&~cz6$Z2j=t;27>*`C;AVC61mt9ix!dr&;~g%#PXqR2-OOMAX4-v#J?2iah1_o2FMjziIP}bE`kv z|HThvP0QwnyQYIy+M-Q-VcVU5G`Czke&pwMJ{=QYd<|l%Xl&#tnZ@)un&xHw!Se=r zJ{aI&Un~R87nKn4$_>Co%f4gSY_o{Ena+8pcbi%158LM9l&7FHZ%$!o*7m7*5vebu zwl$;~5}S&{c0tbs$M! zgoHG|vughFDJSR67}Gp4Sq|TPW6QZ8mKN+?jQ`ZOdUQ*G%_U(OGWR z(hQhnwJZNco5BfKwXQT6ll1aIVn0aoh9sRFnAWelqU}gly5FLv0pZz0=*0h(eDAyw zM;Z*U-2yKj2mRXHZ=m_BPtNFxd%pAj+TxZf63}zTxz_g6FnWYwdl?KG6K}jh^jrDDn0^Q#g*FMHBH!% zWy7rf+vlw86||y!=l1@+w1YA;Bxz9sw|q8@`{@cZ1?5E+BIaMc$AM;|G0jY;6qZk*43{yJZ~ zUT3HRSA8LHgcP{OB=BfuZ8Ccu^p^54}<{!WRz?z$Ym?7{;$?z%T{{HhBtcj5dz z%kg(zc&5u1Q!k!ukW*1llzor47sl?)7eBsy=>LjNTW92_S`OnP$(`+j(HM5Nb@Lgr zv#l$=CWXh(^m^IgJajTNcvqwaS8OHm_{n+u#~OxR*p9usyk$vp zor7FdLHsntScXmRS7$3!<+fMyA~NJ8`EF2VT4eIL(UjE){`H<-H2}PNwP<}2phwt! zkk>#Abod7N$P(LWRR7)K@7_Rd7*CDl8#1%k0q%|>8c3F|1lUZ2mQL0ClOZpj2!zL; z25oAF)qi#5*5>h$eyrn8)->eucB!b7&s(}q?Nta$aU`-jx?U2`Y?Y9d-+5_EED%Sb zILXxkG}vOYFq0{Zf_eYwZlr%|6P!3wP%vu#=p84?X*>QDg-3L320|w2r zo1T0T_FLj^9+I@ao3jc%TKU+SCP4)fAekxCJ$A&#-d(F|msUeV5el`2TB0M}+V%Q- z?J5WVmzoZD58tE4@p170>}=ug8=^(jJ~~Wv(~@MIBLVA*&>5Ld~*w~+DDXL2L5(Y?o}V|z~^?>F4bx`>2r!&~-9V4)3f_@&XKy@7K#)!Z`|VGhU=c7b75@mfqfE6bOMT zw3h6K-y`19(-5fj^Hrf-FAYXH9OZ#18SwTwV6guzXnVnVh^LD(|Vh#(X^Sh_U2XZ?n zUjm|cZZ-}}w-OSzu61es!NzGc0k)Xg?`_+ke>1I2I%`@sWg;veYVT+tj6Y1twEC}#+}bjd?6YQDrFny# zQK=5AKU=b#izR^GAC1U_l9>-IRF7rcm$^3b)!@oas?>CLowIjKO){IAuhyJwPU>wB zG6lsjf33yh&6bmEVe?!^vCcKjt*6$wNu2|_>LWGO@gdDPJ?GihZ(iN;L-VYLfs=NZ zr9~{?P~OwA{zPHsz#cUj)|n-PDo19(fQ4n!%`d-S_s%+)3sV7L{{6XC!-{t;2=j$+ zYks>BI&ks&l8nsjq2snrop)g5JdF50uC2fYj73+Z>=Xb(Lewi8)_> zQ?_T)?PcT3>M}mw_{8*Scg%V7>)`vf8|ea36%wz> zMSEvXJ2;8FM><}4DRuJTxwDXjN~mosqP%H(URzV>(8mO08HY2|%p86=S0(egAK|_k zyY3|7G{`a^WrXAsfKIG;z0RNuV3!rQA#~sPDZ3gYyrsug`XFFt=MA}N-s5Wy zw>~y=-V>|Yw~liS4UKDHAK<3du=I=7YBF07r@hyHvh%>-D1bg-Mdu84viym6X@C=e+&e zrYC1keXyxyQ)0rBy2I6REAuDTXRKNANxs7o5n=Gx6>M6Hy}=uL)_=Hj!>`-3M;;tM zp|?(6dHKqz+`?(+>(4xZy7gWO=4Um2I>Hj>DRTK;Cn7O^evxsXgj9cf68ekNkB3u_ zr=BEYTo|q*(SwZhseH`G9ZP?oLg%bM%D%{0xVkDS0+Gb|@z$`V)#Zs2Fk(k}CSwck z0^{FiK35$l;$rMvbRUueHB#*A51+jH>4al;AL;X>mwV=tV%1X}|B}?SA&}3G4?BL8 zydS@#V;cYbnJp;c_3$QU(~Q8FiloMu| zC`V|3H(mR(jdwiOq%wXUS5Xx|{PL;bJ`LfXb72^Hn0E1a=e3WRTZ()hw>qz>b#>GF zDr4Pe&29RF&G3=1HC*xbd2FaB`2``5^C-V0WxOiRi*d zpZ{QWbbk@!gaS{t=ZQZBKL5h#OrEa)J;7Of0Y2k5Pj`Mp*KY@$aVdv5=sYiJ~kMcYrkIDR7In%QT zdAg7@egBP|>HTlzwmeVr3?Yw=@Fc$=l)u*3(=rWmj{r~oQsCaA2_!{y|aghzh_Ar^zU_` zwP}I={YK{^d=4+T9{nr+jWi>qLM(s1MpcgdQ6LIO(a4TQII{dfEwSEP5~CN9)RjG0 zT%YId4Jh#OV#b?Q`42>+O)+|XoGpe1d!nNvBlO{V+U(aDZSnOE?R3Gj5_*|?-&s^u zv^$mPFK#kf6QyXlbMwdRoPWTVFF>zh^M{e#y1GNNRyJ&C`n9eOd{>=0*s>HqvG?Gn z)3g%((Ea0A<@-SgqsAx07S=4TaGoccxoumP5sjkeH5f&(h*K}X5EdF7sPj{I>y*g& z6H44XKN2c5nXNIhIwanrC}(wdGty{zg14EvptbTsMHy=&uW%hcr2hz7-|CELY+T({ z!O99-1Fk=y%}8zEBGqpt>=Gd<>h=AQ4rMyhIf08tg)|jCK!vbcg&Ch5fVzmcLYyiA z{cQ|Fx&Rj=n`rvuqh`&jqQyVP2*&>7Pg(C!@+I#f`bSk2K3i2Kh2jyke1DUZQnEPj zcP^GkUB4ucLI?{k3LjU8crT1)738zfKTj;>j`|`b%iL`!qcNpks^( zAhBwEFv;FzDY+-;5Y)l+kVEA2^(14Blu4q=ZL0E)bMPt5y&fww8XQ!|daUvH)FGpb zaXu`_-%n=g`xK*uXxPS?;6SHUps)5z~LEvqQhh76FRSO!GZ;<@@Ws>^6}dQsAlXk z9xh+MSI%*MJ@U-aQEaSbBE zo^F%!H;|7Za6`w_w}95I_oIBB2ca-m1~FZ*fwHXf2Tm0!u{Q3Ks!}wwRwJY?LX7ea z15&e3pHccI`g^G(C<_Cqxw@m>#RL|G+GYA2sq)cR$^Cv&T?z=;>^3p=&Hd=v>E$&DWtTwdO&C(Z0glR!c&f{gPiuEr7|*5?B-h9Z?a0}e1< zEsVL4^U()rHR|Aa9pz|Zz2j0rWrO6mrCbsN@9I0&!3PksmYAF5m)bX7e`3c**#U5! zwG=?x`I)o^`7riG)`IH%5*%FzEHj(%BMMxK-3-%50)gm9%!>sW( z#&=^}(FPj9YC<&N%N*KL>gS)o_a6OEzBj?Kj5-J~lgZH~gH<(TD>+F{kS(wfN}w1P zv^XF8yphsiTyMaRuh(>(N{B}Y(8CDHK2$e7cz(5)MnW!&Ee+s2pPXK8AdGe;^)gBv zZ`Qh-kyb@(RW=L$Cq#982II(+Ik1OvWW=_%$}x}D5*}lyMo7A@5(V4oJiFjgYc`CEoMk%xZG|JKU=8cnSPKp4qf?MpM?ZanH4? zYG$5Vu=)q`;g!v;AVbV6ORLsp-Bdb@J_D+txgg)ru_Q2i8E?mutYK|A0x zy3f;r0d#&SJkZ_S8f~`p(RhpQ^BPg`(N+5IYPLy7E82A6osZ3-DZ}G871dqYQ2%k> z;(>>YrncpfPnPKmvuks*t8y?rYNrWA_?A zNY`30)k}zr+rb|&XhFgzBUZ_*`-p_-h`W-MGP)YCWFl9hk1f>dO7t;NZU-?1)x1P2 zper_~Vbl)pLGyq=Iy-0S)3raoQ~$-mUA4oeE}64)tUUB+#rWpcRa5t-$wQV;mm12S z*wp@RHB5owpTO9QH!T^|a_#nMr5!(9JaXukIc58wp2qe4#EoyIpExI9xFZC)Z)7N^ zbBzo@v}qdl4vGh`F%Es{C+9!*<6vjK)K~uSde46Hr46nck0z>%1g?u%l*amP^p5bu z-0pNeKI$?$@d@#3%*>P z*1ovr@aX&l%Zf_VEY?w_8I^VQ^PTt28`dvjTW!s{VM}w^XS?pkWx6n{czlp`nDfQ# zS$J}c%Ee$c3kiFQU2Sws#+ZmO78OiTd%L=<_+wecXe_(JtpTjw&Yc>C-+pf94)PrN z-u84yi+A&bOV7=!dSTV@jYDyI&E)2`#yVBi`i|4&TXOFcd29M_d-u@MxzDt0ezDTo zqpbMQ_UxcGcHJifm^}A#E@)lW&MNM1_UW>Jggx!_B_8 zrn}i!)34D<6o^)4nF;H^b~EUjHA*i{a#L*hL+0p8_6H%FOuKeHiP%Mi=b(3Eq!+1*Yhzk zb~Kbdx1ZeH@q08v-Nze=;#swV8W>%d3ZzP*ZH0!TqS$bw;-lzj5 zxw&bnIig2#v^@LY_FW{c6Z>wca^KZ-+jk`iB04^W@#M)|*eB2KFtxTyv5(i@;IF+K zA?a7DpAeQ!VKj(+R|Z!Izmi)N@dni7#nN3@(`oW#729>qX08LV?LP3xoV*)|T*I>i zJ6?w<=rJ~9!Kkt=qZUkfeyv6ba|>#-8<;Z=-xUoX#0D&3ES0$T zUI`a=+j=$s&DQ%~kn{c2xmi_b%9p*_w(60w6&V|+wCvebJGf*(i#)rTRE7u5dbp|S z#U?9;W*ux?qAcP%cQ3Mw@6%`Q? zsVlWwm%8A-x7J##wOZ@0wbs_Q?p;5S}eajp4t^Mo8MFfU=mEoW_dc=^`f?5Mw@l2>eA zvipj?=ZNk5PTu{w`P^^oF04o6wfZURp4)NJFINY0r_H_L@tLpXl;^t}Oo&_5R5& z-)GDGmtul^|5TUn%Vqv^75t~We4po(|I;qEr|B7G64#<{Fh3Bo4n7kcUJ05cCQcPE``l(lO-RJUlpUc;Mu9WU_ zb(x`A{XIfK!%0SDIo-w*49)HCwxmYE&Xw(YiG-blnYCU& z3M~`4ARUzs9AKisYU;EuGz$!E^B&XKjo*uMyuB#L*NbvezPFqnUOSvp8)F?8k||9U z1%_eS&O-*4FmH^5j*b~Op=v>CMO8yy-q6A!MKh<*ZJ1F$1Q4?U_@(TKWs}emxEdfty@s5j6<=A1 zAV*Lbaa%R=%K+k}81d5b(!^4J>AI`T>oI1>-=2xuw{F9R4U6&lQghEwexlmFT(>{0&NzF@T-F@GwA$}EK7wBRRm=pO;lYok)L~P*F$UOP2VuFZuF?M`T=Y4 zuTkbB0~#`0E?T{9{gnEu5yOVX$KjH#7sPnhE>ki$&+eQ3AQ$`B#`Htr8frKIg~o#& z6Re2a5;Gk&fn+BZ&Y5P^K0T%B$5g}gq8x88%JKE0oRse^r^h0kj+vGwV~5gd>RB1o zF;S7blS=LcRsr2`x+#wxH+#WCF?iL4(QC&x?wz{g%DTx%){NXd#QbW(ki>@iv6E{n z@!O0g%kuLJ=Z~GRs$$L$mdrmgH?6<skO}3r!%~nlfxuaV51}qt9bqZpqC){sPEO8D&M3&q(G0bHJ4EGn zwlP7uqe0;MbAPZTrDkFE_)X(x?4N$-6_eNf@ji^7g|ntjoL)a>MQmZ+$c*%&d7~$s zRW@eFtnD|?^WuWyhQ{GTh71NvUuEy`%d}0FzRLb$>0|6K9r`N!kY{LTTKX#c(9-wV zhaLK=e7{{=NBU})?{nE3{1Wy4$u8e#%lwyWTS;H-@_o6?f3AZ6beHe*obrDfe9uDP z*RWUlMs10uud+Yd`Ty9Vugd(_sQk|a^YhUBIqXe-rF#GKF3b0`Rg!+frr%ck{nilr zZRHu_grcAQ9z)*`lkc~y{7-cGK3A51iF*HJm+!M>{!6teqF|i9UA7-4-LEejS3Amvkk-%b5=_J+r}ZWT&=6LDGa2Qa z%~6L?f_y(!YR$oEk+sZF!%P>i}!z-Cvb}vO+t;VEQ~FSLZ;Q3HgT%h530o+5Un3lamtS z+?|<^^-ht;9X5~tTd{#>|CokQwSIDgrPiOfUa9q+*};6UCnaC;#l7ucX-r$ER{qE0 z!?gotybx|p{%X0#&|THe$?G*j zu}B|tRj6EXrv=M2>azuIAkiq$RG!c(p467wcClA8gs}*W2xBTh#fWm*S|x*viwX-IJ3zF%pQ>K(Yyn+X z|B?N&MW@$Yws`i9vPIX8Y;fer(#A1|XYhq;L~ORn^4Djg_O92~g*4@eQJtI8WL*)9 zx4$pPoww}v&BYsQQ|-2Oqsz!}G2x0suEiqb!BMA>RzwVKlgwebbYlg$KxnR>$DSg` zd*ORC*+T$cK%u`--!eHPQQsl?P6tv--y!u8h%Hj0EXzR-4Ne0?2dDU+%m}#7QJbjm zywI&tA*>@E?9#@-+i#I$P_#V;Rp9%z{X52>ei-2{mBUX&CTd0o3N1JS4Ff~h+{PxV zoePj^>yB`_W#0kai0FA7DxGUD{{u{_Crw{owf!gd9S6()B z2r<|oYp5F7<51Nz&%IeA2dHInfj6c8TRpe-tm4>r$GJlMa!|2q7e zzmDDsy;^f{CD*smU!{pwq7E5txN491UY z)8ml~9f5mfZyFRQds8wRZVDBlTZ;|0sJFXR=+XmVguoTy6h5^dl?5B8_nGa^b9$Mb z9&`GTeg6&Ql+%ZNnm}##O^{9xxiX-XUuqN9a!@pB6rHtB?fcl14G1cnKO;T-3?3XPA(aY4f7SX4&y?rX%*Qc^m`cQT+i*<(n+}zxuxkG4m zL}{1(L$yoZ%cT;$!&WrkQc@{>>>OG+X_?sl!bzC@BdzCU6c7+C`Qk^CFVY|#s$de! zsZFPq$aIZaOOaJ*L<~fiku!irxoR*n%CNa(RB&z5S(bC8zTt|H#BoJSspg8JbD33` zXGx{VNcR$OyKCG*rm1!o`TAZ;g(@X3w3O4v#rr?O#rHqKCFOsB%YTc8&BV#0Mva;@ zYU0?@l_Q3hWaZh*tTCj=_9Vr$KCn2O(yer3WlH>|SzNzrVy)!*J=4xQIH~@~nyRyh zm|rg(;;SdFui%qUm3otV?g6#+HA99E2l=Nd+whAWvJtA$UmI^r$Ff2FqTMcC6U^rO z{$RQPh4y|;3!RYnoXDPl_ogIoZ%Xp@rlgebFRAB3f*j$NYl=n6jNf^--1h}W$FBRC zYUT4AYnx}&a^r!?Gu3iq(=4^zc!pYToDf`YoH9Sm;Qz{4y@>Op^@XowUwEQp?1!27c5QN}(O;?w{(%GZ2)A&|PN$CgE@}$PDiS)H zL`0}qEj5NS7jedb@xMehGOrny=CvN2k^dgwbuT%e{g=N>N& z=eCO!o-Q+7|9aZs!P82HGz}iyG=$3ff%yaWoh&Pk_A9z=zcTr? z7l8Ku%IC2@ZtcFK;e-3VHgVX#`uzCBTaGRs;Loos!n%UG!tDBD^9sByX<}YsT>&tB zxcyUhlAFqhziRUFbagns?aesS8TD$o^6COW2G|nvwE2;ooSaOxt1+xfap6^bxS+16 zxW1sEzPPBaK;9Qkw(t3+^t7;WGW`$ClXvw6^m1|$Fuc}0YU7sge%Y-}7^ z(Rl5stgKPl6;r2HWK~;tlx|eklo6Fvrd9wj{GH^1KWMT=!AmFq1U=M8Gz#okof1NL zMSQL&PVG!D<^BPz6S45?r##o5UG4W*=VXua`$uJKOWKzIE^Aa)wuD-pEpI@G3~qQpT?+r0iZw-7XqSn=w!7zfHKJS z>FEIJ#py+PIWpgXf;7XOY@?t;^(Xp?A}VgVvp?NI&|;*QA6h)Dp}KNR@tqY-qlZ=H z?Oi$faMd|?w7CfBoDmKFs%&lB>;uyp*Vh#nRxhX-KXt~r(}v`g*B8%NR983m`PTC- z%1)_Jgk|uWIa7e5YcUM3Ev2)(gsg{R!e?3(1}H9~kiLqD`l&?p+O@F` z%=B5$?Ru4!vb$@th>xoL4I>s%9Y*HuQFXYpb?bvmhE1-n99w*6Cz=O-H{GeiBw2+y zRJ%!o3u+hEOt5^XR`PjzSt;X*_1pP)9O0 z4rQU}_huU!_j$eLJUdro_uLh2?kUCH-|qYCU-x~ByQRfb>@`l57x?w6_8BAz^eVUqEdHZ2YbVIQ*H3a%UG0PzgP|@M?e?NGZ57Qp_#xkTh`Wk@HfIJQa>_OI4RG2Bl zhLNy|qwxYWb)VNUSQuQY-KB}d!sT9T+h&>CznROe9(D2d{jPkzXwi~|JRbuOf5h_G z@V#5M>>Vy|K6+T^^|Q^hQj*VX@pzUlP3do*rAJ=5=e(=?#o~^b)RFbM`*P|lQ)BS_ z*nU@^2Z)1YJ$@|dFo8_ghjY5BY#=Cg?4$4Qy)JLQb=EZ>yNHbC}U)7K3}$B?Fw0+OE>Em6SC&6 zq{!yE`-5ORG1RUb+Ee&)eGwRn+Yyw+S7FZP z0OzECahOWtoOEj~Lq;T!7hi5h;@9R~IQwH`!c`~V1H{R)oLZ+G0M3A~0EVa(CX$;B zopMl?Q6?{(EK7;R+2&pPq7zRX&~ricH#%dzNS38p<12%GiUa0=6Rb&=!}S!oWs&e< zZ{LhxQxR7I!tVAIc8>N+N8Y{RNZ5I?lyJazZzcq^S58hop!&@V0Q?g=P6d3m2^>LfH+kEIoOLl2LlJ$1}hJY zW`o4~@6RLFx4tHd?K~j!9PdS*H=3O**7HczMK(;M@ePkpvlh%qC*bxbfxu z@q-3U7!;dy+pebM{y!L-n>#kIe|d>{JFbtf%(V39-#E!gNUKd55UqMXLn@mi z6`t!;_K9lNx%5-OeH#KTB@OSTpX2jl6K>rd4%{;`Gf({=BzZ)=^K<3afpDRV^7zB10(F{74Ybc%o5{MEg2_LY~Cb zk z2J3`d3<4dZ!S!&ITVu>RGqwzUUh50zW6W~%hq!3@A-cI4mn>(K&1IwU=IwaPXmhD^ z3#XJ99ielIA&Xd!iI{DD-G(vdzn9}8S!9KEyTrWtKD+^M9BrPl-CQ!d;}#S>&V_Zn zT$QOms4;Z#V}%&G%=|IVTPE>2vqm9N6P8}*GQ9;@zQ9QH>t#64{P8__6W(0oz+gC$ zKh0aTUn==E%;q!VFclaTE7i_Wj!GWV16ZV(Zff%*wlq`IR&})=PJbN-A0F@;f10@h zCzwms;UDtX&sF(F!N#P*!7e*4T+}u{WC>d;lHGE6pen7sUDEdjN#EV5i%OVh&3Wco zGA#7n$nbZPCNJ=E^{&c#hh4oJ)%hJDKHgr){>o=MI(#s`sG8LIm9s;(ymL8t z`?Y%($buf+viSj7(EL3|WI?P=j*Wbp8b=M9X?M{i)F3p?;&O=6e{{}HLvE6S03J4(llz2JS#1)B4^NqVQuI0rNhSO7fl>7YN0reu_47v#>LD(Tp4e#z?e%OD?$De6|F!cuoJYZ|p8bQ)zV(FR%} zPu0$md>BOYspOm+V>@6fAc@;O&Nag_zwm zeqxiqU|s_o6nJ~v&9e)3@7ldPpUt}AT=w*}*Xoz;N*g=MTrg{Gb#!#)ntA5p>hWp2 z%P&0#FKn1wvTyL52E1b1o}nks1Ym(nq%Jr~%_Sn~98`g)PD?Zd9@3)D%*0C=^=n(p zuMR}9udY3E#G0V!kDho!@k-nEa-Q;vEPEjMAr}_cE`$hh%c#IB;^R6jUf=@5Wh{-s zsHoINuZICdE=q`v=8=(UjT+i!8|Bd`2`7u9Q#Kq6m?!v`XbhCJ47GsS(;m8PD;Q>Y zGw9;4gc`z3ux3U0HCq(4hqa!`Jfi{+uw&9FX8vAycZb-;0?*62(^Y|og0`{1v-qSk zkFmDLaSwl#uT+tv^J{YfID+C?B%ZY`Qh-fXuxMqu)QnRtm)R2Oz={y-r5@Qv{a{b1 z4fD1`Y7P?kSlaP@SOoqyaO2kPC)ciTV3bFFu+(*fw)++?LWF%;-eoQ##W z@I<~@^=BXCLP2d_hyDp%Fup=Z@@t^jV(HqH9Lbc#2rgql0k@S<5oU-9U+Egd=d|5P z*U6^PB`?0G)341}eRk-^kX5jfkbA2>zmRp^ByI)2c-h=Q^$?A%@2h(7z-0OEVP(@F z4Apc-X;)T#0~s6G=+<4F>;f7p%Unqbnf6PnOGb?to<2CeIB4LHFuu>gAHH^!-r3-f zKkUZf-}X|-k_n&DNAth6uoAiyKz;2|T*3c9?WkgQ@3vNX`zg^Zs4dAHG6z((bw&n} ze%6Xwx_U3)a81l%2s&~Nc<`(np-q*C;DA#IB?3liSZEqr>lcE0q`h8b7%7T7PGN2N zY^#{jdQaf@inGUUpilge9!Ul;ZzP^yS5vE4{M_B)1s?N7MjYf?-`EkT!regARsU zH|VF!y@d7xx|_z0sj3_{l-NFjY>`n?*1-3$yw=OEabjYAeTU7Gr-%MxUutRJ{e`ZR z|B=>9+nQOQ&(k~o`e%K9zWi;OH$(2H$^KMVS16Z!iy8_FCl?ij+^fDH0C5pyUy>Y8YFvXIE2TyohpQj*Ot zuS}8|;e;cO=;~Pjh!nCqlZ#{}*?z?|TjjH&$+C*Y&NF^6#IzfCmHAAFarYuyM&4&0 zwRz|>#XFpTM!ZDtOplb2UrJQ{{0m!teqr;DcH&LRU*~B{9NAb-@vR+|2~r!Q+>u6v zM%%4iIujyYOv#fYi5YG5Q){SniLNC_x4%!Elnbq5 zg#2jB4UrvUQ|OP)VGFVR`mn{=?(RwV^0zngKWMjrmty*n@r@41W_9vI*H8t-6jm5_ zp~ARxTd9%hX%ME%ZS*H~#*mF?t<{vv3w_A{(DwLc{I%A%&7beXlt4dTb$QzeF%TPf znZH*;Kk&D)`1YaCu42WbO)mg`d$x^BKRCBGA~l6Y)JH`!VI9_8o8dw z8~gJ5IRC?UuV1D;cJg2Q^&gy!dv)KPt)*Jl<=;)yjmuB2)j$3Ht_Q`it3H=CGjAD- z{SJL5?{VE|^K}}hmPnr3X{|l?ahw`Fn8vBW)q_WsmxV4w(>TTYvJf54TzkKNU7C*% z;jLaSQin4cZ+l7V8Whj88X92%Os#FG8d)|>*h_wBAQ%@??-ENQG$zDA>Ry~SxX?ix z>H3r@Q)+4erYx8;fA-9p#+rtS<7G*svI&M$paMpujtr`VDkRwkhw-`@$L+=Q^y}MR{XMLG6O-aB_}ZR+HQnP3?hSv{CH+bG2>u=r$Z?);39w;)+y80>$R93EU!ge6tvHMZIpwpLZb-=mkT*Q9tfbgcwiSCtey**=v2P@kdjJ_;qs`Pc3904&Qw z38Bl|hT3b5v?q25OsSomnZaE3f-|g(iDH_XerurAm(<4CXeL{2QKXw0Mp`3B6(n#- zNnt_$puAjb9_6wBd~wFW;JRgQMwea$8N=C&?RA1(X% zDO&Js{gs+a;Wqrt8)we6*FTS-|ADR?4rJ^6z*-Oem}XZiFW9`8>Ta)NmcvMx2)k-8 z7>W^*ZjATFqM)VBSb)e_XaO(8yS(u&GAuoJ85-ll#U_?teQAs{Fu?TH6tr2-op?I_h1pr?h@AIQ>}*jj2>4*yCI>qE{a6J zVy0&I zvMbZ{=C9CYJ@~okCt37Kc8M+IA z&mw;uyVeg_?ypsGwquT$%oOoS=;iTV<)I_%>kRZ=TLT6&^5(LoZ$%NNCK zOx6E?S$X*gFx{A%VtW#HdAyaWR|>Uhxr(vB*VIP?NnY2@?{uMP54Y zv7aVcXna@sElU|7#w|(2xVV8~Wf&+ktCGA+!0S!-N^U9~JsM#2)X`JwCeqG!iR4HX z&ZcyzE#fR+Z>d?Lc=Kk)QqBZySU(Rn$u_WBB zy-=PiuD`gOwz}x%acyVFW?J4^XKH;KfWH{Rr@yiKdwxuGBzMb0LReRC79o$`|FE<))MrxxcE|P1Sz9_=QbY0d;#jqVRWXP}~vZIBz zSg=AR@ih45`nszST^Tvd6Z9f8jD+}jA61f{A@G~DZYufk1lNJz{P~PiM@fj?52b(bNiUs?=G2eLA|7-JJ^Y6RF?L?3E_O@oJo4zY` zQ$PQ@^`8LbAGp6nYNlvwres67Nc#OTnI;1C2P0f4&$Ki!5p&%v7Z)uRdcZxOJ=-=Z zFjcvVz7*Jfx0$^IA7TyPZI)i65=MUs<0Bi!LrS0j`UcYHeaeiFFrVQtBGH;WfqM|3WO zqE~9D7V;TGOl`D++ycl~y2m3_Bws(4BJ#+iv4p zL!k(_QOd^<_N*uU;3a8VEGENRu{1NbzNYkqUr5{AV6xK5X9e93nuQ@Yx&mS-GgDeA z8>Brl-|@j@aqO@92<3}q$GFAN7`HF7SoXDEZu??=WWWE&dJowC1oIJ< zp66Qg#5*kSu=3mNZJxF={u1S};P6LPo`JP#3{@tEPA=j~;2v%*?UnII+sfEehh{u5%1b)I%I$L^FXyJmif zK{i@GAUeo1M4q$ls*#rUnNGp8YG%lqxzTW;9%<++?DimAD@H~}EP;rK^oS`52?_p$ z%(T=H<|mt-vaSY^4pxdP6uxD}Jn)mBh@zkTr1f>{JMdVT=@c_0rh$JG{wKn=vjCIr z*rWe`s`B3t*Xn!r-#5bi_a)oW)xH0|`4=o2Wgfxv`s~AR;s4zK9{&s)o4dq6L*f6N z`MZ(0%G}*;6>vacU@z+ctN!onV2jTl>!3tr-||0lM6 zNspq-*cpMz=1)5?VE0Ru%n$gv5`n;4ReoqBty z-VO#~komC?aC$sJQg*#6xsI@1!HOl1k{E{kbjeKj=I?`~4qVTky1eZ%k;ae72c0P1 z=F{Wl4-39iS09}=mZab(cm;<#x8dSJIj*6?LPJ7BN5X@SEsXL-`7Ar6jZ;JzP8kk4 zy1>nSNuc^N-q^Olp-(85p`>DMdu=>|cx zut8Bq6ovw~_|x&9?Rgw-Xgwwtli#eJ=Q+yLoAKVt1Iv1y$AJ?lZ)fa9?MtYJWwlEv zk}Ma6sPPe*8L2|oDpEKT$fD3tL2|*+8w&E7sE>?bP)7!Lrcq=@K!afm#jOSdmILQ1 zNK+blw$KtrcCNB?P$vW0{G-A^@LaDo<<2E9R$qBe$gd=y*T>1F$xfYXC=Vw*cunCs zmA^SU<;s~qzWU+%5o32RPdz97f=AajG>@IVywv$QZqMW&9k_S!l&nQo`UNdxJTWs{ zhTz%jn#wo)xMFDFfdOo1PGMt7W%cICSznfw6sg;WA%$#I|G?qYwDpv($r)$lQ4~+og_ea89npd)SqUYBGmrTJ z`+M6{f%l26lX(p*`tC44u(<6td4bgT8NpFO@|6(tP?dd?oOEB`iP2>dVdH$J!?H$HfW$ z__tH(&UHV1s;+7#hlo%5qw0~T9O4?Ym9NmxKh>{uAWmvA*WsZS_H^44Ki{*R@67_l zI+=c)on8Q?&$S#oA85fz=3^~*$ZYlVoB54dZRc&5y7rye%H4cEF#b;l^7kF)Q69lf z`TH{u^_4fwm-+kJY#0E8YYWpDX}qzVAtc7f$uHhuTZaKaZM+)+Q&N($vX!$ZtuGKG zI~&~$kKdDHc}03k*=Kv!&8%5dwfE3f`$ny;ZCZNektcsS=iZ%%MSjfO4TG~@efi~I zN==F~1moUVbslC~KV1`0 zpO_F6EwIk=CG}F*WVk$dxCe|@n~(wI14dpj43Rb4hYK>4`gD|x{hil8cW_aL+7dmS zdZy2^{`-tv)fIEgX#pU&T-cRV+lZE~x$Mei53IS@pWASJ%|pvCzjEaRYaW<1;rJRX z+Pi1x&Rx5Ah}d!C9$0g{^n!`|&%Sr<{bR<+1Zxjmy6&MhCyrix$+br=z2sT|4*Shl zM5+Em$bdmG7>a812j>sUlpES*y$oG&h(&cABC@^IQv0j`1Oq$+IiZ_G$S~MbE;RZ^_n9petE}|+c(9Tf585(mdWc6#IpRV$1k37^|DATGRMW9Ieo~a z>H&eWL9fi&TCD8F&}MGr_p5n;4vFB0rrIeQGDt^Vi$$*U1}T$yok5*cFkIDtyVKbL4#Bo8_!B@cf;}Z(DTT{8IBz z(QM|AeiC?U^LZDZJ$%i)XRLvNob20?}=GA-Iqm zXf4PBL@uFejSATt3>O3-%g7Pw**W2CsM6gu8b5^E-yJW z@H4I*Kda@uOKwlY&-%Uo*WODRa9-ZzX-D_8J#zh{>xP|^J@JAKeD$8g zbM`e@donKo5Q`*lr70PeWUuK4S9CoLvB8Q(!Wb+DfC`v0C?!+%67n7P$ZlLFFHfmQ zF7+nL%Tr2=bz)JCT-$y3?7_FJ8+OaRIBBT44<`&YFS%gZ!F7eW;{HeQSlOzEYlp3$ z%=~82(KYv9`-3(2nzs+xcqTA~({hPZ5)33CG|9%1}}(jY2EvyrEF5uut3` z=%cN}Ngx-=tiNct95a=RnZJyvB`;6LP$3=g{M-{1I={fh=COOOm47(W#3b`CCl1_n z)7|$T!PcW&{{HtZNB6Klzy9W@Z?g9TcU*SQwU;Wo-3}lI5#8v-*$5Pxq>~E}T$^Yq zVjs8xTyBuVIqJwXBwuVHv^jPdAWck7>zCSsb&8Va}k@H&Fv`CY4i5sb| zITYS1Lku#1R@D%D*UkFPH{fNzGq3ybkJtP_1pdLa2e|+PP`yruxYw*70%i8J=*U3p3J05uY#rz2SZ~4hqc5mQf!ex#eJBG-yqm=f~rlZEQ{1I-!G>$Ytg5bg)G&D^` zy%^YN4}F-9Q*u26vONjp{|##F@T#%HIj=RhI5>!VlI%g=9!sQKyBIR(jxE>Yflp_x znEd3qvk%QJ+qLcLXIhp$y!HB}w@f^1;$8C_ch=P&zIeyot1$W2wFz=I(@)HszIo#0 zinC{oUr^^SSblib;_J?EVWIiksL3@OYpRPDj2Sg^LSELwAMPYN*f zKu3MkAh<95oM9rV(4`_`5wnzW+-mMWc#u7E$Q&v9TjvZP#6*!Pra`RoCa$b4X9xz@ zx$WnuX=-D!CYg&I9PJ}+mFIBi5x2UpAU@3fH9hP%g#G@fGC<`hV-#Bw^20nD@`I1_ zlSwK&n@m#v(EGseLVtzE*C1U^(J2)Z`2+lANTL(ZbOg`@XlmO66Q^z>Mo9G16jVCx z8<2!ahMrV_L2M--20OF7XH83QS+L-irRIxRK5=z|$uW?ydZPIve|g@`OPAg}Z}-fx zyT{JjEpcLzfjii3u1|o8KdV0C#|`3&@bjg_6{nmpb#wbt(X3smW*KF*LlH&2futY^ z5PNmx$oFZe8eBtaafWu2le!-7(xu4sDH~g^*H4Y_DMk6o|8v$;x4!iBibswdJovN; z2M=mjrUphI3e=>s+leR4%D|n(83;d-@JADTvR%YV=$eEM1RT1DE$OH0X^P<-xYCJ` zJ&k+JSrY1(2M=Pxb7!$fLLstuQ-Q%qSR`%}J7```aVFGB%X>8h0sCk!$+*E*fbway z1soU7%$(*{ac;eTLAeBow)7y_FC9F{-wU*`YXdC@4=$3xPLQMG3A&*=4uSi{XfXtm zi9bNoQMnU2o7KahA@~wwqoX1W(yfy*S@8!=Qzf(k%-+dDEG}>H>q+O&iRI_CT@pLz z{7I}K@X&d$o_p@A=dlKU@7S{^?4Gb`?Cx!^oOj+U+jawjDf#pW@o6vdNc2WWMyP;l z4xeT!G?J1!qrnzQ?!GhT&Q!rVY)#6`@W9jWkO;6w-WW@l2Q0xcmltiK!|t~<1E!s5}x z2R9VdjJf6NOD|9EzcVRr(iqp7fOw)UStRPWK@91b41rlXvf6FRkpZw~`NaqVgC+n9 zJmbw0dUA)}D=9>AGFsNu4xc}NYV9pIT&CaV>%TLvamqK>x>p^%T5(LI^n3fEl$UN5 zXMq9R8xjbKpfySHM%ZVoh!#17_icO5dHUV!66a3ZbNSt_pIN%d`?lOoqTNXXk*LiX zw+8+2xo(0dAw`Xp!L4b2XG5AQKdWin#A%t=73`9K1=sNxt=(p;=eM5Z0orC(Jhwsf zDYzu>`7QdzHvU8%P{aX;HeRn4C!&KQx16*0y7!*edEJ~72!GaNBGyCwFA5v((noQi*tm=IE?qwE4~h_@0UVS--%~$6r0_TTC0c z>h7g-xO!mYftAS3+RJBLF=OI+_581aeY;m&^wog3E?Vo^`O|fB_`)mun+JB!Jv5{7 z(s>b7m-VtP7ua=~R@<0}x{)hs&l(cE%pgN4*4gLIt&nXJ;bH zt2J|`tj~z0)t^{(S+SdK-%SC6lXUR%Yea7yXp9sL!8qNi3e@42jQDbd=I?WTQ zW%T+8H(9=QSphk%HBh)wDVDNQs%y$`>YRwwJ2NwKvNLisa}zQ$s6IJV9ki88#ZzUa zYS)F*G^NQKGh{`$@|iXG;nf#Pw9UW1zVDvBuOBh5#Yc}|KsuA;W`DTLT!~3BO%;bp z;V^HwhPPJ!?gCi{^M(*{0B zr`d8kGK@ja)OpPH(NTj_;3N6A#=CgnpB8@nL1)w^vfn-_OM;WvLJJHgBeinM`! zVU#taWEYru$l5dD^Z|)0Ss(_gAf>(}ChQ(yPpEXw;(Pjb_&y~$IXxv^;_J;JIUdIH z=&-xhcXP2bujBR(KA$e}oioY2xig2e?TW!$UzZ5aK3ovE7nn15k>dcZmv@W;K!X6# z7!YAF-EEBlE^7>Mbs7W0Au@DIpEdR=lzedJ@7&0l0s+v|ei76XbSrS$QS*`EUg*waTDv z3S47c3Qn@BH5+Ih<)(?I_;`T$jQI4_WSWo5tWnu6Cw`~1<5*%DzO|6;B+u81Dbj(( zypn2wN30Ns>Qn5L7K4h0h6-sfFe|TolI#a6)}Z{Y`22NeU$Ft1-yfUE8$M@I?M-qB zD&$<~*8j!_A(Y>o;m&7BdDFHZ5145WE;@V%v|ny+!9P8;@Q9@cy;gQo3K=XJY68M> z7$ca(L9K&Pn|WywEEkVAaa7KUBKra}+ww|;u=JWrk3JHX$2m3ys@b#i0xtF<{{A9! zsyX>Q{Jo;rn*jVhF)?@swu&fkT ze{%_nz~_g-Y6}4Vu2nX*g;h2f-4#yQY6fyDoINuxZ~?n$T%eYz(glv)Z+>AOz+vWC zSvr$E36dvE)f(=s$;XRi?;F@f?`s6|+YLsC@87ux>cCfoyr-SN)*qb%+o>~Bg_&^+ zrkfw$VtzGXilg|y`8|*VrE(QwE*&GzlM)#+x#l5^lEF;V zMS}~2r!fGa;cP^9JBLI&JCRdU0a8m-hZYs&W~UF3r6y-(XGQ2KG#d+9Ob><-$)#w} z-M(QkzbvQFS6H2PcGiVUM$H?ZTVVazwP;jxdB~f&Bj|_qhToH&=}RaZGHTLUSs6ZW zS;?qLE6sgb^sJ<6(pi4>vTD*wven`XqM2tv8dRyMU_<1v!g#We(F{}Ak*-_9=Yaq+ zLq8c&npP*RlW9BGz^MXx>;KjXd2&uiT$E7@3(v`JI&TKgu!Ejd+tEp zV@R?4D7#ewv^;iM^by?tsQFLxUk~Y52CkHQ z)KM2_EW&VeO)#xRM=~EY%P#>-5J7+pD@yD8Ii)#62Nxx0CujBVCksi+%F2o)maxTY zt`nhEI$g+S7cxSNS_qQ%ZoiPc?vrM&p>k&I7kO7-^@G)iD=MyBbF;i#b=9b?Q z6DJLC8sU!|Fl<^G%Tafw(}rI;agxAy9(?ev3-|5VPu~~p+i~e7X8W!SCa<688$G+0 zPhK}KdGzcW#9imBdP1q$Dt2mVkOF=yj%PuB|1^qLjKEn#N-{%I?4Zt`3bhc60B;Vi zY;$OmH7m+0%qz&%Xhy3h2=;olJqMztY}pmOmgycW<%1`c^6?9=m~wUCNKwhO%cm{8 za_ZG>*OZn_xgyYXR`b^b{j2X-gm2xoZ26r3r1$4$;gO%OIns8u>)ZU3g-3p|=9;#v z-Txlc_Ty)Van#p6y}?|*{;3UHo+%4}1_*m#mMB!Qe^a{V0YcPjfBfewxb9~2CG*!e ziT-UP_=Gl!F%wz_`Qti1+remJj>op{cx;P8^Uy2i;hS(cmZ_p%XnTTBu=rAz)nAUw zi4;MY%7A?WIif{I>SA1Vu|!Bn$V$)@n)rgDjuX;YD4@(CvaJ0 zQ(YRk(RxC6(#{IDJxtlFQpu*u5O^GC3}V&lkKz}`;S`?-0GU1|J3C9&*Rfl5wv&b0 zutE%G9oDRqUpS^SJwchZ+S?ubA7kSce#0ex+m$`jUz_fBX+mIK$k1lB>r}5-E#Z)= z;g{?A8S?TE7vt{zvAObg=}mCpS03)r3ZCzuoFF9ffCL zBFfJ)#20yL;BLI!+{|XS{SBWrtFc0dRwWZ6@IYH@q z3Cd<{g5bw;yfH6hEa?G zV-0b!oI@R_mGws3kOnm{#hc~JQ=T>nvZZYCl`EOlaQKGYJbpFe=GZiC@C{R^Hs{9Q zaYu4P1%~uk&Uj`mH=kh7d6S>kq9*}$7+O>_4M6$NF zB-6`i(vyT(4=9i`Ni1&n@!IlHr@v`UGsFlf%gmvFx(UmKI ze$l3%ZCZX$%Yws0qs$M@_CKzy8nv!&$0b<1Yr3{^{Ojg@X5faeFI)Y>#TUM?e)hyy zF@1dCqw)I|EnCD?OdAPt zwb7bj)_(6)Btvt89nM+VJ(oOn-Q0WL+jJd!>Lv4cUthZ53JT%;fnI3A6ASc%RvCuQ zpq|QzQ)T!)PAq6?N8I$@J#%k(VoBf*E#U(S{(QxP%l>1&_M1?gDK=t*}09dU)W4>)+$%IQel{V*c| zYM*g4h`2*z&=P@KBpSMAw78XErFmv`_*tI4&tM^6VOv8U)=aS;4$xLk`0l87^PEF-=3L#}e0cWUL$l90>&(S# z&swo!N#NW$S38gAoV#q<;V`pMhIjoUVvogI=ea7EehNp+>Ab@*X+p&g=@hyxE<>WsZ?T+M&S{gzRB#-X{iY#f+- z(M8JE4j?YD@t_sg5J!K3aO#R{0%1UAL$Ey>EPJ`Sm948RDi=r;$mC|BKz9;_)_?Ke zwGC!Pow0cLqE7Rp>dD95QU)X`rD|iiCeW`ou}cl1`C(f}@Tv(j*_|G{jy-y%`B$Js zWB^w3-tEL)4_Dee_IesAh_qx!vj5$u&)MVp4Ree4mCS8uu;ob^Cw{z&s!0tU=k4;*T%*M5w7`n~J+o}*uU`Q0a)jVI^S!D)__545MKJR124 zaipc-E;fN^pxKiKwL;ErGo!KD^~pCwu5{OeRgS8IWFmEX5+JQvE9V)Gj`vLGg2?b8 zhko;RebKjduAHl^a(+VV>wWiI!jW8W`!2+9Db#l(u_sF%@jI2&b&u<^x3MoeF}ZE4 zpC@7cM#9P*x18$#q#U4%nf$??wD2MMKfsV`mKX>Iq}TQj?+P44`-0atC)SHJv+|%> zDFz;DYvme%)y|8AM*Yf)Xv$%)5;Vfvh9WT3Eye&tmZ@eao>J9M`PM71Y&*#w!RK2) z!e1T&4%f6B{9*k%YaN|-b9v(#)N6uaoq^y+3bnPuMQWRJzKKwFgE{hxtHoQ6Q>`U* zuf28~7o`s*SxR&ZZZyourS%hu0m^!D*F9!j<-wsxAK&!oJ8R9g3HUapAbJd17c}ZH#kFqdv(S@gMHy+ zx?^K&R`wd6Pt6Z|^lVeXspLI7-@Cn@|^T zT4zA;jx#lOL%FCF_k^sgSRv7N%kA%VJXyGJHB;|0Q-6dfKN z^q=tLwmSAJ{M)T&i@EYg_%}MQ1SX3j{vQeZ`S3F)+CK&mFKXow0|~XBm}s|dueQKe zpPIX(fzk{j+k+g?bJ<+Bak=@^yb-=1`zrFxpDowQ1Fvnw+{~JS)`!L9f|^Y8-Hi&z zDR6^0Q``@6FmLklVyVN$5c%Se0c${Hbu#ok{lEsdi*cx@N6l8kMABgPg^O}Jcfiur z*jCc-#*%(ho{MCH%`Vrx2B%#^KikM!r&q_xT?H;ar0|C+EdGX#9AjC+4TWt_yYadK zarHAS8WzD2v0MBHVyJyl**#+r>p5dk7Y^H64x%s|)^H^Wf@~>E4}7=-`)5^UwB5ny ztjITGqS#%1sj z8gy|QP#6tHdlHq7NA;FsPs`0F6Ev3d$KqMa4-4CV>%#3rHn7c9X8Y|vtzL!;9C>lcR>$H6wQZ3MG`+C*(z)<~A?cb^G_nxZf zyY1)D(e@HCs;_2b^K!3>9`~<}0gW0Tx4YVYs~TUd+St~vTAz<~n=1x*sP)6zK1SKi z(ejYMx>FR#MA`NPOt-yZeP|$S++luHGANhNX}cq%DhvDX2z)61v&wvaSWe2}#PVG8 z`BiKQg!O}twr6OyeVuH3)$H~3%b`J+o^+u!aN6Fgcdj?vr%^vZf;8OXSw-U)%0!cs(-exh85a)@gyWGyRPE@WFKwqBi}F-r*?ugix8OWm3@G= zxEY8(PE;YMqH=A#>D&47nCiByjFDMi?l9x#4C4$hGq;GXttXhk`^@VPo7aPaF-*ePW5J-6Ck;91$he^v z4wP;skd!OUQm!;dxw4#gBSeJTrKV&$bxJuhq8E|0tdDODjFdS7t>%_>!X@EO!R2O? z*@Vkge3pv#Ur4>R9+Jr$C`tm0L}ZNi($xv<`q(quBi+*0wNP!{?~yP|gQ}~)jD52H z$+c^rTz@+qHFC$eE#t>;8Fxg~uX}R6d~V)>Kf)iGw@=tgkFU4v`=U;}4qU`9DkcBTa7vg+un*;|8UQ*MR3b$%y#<93fX`Qv6=cn412 zgY$TV!h3A@_tT%6Pd#&_?eO8iHP^HqM!wPlZ>4c%h`WCnsSC9IGMo^mC8)5E^umebhJ0x>+yO^EiD!^$Z(WF zuH+fnsF*=YthwgBPDDnEhee_%fIfvW#Faa? z85$EPBnc3R2;^SnGBg2E80oSENTP>=5)dw`J0r61ipp`i0z6#;t~Zarh3Dh>+WX~2 zZRr7tC;zahy!A{mq4f!KA8v=v^dM;#8^st`1cCavNHuN?>{6gvP2piYNEt)fh%h4J)n263;9@?f&?WK;aq9R0Z$%St)rJPH#NV6Q`2K$R2Y{h` zTpPzQxQOR1CGpysQ9E;JC}RS4@B{e?=!kV39fKi4u)#%mgLiJ}&JC=_e5YM$-8Tvm zP>l(Zc&aLvok1E%rzQ+-yUuM!Wxo#~Uen4Ukvz%du28jqSuHI`L%sau09(BY-UKC6 z(4bk4x(xZDE>bhLFIjM4-TsQQ{p$`aSSqJGFK?U?NaZV*wUvoU!%A8o;x8|2yOw=C zlhi7L+5RK(nt0E$OL^mE^qB~^?PwMQbsa!`3TU|!s8X1#t6YA_OC&B>64)2mvy=dr zRY<`2)r^gSms#n?ne5}XYnSntTOTSJCMLC&E#nlHd}RAK?riaQNQWFKgrP8kqL>$C zq;oD1ftL>9Od!}hRMm*6Hk>KZq3%e0xFcOmkO(O%%FP{7UNp35Xl`L{VT$xj_4<8L zdVgmEq%+}{;x<>BT!vc`*QcgLS`0HXq%AMkqYYp_kGGmhKXZ+yNjq^s*2s*&zvCY; zzc}_o^NR=KzxX2l0ZjPeF-&+Mp2g7Q>CbI1F1vGmEMCS2#jd||S>SE@yonx3o$B?D zdDRVO`!&}f-f;K^#A~iG+iy_wtp1)2cP(Fj*9MQd;V^ySL30B=Qe)vr@JRZ+{$J?( z^LLtmmddR0`H4iS-r|6rQr~~QOMTylb=vdFP=cLEG(K0Pq57XXuXJFkm6{l21S};k zmZPj1XI<&=p#bf=*;NgPeKH|fQI>91UjO10T!K|+ODtO0sDulMWXvS%J z!Rnx!xJYT9c-u^G_$=!C2t$J~bZ4KKv3j*}&xt1n4Np7YLhSss;e(6`?Bgw44*5zl zF0oL#B%{RF83!6cBaxB%<3(;YMt3%2x$l$uCQ+%}YL@a`t8H>^`Vi0)PZ;;CUVUPQ zF@cb=X+nSx*{A?8xC%V3S5^BABx`wpa>nPUHW3Mh72&#Gd{SB{8l6c&$e@o9(~mnS zwYnuLJ9iLWcI=eD#kYi7YsqTum#bHQH!=iAhg8ll)4gTOmQFN_x8e{HzOtVHdF5kW zhaEV4b7Wd@eTD45ojJ>O=?yoWxIdhmjHzOL+dRB9oP|2!K)izp5{GzX)NEKs&@36& z#lg=+F^9dC4e``Ib^i@F7*kK-WOEz;vANCRUlxLck4~-eMKYmvM+(pcr!^49luk$_ z5j2BIv$t~+QOY{EAWD`ph%zTM&WNBw3=xU5Odxq5OVw_6;}acM+=JO*K5L zSBG%Z3;ahfD;_%kvk)FCmH4H>@Y>QOTA@On%spv|Ue4;HBi)>70d@!wy&K2S&iwn4R0ky{=h$PedXm>UcS}52JcuQZ(do!CT9*VGCy*fwzMGe z)|chqt%q?1eXmF=7=o4IdWR*aQmC#e~#QFm6QJFC!?Tlz5_H{a-KKZMkS z)tSrY8!{aP^8j?|Yc<499Jm8I(qds(X`O!!U=X?xQqhO47Z;7E7n z%RYVNh=qxr77Kg8g^o{GsqM7S_K=obBtz1&xjm$1a|3sTru}nX!RGdihn?Ey zrC!ikmF@7T=J-w6<{Gxuc08dR77U96JLgj;$lCchss%DTvo(mS+zyTk?)26v;&@+R zi{p0AXr!W^}1K0jCDW!bF%1Q(*?of%&iqmcj~H4eQ}-*aqjp z1+W_~hRfhexEij7>)~ej5!?Yx#tU=}pPLRbRJp#|2$M%V)9 z!cMpd_QIub1zZK!zz^U?_#xZ|cfvhzKRgVN!_)9{0FRt$C6@MZ`OCVvyz(O>?85&S zJrl>5b@NBfjD;Ql1LOXWe)h;qu3;Vb<{ST;d!;8<0f^0F1jLeF!Z2i`9C>{4E2 z=O?bZ>crKDzokzxLVjE=AAEaQegX?AZy-fM5{O#YJAufY!WXR-+`x`4YT6HA+TTt-(%o*%Do}0mU05*c4BXrY~J^1|gB0 z*gX;$0KVw9HXOS8pF`)+rR6LLoPI%mLD%Gj3JOp+EWKtBv z%s58=LslTUj_n};DySxrUl1quOObH9C%!U5`Y6Vr6W}NmrD6jt|GRKV(vb-i$;BYOzzmJ`GV1N)aKHsaq^EP%trd zzyM;G0ht3by9O1RyTML^qmIYDak$Ht)gOi$kE+P-b~@`Kjo6y_-y>@8|O}2b5ruE ztT68es@cp-r<%je_mhsT3&+{!3t{nvz`c$?{wdOtV)3W=y61}yd0j38gq*?`vo573 zZ@yu5yjgt=vm_UE#`doG)i*R#g)W_SOjad~zBHbY2b7A$$u&t+7iu7wCc@=-A6%-# zhnNAZ)7x%GoRQ0`s+NzG|K&{&qt7uXk^E2f5n=TiNpaU*h;CJ*kgbQHgJAlpRSRya zv-cc^S23#3RSex`*Q@HL`28u#Sy{=wt@g33WR)eXzi>KvirUjajg#B{g&-Ig?0f(n zx#k=I5aJz`AcS@F6m74}B_DGYh)#?q zF&+g`asiyMM2|n{aOC&UM#c<6Ol+QJ!JWp|?r#d*p|A=3#ln%L{nNrDIEJt^f={bj zhNg3YAQ*=72QB?M;1lB&c)!O2Pd;Bk3i*Sy5u00InC4WO$idPAe_?4BAuI~0G1IBP z=X+u^NcF|*_XcA#bX3{uN)D483yzQ$bI~}7P8~h8rXn~)hT)2V1w#5w`UwOE>*3T) zY_^#9n8k%G&EigrE$w>H*x#F2m=4-=ZG`zz8&%Q;EPC{651ma1HrMVX!HTPL>^i%{ z_QQ2{taF3g;}v?cRpT#W;^l-EVD($Mm}%K42*_`WPc5{{)&WhKc%<|XW%cL^g6PIxgIt&36|38c3K=^zF1qgyjIyo}J zZD>rR#ePS>innd~hm$<<^_)GID_HXkqE(*X-5!agnQ`mj1B=BnBbwvwI z1K_j8h;D7qm`2A+Q17So4*zwTo`j5&B2zU7o$~$mtwACEIu&Bc(t|anDS@( zrY)J>!J~SPRYdu@+DjI}9yk{GJC8aUrO&kTvo-7v2Yy!`vmx-y2)^Wkc;nUYZgAi$ z{38`bo!zw>s#<6r0gj#U$zfsZRE7R7kz(;wD@hl9rYzbin@9C#uN=1vj1bSM!g!P_ z$S%jGu|a-j3dc_Im#Ji@APYAeuhuFXsbk=@HI+kszoV{pgLPRHVHK>RT|MY%H>a#_ z{5C?%a>!+q>Z?f(omBmJR1a&XL?5C}YZZ@j>O%0lUDqQ(1SAyKNbBp!{tEUhvIeqPJa1)kxUjxA*oCM(|QvIpt+4bjl zpIAe+2LSHWT?4muIvq#qggOdC(9nq*!xf+zhB||ULeFVNryYP;>QF(!!j%$?MGESv zvJQ&xM3y9rtcdoIB@0*Da5)&XyNIFPEpTfn%LR!WBy8kkL{+EF_}w(F*ftjp_XQ;? za7|O>pdE`mH10dmL-h)q#x{yX68)=VgdUZRzfri^Wph+4XH7)H{f9%!b|^vIcE_={ zd)Wi#Gm03-t0&uzY0Dg$$=0ay-4ut(qPIX*tU#w+rwOeB=`;mZC~hKBNbyI#N%cR% zm->gz7a(A7H~X!_3oUabs?{wB%`jPG_cn>8%yMrGq~RM}4Z*(A|WXyGn}r(kY<%F@{blGp?w z@OMRTUC0V_;NHP|8d{r50Xbk#l(F!(vFFnRQ)C5Lyu_d1eT=#}5l8jO5d33_{tl0j zv4Q%dZW#I;I~1heb$_HBb<&QyP*@9uh(BfM}^YZZwvRRKqSu@L^V@D^O` z>!N{_CApIp`b*Ruu)FyV2pzU6p05l$eC2OhO9QjSf^&n0yOOP}Fbmofx$Ln@{;vc3>`@=u}`96K#dHskH z*WY=^^%WJ@-yufG2mg>S-~XrlJSLwwZ^LYb21L@SQ&dv{B(Ff@a=g~98tb7orc(y( zS{os?rf;X_$M7+8l2d&)*CfSJgu#m?+iZ}wZnTFU$3!a!T0}L_;v$#4LwRtt%OwOr zRBV*oy5ov;NmK|ET~ixy$u>)y`Dh0gmSyy38D$coV-o%ex)g43^r-pjQTpow9~w^p z48asex?AH`?dgUS5<~!(3qV4TvcOB&LIIDkfm1vV#hP-Il+XhbAePYoqc&}9Yycp_ zf!~#%)2`YJBrZuBw~!HuoJaX0x!c9vE21NqE5#efV`5z~E8>$qJQgu_j=G7(MG5i; zPR+`q;CU9oveXgG>Hc(i@+Pe@sMtil1UV$q!I7#q;lxa}>qGtp*@>lPK6wly$}206)_5wyWGHdZx?C)N`c>56bg*iGVgngq+ZuMA5u(VLq{$lmo9yZnO> z%%8m#IQx%(wA*FNTlnw?AIPS;;%&43!wK{AO+xw zv-X!MWQ-s(GH6R8VT7gG2AR&=R{rsi?25N=bYSya_{awz5IXGfKbrLtNAu~o1DpT& zM*xWKgo|7Lj&ryr6S5%>3SedJ^8DQFEc;Mr*~TI58|l*0ER0>;;0osm&CM0o>c+u) z(4d?g!yv91R4}L@Cod<@a2sytaH_~)J*3CKuUs?aRi3Mr8CafcWXoShuHnm;PYj=y zYh>gaRKqtaD{y2*rTNb_YgU`dm6hy7Mc{91R7MW4sAroiwF5W=Duy)a z8|E-9bRe6<%s22i^dKCz8hz{*4sKggJB|r9-Sir|KU4|9-yCy*2XQ&2-V{eGIQAQ; z27dz16uIf!qIOT9F|6VQx{%1OxNr>?5-LIP;qd9)j8M8u9Jnr4fPxRbhF;cHb4zOf zhHyD%gAUOJ8Cky&p&rq46Jx-b+$CL#sFqhKJH_&L(rZtK<&Uk6Vi*#V*qeb>w8p4% zLg&0sh2_;BM2e$QsyY>AI^{jH;zv=P2pw5u&#);WLGE20oz%Ufi3gqZy`h1nOrM@D zKf|8?nd#2-4;*`LFV{OVl#Nl9U@v%}V{diSI;%BKFwXW_ep+h&NYgUpou+y;+Sw*- zD$QCHP!=O=Ue>2IpbVOiQN>iXocx_}qM6wD&uQhnOHF*JG-tl`)qlAz(dqQt(k_-hor0;p zPT5pr2GgYNW3jBSy&uSlp%>niwv3h6G@974x%5fZ#t+SOvdNl9Wm}x+<-VdIR#tZ7 zL|d(y-d1bVkNS7_dYsBd{TWV!7sKR=!;I*xXY^67Sj5W)@_3$wyf31m{CQY`zHfXT9){cDbbE5tZ}~Dj6MAa-pVewFnbV5;c?VjvU%K zJiYD1w%U$Qu*OAuovr7-Op80tI$H17=|iN5vTNId4K3K#8e*^f8k}Ozdu z#@gQdD})ql7pd0#E!y_ckKz;*gXo3SJDNP+sVv3H`-s6coD)26Q2s<(cR_pIh3uC7 zm1alc%_^R>J1X8$d93vvLYd%nvgcdNb0}a=FbH@T(QKWCIa_{O`j1s;2fv4{8zUDT z0$B*Yh+v(%?x4`MWOC3&B?QmTz8ZwAT6^t4R?`SsO?2s$QCwm%%$ zD_V^rbsndS*|9e<7qJ}CC)um+D#;6fzlzlbo;t{4Sj<6oM(g@Xv`RTiTqQ1<*!ow| zZ=x*c3A-G}=a849G2x)N|0?}&6Tdk&DG2MEPHE7Glg0f9Wr&NH-HRuFbF*ddn#R`1 zF)ON9x?>_Otaj2Jqk{fF6eW?};X2w2-H`^nM9Vu#{<)5}!m(E9@Mq#tJ^C||*68@W z^}=6@hG&T;bfGtK%40_;>gp5&#h3O7PrZn^oz|~mvZUE^9`!%fo61TPOGB=p-o(}% zv;RO?H2%NUmr6Z6_~7^0{ly-3oZ;a##|DM6vodUTLT70Buf_%{xl89&hY$;|poIj>2&I`hs0@*UF=#F?2CThSFLmTI--OU9)H{Fr4)q>j<@FhlQlG zl1fc_`Z}=VNDyu(v29*`_aRngmUWt&5W)W|n^jpSn-$G8Lj8YxKi4U9<~qu&?zC-I ziD5P?hhEOyulMtxL`Q>DrTjPc%izCo`=v9T>FYexF4J+$a;BN5ZA*4$8y(1#Jd1+bLyp+m1 zy?JS3_`H-*`>*)7>nWJSzNfu+z|(2(02Ot*dm22Q_cSQfAapNGG@Tiy_I^1r1f9)u z%8?-|AwzApN(?Xq0L}+eW_f<)5xe?Wt`>cSZ5KUB6JO+ zF`8l=dxv%$Tx42d3q6@QB8V|t zL*qY5l`UH#? z#jUUL{ee_b+WOi-9@F-3r%VlHiSe-i;W*R{I@L5vo_A3~ep$dbfT7WW^B00HG+ms} z5L~DkpsfrKw%)IHFlFI;d!3`1RN8nCd8v?VnSE$a1W6P_F}hg{xb5WR%w6 zQ9&KNT0G|l-<#-8;D&DOO~MGB=@INgfh<~Q(dWluWK`t77?g|~-ArB#5T(Nk`8zsl zNi0T1M>WlvGkJ1NO@4l2BEY^q7o5NSoJ||ou352s&f+IuQ4|+vrpx`_w-iK97#BGx z&iwbV%Z-5peElO*)A9$V#AoO7%ACCTl>T{XX;A}x0|pxVhl%0SE}K)jx_D*Qkt10v zi&hVtbNN*Bj+(Ocb@_=NUt&tSHr(6K+rPj37_OzKB>FswnP;V!)kG9$W(+CG^cNNR zGfReKWES6AnO+$aQ<+im&dk{($7lGW`;}y*B=(Q?#>b>3rDT-I7$F(sN6sdNio*}# zCn8o1v*xE1PrCaPNW=Wg$@t>@`ypS~b|`p>VOM=F5AFg05mtUIY3dAtbWwsKK+}cR z)4m7C#G?fv;SBR0){i~|e+_|nRgW-(wNifkTxa}yVJ13o?b?OIRkggzf~lPX(@Q?D z9W|wWSE#wDt}eIRH3wWS_abn++~H2hPIaB{uqt4)=qiRwesZAwT zLhGvX4gs8|?SO1I@Kskq*L5e~s#9Cpg^J`ZB$~UCh~7ix9q{25?)dGr`k_PJ<8eyM z_Y#lL_RsE$2g1m4@Su%{-US{$^8V_I8zNA#Lj)2(L?SUn_->MJm?FC;#t5g8jh*9n zI$ZgR7eG0ThnCv2;v$*b#awQ7VH9Gt70*JQ7A+BtpdcL)l4~Per}&eP7*SYg#k3eP ze#H1OwWF#=Ruq;O4j)>QUXY%jlNI7??)iRSbKMrcws?2$y)qPm;jd;=Mko0~;#_=t zc+0cv*Z+L$=AUoe`18%%hY!!smlv+GZ}JPT`$5rMcjI}D^1oXQKlp7h^4`;ISCCwDi+*rjVV`LBnnke(9w3^D5SsOaTuHOJwX;As zT!!wtFaj}3i{xsD0_hcQX6VdVL5hs4SqerXlna{jg}Am!A>bkP8s3k}eW7NNw1 zPJ&ZsOm7BVr@4sErsm~IS`5!k_9Q2Jd~UL0CHbVCXT*k(k(-yKKLN2_@+rW)if?{8Y#aAN6H5!$0i*cUAK7s(h(z; z*3>Mks909RC%KDmoph{v`We$IZn-!O$`v&= zXH`_3Ra3LVilvW90Q{)rfmFzc3m%C#80e(@N2t^Nbpt@(q>NN9)JP0lbyxOw1i-~= zsb^Zh+I&iD=y2ipCzc9-zkUGy^7{?)XGpjyBtnxT^nOlIHapCsq)u5e>oQW^y@zK{ z+|l^VGmD>jX3EZqv#y?76G90weCAbirtX;;`QvG?y*BOE$XR=*&beylf>Y`a=KzQi z{1wQ6Ay8jCv7f=XNJX8yQA6GUsB1cE7k2FPHjq~KT0mn=YX(iDU?duA%FN6hl39{F zE~iiq&NP+Ryhd)WR9-QR?T7j>SN_V)J*BO;;@wGeBhV1$JO13+hv&|{dX}uz{25rn z;`$Gaf8p!UhJGc7UQc*9ulv%sJ51bYPCG;ZUToZ!YtO&NW5296)5rHclhk zu_uB-y}+(5Uw)6ro1+Xv1DLI4doz48*pxS@+DqM@t-0&Y<*Vj3tjkZw5!2dMPQwxD z`Rf|yty+HPT?r!V#(VCVxp-5}c=O-8c45r;noWym-f_>3@gaB=lCN`4O1wsBG*Fi^ z_UfokZv!N8L!0CTI=kcmWR`+#LM}U(`V^=cNN`4Q3Yx(=gLT7xbx}oW-q6BDONTES zIca5H2+}Jij$AZ+>7v4+d8HK>trx==pHbJG?}{C3B}xzc+ALQgoDCHe)6BRjM(}7{SQ93b41I;rRSEE zoV!#EAG>kfx>hsr+8YS1>&I;zyKLo334q|d+WrauP{Ij~5%Vfuf|r=*umqMF_#j}# z!oLzgOw*QtPJ1G$F&&ToU|4RY^5~v;WqI*hM^#mSiRav7R{h+3jxP($7q@(OGgojm zh{0#YkN8nYfegro0x0Hn)>;1^hM?!?avlY-F$@K7=r{Rzr2T@2zliECM{IXF;=0Qb z-(3!GcR7-}%i-%fM;D2kgMU`#heRU>h@!LaqCjAjSg96_nj>P}T#t)%#Tc5knBjyQ zw24z7Q|QrJcxLASy+u}LojM?q?Q~(q_8nH->B5TdJ1p<%!b<8pEZ^zD>Ju1;J!1w|nq<{?RmgP~AyL^V!m2IV`+!qpaGuLnU zy`^51wo7krd8y$;qm4{p#W7(9N6id9yNj{pa;pzriE_vCq)~ zu|=KL9jUCV3^+2rLPG?w?9{MGjT9jUg$#SMI@0$m=2|So?ReOH9gEDJxO=~N`?A*j zD?p$NpXE#T%?{RRB!mtQj;NxuNkEigSgAtHq57 z0#L{sCt8=?p|Uk(l$v!;4cKg@6=)}p>U;UIeJMY#@8!q$rF?JS%TMY{`M$oE-^-#q zx<<^Xk(n8J8TtPFtPGm9gBq;MZG}JA9;%%#LB>Ks=h<2#yEOGNzjXQ;T9!m#G7o=Z z?vx=-{WFI)6jtX~)=!!~dRA3taZO(7kkPf{%}r-c+P;4Lf|9J2Q|67Wn;Cy*)V0F^MMc5+@WVjrNCM%pb?Q6v#`w1N%8ax%azAqSCaF{Q8&ps=#A zqI8HXCO;=TD<>zy-A|p}8pl+pFZWwIRa`u22c8659b`lbBX@X~JtI&vArEcy&d10z zN-o^mxOy16GIp=M;m}J@*IziTe(cEMQDdIIZ^NIqEWQYRm;Z8QVcqPS8F>i>uNk8Hf|AMd}7dG}3QxnaYqz=d;uvhSvQE5{FE zdR&Z>4XfKf73XPNzz-!bsdhYP451$~9PD8_BjwnoF{azj3`-0YqPme>-If67HGE2T z7C=!!R!Me=EFshH$cyr_OvNiQ9){NOW zmK8o&@#`C|d11+quDxK>!n-%R&)i!(>cYh{_YTsw)XrQmvV7fws#Udn0v|T4+x*m; z>z^N}_rGyP^R>-^DGRS`Xt;1nc`1IP^rczmT+uA$UM#K8kT4QhrI#?tw6q+E=xD(;`abp~nH;nEC{;c@`rvfFT8tzZs=(u{%qQnEF-uQR!PN+UOH zg;#bVyAS2$Dy+(#nKh;L1p^0vcx+Nr&AHQNx8$u{v0+bj^Tcgu-nZdbS4|&vVbh#V zgI28AxVL8h#BIy(Zu#}l(yd2)#Y2bhxK-O$KJ4tm{3*4AtA_ito7PQf+*Qzg(cC=~ z)@>}zZ>$|WYFK8@^tDqPb`{ROaPHoTfm`PlRE#bg?#h{8IHI<^%8Ele5>Cpo&wQ~&do$&6#JPb2BWU=1}iYDp#rlSAT&d?fCf6#^zK5=R-}&@T2k2A0uw1I zb-xbdAc>AeCVryRhEJI@CUraTa{TJT3%|Pk_HTAw^vxZYKf7efvzK4??Bd1GUe?r7 zKCynr%#~-&9yTL;%<795AD%JyaI^O2ZRTI^z1RHfZMR{+d+)`5w=KK$%fp91zx2}2 z4Mm?BP}7;N zF*3VEA{UY(Q7EF(?Go-5aDlG5^i$#m7ZqhFq7)4)DlI84$RCuKo0DFcQ5Zs+7>6`H z8mNq+#92Onu3z>@U!vkGKl}417hn9z{{5d`a>=LrH$Jv%)ngksKHAdq=*Irv)Q!4( z&(RT^Hq}&BpRc`n>1UViS4l7X?9wyV|7_F7r`N4}dgG>_t-s*TQPVtMy!$RIopX17 zi5=@Sh0PKd%f8p2=74EYE{+@<06B1k3zZMw9+$y%&h{cwEq_i;?cBnGxivL&3+#S%NNf?m zffUGu0-|9uGR)3O>lcGMXVH-iIB!TntdBydgKmQ1=jImVsug|1!BQEdoVjW__|OV2 zo0W?e)?&+jg@e!g-Oh%~EALxyU%}w*)@^_d!$+o`G5gRgwtbjc-?(`8RkOv0`zkMQ z*!kM_!G$uZyxsBIdGa=}yAdB5Cf}bi)vO;j>(FcfWYK{;*pIq8!^&;@K}HA97-KA| zy^P(WH})!yl-u@wpdzBkBUWz=RGOOumB8Sh_D}h*Wc&7qJUTxzBSkI=N1(wtQ)j$G zu&D*Awif6#_J9EZ1M&vs%B*PxS-PA}XO;WxRxUFn2|c9F5K);yBf1pFR!nq1&t6bm za$)_#%Nry1jd|^kA2e;NdGYrPn^uiGW8IL_;ajrLOCB&`&%9TRmf3gUbFcnk^p?rT z%@=PoAFUrRKEL{h=8JQ#yK&)|YO4=D48U8pI*5evlaCLQI-CyxMl@Oh>_}}NDQUzj z_>_LNzR-vECNFx^TdY4owC&`(4|Im>g*}sxXG*vk z267#(kYR*@O969Rz%;Ewo6^rha9~G_pRg=;vTjpoi>wr+ONOohxt%~n4(cK3J5{i& z@z?=#!2$DUIQjtIN|j-dFVEgSplydF7yvVBr}azrGNI}5$Ut*OXJB}tfx?BlCdlju zz%*C^$hn#glCFci$>#&`$z|iz6j@keW_+fXcBRW_(qljkHKi7VvZ4)AS~^xZG;-XK!!q?lZ)q+o^N3ECPd~Z6illST+kg3aJNKKfzxSR? zkGtUgw_Pj&_Z4})MY(xJ@x>Ki;b&%&w*9Yf{qEDhzWM6sDc{{Je$Zh4`;tJNwxo55 z4_&`zkIb8NVAI(LCQiI!^IbQ!?!8>uv1;+xVi!LM(dv}n94Ll{+PX*-92+RYRit7! zNgW=o*sUcdf@w0}9QxK^u}f#NkZFbagL384fSSo$+?Sk@5leHKP7@WhPY5E8L=_YZ zI!|42nKL`V?a$tM=Wopu$naV-Q2E=o!y(fZSLmGNy1_pzwx{lEak)K1Q8q~Ph-hd( z2nLL{=5apDn!BOH)o3yCxwOqES>EE|FPb0eaAuP`2jnFh+LEtl4_t2^`EJb`VC}EV zIY6G2lPQvRvudYDBbN(SNnCI@l6@>O!Sbhxa@|okR^C^&NL2)$eDHWzd(+BuWj>jY(s`&q#Nmj zvlBGsnS`<*8$9HQj`EJE__^%Xb>^`TS@EA{L@vK^{?gmeoPOmTZO3o6Ui|T;7ybUS zDE6B*xcE=3_(O9>^Hnp>ynSi&4QEAP7IXP~7hL-B#oK;+J`lO`@maCOw!sd8VZ12B z0-MQM6y(Ro@Nf%k_=~9Sa>RC*Bd)s~@!jR{c9$cmyBxl*bA%=C!U8+EJByy1>13A^ zUE5y=MM#^T=-#GhnF1Z_>uJG>?JJzP(}NS=S2*6&gOk)(IKIdU{9acI- zjzTo$ImOBv+bb)pR}Nc=G%V#x&5gEF8>Q&$($y^24 zivA++)@RPB_(=XHgDZ!B&hBVaNwDO<{yHBfE{M1)b-RFw! zK381#x#GLeUm_tv`0zo0(BP}9cED+kS4k5wCSbJ$Qebh%k-mhu`rVY)WqA#)v#;pI~QJdYm) z7sNoSbsA3uC%u#W3dneDNZeOMxtIVDbLd;ZVmD(l>oggtF-?YP^jR9GHzOlDRO8f? zf*GoEiX3`H^leMrrGx7l&aywM^0tM%kcTd7yZ@JC@uYR>m>6? z(^(M2d6&XDA&7H`t{e;y9c63EQJpm9o^j4TRY5)l=Z#@{@x7gJez21^+}}o;10jA~ zThiel8|h-GdG;#W5D)K{v}pO>oAz6mEXRdRsoJ z_t^FOsPD-i`#t&Nz9)bD_vH6}PyVFu$?xkifA?9#WPb%<1jFW7jEF|&j$l$~2;Du$ zg~C7;lrAnRhVw|&f$J@F@0he~8kfe({FE0}UI@>t3}L~Hkvg-pM*X+2V^1G;+!uyLn})wONs{#$sZz>$!uGdOjRRKj3zlL?ly|sW-r<* zh2Q#-Q>CcG|8$H%!7*u5;rjJ?Se{`1>7u(9Uv!ZagyzbovsO#t=g6Y1N)}~85e(-8 zt&S8MhfEX}NIb*g)sUBnJ$5CCUj_o>iT-T}NyH4%xI(1UlseN6gJ|$uJoX}D_ zV%*VO&>$sPOKgNokJ7k-8gOlu{fony#5dD}b3&Ox2y0k#auCCGBsVl>XNWpIII(?& z6L)%W;`<86dwOt^`U=N)I&k^`BBVDDF82FnuZ6PG;^Bjb`-}WVgQz=aWeiNs?3Zcx z=C~evGX}eFhDTY$$R35?)052<)qDAei_DW7RwiHE_Dr|^7;m(D?~0-#Tv(Gg!|BFO zKVGf+aV^xrbbe>Y>@cc&6z47&louN#(BPeBho`=Z>ONO&_qpP_&lTT&E^qg_lDg03 z>n>N98BWmq&ioJY|tBr4j?z!e3wP->vdXo=AoLL|dTb%$(;h9R@WQoDdC zS%TmyFYla}rYCmJNR8Q9qyAgiv8N9^?!Sc{fBLY!|1IpK(}(T*?_i%6*bbSJLw2TV zQyM2vlsiCDYg21RR>%#&B}H=CBYj}6Jo?hDr2%_E#Btg1`^(k0?dVhL%#d<|^Pz6M z{_t?)uKJ*N!R48)@*$ zp;c1{4j7Q+8(J{Ca8ORxpoAp_^_vWlyA<>#gQ$^f@G zs*1Z+@+e0Gp+#`gI0~tQhTY^CgX-*2v(6UQG)XwsQl&8GA1+1Z1|%YYfcLtIsF8*|paO|2uIQ3nN(9z&_f z{1nh33-k%4g4OBplKU;#u$l*i?KH2bi6o)#9qJhtK1zrOh3PZd+O5LqRxzd)u!OY^ zh0!ioeWsJ6Emd-w+#LQ4hKIOWLL%<_?Q^uwB21duUtpq%*M-wV%IgpjDhO4E4Ue|A zj+(roV6+Sd+Q-{VL!(Y+b6c+$iUXM1YIIxm&4Wss&g5|WUT2y&6i=nI8_q9^D~`ls zQDPN(EQa0p4UNrH)qI*Q$~f}lYWL@)3FB(37l{<-Eyz%uT_$H7pgHk&YW)T&+Wc*d zW*rIeOb%yVMKHYo{#G7rye`Tj+O|b;-6D#YTZh7%Jn^FXC5fs}26}JU5?wBEwC=}* zw*plidf&%+$=2I{pKM>_?GLO{9cEvJz=-z8ws_dA$CLJ&cWdYWln<_T=bo?3`~_&W zn5BiPDE3Pu>50~-SL{#UK5m1j*rMPqCXfpzPO{ZYS1#O7ZZet=?)f{j(WuiD=`}#0 zSg%su{)Nq#oXJ-QBD+|zfJ>pj%&Kb+H#|&pUwq#+O*FRXu-Lv`*-mNd_+ZSuUfJG7 zrIgeaj4U`C?sl!z1u#bktMj(+?q4|GW33dXx^i_t-b>bpCLL~=fWKeBG`ww+vc?;H58HI5{w<=Fjbv(md`~JfV5<`bjw8TO>z~~2H8r2T@ML+rE!Ibwh11QlT^+rvLnzcEJ zjIav}3&TcXuJTfo({~$QSe4>14qVLq>#p0J87rF5DAyN{QNIN*JEG6jHym;@k{?hk zS&}|91*;0sMWq%a!iznPnEU#n!Rrh=N~Yb1F<b_T~m&EeP+}Ha#kfem)%`|n5)@iPM z&krnM&DO>l^a*RjtiiY+#(LTQ=%~^4!3Y|BQ@2OqrLcdVi&05Fl5&MjurU)7ZY914 z)3;bNDllKjf=ici#Y_`tvP4{{Y?P1aKdK z;|W-V+S5>v=G)Fy=fdcpqj1YC#WV1psvrczK{X!ZP0@^t|9%MkfHM)nFx~YH<4jtk^p;n1sBcze;duz)&-#7Mw4!P0qD2Ur0ZS)Sn!0%`*H|^ zL6p-{Qj1H>GJBces?fz0A5ZDIxITk^5cZ3+p{ORq)?gs49%r=>I+$dyZ)yJG8r>ej z_670sSPerQ7#|mfF^trl-xLga7lGMm<0#xo4t*n9%&s%bTM7hh#k8ze_G~KGL&~wx z%&w0YJ$X%N&49obzoMmeb-Q*A

VdHD3E$`Gfso(<-{;DK;34luRv4>}hI7={CZ;6aePiqWG4!8EYcQX$ zNkC9e0A>M>HDC9fA9dgBB2ss8-7m_xk;DUJA$1uXwzoEXKi2QS` z%u+#cV&b!{D7^i8<{Y$cBuk#9qcOL>hu2le-FvCD&;23lqJ9{S!B^JdV9jwlyVJtW z!9qpmAx$zp@j0dQLb~#%8v`KfS#?AA51s|90L$Tk9$8?#9Q45%OwZjxAwVTM!PJHz z7}~F4f?z`9M`<0OPalm4rVqme&>#@U3c0!XNz%mVOg`Sea+b}4GNCdXD#~!pvJ!zK zoJ`SdjR6p?`_gJXqtIMoC#9xKCyhZqyUXzb8kwegOI4-0<~ae9HnZ#D z5^Y3R!&6*+H)3rCW<;ygAJ3ib{nA~!qS$ubzAxnLeC$A0$Tpo-n`bS2MraEA;Skx-L^zH2{jCxlFT2TY zt}+xiy>0bVjHjP*QZwHq+FjsIy5n#Kt%@BftMz7ilvD;y>zNr40!Ve12rd$4*l(b0 zQ$qy19Ox6=l&{ivXba`u*Dm7W!gagvB*%R?eUj|O2cS+31{}~P!m09kGce|<+;t{z zy9>h1)Hgsi%P;zL%#P8$7i~dZ=z{kR_ZN~7o25s2hvI0qOE&SFInzGYvaCWn+)g|A zvyPmsl)%obfoKkO*1KnP7l%?`O=II8J{7>oy2Ft8TGd z$M}C{1JyaqLo1mPBd{yDj^WUQT}K=3Ef!1V(_8-ief~^$+Y#!;=Eo47Kt^$N-m2;! zl+YNV=D>F0gah<}T@@yf7Pva}fiX=fifddf*!8pEwsFAOP_>wSXrS9I&PQ^G=P~IO z-KznzCx7|-5|-l5(x;O1tJHjlhhCqD9rT8s&tf8sJ!2n(0~A2I0M83;Gcq z&k+0(vk)8`6y+>BnCVis`noT0Nn9W|mY4-lvvg{22{?jxiFSzgkT1v2#VlR_3isGI zRFe%Ztl{{#S+^i5cb z^fvycFA7dYFf%aGM%ei>S*IoMOo+6#4lwETY$7nDQZG#Unx}FF2f=G4RNjK${N4a| zd658}_Kg zlfCUgu1mYDhg-|_gVoI;X@*^MT%XU29!RmSODkv%v)#6Lg>Qw4F~T(h`Y>)$XteE; zF;kEdD}~$C7b8|r#jdYI?{Hl|C2sLOj{QagBLTVDuJ$8atTpQlrZd;q6Oh(PqV4YD zBWv33BdkA~ue$V3BC05xD|IxG0LvY5N@gfxXHM9q@MeZcNJoOV zx`bUFV(m6D-}JFVDTD-r zSc5tvOo-^GjzEC7+dvtR;BAfQGTA1JrK%oi2$+Wlfp~n3%o6J?M(7n5&SIy+Q`f>y zmu>9}aAOj|aOaay&?jJt*ELS-n^Dsf`U`qt8{+Cw^UxN=tV!+QYV{xewwfBut~Saj z{pHpb%{J?H%k_+?lUcl~V6NHhU3uNVYNq+rb%_X5xws7K6d?uV{j*U|^l+j?Wm%Xt zex2i+#(5YU+X3lD)wRpqRb#cpXYNEOTTcN5xKsyM z^AF3(ip>Rek)q+dBORYtUKc#B7zt$~Z32BZb{|t8rotx7g%gO}JqkKRG~}2DWyy!HbX0FoZj0t`dC|jL^UbqNwud`#F3I*Mmbg-_sL7ZQb+RHWaU0L= zPdftfKSF~|js?01ra>|Ud{)D?SOnA|k@kGpXskl!;v#W*)RZIH39-Zrgk(6hlgNko zusElPM3dNCSQU)EXw|&Es$|zxI^AYhb!~I-Mkp@)7d2+rW=$8I@$tF3964vn!UZd> zUMJ!o-w=)^5pX&GLjAg37$;$oex)o%B5F-&9*nb? z$YBs_n4_BZhLtM~^jWjob z?JjJ#q8>?^#H5$5*tGRAquCJCY+>1l{Q&$kd19SCc%I5}CI<<4y?4&l z9VNt?*b6Zon-#6U|N8yqA8GEmD$+Tw1&>W6xPPErtAv6xGu0sPxFDqsEiytW|8XiG zCqA<)b=7uY6Bv5kb}`7=3@I1s-O9PF&DcIA7va@cYk=NZketPz#nf*;$hNeGQ4$E6ugvE1q= z)?hm@Yp{W%GsxCi?`YXF{#Wb<`a91SbS>^CaP-W|j8b&A2 zDYN3y>*%8#^_EMH`l;I_$i+)Qxh`VT8l?qIQ~qBLl|?3yMX|}##npEI%_2t!9kf#< z>c{E|6lNTZBBMNVf>Z@Zj`=hGuq*DM-)TC+jwi(LG(B$76XJK8KAX`msJh5-n8eTn zPif(RGm7|lfBk{+T+CRks$!Gfmh16!ny!z+O@A>A>AL@LK$>}HrQc?JawAJ`mg&Rh z538Jsna8$d$EGZZ8q5`Njs*xNf_`{WGy%0BPkujKwE$d_!hsuZ6YUxwPi9O)N>n;f zQvyobTw}NY`>pAvyXPhgFQcHl_bLM}gU1)-#uJUDsI5$%@?E%mbC-avf*bDrZ$M*I zLAA7jFnf(ME$T$A!oWmOH|Rlhd3~*0hM~RZ0Qn#Mz#Ee1i6jyfkCj-R?21#u((@y` z1W!J}IG>I5U559k+ROJJzFKNx{z30!EFDtw9I4Zs~CbA28(COawzO7zr;-1SC%w2{(=SPk>^l zsccPkc|P+&cZQ-WMiLF`{CLBIiqz)Z9i1<$(9fZ(n=#MK0zL+*+|`!6?qEIt=$(Pr zSl_11@ikbpl%ag(6Gxidqa7*}&iTIdnuB+TjZ+M~cI+HWu8Eq7-|_(}Gct%;T&_xs@p&10%{ z-Ow*qQkH1m5}VKEcJ`0IG@S>r;n22R1!wce=mlrD_tw0>v)jIaI^&1M$~ zZ^^e(dP*CGr&ZF6yEK=-g|iZ-#6S}K!+y+UiX8YcW+20r0|*vudD%c?ZMZqdGIfZd z4(`LMgnXd|jf3}ZCCS#pS2zCF;hl@0DQnGEFKd#nv0GdRLz2iTTOHQ{z6S3dsyY_U zX?UN{m(-pkG8rve!9Co2t2?24Uwh4x^=lSUjM2L2hay|)Kc^+rMju$17xeNY7~%o(|B3x;*}t%(Ux6nZv0TZ0-B!PZ55 zyZo(}1Myw%W<(Z|2?x&Kvj(C#*D$W;`{6b4n&GL1d)gZ7x0PpAlOC71XVVp3m$kvO zH%40x=K8k6pVsxNiTjd<<&Vm?an4HmB(|*J&2p_OG;nnVWCL1;@w~>Q=+6 zx7eBNTCb^9cGbyMEe_Y$U2;duVeQ35FBQF?RmzhU+w!z^^mUgnJp>p*6)fJ#o1(AB zNx7@z_n&i@NLfi>bd3ZSGHTgkS?ai}Lnh4}tSIh{&|;{}wF?o0D?rCgH@OW6V>;aG z8tE`$))>zrBOd*ox`|bl8dU@v-UY@fe2piN3l?Jgyu@w`3)SPVc0o zLTxWQAz5%)Y@^W`kYcP|gn1rai#_y$pJ8FNo7S7;_zKL=qQHmZul*QKAA0LyS{p1M zo$1sg__UdHygk0kev8YT7OUbmJ&$$}1s;uT&z$&%*BFw-rTfNS)cxLJdT?_@R@@9<${dZ zVej6v%IUa&p1HxEve=9X&`Eel9$r&a!`_^Lse^l%G#hQICsF8SNxEMHO|K#9VrT~^ zwj6j68_oUFbYgzRPKN8dbp%8tnE^l|1hLUUR8jM=Wx0>cd*B44-2xa-06?&^`1*kwhc&LaLJLZ_M6 zf^p6)hvX=W0^*EQ>>yi?_{S(3^hf;gtYnj}ODIGrKa``IuRT6)r*LGsu*<=QA_o+= zE1BE-8n!|0`+BRx1#Pn1U31r(rBq+XzsG$4wb+U(a|OX|<8!|CY%pzDTJXh+amFT< z(M@-36YQbik%oFFi=`Vgc1lwb14p~d1$CRl!fKu7*J6J~eukz+*ivPz3!2Zv@;B2hpqlb2vjQNu zYs(5|(;ps_=JrC_x@oY>L)jC%)Rpu)&(WjOwQ2$2Gz0Dkuvit)@AZA?S>#iTv-Dkx zX|S(y9imN=Z~bQ!Mh{kbE`a|2W{FL36SL85fwtHCF=mtHBbX$yAb107evSJV1T6IE z$^H5iDH?lUaKCP+bZNn@yZx!j>2`1KO{MK0(E&`do~OdQ!PoRQy|O)8Oo6?H01DfL zr~u0NhyX*Reye2!-eVRMge!=}NgCdNg;+xk%t7#!CA&|L|0mDRNNpD!DFvK_2D4R9 z%R0!4ep-OeenXUi-AxE64-ge~+OmI-peDfp?y(nM0N*u0;@&LlEkf@dehI_qpHUfx zJWr*W+;s1s7D>7w^x?zDL!Bh{DI=m&F`;-Lg41O@#G-&7_ra| zkeTaW1i)5j6o_csNVcs6suWVUm1OR#-*i7YGSzHN94wU5&ub!kY@_w-(R8HYM~(OC zd__(sEB^Jb=l0WWV(28lj?2z%cs#0@W7GR=&H8evV=CX(o`R>Tnpt(^g>Ve+NmI2sqB!G1VSd>0FI-%jLfN<%eHpD6)p35_`mFpwL$CL*^D^DpzaGR`w2oxybu$hpqm zXo2cg)dXhj5N`wF?4LO?fLUx{2u3qTGzE%<#y+&)V61sBu5}rwh8d%Ka3}-kY`f5U zK6iN94AM&9M4K@95Z2$of1X_TqQM^sR!&BB_eTx*>g3s(KO8`PgLk*p9Jpodxa|*u zw7(u#@NgEsPqmm1$iCtY(s2&EEgT+z)_W^hA51_=I%-svIR7-Q|*1%~MhU5Mzf&6wzbtA}_JpR3X)@CLRgdepXKUAzH zybqWJH!_&2nyww2>@OJaqB;)k5P%_t%W^iat_im7CR92%j!Xv@Cf_P#UoB9jEMGcE zEByQBJ@mu};Y#zP_8ia#fzCd za&po07hw;nt{s`JYeJ%g9Xx~0!;QrhSR&Jj$>u9qb$&FvcmsdyS&O_>CCxFZnTEpt z;|t(}RFtilr{5>vIc39RD>5MheI0T6HJDfg&dC-SAAiV^@u$sRyQX%PU<0( z9~@zSc^ck^a|$9MHng_}MG0`XG;kGt+Z>H{raNJ|WnY&?7uobgv2Oa8Bkn=1M^L%; zwlK&*Kq#nMR7iC6xkcXDS%7&!;H4te+UdtTX<)8qIoJ?8fSLDB-xFh_a0?Ebuow8( z0-J?F6=LVAF_v9{*g4(VbUPZqy!E->oVaObIoEx(GGT*Ow&imVz&k0zrT0D+1-?e6 z;^Dg++yOkp72w9zA_JSym_vS{OMbx%LXj&1 zI#^kbuAvpT)T3Ko1?7Pr`+*Df2gRf~)I6X>HbO!Z=aN&n|EYhWB#I<5vi}h+2F7{s zlvacG2`xib@F}I)m_NK^$*Gj?atHykWoJ%b;E;Y#umnA(2IqhU{ps9nn#?Mb1|;uD z0Ic!r+Y=EBA!4=ceJT9VE?lZyCB?11U7`qk zsp)sJrGbY-e%=^KLtm1%K+_lNyXpb%(>Z}{79D=obHZwlImTFlJukmWC4a_|5XE|% zu|933=@KV;m&$^~pzMEg4fmN8on~CTr+X_%aUf-edV0z(-`s6PkZA4Qlr_d0YyFX0 z5@p#D;5%gx|gn zG~W!2pwtn%5JhDd^VS51St36xUC0IsDDE^0o5#vd-o+(GU+#4?S9&Z=|C~+eA~Xp? zqN={JQivS19K%}uDc(qqcXe<=l~m_US2>xr+)nN(pu8M(DG*BZ=t$}CB#K6AQq==h zl60$Ll(&|cyTm}ncqt&gGvJ(y6ZnO-k~WJ@pWnu3dUtZNkNvIf>^ti7G>EXsqmD!Y zjgneyG7>$Gqcq7oGaXdh z2$EiF6$$6;7|d_3(gsFNKmZcPtls~~GHf$=Dha%GZ=d_Hl=_sTj!zFv?FCFzV0yAL zT;_PaQQvu@o)K+2hda>#!l;7R7p81FE4>Yk*8w>ZTZT>mL(h!X=hhZkRhz!s;`=l+ zU*6qaxqb^xLZobrx^!#;N13VAq)%*!Wx8WroydVfg7Hh31m{x`TT@Aqt(1^-)D+q{ zq`b59ynj<8ZR?x4oXqs`bGKuU+Q&ur>^)>M;qr5nKR7VNqzKLU=-BA@fX5eU$R;s; zmc==p7N;V+(re9|lXqYHj)F^`oSLD5?9rs-U;EqZm7$wE;}^F3W^i;mu<1aRs4IUt z;cb1Q%g|7jX{ea%QGbo;xc?^qQvc?9a6`*bqVSD8#^75tc@zJ}O_P>`#dP4nSOLRo zsZR0e=h>ZflL+KfLe(AUUFN9+b=kc!xlJ(SKHy4@0}8&qq#d*&^a<*lRN|jQxT?0S z3^0q(h{{J(yOwrDIR97hkMx@Q{1v_;EZab6C{x}i0XTM+kN|{dqjV)#XH%j1Vy-?j zyE_Vd;9r=7j&&Ps7M>on{V@H83UJu!@p3JNUNDs@|p`~>evw)%6Ru_E+Oe>Ca#D6GKj?^(m@#*-s;SgEEjedabN(^Jdx{*#} z9J7b`NL7jR`s@&UIs$bTU=id1gOByI=JSU(|d7+v=4H8|`$=*%G0}u4~Q3=p3EY-Ln)lplPwrr2{3r}b=6?mKu zZi}fUHye6B%xz8%HWEhQOCr=%T%;XmoftTa4kh9F#e2|o?|l8e<(J3*f}I;IO%6%S zHh5TKz07@#zb`{0pa0FM{Y+tnjV?d~z2L36ZSijVVm(}A(Yr1>Pgo#Z8_ZZ^s<#wx z|8?424TEioT~k0~W27;emVMrGvORhw$bEgmy}iA%@M`Z*_CZO*z+RGQosc74P|Yhn zi7M1xl|;Rt$H?L%+qRgK!vQEDs3K-)oc5J~_MY%#bU(m`C$XknYZOqBx)kNNCre1$ zZW5xn5tuAJ-3fb8^Vl80S?%dSH1&!lN`8xXH|3A zhe+4i>;#f8b}_xSfPbG*`^YAXfD_c zfpgZZ6+@e)27xoEc(t z%j26Ik9s=c#?|#M``$MGhBx8n1!RZugu8aR{F&h{)1@N8*K^_FsXZwfgBFo`C+94)qzgJ_89`7P3vY zM<}-mH1soDP-qp%?O_5Md4$J)p^3i+1-}qH4m$et)<^Z?#m=H>i@vr&bqWNbAj7d( z+lA*#Q)RtXQ?8fNhsLwZ$%FmT_d5k*Q8y?sunvd|W=q01Lo^5{4kGk(!4CqmR(zBu zg$JN}FzLA7^tasAf#vVzLBs5Aojc0}%$*ex2vb9plslkq4JqUZVd|}^=~CfDDEyEV zG7H_$^U@Pb6>fS9DX*x0<;%SnLSEeqJqAgn2V+B-Y$gEJ)R<|~t1DSOsSo*K_hLh+ zvW2qV5UWQH1WUivDc!}_u(Lx{MMUDLa%7{FxfGSTz|of-Gcew}e3-U2;UgY$L{#Bs z>X<6U#Yu)uiR?EVLWUSPJy9ZV{MQH!_Z{Tz_93KT#VMU-FQ63Qy=N&T16ui9D^9!- zfa2UJlrN2u!Ez}ogtguSlN*nixW|LTEH~He$5_0cMGeF`uR<(DL01lkGpRD1AG?Z; zJ3j>wCye|J2a^X`VT%Y8r|O1ZXNL}_8tg)HE&#_Hyg1+&u+9Zwvm%(=ud8PUO2(1K zpwD@#S<0D-9MHi3tYg6)Y1+^2n90l@oI5~)n!(1zQd2iEUNwaz7EB-cg3dt_yhk#T zSUF;&pH}5grJWv5+x~9x1w{Gx5Uo{%Yh=cG8M>?hKXYCQ&PFMrbI`HMeIKWNbtDw% zhvyGfB=7o5{cC}>@h3?;$9O-q`l{f{0kk#!s?eMz*TaFjvJg%HezcAjGKYwv5L zlAa0Wa<>=f*V@(o|q z!Sq0J@m~)9O_h(x66iy?VY4Q@LSvcnj9-A+^TaBE=1HMbHg+wB#rxxyh@;WPQ5%B- zgPGmTDE1kJ6!}Vmkpe(hvNPldAF_x_s&G`>m-1(zj;F6eEkHdhx@>y5YC8E8-wz5f z0H=~UIfDd;!|URNP+p_0(B}&z1E+Ojax1tq}A^6{M)PTRNvE*(`g}{4K zsK{EY+VDAO%Aa^Vid$@NMztUam{NH6-UIP^A@V(hfTVL~_>44E7JsDY@_rL=A3lbU z1vwZMP@bzrSp$530}c|mIAr;KgI@>C0gAMYIU-&aki#X&`Z?N6nU6oPL?mBbxG1Zh?+I%& zHA%$hI(BzK0rX<%?9QGqnmIlPl2rQU@~`Yo8~(c-BqAp=kvahx;8{tnL!+^%E_k#vf}u6Lg*lk^xav!$2-31lYIv&Y~-hY(HbpL0XNUW{)N@ zYfEDK*2Jhz39fr^Ss%YhmsHv&Zvt?>%$9Mko#c>Y`{cudwh=C0lxfaIcdtBkLu|zZ zNd>|Mal$$dU{7?Ngvxkf^7%Y6MG}YbVwQ7-8O(YU*bnPn4d%F1+O#LO%A%o9Se^i5 zi&A~+OG7Ma0jceMu3!of^QjsKqn1oXVU0!>roK8IFm+dG6|_YJnYnp0jf3#}Lihbr zXipTKHH&}aa!k}_PhnUjgsr}z?AX54u*W^aLr4?LMW~>vRSa9jnhCa%f-HL02b}9U z$Lx1B(U3}4w1AqxP(&Eeqq52p#(|{qVGS#j?PfNP?g$twpgY_>9!)B18jEd3Ll^tb z;0=oFtMen+?PYEqi(Tg=KTkrGzcA*fQQ}Ay7FG(1x;%f**&F4s0lSSp&sre)*gc}y%@$=*hlW1xRTy^phXfodSd zCH>btv}$E&c5$L0;G~i7m_F#5Y9w63%mx5~=b29ue-7K#VhEp?KU-fLKS*AOK*u;0 zYR}-KN6?pDuZN5}c>-W6!|R}a2VzK=hUrNtcQ5Rew5uJ>9ZvkWD*_jem8;xMQNUVr z-1d($zl<|QP49Z;T3ZeAY$dfw!|w19VGBSgB@jru8a==4t^EMnC21B`fg;+Q9Go{> z?>WwK&XL{f9Q%2P8Kl#DNaQe7NDw?>0^uwUBApmWb}7Jy5`3An8D5xwUsEuR(xWqD zp~`i60swJj(aGqO4s#fQ22^XYbqH7ECI{n!~nN{^%rJhf6QD%zua zYmqfBN{n@eRnH|9rf2=9jo^xt|5rTpGCttBC%-z+CAtD#En+3kBUhH}9n9!63{@1P z*{l?jz(YKxj12+w8ow+Yy94gkYD6d}*7-lqn73(odgz&c?h{anhcwr=w)xH_F89mK z3rl$2&V%b@_7>Z=?_Sad6)B(lUv$iI($%`l(~L$kcjuFbwd3KquD6bFOWRcoy5>_& zNpW)~yTx%(XJs(&X4~g-6Xfwt-S2Nr-VcLgD5f*$J-O4mwV$`;Ln~Q({Q{m{4=CG& z7hD0yd26M2{OkVjw8vxuB-*7g-Pt^nZe$HR}P-1?U>&SRUpZc|EJ|KG1%~To4Lo{ zRQrng!)3DzD)Fj(kN7avnN{bd^sVzPr)Nol1Wg92tnh84bc`9xvOE$s3WM3w04{z= zr=-cNMkJ9JK6myPaB`#&*}+ywR23BOTWf3v2%sT@Vu6K&<1snE_J_lyypT;2w}wHD z)r%mShO#o9yK>93I10m?6K=?y?ZGX#G0t6rHHKk_UYBKum*wcwqhdTliZ%7h#FsJS z7YWhg#Q*o|vXoi&%jIe7c?u=pVGnp&fu7;=sant16Z;JwqFFiF4lSL#c%=h;VAnlT3 zmK-LBt8@houS7;9Pe$($Y2d^oiL#~ZVd{kZ$Z9djU;SVB@6CzYV)i(Ftx6wQhEN^j z!KJS%u~ZSXolVvOgMkd@rX3{?!=}k6j2{5x31xdL61w#9&0pll8~Qfsy6*a|qWeGf z`rn!KhY&Qbawj+Z9dq%?lkBQy1k*qlS@qomR zdxzM_L&5mgEJxZLOmQhB&OXtW3hr7TvvMIx?e3OELpql`lb{);IPh-x&dFvo0h5wl zO%P^qmv@2B$vO3OTWMJrGrKS zQp{a(KJ9Re-u_8B8kR7v@l;)@x{dvLfU({V1;0tCO^J}4qJ3h56m67g*sYaglN{te z-f42>5A`YMv6uKoF~EPa!OZ6=F*-zV_J%~GYonQ2&u)8rF4q}0D1A>DeTy1@EB)hD z3C0Tc7{7L|Px)Z-b#dQ~;mdl3LeVO7ksgUH8)Nz%>Zu;%7nphliN{ zZ?Z_G|1W^EPsac<&cs4D`Z4@un_au5PvKF_))nHP3cw)KY-)fvP zv+ZZgy7kQxXmMy&HtNL>5{>3Jye$BmR?U*Yr%SLq@CQWeyh-FaWzMGNaNfq5Wz=W? zlGekrUvFn6brRK((T5kw#)$z5nl}7J0C|r}O<%*&((}`u^35)9weCx$Po4V)MCPp7 zwn{`|m~U}-_%Xy47SkikY0XXZ?Yt}J)q8R(`fJ%U>>$Wlx%1A70X|1%&D*ETWn}NL zg|5Jn`ozA0MMRUW2uexvpwG98i+IGP4LTVtm+7-5ZwGKlg)3dqLJl?h&C1{)HD?7w zpQ@slu(P~`__Jot(7!?ngoN*z4EbZ@-Q>sEq{pAd;-3;3?vi?-1*4ajI@t`9-0-a) z+nl8kU^T#`r!trts)EZ7S!G0+4|80frsp~hBD`{mQRC9r6axC%VNg=kmVq-%4)*T zJ9rJ>XHIS)Le2x)JWgOVKcKa;e^=38ml5^{;}gTtlnX?|a5yYBo3(j{fc6D$IjU!C z1ocCsG$+bO$La1GL;a-H#H|}lyU~01;4RLhczUNOx_4NzdpBA&GnBNQW?N4ymm1EW zact@l52UH^F}-im$(hk;Id>UP0d{Q)E58=1wlxKYI(O1y{mMVmuzra{Ly z!CD3nGAv|mOwt?oqm#5fnUG<^`_Mk|*{?g}BuuoKhbj(dQH4|2V;v`9wCOG}GFj_f zwi4&3SxFe^HfXkYd+#33CR%L)Dr5-EhcNEYbO24P0U8PXidxuwT0O0cg&?3S`uVju z#?1pcP}Y6b+!guzmFbvI>_&&91cH>5q30K&wB_h^cCWX=L=>p7x^moBtEJ`j_3}zR zYSbA&a;*5E<$qWN$+D5!$M8p$w8)mNG+Q(R{Qsfb*6&jo8=J~&kpw3kpowURkxIWl zm-7RIlN6;CR!^&Q^VllMc*NBF#5F3jTMnD8nSUi9MM#9OPN%SLf9~%slxP~h5VO1d zdUOn5p!@1P8_rHp;^4yR1pdhjG0?-Y50;O`E0Qv-GKW&AX*w#CpA+1Vuk0XtXz$*Ht`-K%WbDfS9%qJ6XZvJ4Bpyt(p^p^ZFwrw_xkyG2X~1qxsz*mr@{YD?wR;5yn>Q^*my^)KJ*#ANK25=Y@)pkbkLREC1 z=eV6T;3Y0C4aq~wYc{#!;~&{Dd0@{xG{l^Tb~h!u5B8kEljg*0ujMu|( zEmo88c95sUKbANQEMvEic5)NMZJoZ?j7(uQ6Wk4q2Y*%+Yx)l=RQ@YSt-gD&nEK;1O0v^H&P3@c7v%`#)B zHzLXISn&-}$cHPXP%G*@kBRNgFG^WSte%?A8Gs6Kcw_?8$P6*?^9&6)ltO^#cmez0`^u@ADhE+)@igvsV zN}Td*zhSZ`ikw|I$e&ub=51&1_{n^0eC1G9HGOAOWK_KKRydqsFYgO(VVXmJ{-2lh zpPSo_Cttzp?;^L(FIBVO9fQza$6GSbzM4YpuAIHQ865Wx31FV|WBzyELHmv6$8>B% zo^z(*xIgY!s!tt_BpAo(LgOcsIgh>yJQNcc8L9CyJviE#lGxYE#+Gyq-hQ6x&#tRs zPpuF$L)w>ba~F0n_(Fm(a49?X2+<3*nCL2 za145>7dqie4e-B!j{9KTM-HEWQ(+szpe*W8_!C`u14s7g-2h_xrtFZJ;tV^zeDF4b zUHhohGn#BYU2v>@i2xcWSK+zyDkuls9CFt3#7zUKwA&$11Q^JAyOKT3V{; zy?#84%>J-U$#k?hR(uNIiTI1nEIzueP)ByG23bY}&Qy2U*A)7iq| ztBFI1IK>Bkg9QDUs{$8TU)QdAkr6AXp%8*pZV+puUJ1pVjStrdXWF6YaF*h9eAItu zq^BCA7?;>U)8Lcoyd60nG=!s4p6N7uhm#bx3=J;8HzarTLzjTYSS6sSpTzHM$?RDe z-r{+}ANOtHkwc0xP0nltMoI#=y>Ai&&uCjcotlLo&UyG}+-jWAT0}!dI=$OyVfD*s z&|Q^g7h9``{lh1U+?6h;2eKNezmgp3ido`hEA_e ztwc)T7iy>|P6>#M+#5ya@<(i8bv`+5z9-?Wd*!p$E>q2C?GlB>Yzi**QWTmL^vWlz zw5mW(XY<;g(V0YC_;lfZfskCnU1q8|_!nfbiJHT0;dYm9uIMOSD&mSm=#FNU$^YVu z6K^Pi6E;$dx8anQ;JnEr)Rc=4NVXQH)X`LlTbsO9BH|oJ&Kg=5JK&r#XrL_ z!MSh=x+fa%u2<&!6XQ-znv}$b+L(q!RCH5>ilJkt;^2X8e#XM8(uBHET+7+neOCU0 zkW$`vs;)Y|z3>*{`t17yV|JfY(2W!$E>6;;G{n3$4xKXQ2VWP!YG86s*1QItE~vV@ z(6TE-W=IO%BR3)fwI!5H9A5G%oYBIzq|cm*BLkP2ih5zx#JV&djb_Z~W}R0&(4AN) zvC3!({bn{kPdh$235AMm2c1yB?{6QJ^B@m7B4R z&^5P+X;&0`?27Ii=G*?D-@`j~Qcvq`SaCY!473rp`4UW{*tL76xc`w4pUn5$4@3px z@nj4~*~YZR50eVHX$`0^N;pX47jSb|C)N3%RtlLa`^`@O&z5G|w0K4dY!JL1GDsp*IZIr^U{{orUdY`|!Y#&A}nEOD#>CGQZa4RXL-eM?{5U}lbtlv*oxT?Dxe_Cks(NzVIa z6{V9zJ6toO@bDzlYNfWFUcwjV&RsUVqtKa|D#%cbAok{$&d&nyzUF2hw#m?y8tQo+ zy|%^Ib_lx+zJ<(xXH;n#)w#Eihtz{D|K=i<;DQ1zD8?&HqmyQt8F1Cw3I%Jr$9;qmPTnenM}7 zROb;2BK}QKYWbyPB3jkE&_d2}DNu+RPl?#1PiY}C(-#cVY2_ghsOAizJXH4MR#M|HPmaVf(u z_gk=m;kYd;#7wjuVkJ6CvOkE%S;0nZ@33wG2TRc50Xs9w1=9Wilz-BKX5h$X{`;by z$VH-&HVwuys1WVY(C#9$=Zh&7F`H&Tr0V}fVf>8CTk*y|W8aE2Iu(ud`vn08*W#%i zA`*&FvCHZ92z%6a1Mt@32x#l>+aB3Y-45D5*ml~^+y;N=Nm_peB;3>M2|MsAjTrnz zZDvi2~F4xVAm9$Yl8ptn$X^d6LHVKk_^B1^5;F6*G&_vgwH1 zy415Ptzu6a3y`>iyOOyo=JY)=KFFr*vVWDX@;rvDzD-7-FZ4>O-z`+B{H zhE6QhpU9d^!w=yA!OAR-8v+G>4P6!eSFh4BXgVF2TcK1#j2m;vM_--_e#&23ifmUO zI=@H9eXwSn5Bcu>5PhElpnAZ!`Tru`5m&tyyCJJ?i~9Q1VcvY{ifl4fZbud!0hg2U zRflR6=-5Gm*IC~y1@Ni`ki@KpzIhHLu>UwWV|`yZ~9`*F`>T6CEH@JyZ78$|ql zvQ44Yl+kfD{w`eBwmrS73hjB;>wyrt9=qwOPpJM@8nA7H;6HNrHL%NcmNLosKEBPo zJ%fh@N;E9oKc(M&$MLbKMPqz>2+UBxk~$;AGv!gS*~%#LZiw8^CU(VYc#9X!slWd^nZZ%V z@8#Grn{A~S-&D)3#?EsPlQha>R4fqEa|9<$*qAJhRW(Mx+(m_2vVDB=Wo2~A3>29=Y>&&B; zXQOp`ud+%hh>tzu>JE$2meV!K{!_ZnE9bYK4QbgQ(YAt?eZ9NPA9vXcYG{}?-4_o% z%_~PYTONgog5F2TgE#)gSFxHhMzaQ?B}>SEYK@<}54Jv{t^;ZlX4E-)kn z(FJDn@H@;E)JWf0UtizEEPBf$m@RATkOrLRjTe%rd7@McwD3$|9t;Ta#_k15D}vprENw3G_pZyVcC{WxW7KXK#Jj54j- zwBg473`JH!+4Dw7IkNMBJ5v}4_v`0`2=&TW4=G2N&xTg# zire)X0Xy`f_-u9Nuo;sa^gow~`}gz_Co5Yyo_jLlaSh?Xl6sFrod`k-3Lfw;tDmuL z#3@)~^31|=73k|R@Fw(vs*b}(jv>#oc0bGZR!emtUuGmdq=dPtx3STbyp2X8UY5-+ zE@BFDV-7KLV^5_UAC;svd-Y4c{a12%{|2e4suXP?-mNibgS=+={>moS(4Z6;^NQWf)HVWSu%jW?DNRz;_9Ct zB2ALQ0{@QQOiFS%HhmU<)I!}cYNhG(vhN~6h7$_b58y2{Lh_#@zhx;&o<%CRffiXX zP+|F5yuxMuR(ocI{;QMu^~1u__GsU9zt{Av4J`({>?+UV zdav1DeD%po2aqjN^>mK)G{~1?y;3q|ji8#(FlfYdTb2YBBkRDgvj>=gH<^*X<4@?5 zJbe}O&K&4(nRG)GQulMeCe1Vo2Z$bM_g<8hMy*;`Tscyqi38w%JMSy#s94=Z z_t+`e9vW73bDtYnwLP+fdtq7n79EH8Y!jf_r=Eq}?0gJNc;Vq56ZYGT_x@298>ry^ zTU~{}-jOn_t;5<&`8U#o1!GsR{wE>fEBMn~b%0gtFN}*i{J|U=9Q~?;f&svWbk+jbmJkG9 z4?zUt7*e&o|>8k?r}7QyO$m z+jPfyzK?rcL~lT)87hPczOM!cahIt*)J;97ea9XFQNPMc`ICSqo3|KGHJ6_{7Yrwt zSu+=l`m^gc5*i=&i=d@zN7_o19LyD0z8C1_ZaSXZ4!mKZubbrN^@Up(m$Tf(?mq9; zIDjkUi{bR;gdsg3GCE2~&h?0r?ADB&cYErQ|8gi!A>n>N4*lLsshfpsP=LMoK}v z(fWGB9S*`gDQ4*marO6xik2?2{uj07&wJ0nIQ2DA9gmGG@rLzGh~U|ulHE+u#iF`o zpFE9#2Q#Es_u64cAvG-^+)g_#YT?p_pyxv(GEP}8o9TD>`>!7xe;_yRhejO>Wa+Z+ z!y{lYyUB|H{~wy*FYzozWBkjWO2*@nwD_>{urq~(uUIR0XAijaX*j2tk$3g(j6S~6 zQvVRFFWI3^{AhMSyG-LEF3`APii-R!|*XsifheGCQIuM z)ds;0GaiLlvF+SbGI_QOpH%A-HHZw?i_IVWN z+SJ@?R)9}4~FzXRjY69 zcqoZx#|WU%hlED3;GNnUDRN|MSq#`wxQgQkz<^vZzr# zq-ERDb;O{Lh$t&czL_0VQ1+XQ8Ur6gucs6N8!l$1e(%*{YIaCIl_Xwa8VATFz%^`d z>{z?XP_%nQ?7ja_uf3EV48|@;JA#p7l#N6e-JT%a?I+=CK*#(L&y}rq`PjSehhk_A zR0<)~>2o5Wt()s?|A%g7>f} zn88CnFDZ@CO#ven9nsAYF80xzIBQl*1l~z@T?j+tL+#(%qYA+nosx0(X0)96b4tOy zDR`zG%{9r^OFT#}=uwy5FrHo##h0;%&E@wl(Z@3QLmU^iOmrQn#)JiKLLXiB@sG(* z-<5wp%r#aW_zYuXQdO|2w%H>hBhJ5{h?5ee&HaS-jKo?YOdHB-j^#e{pd-uR%Rq|db5+nLD?i1; zFD8p|%c6fuW2FY;T_6@EJKL_H%0nzU3!orkH+P#RjStmiHrO7G)@zM5Cja?5L@?-D zV*{+8y+A-ZKN!j*2F=16PcjIONsY7Tz*~e->%n?e93|xwe1{oAF;w6y1Jp^Kra^S( zU`>b!)N8qXKVNvv z0ttroh!pr9rhins3*+Fm@Ln$-|h?)7ZpCnu!XL<|9Qb_%tVMMbm@KR_G zzx*ABfs=!+2|<=#0xbGnYSfymrf`_hDYycf26_-)7W}`RDDYR*mKEA6d2ge(#pGOi zFv+?JVD++6?Pc@z!1lg%&=!)bNGSyW%IHToo&S%ey_*DO2K*3h1=LW?jR^jpiuiFW%Z zBBSpnMhofBerjjPhQvTWKw-O{nBG@O0br1Kj}jrLVd(PU**joWMt5)!V{H;6-6N8Y z{YjayxY#J<4(rRq=Si493NF8xaIRFuhu``R{K^M<`%P~ve`^bdDShkeCgG@`vLN34 zo~$a~{1d;Nk3U;1SVJVZC#0TvlKSXa<(P{J=EOM3>oX_#nodaF=vU_6muTCKoD3iI z$+OQcTR|7O2zy~gEzsj+G5dz#YodM7 zOEXqO)z@x5Mkf^Ri&L?-N>WU z4NP+HXGt++fnA124ts&(mZ-bX+OL`9nh>T-;R+rU7c{SasGYjNxzN<+%m6sUBFSHR zV(?V%@F|L?PWNffge`N3B&vf>;|xme71fdXP3Lzh@{``4*>5-xhp8%^+%Q7W+de@Q zGk_Vzc7{z^mRmH2+UQJrbNv{N3=?yNiO5|SlUTIrDb_J7ef|T&8X$Tba{eu=sq%rq zg7{7ApjU<0qkidpbzzD;z%dF*5-SiiVT0@(&V_k>1DXqt>(aQnjfeKKYA4X)hY&&! z>}I{3kIKW>X$Elc9CO#)1g|9`GccwhL59BJo;ezu_DlRxin!0!r2)F5l8n@d54FRZ zbuT^r#1r`tip>gwb8B%+jyF}kP3O&!0rhTeN|X<(kCya}5#Nh2F>mTC>iFUp_Ejci z%9_S+nyk!ZlCxeMz39F7GPJFBgkup|j)0WD%CC)+6Ym)FeSX%w&LOGs9jbU5Ax|Tq z0F*XzZ%493qZ>)&`jXw_i%CirIw@=ph;NbBT4R)r^_7^;xg*mjkr>xO!ik|H?pos= zA=f}^YO!1L#kkSc>XUt<_WraTW{q>OVQ`zS5qsN&>XdH(>Y2~m`jQWN7u39kf}F76 z>GfBiApuwTQ{-wujW#b2eG+tweAYfW!;8$Xi^#g@<)Sj^U4ddm``8fHnF&_=Oi6M~ zw)Ci9*lekmhAGzV9-qGuUu0NY681KOWX4x_E&FTG!dL0K#Pn2GQ^mE*LFer**t(cP z&QAZu%5gc#?6pipv{R%S`qwi>x7q~#O)B=J$Py|m&Bed5y*ePy-ABoZ_P%#MqGYJC zZG)R-(fN<9qL=#v zm6P}fSBWqbxu7*JVJ;X?e+~>d(cqz$gdmjawIFC<4wM#HXwMJ1pMuETzv0*9iJ`!k zi9xW<`Y4Z=CgqR2;i=4o5KVhBob`m@a2NxiP!xU~c8K%8$!)*;z9WttNPwL3HiB(& z*YpuB*C`ohb`0pn9JSyN@A)?;+i$n2+2jmbqSN{xao7?=;H&pQQBejU1-M$Z^Y`JE zkAi??8-x8=Mj`&~O9$Gx*tKY=)zRuB7e90?{;A{ib~sYlkt>CWb7VZZG%Wh*_#TYS4tD=Cm7u_FLdo1V zPQ?mW47q$5H~gXFBZv!T)Kuk zy-dp?bPKO%4ud>vhH4-Kvv><`Xxle4LHSQBix)T&vAMs)oVnEp*?9d4;_POP&2xqD z?=~*tkXAk*=bOd-z4xhRM}Of|>=EqCLHseMnw{iby!mN(kxC*R>s&PRJF)}p^HOI3 z`-EKn$tHAT?;YtRRiwfZW$IjM#}8>mZQ_lMRJGcUc$R0f27^F`pQkxqdqQO_*UP3Tb4xtBV_vanGOz3EP|B0>8A$ibysK z#R*3{phJN1e>73m^AP}M{;eLPFNElw4X*tlq>*IdeFZQ4q9@Y^PkB87g(J$Rp=O_E z&1lB#`~eB$%${9oUifdq=Oh4kkyDZr$etpxxyRs+i;XE|B2%`$GX923L2dsSY$}!y5E4(6_+QGWNiUupr zpXB&ul?6~L6ivQVz;;VQYrh>3?SH8Vm>LXLYEWkY@hCWy@&{9;2kA7m)NiA*!h^EMZ{_$*zW`Hljuk7 zzb2O}cr8*hMfDt{I9(j#(HMblhkSZouqgZHg>pkaO$wiPJUcSlIiIi#UNemIv(sw> zk{JhG7~8fTNFIvOit7QI7(=OnPsWnySG}{&hq;F)R2IW^yb)(KU=Z!3G(3LRTp zj{X=+BM$24&eCqu&1w6Z)&>r6#c@4Mt;f{_GJUjq7;YU|EgQ=|7ZdjUU~ZP7dA4E8n~;`B5Lf zIO1ON8R=!=2e$BX!13``XJN+G*M@o^-3@r-NoGnT9Tj3}j5_{<_IR+5<5ihF!kGV% zV$e(pbU9hT;wr1?eftasY~7rD& zCo!4Eug0*@_ur{UIO%)fI^|fRo!U|Ih$Vw$J(2Tb@z~y@izsWp?YEvv9ybap3SzJZ zZpwOTuncK~Uyx=g@EAdIwV6U>51U)aap*S`5JGaGe7iiTF^nl% zT*z^YQ=A!=Wtl;eB|<^38ZRQI>4}madWN4Ve7UZ(qh!`^^$jA;+ywb>u`7}bZul>` zA^iDwL*T4x-OteHi$D-DXn0L@#qwwjXNh}guQEBX82)Rx6->P$GNo>*_UPs zH51Icbn^0wW$G-9a5WnRaqkqbX>*A2WFt#DXiYU}K;IPMF!XEu{8BDb=-uPJV=3}d zJ~uifdY|C@rqAwG@%INXp#}hK)E5I5mh8yzX65@i+=xV*H-8#4+&|0{WvmrH+{)zm z<4r9pemPip@GFQ^Gq`>Zz;$*h3sxi#8C=j@4BwrmmK-%;+&{SEJ#GE7wO#3InoAkt z`Cu$}fkpc^xsT4|f??M0A^h&%JHuO_8c`BAg!3eBwQ#^{8 zMq7O$VinaCR$|3XOEY8@Qlb@4b-Ixu!A^VsvW)-IvtBLNGFxp+ zWrnX3e7Ct6hp_^eK|^{00RaU8ff58A1JMU@1%Uwp1N8+{2Z;g!0c%4*2LT89;R;GS zL8e?_01`ZN6u&hHm~G|xGc6_n<${8?j!Vx+6eS|i9rur5m{ou5^|95)w(SB;ew+ys z%L@8lj?q6`PVJcZS-tdSB{Tc^@1lj21FNc+(>HzR!W!bn?gYh>_l(T3M zxbot8ZQ>#h32*MFRYxj$+9*xH0tlT@p6lUToU#PQh0WfZ0t8KkHf`R*Dj|CoJ6-Y5 zMLj0OGu;d88kH|2KL2ulUV1v%J#O$6W9ACy9lK6X;%e2Ic_;EUG??sZ*!`tmNVJDo z+vv3VZCgb91gc|{3G;JaKy6ZEk0<*xfk8>vXP@PPAjUZb$J;<`_Fc#TsFWb>hriuB_ zF)j#0oVge=*HFHizuRjdbI-bdM-s>p%;;PGc<18FVaM{Ng&>_lTYFC-C>#m_dRwy~ zKG@g>_4S4P%1P9&;GJxo5U1GffYV#gdzuzCPVBsdYwlODn&3Y-F8Wr-{*(G2ymD87 zGQE>yKqS=cY*_5;Gv!n^kPp2w$OI{D0P`{BnA!mIT4NQzh^~x-Qi{3_2A|DX6x&eL z>p3@>j_9@en$-*Ds&KzI&<{%;B07GZZK1Zwa%aL9qn3EVx`~M9ChK!aTcC?$h@${# z_A1ZFIHrD*s1LfRd5Cwc;XbpWD&-lk-c*E^h2c!yP`9p5cdC`P%~LGaJQPbYgj~>< zy_JRha4?+Y!*;b3&AWrO@{uGZn6)~N>qDWV?w+&-UAi0wuGRNgqj!vSpji}M7PLV;^s%EJ_KpE4F9~#^ z!CmW5HfrS{qAXHWL_MlBc8I_H!l6F1DuON9SCRZ|AbPMJLXWyq=c?dVjaLxVC2@N` z_}FU)sVwOGRm0(Z69mURWy?qNy6 zf&}@!^As&xxjeGs?AeH)Y5itlq_^6^{#f03xSDDd{o(`GyfeC10Ae3MO{xz9`U7Q< z0`e9azuhXP$MF_s3R{R1S$h{oC)gb}_Wc6VmMq-H_Rg9AQ0Z!$jUk4ltw}%*cI#n=q1>-!v}i#`y8$Lj zF&U|9O#FynWVEStN>CW(I3Zx{x@^8} z=gafI?UvhizU>t2dB5#d`+$9-{y_9Kzybm3eg*tryZ zLeO-P|9YVr{6k5?Xv0hL!svrj48!Q6n|H$)`~p!VX~PQQB*pJWw+iypzef?pmDnj$Zsj33wq^K$*Ye%W7{llqCE5gglN~?m?EK2c_ zN}^j&ORN2Yam*{iiqg!hf|4}NE2A1$&8q{Vxlbx0s#;H~LbBXXDuJD^C$_$Rkl0qC zxxv^rfw5xP){!-X*tY&*o7ExwW~Om zm35ntxYo5R7+ThK8wflXwQB?(7j;{pQ26%C$m00lcN0aX{VFyf(_s?=Q^$SBTI-2MOu(9Sowcp`__wOr)*73%jhfdQR|VDe!_f8r4MJ+2{~H1ocNkYhqnsaFa$z^Fx;Cel+(#y6~^54>o12Wj^YX!jOs4<2auBx(;V^drlIh5fRN z!rL!#C8Pc`qdn%NJq5o$EW18Vw?1mUK8e3RqO(51w?5{z&Y(u10CabY32{vkM;puM z9o*yXiRT@dCbqI4CIfoH zP!@z5N>LU@+EbSlgj-mY6h^z_m=%PXYMK>BIddNuMA*0=7XrN@v5Z3v#IQ^v?Z{J% z!_7@oOrqT|TvOFt6PH{wIb7qLT+>}#lb>9(5uam#33=bUrZHug_{qOSP9>Isb#6;{ z?pk*4Xm##+cyEh)?*hDc)V%jxKDXsDGz?SGRW*z<;n`mzx?VzjUVvXKhUxgEMh3J8 z6=Zal61k(wDMAU=ya#29l4VMf_K}G_SVq=X%BEH-d4>zPJm}aSd-`}$@pkO=wF~}s z8)QETaw@(DG2cQyn*TR~z5i#hJt~)#sp-cM*S_gb{w);tD@o+f$ggA}snUWZG0l^L zWI?f1<0Mhl72{-Kxt9GTaov}Fwcmn4XsRNL188bOl7$JXVj2etYJ#GP%BrF&3(9K3 zvJLa9;yMrWOTUGqSQkZd#q~b!Il6xb zz_Ir$^uclTO5{hf5327)a`gOX;u}!@pBZnQeMtLmys29#BJT%nWB;Eq+NNHq@`}bm z&9jQ89-`#>Cc+UNbLwGK|lEoR$gBnK}Em-p78WDc+}E>FV~!L9MIyrylWa&&L6^EzhSu`L6fJAw5C= zpr7dE+JO>Z|1)UeeXG)^m9DM>z4UuRNL+1POKGrPQ?*!g4qw^K?1t67k4x_GSL-0} zKij-6YHGj0zjB{?ezo0895C@?vDl-ivD*T};OjK0mI#5wiBui9LRAF0KP*9?4SWr~sdtjSp{0T4Q z-%La<0f*vWK=db{h*n~TGxTR1+l(^HL<3UM|Mwj67nwvf41-iP!xb8Z4BMohX%Gj{ z4o#kBTuW7yX4;Bvnr70-b(jX|guu`=t|3d(G;Kjw)ih~fThs(}z_YI!*U>eunzrHp z_nF~wm14yk3eR!aKpf9$+>Ro{anu};;WX)nsqHvoqNeRM;l#1-IA-m#?lk3v$a_C* zM3v=wntIfEQ+efi1tsu0GUa_!zV&{I=<_1Em@nljCEM`bVA(1T2zw4Hc@9~&4>`2=i+i3d z6mR(o3V-7%*-Y01C6$UMQrG~S{-V-JmFf+q8^N+#jTg%efGs~^@#suWry~2y-a?us zoAp+Q?5}u9g43|T-yog4H6xda9Fo;~vUTZMXNg2rSU&{9FHUStrh`Oeix_40Fq0e{ zUrUZt$cu$#63|9U#|v}hN6gVtEzO+eQb?Sa_Z-u*Tnc*v6%3{!dPE(G6Z#=lbP$xC zChJ>aq|5j%(Q8c~n6(Tc)>b!HB+tsPrS_1^D-;LY%^MX^UoBr{WQPOOf^X<2G^bE6 z338&(@SLJ>G1~NyL|`#zW3J(YaKehilkI*w7}b*oImWU9Q@H z{y8Vi@mOB`sB?C11Y+2?xocPQqV?s5Y_Il21Gz-Ab6<~2UI7BP0IZh{z(BZ|KwHm@ z8s&2XZS!ZtSV>-*`8}JOt4!T@(BSn_`#7X6=~MmUeXr%t>aXOpZ1KkpHG8$u9Y4E| z$f2gSFpx3V;-ZJ5%i>?;26Atm+ifn z)6iI|+p+UvBZ}E1$Y8G5Nf=kuprF{qM0~!?APR2ZNujK0GYlZSRVfgz(OpqNY%yp(Ah#z#+ufiE!Zc87sEm|`4tbg9P6ns# z`@}qxYT=_=Ud9f7;U`e*m0EU?6?m4)B-NL}S2i^YB(AVW&UZN8Ha*+?eawbv{pWWH z833{zhut6S;w6&sNh5JPM2b@>a6$0?v6S6K7xejNM9IX+%p?E~xYkwQ0DmwtI@5Jt+WDxkwqWaEWd)x0FogC~beTqlKYS9g&AQ_Fjb zf$_gJ6uvN1)R#G%U7ugse*90~=}>on?_ke>@CVxQ8&LR(wb}Lf>8N|S|GgsPvgKbZ zRO`{;WY0^*6IbKY!N+iVNHU?%6be>q%7vG`feB!5d;V=CBx23WzNVIUED@In>LLLs zaCNdm@?Q}cF7AiNN98_JHCDJ<+{}GMO*_41RW38u+w1H8D`e9Lz1}Jp@AsbyhzQxb z6EjtHmb20Q%+fP9H96WpEc|3(uB&yhzq@^~3>~jH|E@R>jQxhO#HS~}Qq4XQCSRJ{ zD}CvqM1Vp0VI|3+dIt!jxwwSdv}LxvXG?D2+VZe(;a6R=PI?8K)|$Fb#09Pdaz~D} z!|c+E3MBeVCwf1R3a!bcdL$i1;;HxILq@}MvTdVIJD?mFqiTb>-m!Qhwg>h=Ssu?t z`(q0DIt(OJ|FbOGOIpzbm_Gt)t8UMl{1|7lYLQs73Gbk}CGXU3xdkdEbmL`+oe}A@8V5qV?BXA4AT*&`# z62T#>^Qs;!&G(hyxMbzP{7=5k`pNs^vWD5Fviiz0m)WPH*_Vx1)%m*X^3t-#@%o?t zq&C|Xzla+Ze^maft#SCfH@SBpe?@%1f-R(%O?-cgsrPw3R9x*%<^Rb;daV7vM6Q2Cyq;>R{`5TPkLdEctNU8MzrA{5eBHwk^MT3Nvk|<1x%g1+ ze7{R2toC_JVcq(Uojqk^EY%`E?dlBlMFZz8D5@AFH8*VA_&@G7UcFveKRWLdB}#_J z6Eg$W4pdiKZkpHg-A(lO#}96QM#_w5Xe@L6Qr0&%JnT<}T^eJXe(7XnWM-LJ|BrQY z*&X&S;0=D;@p#x_McAU!|CUp8AlD>>WkJ0t_lpfnMFr4nPZ%Klr!h{4+`BWOhsN(F znC3qJb4NPto@e#Cx5(G?Ly3`_%4M|tWoxQQZ~Je77qb5r7!R7P{+6wVk!2{d`aZe< zA;#%d6V&vY-q>W{Z+<&xo(uYW!Fm>7xtu12{$E z3L_#T(3%%uf-vUQ-@MH~()^onBtp`rlhQcHC5shVDAesePCc5VfoG^9X5>OTPu! zdx~d81eKlcbEE#+E-deX2Ud=hpP_(fe2WdLL_iuL%V=_DLOYswhz0t~69=^mp(pa<#1GGPe*1 zT6QJ;t=F?s@tI4bqo&V0EWu%Qgk~qS%dxE2kE)WY-gRZqP%1;k2~ZqQ2XZo33(u#q-(g11KIryw<&<9B!%jFxRvA zobSrocCX~_IEmrw%6C3ieRA`#|AOQQpNcFLE(Se5vJsyyp&ciagL1K&`$k)lFmiP? zl~l4Udph4S7i%nVivc@$jxXd+00|+#%6sP=EpJ|&1UZS+12gGvAFP(g1~`rJ-t6OvLNk4pqs$p|nqvWuOuVi4wv2h@W2>245BSYm&EMelwZwvLv_cY(7%e6zQ0i)lD*ZGuZ`3N%}YNsvpO;a4mWePvRUu)N#LrsM>^si7Xk z;TKcf;GBcSWG`Hna^0Aw@nt6wrezvHTy#u$R46;- z=W^aJ`!c5=_v`Cy3mv;8wO~Ac3{?H_aTyWzdY2Uqw-S|ddZcOW&c>azG8p5Q#j)S#($;OBa#){G5YQ;CB@J( zKIrZZp3XY9bcCStR6rF+?$KU90>r%T&ultS%%lMVw>nIB~)toY04L{_a^yJ6f z`oC#d9+}}LhACFha5ickJL6}_6D7lA_V05If64Qys_S>21Ygc)QY_j*bV{`DI(3S_ zKA9d*hFmth&1@C5wAex}h5+@3iY|`Us|4gX@ZjFI1mx7{Npr+QP|#r-r&jm@xFJrn z9&jTS%Y{%!Pjof*JjFIoAC;tg@WP|OjT7#V4A{1v+XewvVF#P0cUNoyIyHgK*1lWv zM`nhWjFka<3HbnJ%76WMXU5~9G&U+Stp&=DbIWvHIB`|CV>sH$8^u#bPm^pD9D!kE z7%BOJ5ozhv0y;xu%vUeop@gJzR#^>nOR0Rx z!I*ItG)hH2#|DuB_YeZ`TOt5ARlJ+&Os;`$Fc=$7{qeL>cPJNzx?zx09A?c;Im$v2 z-&M%i4sMNL#AVRwLn)0}8JnuQP4M1bJsxTB1Sj7Vli5t}kT0?W?Z1AQvkAtH&9p`j zw|AF0Z;zBR(GLSR1cX49Oxpi+n=2YZu3^b)7TZap-*7Q?HN}&Rd}o}POQiShQdyL# zAC{|G#ZRtQxLC#~|3g;$%cx*FC0CyM6lGzx=`gGg&SVzm7dr;Ln<(wHK^VlLx>>$|dpPA3vN<;xt4%kIwet1VjquT6=? z@r(A$twkrj@$HCl{fWU=hea;E(N-?m;Vos)HOrEK;{d-#p6RMxsN~{S<#S#}M|yB} z1g2DhnM%Iq`aV%cd7tGK0_PS7f;xflGEbF+6fRPwWQ501IKxPg03vyh@8$Z|xn+wR zK{XaUu@BF>wj_+tzMICf;*YNDD~)s5xlP=k_^DXXFV^a&SUdkU40*W(%qzO=0&1)I?-1rKvlVqm#@}J z3#Mo+$fPx+PS`n*<9}YTcN__+YiM2kBT=UCwd|~m!*N#l@{21-S9?qub~97!67?DB z{!{Ija8<(5)D$bs>ft#~IMFH4p%M@lTE;r4be@gTEvJt1Q~#J`av8t$9=IE3+x3U7`3$<8>sb8BXwe>m6%nytQ{<(* zRBI}Csor8U^gg5-l4I(kEECI*37VBul8a8b)QU4{)XjN>d)%JnQ#EGdwUf1vWvv}} zokpfw3oCKyM(j&<#zV{vHosR-Q+dUgDy&b$>LX9^9ZauBg=^ZTiq*ae+vMkCGRa8WLE9wQDInb%Q1q7kJ(2_Sr1iY@ z{`~M#de}P=0J^!Yr}%$U;($FqJ%+XUzsZ}yA~X`9Qb1&kdpul>jrHDh;)~s1Aiwo{ z?WQzqbw~S$65EOJqO21jom>IKPlQ|*M(+HvQC+TW`AGqP+R*{!7xgj*Iy#hI8K?VZP z`s(Q4^koW!A1+OyYa*{tjiGD(k%YV=V|pJ9sEYTO11C3Z-Ujvd-?4DeuP+e9Z+sLH zgcWG7T(I1t2qYwi24t`ga>c=yUM<#_&kF+>@zWRC89s(a4weE&fA9$DeeI^uvFV=w zs613Jb1<`5u#ZzD?^n3KXA+@|Nd>Kp21rF8JrxLuD`lm{#iIYr8(#OyZ?iii3R$2ejQ0xvb6ow3V&| z6w-|_ckmI778QbhGY$?Y;A%$+RzVy9pMYy&z%JoNTJ50f42%lxxii+$;0&qLgEX9- zV%U=O1U&>VmJzhOWDAoUf?(p>5nY|`gl>+)aGA!~QWih1{ z%+L^zsU(;4upMnUIIhSQ0LS!eK7ba~Aspx34(-O%eoZJ^rKA9H(4x#Zp+ks6zzL$w z!AbRI&rb^Njo=}U9Li4)mereW|IKcuG%eDXQ+-7xVp8w>$>gL)BXV)V4j59d?j~dW zGfqEf)Fcp+Ek9xU2(KH*z-h;4EJ1)wk4H*8~wqglvv(XNgvC5D(Po=UnK)9Z6$k+ zz*0z*OK70+cfM>KR40tJBjdj^qjSPIb!7Z^W&|a0%)SgTWBr<8WuPbVS%eR$t_OsV zr6hbT9}+&6b;8GTitw@gh48VQCVVXaMEF?F5I&X-1xxAVK2ntSW(Zo+R&#GjVuOcw zR^cNXAJK*RSOGNQlD5idPVyc8N)MCKKk4;487+A{diZ!IDH>JJpAAx!PcwS1^m(S> zd0P2%CAvP|`J8CjRLjMBQTrnJZ(~KyCC`j1V|_ts-;$ zEpnfy7KvIN8qh=``LcNx$4%Lk5%>qh2O84t%o#?tLJTh`DhqFrTcJ*$)GZknE)Hq? zFm6bIrI^lKJnaUJ>^v+q@{u4Y5okQ&#uF*sCJ6!Ug-Pgc}MM?U-ug86!}ax>7?MI7<;8 zLr&*&Dq}vvVd-Yjc|avBK|{`U&)-zZV4?0($nP2H=KpJo8B;{)mL%P(PRxrHbn9%Y zL@d}nR{l)8Mca~HUgX?q3SJQf)$FqG2)@G04SYdY`RhycZ|FFqQpT6Geyebv#5-ou zBf4QTmQjzb_lgG^|JQR}WHk^(VHEDdWeH3fMOJ{jy9T%5uEE_G6WbvFt=IJIt3J2t z#brnwNfd&hTNo7_7)umf0LBFeCTMzuNg6Ok1Ey)fOrjVBL5DOeIj>Zr==}F>Z{Wz+=D4wTdUkHu01P-LKlUI@5P;*qj?_E_~y{=2DxRqEoL} z*^Z2n9oI(k8=Vsdw?=|HBf-7e=IFc!R+c{+$)Akm&)OLVFGhk_Bf*>6mgu~9R+fJl z$v=(cU)mW4-$sHTBf)Q?Q0sr<<|^t6WhJFu`uC)d!Bl%ZSC!6{){kcXzpRsgGerad z004LaWANU=a3UyTBO_y9t6gCDI7XVAZG4TKZ00961005)HYuf+- diff --git a/site/public/meowscript.js b/site/public/meowscript.js deleted file mode 100644 index 00f5b98..0000000 --- a/site/public/meowscript.js +++ /dev/null @@ -1,19 +0,0 @@ - -var MeowScript = (() => { - var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; - if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; - return ( -function(moduleArg = {}) { - -var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject}));var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",((err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)}))};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow};Module["inspect"]=()=>"[Emscripten Module object]"}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!="object"){abort("no native wasm support detected")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(text)}}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="meowscript.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then((response=>{if(!response["ok"]){throw"failed to load wasm binary file at '"+binaryFile+"'"}return response["arrayBuffer"]()})).catch((()=>getBinarySync(binaryFile)))}else if(readAsync){return new Promise(((resolve,reject)=>{readAsync(binaryFile,(response=>resolve(new Uint8Array(response))),reject)}))}}return Promise.resolve().then((()=>getBinarySync(binaryFile)))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then((binary=>WebAssembly.instantiate(binary,imports))).then((instance=>instance)).then(receiver,(reason=>{err("failed to asynchronously prepare wasm: "+reason);abort(reason)}))}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then((response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,(function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)}))}))}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["M"];updateMemoryViews();wasmTable=Module["asm"]["S"];addOnInit(Module["asm"]["N"]);removeRunDependency("wasm-instantiate");return exports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var exceptionCaught=[];var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(info.excPtr);return info.get_exception_ptr()}var exceptionLast=0;function ___cxa_end_catch(){_setThrew(0);var info=exceptionCaught.pop();___cxa_decrement_exception_refcount(info.excPtr);exceptionLast=0}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}function ___resumeException(ptr){if(!exceptionLast){exceptionLast=ptr}throw exceptionLast}function ___cxa_find_matching_catch(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var i=0;ipath.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter((p=>!!p)),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:function(){var paths=Array.prototype.slice.call(arguments);return PATH.normalize(paths.join("/"))},join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter((p=>!!p)),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,-1)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.fsync(stream.tty)},fsync:function(stream){stream.tty.ops.fsync(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets:function(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(tty,optional_actions,data){return 0},ioctl_tiocgwinsz:function(tty){return[24,80]}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,(arrayBuffer=>{assert(arrayBuffer,`Loading data file "${url}" failed (no arrayBuffer).`);onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)}),(event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}}));if(dep)addRunDependency(dep)};var preloadPlugins=Module["preloadPlugins"]||[];function FS_handledByPreloadPlugin(byteArray,fullname,finish,onerror){if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach((function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}}));return handled}function FS_createPreloadedFile(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,(()=>{if(onerror)onerror();removeRunDependency(dep)}))){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,(byteArray=>processData(byteArray)),onerror)}else{processData(url)}}function FS_modeStringToFlags(str){var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags}function FS_getMode(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(path,opts={})=>{path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter((p=>!!p));var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:node=>{var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName:(parentid,name)=>{var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:node=>{var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:node=>{var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:(parent,name)=>{var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:(parent,name,mode,rdev)=>{var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:node=>{FS.hashRemoveNode(node)},isRoot:node=>node===node.parent,isMountpoint:node=>!!node.mounted,isFile:mode=>(mode&61440)===32768,isDir:mode=>(mode&61440)===16384,isLink:mode=>(mode&61440)===40960,isChrdev:mode=>(mode&61440)===8192,isBlkdev:mode=>(mode&61440)===24576,isFIFO:mode=>(mode&61440)===4096,isSocket:mode=>(mode&49152)===49152,flagsToPermissionString:flag=>{var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:(node,perms)=>{if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:dir=>{var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:(dir,name)=>{try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:(dir,name,isdir)=>{var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:(node,flags)=>{if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:()=>{for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked:fd=>{var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream:(stream,fd=-1)=>{if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get(){return this.node},set(val){this.node=val}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(val){this.shared.flags=val}},position:{get(){return this.shared.position},set(val){this.shared.position=val}}})}stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:fd=>{FS.streams[fd]=null},chrdev_stream_ops:{open:stream=>{var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:()=>{throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice:(dev,ops)=>{FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts:mount=>{var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:(populate,callback)=>{if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))},mount:(type,opts,mountpoint)=>{var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:mountpoint=>{var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:(parent,name)=>parent.node_ops.lookup(parent,name),mknod:(path,mode,dev)=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:(path,mode)=>{mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:(path,mode)=>{mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:(path,mode)=>{var dirs=path.split("/");var d="";for(var i=0;i{if(typeof dev=="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:(oldpath,newpath)=>{if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:(old_path,new_path)=>{var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir:path=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:path=>{var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink:path=>{var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:(path,dontFollow)=>{var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:path=>FS.stat(path,true),chmod:(path,mode,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:(path,mode)=>{FS.chmod(path,mode,true)},fchmod:(fd,mode)=>{var stream=FS.getStreamChecked(fd);FS.chmod(stream.node,mode)},chown:(path,uid,gid,dontFollow)=>{var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:(path,uid,gid)=>{FS.chown(path,uid,gid,true)},fchown:(fd,uid,gid)=>{var stream=FS.getStreamChecked(fd);FS.chown(stream.node,uid,gid)},truncate:(path,len)=>{if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path=="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:(fd,len)=>{var stream=FS.getStreamChecked(fd);if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:(path,atime,mtime)=>{var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:(path,flags,mode)=>{if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags=="string"?FS_modeStringToFlags(flags):flags;mode=typeof mode=="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path=="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close:stream=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:stream=>stream.fd===null,llseek:(stream,offset,whence)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:(stream,buffer,offset,length,position)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:(stream,buffer,offset,length,position,canOwn)=>{if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate:(stream,offset,length)=>{if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:(stream,length,position,prot,flags)=>{if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync:(stream,buffer,offset,length,mmapFlags)=>{if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:stream=>0,ioctl:(stream,cmd,arg)=>{if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:(path,opts={})=>{opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:(path,data,opts={})=>{opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.currentPath,chdir:path=>{var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:()=>{FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:()=>{FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:()=>{var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:(parent,name)=>{var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:()=>{if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:()=>{if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.name="ErrnoError";this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach((code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""}))},staticInit:()=>{FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:(input,output,error)=>{FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:()=>{FS.init.initialized=false;for(var i=0;i{var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath:(path,dontResolveLastLink)=>{try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:(parent,path,canRead,canWrite)=>{parent=typeof parent=="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:(parent,name,properties,canRead,canWrite)=>{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:(parent,name,data,canRead,canWrite,canOwn)=>{var path=name;if(parent){parent=typeof parent=="string"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data=="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i{var path=PATH.join2(typeof parent=="string"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:stream=>{stream.seekable=false},close:stream=>{if(output&&output.buffer&&output.buffer.length){output(10)}},read:(stream,buffer,offset,length,pos)=>{var bytesRead=0;for(var i=0;i{for(var i=0;i{if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:(parent,name,url,canRead,canWrite)=>{function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter((chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((key=>{var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}}));function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt:function(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size{abort("")};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var _emscripten_memcpy_big=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i>0]=str.charCodeAt(i)}HEAP8[buffer>>0]=0};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((function(string,i){var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1}));return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach((function(string){bufSize+=string.length+1}));HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function convertI32PairToI53Checked(lo,hi){return hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _getentropy=(buffer,size)=>{randomFill(HEAPU8.subarray(buffer,buffer+size));return 0};function _llvm_eh_typeid_for(type){return type}var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){if(Module["onExit"])Module["onExit"](code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();var wasmImports={s:___cxa_begin_catch,K:___cxa_end_catch,b:___cxa_find_matching_catch_2,m:___cxa_find_matching_catch_3,n:___cxa_find_matching_catch_4,J:___cxa_throw,d:___resumeException,E:___syscall_fstat64,A:___syscall_getcwd,B:___syscall_lstat64,C:___syscall_newfstatat,z:___syscall_openat,D:___syscall_stat64,o:_abort,r:_emscripten_get_now,F:_emscripten_memcpy_big,x:_emscripten_resize_heap,H:_environ_get,I:_environ_sizes_get,G:_fd_close,y:_fd_read,u:_fd_seek,q:_fd_write,t:_getentropy,l:invoke_i,i:invoke_ii,h:invoke_iii,k:invoke_iiii,L:invoke_iiiiii,w:invoke_jii,j:invoke_v,a:invoke_vi,c:invoke_vii,e:invoke_viii,f:invoke_viiii,g:invoke_viiiii,v:invoke_vji,p:_llvm_eh_typeid_for};var asm=createWasm();var ___wasm_call_ctors=function(){return(___wasm_call_ctors=Module["asm"]["N"]).apply(null,arguments)};var _interpret=Module["_interpret"]=function(){return(_interpret=Module["_interpret"]=Module["asm"]["O"]).apply(null,arguments)};var _alloc=Module["_alloc"]=function(){return(_alloc=Module["_alloc"]=Module["asm"]["P"]).apply(null,arguments)};var _dealloc=Module["_dealloc"]=function(){return(_dealloc=Module["_dealloc"]=Module["asm"]["Q"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["R"]).apply(null,arguments)};var ___errno_location=function(){return(___errno_location=Module["asm"]["__errno_location"]).apply(null,arguments)};var _malloc=function(){return(_malloc=Module["asm"]["malloc"]).apply(null,arguments)};var _htonl=function(){return(_htonl=Module["asm"]["htonl"]).apply(null,arguments)};var _htons=function(){return(_htons=Module["asm"]["htons"]).apply(null,arguments)};var _ntohs=function(){return(_ntohs=Module["asm"]["ntohs"]).apply(null,arguments)};var _setThrew=function(){return(_setThrew=Module["asm"]["T"]).apply(null,arguments)};var setTempRet0=function(){return(setTempRet0=Module["asm"]["U"]).apply(null,arguments)};var stackSave=function(){return(stackSave=Module["asm"]["V"]).apply(null,arguments)};var stackRestore=function(){return(stackRestore=Module["asm"]["W"]).apply(null,arguments)};var stackAlloc=function(){return(stackAlloc=Module["asm"]["X"]).apply(null,arguments)};var ___cxa_free_exception=function(){return(___cxa_free_exception=Module["asm"]["__cxa_free_exception"]).apply(null,arguments)};var ___cxa_increment_exception_refcount=function(){return(___cxa_increment_exception_refcount=Module["asm"]["Y"]).apply(null,arguments)};var ___cxa_decrement_exception_refcount=function(){return(___cxa_decrement_exception_refcount=Module["asm"]["Z"]).apply(null,arguments)};var ___cxa_can_catch=function(){return(___cxa_can_catch=Module["asm"]["_"]).apply(null,arguments)};var ___cxa_is_pointer_type=function(){return(___cxa_is_pointer_type=Module["asm"]["$"]).apply(null,arguments)};var dynCall_vji=Module["dynCall_vji"]=function(){return(dynCall_vji=Module["dynCall_vji"]=Module["asm"]["aa"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["ba"]).apply(null,arguments)};function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_i(index){var sp=stackSave();try{return getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4,a5)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_jii(index,a1,a2){var sp=stackSave();try{return dynCall_jii(index,a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vji(index,a1,a2,a3){var sp=stackSave();try{dynCall_vji(index,a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}Module["UTF8ToString"]=UTF8ToString;Module["intArrayFromString"]=intArrayFromString;Module["writeArrayToMemory"]=writeArrayToMemory;Module["FS"]=FS;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args=[]){var entryFunction=_main;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv>>2;args.forEach((arg=>{HEAP32[argv_ptr++]=stringToUTF8OnStack(arg)}));HEAP32[argv_ptr]=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); - - - return moduleArg.ready -} - -); -})(); -if (typeof exports === 'object' && typeof module === 'object') - module.exports = MeowScript; -else if (typeof define === 'function' && define['amd']) - define([], () => MeowScript); diff --git a/site/public/meowscript.wasm b/site/public/meowscript.wasm deleted file mode 100644 index 385f8f0d7255d5bc4fd3ad262f36d1609c7c6f60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347558 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�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 $*5aj){)=1 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 diff --git a/site/public/image.png b/site/public/og.png similarity index 100% rename from site/public/image.png rename to site/public/og.png diff --git a/site/public/wasm/meowscript.js b/site/public/wasm/meowscript.js new file mode 100644 index 0000000..9bdcacc --- /dev/null +++ b/site/public/wasm/meowscript.js @@ -0,0 +1,331 @@ +/** + * @returns {string[]} + */ +export function keywords() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.keywords(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + var v1 = getArrayJsValueFromWasm0(r0, r1); + wasm.__wbindgen_export2(r0, r1 * 4, 4); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} + +/** + * Calls `on_output` once per printed line. Rejects with the rendered error text on failure. + * @param {string} source + * @param {Function} on_output + */ +export function run(source, on_output) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(source, wasm.__wbindgen_export3, wasm.__wbindgen_export4); + const len0 = WASM_VECTOR_LEN; + wasm.run(retptr, ptr0, len0, addBorrowedObject(on_output)); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + heap[stack_pointer++] = undefined; + } +} + +/** + * @returns {string} + */ +export function version() { + let deferred1_0; + let deferred1_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.version(retptr); + var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true); + var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true); + deferred1_0 = r0; + deferred1_1 = r1; + return getStringFromWasm0(r0, r1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_export2(deferred1_0, deferred1_1, 1); + } +} +function __wbg_get_imports() { + const import0 = { + __proto__: null, + __wbg___wbindgen_throw_41e9ee4f547fc59a: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }, + __wbg_call_187d372bd5fdd4aa: function() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); }, + __wbg_now_aa4ccb83129e9e55: function() { + const ret = Date.now(); + return ret; + }, + __wbg_random_5a4cafd2f02395ff: function() { + const ret = Math.random(); + return ret; + }, + __wbindgen_generic_0000000000000001: function(arg0, arg1) { + // Cast intrinsic for `Ref(String) -> Externref`. + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }, + __wbindgen_object_clone_ref: function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }, + __wbindgen_object_drop_ref: function(arg0) { + takeObject(arg0); + }, + }; + return { + __proto__: null, + "./meowscript_bg.js": import0, + }; +} + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function addBorrowedObject(obj) { + if (stack_pointer == 1) throw new Error('out of js stack'); + heap[--stack_pointer] = obj; + return stack_pointer; +} + +function dropObject(idx) { + if (idx < 1028) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function getArrayJsValueFromWasm0(ptr, len) { + ptr = ptr >>> 0; + const mem = getDataViewMemory0(); + const result = []; + for (let i = ptr; i < ptr + 4 * len; i += 4) { + result.push(takeObject(mem.getUint32(i, true))); + } + return result; +} + +let cachedDataViewMemory0 = null; +function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; +} + +function getStringFromWasm0(ptr, len) { + return decodeText(ptr >>> 0, len); +} + +let cachedUint8ArrayMemory0 = null; +function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; +} + +function getObject(idx) { return heap[idx]; } + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_export(addHeapObject(e)); + } +} + +let heap = new Array(1024).fill(undefined); +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = cachedTextEncoder.encodeInto(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +let stack_pointer = 1024; + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); +cachedTextDecoder.decode(); +const MAX_SAFARI_DECODE_BYTES = 2146435072; +let numBytesDecoded = 0; +function decodeText(ptr, len) { + numBytesDecoded += len; + if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) { + cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + cachedTextDecoder.decode(); + numBytesDecoded = len; + } + return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len)); +} + +const cachedTextEncoder = new TextEncoder(); + +if (!('encodeInto' in cachedTextEncoder)) { + cachedTextEncoder.encodeInto = function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; + }; +} + +let WASM_VECTOR_LEN = 0; + +let wasmModule, wasmInstance, wasm; +function __wbg_finalize_init(instance, module) { + wasmInstance = instance; + wasm = instance.exports; + wasmModule = module; + cachedDataViewMemory0 = null; + cachedUint8ArrayMemory0 = null; + return wasm; +} + +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (!module.ok) { + throw new Error(`failed to fetch Wasm: ${module.status} ${module.statusText} fetching '${module.url}'`); + } + + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + const validResponse = expectedResponseType(module.type); + + if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { throw e; } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } else { + return instance; + } + } + + function expectedResponseType(type) { + switch (type) { + case 'basic': case 'cors': case 'default': return true; + } + return false; + } +} + +function initSync(module) { + if (wasm !== undefined) return wasm; + + + if (module !== undefined) { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } + + const imports = __wbg_get_imports(); + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + const instance = new WebAssembly.Instance(module, imports); + return __wbg_finalize_init(instance, module); +} + +async function __wbg_init(module_or_path) { + if (wasm !== undefined) return wasm; + + + if (module_or_path !== undefined) { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (module_or_path === undefined) { + module_or_path = new URL('meowscript_bg.wasm', import.meta.url); + } + const imports = __wbg_get_imports(); + + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module); +} + +export { initSync, __wbg_init as default }; diff --git a/site/public/wasm/meowscript_bg.wasm b/site/public/wasm/meowscript_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..01951458524987613499b0300e788b30129d7636 GIT binary patch literal 304426 zcmd443z%KkRp)sg_f>W8t-2+ZtddH$&plR>Qes6)a3tCBWa?<*hvGOkbQ?8pKSI2rNJj3J4Hjno4j$&;mrGGy)X508fvg)wG&c z4@z3Z^ZT#8&$*{cC0S0OKUDTT`@HsEd%gGCYwr`>``AarAPBM--L1+!AU@fR% zO?co9aC@ZU9-uiOh|WayC2w8#(FY#+*kku?|Hz{|wtn!#Z=HB-<<_kq``||&zW>7y zJiPUh4^BLA-;S;KZ-3;`t=k{?P*7Rq`O%A?zwe<(9)7@HXk6-r4{yEi-iIFA`nF9Q z@Bg-qZ~x%^@A%OD_up{uy+O3d3kK1Lw?6#H$F|;k?+y3e_rXoy_O`d*_`r=1yyG3g zz#`9IEr>q6b^E;!-~Y%*x4wf{?)}jHZ~xHxw}0D>@A%M%7JcPS?v+wkc09P9_HK9^ z%{*|!hu(3+#t+^1jvMa{;zioKuJjsMdtm!V?%TS4{=c^cVf?4jsVInpAntGU_xA_2 zAgI^%e@v+zaL!q557e%Tt3fr0szI&Z7g8GJ{~)Ne_=&?oJ*$6l5LIe1kH+D0>JOrz zkH;vC#PJH<4uX|IUo5r{s`U!Lb*|Ne(e|oZT(>%^b=4dOjYdPad8aRk<3>=8t6@+H z!b%wSg^i#RHh8>R(Nl2{hLsBM*J}olYIpxCVI{aah?`-R2lTI24{H5XRjb6cYW=bLmR72LQM1zQ@JJX}+JMM0t_dJI6h%>` z*$A7u8Qae?p00y zZ2z7pXiPrvJs*2y`~8mv|1pfW|MQ1~3t|272ev=(+Ze_{jDhTOWj* z9(rJV94_0s^&<~Iw&UK1?|WeDjt91X^dk@7yW@fT<7lYF1rI#&DDMPEqiahS@4f&2 ztveps%B%NHZhiETk37uV!5>6RN{_hr-X45$k*nVpe0GtmHv~T(^}P^XZA{b}@*{_OXnW6{3o-$s8F{d_bN z{dV|Q;eUv}9KFolJ<*Zyc=RXHZ$`7gKk@&Br=qV$XTo2D$^J?I*MDp9RP^-!5fAUI zJrzEAU638BOs4VbAR52y-_Fb4&EIuTUG!`cjYUvsa-c74M{#9fuv!b6Nt}&Orqv`& zqHJWM)0f0!(Rfd5R_;i%?sm)DEJqx#`^-=1enX%~RgmRdLt-6|@iYI*g>wWuEu>+uAE$@yU z1kk`0JxWi;qHYnyg!GbuPKl^^n}AO{o+vRszVeSX?;WVDCOFQ=pog= zA$pKQbwhN2G@ewl%3YQ5q&gM^*`5 zFWkbFup70)CI{UJJHHgA(Jk#I+-nC(lvI<-h5kTvQDf&peiChn&gsbcS&ms_qT8U} zI$Sdj>Q)DOsj@SP)&j@6TdP^nyeW8>E^dfcbKw01YCT zH_@#FRVAjINqr*igVO}iTWq zkXJZ>e4v0q=_9PrP$#Qk;A}Y2)w6UpM?*i4^k=-+;PClhpXyM99lI5EAgiQ}%D7;2 zNCI$>FBWP5XWD27%_i+9{igb?E>QJqMUK1T_W%ld7UpvOs{kPk(48DgLa#ImA>@hI3$ zsGR4TDMU>wqiG#BHIArp4sUU7B8`#;Rc;ZXjg0hL6r^w5F@{QN{-B3II`7cj_3%gV zzIK>Id8r9gcK~BGjfg|;FcA_kj$`fBdd3}qq}>P+9PRv536R8b1~^JME88SQWAVFY_1gd=uc{LQ?^s;ff6=H z+#6>z(S& zM@_Q>Sm3c}8sjMAIV{9EQq@H&ZtX%bNq{9jGNLG^WxgNMOSuuvYsZxA63=ixtaFXl7HbqPS`jK7$5TG8OjHIc`xM|^1i4{1UJ3lQL%N2VYvNIIa!8VA8raI25AVtQ*}CLAf6>)o~_t z;=4~o=6rA14O?%N;}m8`Ar(K42q1I`?R@6tsSejf_#|=`e5!9(cOMrPXx|T%^0!27ly{bclN7l<8 zS+hdcYTxN&!0?iFVomgNxG_2$Mmu4I1e?7&$PO?Vl|BlAx$~cpy}ewp9~}C0`R4FR zI3SzhBImRkX6q-MmBZlj8mtT1B`czNHur@oJ-9I%;pAj~(#bYu4QW@1CH`?*Y4g*# zSsi0AT=%H85fzI-u8D>>M#Cz>{TrfHj=|P*7}*$)aafLDM(v4NU?dmY+{iX{{ur~G z;=z@`g6jPnqEj?^OM9sV>V_`7sB1TXZSd>|6&{V#pxa>v6M=@q)gDAGRJnFMm`rP2 zMB$+1D^7zuU;FL4xPcC14mJRI&D_299OY}T;&=mEH5*3Q%;7`*-+))KxolILe zUG=1O*C>7o*SBTyUG0EIy?+lLWM??YBctsGZ@emkp>--_!N`VSol0whAtA_0ec(to zjV=surFBz)@e-Jf+`MC*RM*7G#-NW2l*Tp&Ln@60>ox=v>}mQ}}6CuKCY|)H$z@&7_4aqHlq7OVZia zZ5hlVBeSH#pj4nItvlPXIf3%WI^P#+EVNqaZL4mWJW1OOPbjyyv>E)l(Mc=8Y2N}M znA#Zl-Cu&S8;FQbIcwtjg4WK>OWwIq-3+sJw_%deXmp#70SA8NMNnY0926}FMQaOw zyoUm|Xa(>;kI;>9@ovcLU(gLYxv(1oS=h|>6u2C4{4y|aAXY=a!;Bmn8X63`X9i^h zkPZb0RtI1ihoO;5B{X1s0FVQLGsj^SZ*v%t^R2=#Hpu*enmIvch9g=1wT`bs8_syw zTL9*68uzK65JYb7;U~r_0;s{kj8dPv8OVJ1WjiV1JUhJ+u8B8wmnW!2=S6Okb{GdV zt~ei44hmJBmgYp`%!S+lrTSCdEy1A>IRYlyCNS zKFl`B%v1Ym6tc`_yoOq({z5cF%A*1I2|J)w8Qch;5-e=)Vc^HP*A-r$bH?WN7$h52 zm<7B*y}9Rb4u3269L`YAJ%?8)&(MfENtB1elzchqOS4O3(JPUQ%AA%D3`l1pWRv4r zNFa=!i)5eH1{We3_qD;_MN+iu!f!-iI9Jh(^VB1AfaB~Gh*UovN40k#GmC zrc1aja3p#YrGq8gJoWT5yQcTd%uelmHXSLQeY*t|aOnKA_zfnYmwg9?pDJ zzW0SJemr~dA%>sX@TAoI5TZ1qQaX?f7)Lle3rDnz!Gza2H9CyaOqakm1NB-^4GHfN z*FyPE%4RQbHFVOl>T(97DIp&ZwqJ3$OWkhQT2|BIFSo0us!>IV-^CU6shz%C2oegQ zchI@z=uA!q1vSnY?jcrIA~9%zmnnP{MJ2N5e`BiCc>$r#DoGn1Ub%BL?PMbl!E^2G zD?jy>H#6Enhu9#lVd1Ba#v=`Qj;7>pFe;$-y5zUR0p4$M=(`D{S5KD6Cf1W7*~EG> zV7!ybVrOgF6M>~ z{kar3SbQtzbRBut@dL`r_yKOHhDPI@A8G}iAR0>i(nRYMCOy#>rEbne4M)?(`Q(;% zT~xlfnfz@VU=b7vBZY?Q7$Dv%9X<42^ki2g)xO2_tG7zwQ(;-1=TlW zs!t_Gyr$+45KJ)0;HiVs*}QKm7B)n^5@<+KV0+N9;r4FbIT4t*hTJ9IbPirba6t-z zZs{OSB}O>0CI~hLavCGRu@m&KhGRAosooUq@eNMN<3gD!Bxtc*7{nS)Eo2!@4%9T0 z6@}{1nz+$jp7Rpqf`1xO5LWpY!zNY5eUJZuc}B}O@BQOFpZ)n?JGyH&`1W=z(YMeyQc}g)^{+)kS=kl6ROnvRJr0*>pD~s8bt(W{Z!4B%SmNYsa zaBX_G8RMb29f2;$i%I8UN7t~~THh42YCZ(%c!MkwG?KL;u4Ag0fs>R4GlJa1GxQ6c7z*H6|;$YeJIkZ-^(|ly)wfqNn*Cz)maaa%PO&-~qg-HZ5 z7>8|oPB{2R{Osnj=XM!7F4UjhJYrYD%HXq`8_(_1jmET4#RbYED)XGKk5T4zN}Hy4 z?b=0^e|hr9Klitv-}?)H5qx{)DZD@N9we6a+aa!bd^^QgUyZkAUpvjj0PcI`#m$^Q z+g-kyE7ej3&1CueN1N?1yYR|X2ZNG5|F=X776Cn7c}d{Y(JKc(U9~G+vH8r&Pkj0( ze)rTb|Ht6{N%`zMZ*A9BCaaRsWTm@shCRp|h{ZoR zPo6#g{h#}xW2e6G-xlyBuyM7=15D}F$ z5pmx#Ds_(ZW~VN2Lj#|tWfm{u*~C$NU4CP9ZqY8bR^M#lYH{ss4}27K;usgxEc#T!W3 zqHi$h?Y%KlegocK^o{GwZ>%oA0Z|uyV^jH!_2oCx-~wI=U4U{<;Z-;4%I3my%vBtfoeL(i=}$rk zN7=u%il*=`;8m)`)cXkXSR{63-1USD3(7<0fk%x$87id=vzcPhXuFXrN?+}U@G~e6 z(tb`u=VUM^6?R;-wx!{Z=5W(K<67Pf(ok=TLmq;Scn%wk@DN|s*h}NJK<;ypK=w89 z2R23(;_d=QD+G~Qx*I%=4bt9@zyoVGa$&1`SImZ8#j)TP@x`W#~JJunFsZZ z%!B2!v5GgwbLQ~i!Spf@ZkG$QEv*%q2k%WNhh!e$Xv4s?-caj-I%kbv2e=)z!KD^W za%g}E4xle$awm)BiZ0$J^)Y3Km8Z=r?I4s~xIUo_9Ew5Mdk(--71bshf}xn)QJ@k} zfkERb3lT8pRb<8we;cjqE>%%o74;r;#W{N&mfH}$7XTQI-OhpP-%Tsj`2k72wJsvz z_Y%9M|0*>UkfnqgB(B-&;uL|1GH?vPKF!7u01^|eS7MOp zXN&+#z4K^yg&rJ6%2vFv4OU*UdBybRSA%Ca=i!X-sqUyA>2wvWY|%z7X=*Hyu1rP= zN^IWw30^9m{`j+{*vGTn4!*+%z0JghFG%M|s@p7x(RM+Mq%K+M*YHfC2YL=%&ntkz zI~w4vaMhTCS(&Wd96mR%4O(FEP$Py*z5r&VN;fRpnH^SO;3pK#Yg@2K&Nu zgLZETIOWm2b`i-}-!$vbFyt#C$Y%WAXTyy|1K*%YdppUTU|eLH9yVZ(0%Vz{DVd7X z(s8jSsNBWb8umkqPg985mq~k}h`4o}shEjOWus4VOhPx=_zq^h+)ygnMf?*+yuQmQ z62*mLjLnL~Otp>3GqJjynpX7o-#?)bQHtEn ziZZ4dJ63_-a7K#Qp;eg24t>SojB3wE07sPs8r3~|4CY!ZBv4EOnaLzXL$^$^nYEoyYdq})a(L+V0WbH6^kzDDCEF*AgmX|o`c1N-PSS#zM*~%wU*ck za}yHrdE#I5#!iO?H|To>dC3(9l*OmktiOZsF`!{bBNkC zbxxFX;nX=)7b;@8Rx?pFo-Bb1RrE`(8{q~RtwC+nF*!LK%Qu#nM!uurE^sAq=W`&z z9i$enrz=d>NGqe`=ETG3C7~=gZIrn=XqMWvI7LkLjA9RS&hYtwGr< zEyapT_d?-FekBca5W-NJPimBB%^EhF)KLG4lVYt0@W_IgS1wXneS$D#V#e6zJdMaB z_IkVHikf+nU(QwYs9U2={zLvEr_*o+tiZ6kW0?q<(p0$Q{C-|LP7TvS4dtUz%9O+u zxWD)>S^ffE@iwe1!PyEx$M`u|fwjTePd^Q&&FFD+$5?dSE`U5L6{ek6U`acM{Ph#r z)8Ah>1)mBPrG+)7i%|8hNWK-ic1~nrXoah)P^Fm@R1IeLe;5DHxcpR0BYGuFjW6cH zRB4}C^f)vl9uwTAz`-||S_|%I4`!;4>vxWt>qKyao98v}#?1)lRZbS^#dt$XeWM5l znY4k|nJemO9v3_mPX|(n(Dp?CJWNw5K`+dTq~5SV*f(aU8LY^wCm#2W__vELQousHDKs`nhtn( zl)2}ICUaaxHq=-2)>lMTz9R07S-6YBYKUSLAyPEmVG@OjeY0xd*QV_l@&ZG3N7_#m zDXTu7_TjsFvNHJJK`Kg4wSI^O86>QjzKWhx?x~HxUJ;WrgKc~X4Nv2`Sk4hahjGQd zDzZlv*a2DX)=)#h!?1+w6`Q!sXN@OPn+I>+(uPB9GQ8#}D1wuQ2Z-}&g$v0{0keL* zNkA(hk1=3kfFM=BD|IGvIN=PN7X>&Xc8UYkMLKdO6+x?J_lQ^$MjAei4t0+28alNx zhLs4p+Q6Wog!HwZaSk_A{q_({(J)DT3;H0v`rU#5_o3wK*&;?ncAg<6cl<%Scl_Z^a_BZ<3=I4kXt0T{WK*^-04gz(ks1#+ zKg)>Lva&3WbGz4jmZD(le;73=&jR~`UT0i;^@V!6;_kGLmmM(NBpmzdtApQZgDCGb z%Ve&2!THcMY>*?GjGROQnnuC690jHE!jzRArVmsT+JyLKt~<2!feG+@(pRUpasXAr zL&k{>SVKJn`4G}Hf^i>h%|#00IHv=BS-`5fjTJ8_pT!hR4?Y|7_28p5jVQSQlvQOA zm{4a#K}y;Ijw9>AJWXa4#*;b|MJqOI+Juu8n=9|HjLRyl*!<+P-IWU7TIjbTo>zD` z;DF}#B^Dm|5`5}QjHE|?`9?*B$SGm6G=9>bF@hP{9OY*)I}@q-*|@S3XiBPRWOL=o zbR=2%9q@Cq{BC(R1sDj?3i1)Q@mv|AQkxbbQ_T$IND%xub1Mwhy<`;9VAGLDW%{$z zaWfwTu0*d^?!SByg#f@4EM8yPc4KjnRB(7#`dlaS+K!2o z2=#tR$?|tG%H;^f_cD|ay_I3jWU+a@7Jq4_%go)CFClkVq(_Cw-EC3aL;5?#HpRW5 zj4_7XUC3(gt~t!Bx>uP~i!W>=$nFx3*bzoVMRVxuxnjwf6_<=Tm<)QeVV)&EEgBSrwV5)UKW>o$BWa9*u~4-j z4Cux!xk0mOSzAhSg;}ZqC8HrFUVu@`Tpdab9YaYO4S=e_q@f||p#i<|T8=f$wa~GK zu}q&8j`cD)ua3MC4}~F&tCBExtoKw{C1s9vD`|Vj+DhhFQ?fyccdQTOjx~1KY$)pM zV#k`)Tf)l+r1dNdx9nKg%(1SSoWkt6b7jTcvBsq4juVvcpcIo6IY1;)#scm9Af zYI64$U%))@IEXY9(C~g=h&D8t^QmtP4nbFlN9z1>_b$XC4Iz#qEqlW3bW%tbs>DFY z<||}e{9CNz!ag^7zscyZnpRlG*z@eoaZj)}xtC@|MXwJpZv62qk z%am(8N36l6C7mrwB#^mr09MEqd@Xv}RWpCw(W`SnqX;*6kjlzuFs$h2HEORB*FPqD z!xu+&gacpJbON0`NzXKr!6(ze_j0j)c{SNgOaKg|+N6k#UW_GnBk{55pe?*4H8O^u zxw$_^x5e2ZhWUzZrrzcPXR%nGIxq=;FlVvSye2dtof?y+psmG_gF__^C$o`Q z<_}V!6;hJ$lQhkjyVOh$t8=0AixwtgirBlu+@WN(gm)-e$ivlJ$dcxPUGB0UVDh*o zE_8$Et1j|v&*ztU-dzrfQ_B5-F7FJl;XvBf)f^hioEL@=b0by>QBYin0%#_xvRH&v z4bohY$R>=$&W9?bA`ddO^lJl9R&KDK&B_tc{J|gI5-ni~HZ$aBV^rAcLSN;2D=IC) zEUu0JeU{9XPH{UKORFsM;?Hau8tlJz-NrbqoZGO^0R!s@Q0}8xy+^@-8dL?b6UXjm7`d&l5 zV*C_jZ&R$vI2aG0B?nsFiwEN1t-)I@EW01Y)V{v8);G^U@}lM$30m{&7xBnabEHzz zTvg3kp!TBXN)3iGIs#b@zNMKxqshLa-TztLUK6b8LGh;6nC~{DRW=RCv5vifXNU+} zw+rk-7MFyWcbMtEOZ2-y^BV)^?Om^{?bS+wGb+OglZ1XKx8P02#!wmWRXl2RtUK-$ zW13Frbo;Y4%mJ*yN)y%z+e{o}Ys@;f-sbBxHRU;nz`1b_*6^;jg8BuAIFeOFGIQ`e z$y{h;9*3ksnuA_xCoTGFp#Ob0b8T>KubHb`OnX=}mt@36dXv-Ra{Rt3Sk-H0rQ(gf z-Y`4jlm*kBCT+%oMsincvyqSv4=OEU-ZoN)6elu+R=A4b0j>z8Z*!V2~pPm1; zsSatA?+nH`Im^i!%}OPloX$@)%{7;wXqM|_egYY@FOclV!Lx! z`;9z^J(amHSso~hYy*e9Am)jA2rK+NM=VJ6JQife%42Mbf?KBh%rU&EYnAM6x84*S z44rm8$xa4AF07}bG`^+X6${Q$x0d5daI+r(3k;sMUqzUGGDngS`%Hc!#D4wX6cd4A z_BZ*75c^m8i6ZENU6{xL0*3-nZUjLC!>Iv}W4KS}LITwZ}@r+jHLjhQ#WbCJN!W4384dG6DhK zAvH~Z_5U4A`H{y#(+UU8(qBgqhZ1p>@?7vla~DbRYPm?bXR!A0=4AQ>t*Yz&3GcHwhH)4LSNgA_2di+hVg4u-grlrHEBSUB z2Gi^&n@qz@Nv?#D-&MAvDJ7RR3dkly%=C+sEHZrU#u%-l3fW1ir!eMBVL0tz&R)s* zp&drm6#y~qfFX3u9la$!8Ywc)O$MYSWo0Kx+O$XUD8+hX(RUNjRDkl3U>J)Y)bu&wm>wwiI8g3SJ530~d)eTg+R(R;7V08XB-eJi#4~mK^GG?FlMU?y=D>8SFI;3blxBa1z zB!aUs&b3Yc??oI(R9wR=8<|M3;xt8Ov~_igB4U-m6U-3X-T{CnAWT7h@+B11iq5|@ zTF&5mD4byQd#R*{4)^pBiff}&1Wuuq^pDtpfX#Qwl@X(v9y+RyP*(ilxGxjkj7bx) z>xu)-sZ4XH?Wo?q#AZ|pK?Z4;GhAh2T>%h|1Vm!Tt_L(W=?fGHxJ7dnj!7HMY|Oa~ zT!nG7GxX5A2E>c=6V^#)r}7hG5ZQ_RM8W1``H2)#=%gqc^Og%hWw~@dBZ<1oNn20K zT30nSSiuptDQS4TozG4Ct!1p|qKvoUP`*H_(a}sJy%l*S!d}4-$v)@Gl1j+O@VtLA zlDH|yQ&-8q%BAhSj`wdj-XEVVq;TA^{=2^w))$$H3Wz`j`H%u5Gtre}T+cMEg^4*z z{4uwT2f%K2L_fm?EsR&|x z{suXFHX~i96WK0DN$xKmNv=xM9`a>rU`%=5p7|7GcwzH-MT~g_zO_o{;x60! zP))3)RT5}o<{mj7kI8c;FKL262&X4~9Cw8#tu0lQAf(vdc!Y^TcE#ZOGKF7b<$?0f z3>ps(p)phJYXH-=1vv=>8#`jNR1y1lFcqm1i$RvTk`{?r?L8jDDwMb^xGb0X2wxrx z`_{Ouq75|6+ISljH(OU1tc2pr`K8}BaqRa@)>GvKZG~^g^`_smb5f5>7pg}Y#@^`Q z%B(UK8%1%?(GrzztSPb1cY#gTfasu&C7CwS=%AWMt`FPTa7Zpb_a8#Bw6Hy59T+Az zTR`In1=(}OKmvRCLJE+6j6mDi^3q5_(1;^1vgAVnEr3Ogv6>?niD%%~`J*c5IXTxO zo^sqQn-Nd@GDyLK3RH)z!h2#)#rrnSDSDlzchGg8HaB8)ofOGxlj9(?nAJXGWoNa| z`RlX5V~!U?HR%RVa=vUd{>>0< zkSM5^y(cq5_#lcqGaS(8Hx$ zMiuTHivrD>u6BseF;5gYh8|`K! zn-7mQZq_lI77MNHtap9u#TLwmg5(0_aO@nLc>t7S3C=Nh{7?c6^PTfW4;iLF>P~?` z0Y#%ZSX4pQUb%&^f>ve6%HNu&Q^?0=_Z`c*5woZplA4QcQnub@Ysacg5jRZ`+Eks* zIbvUWju2w*3<;UfDjq-{S5bssY!;(X(ijK&vYOU%JbtpIs>o?GJ*8+8J3Vf3u?&U~ zqyjlp->*FK-i#fUV26}io=stV_eLyUb|f$K6zM-z@6WAr$XBL=(#HMOj^oi`TN20u zBYAlkkP02nGeT&@l(lm;tIo-*@ciC6zAg61f#F?>wwX&O<-Q-meS!f zXv$I(m7epgZrEh;x}PUu@0FsRjnNsEsq&nTymi6diw`-7070FbQ;_v?;axc$gp5FV zc7%K-!dQx&Aj}rgipQfx|5PQCme2A8*_*U^1e>47%IR<_FrS+&LR5>)(bz~Cq%x@% z6OSl{O;_@+dC2*@<|kiyyKx{eeY=*$kK2a{#`GjmisE@vG&L_z@hnA6Ia54M(I)26 z5)=dP!yjKijf%jW6yv}uM>u*%z@jkcrOKBq zbOaPI)+DMFx{}^x!0?d`X8D1F8P*oOp3&jaoY5VVF+32wa)q32DqJrM&f#khMdJia zEQ8ajTp)I|F_r3QV?{?BD>~X((P)#`Kz7>z+EP=B{jB%5RoWl`@+G*E)U3@I$$wK( zdogxgah9Tg_6Wrw+b!+U)g1H?F&^#8k+j$dq1J4%=vARVX+3&%5i^)uH7jfmDd=ua zrrBb8ntKL-?Zav285lZcksS-*oH~?ZbHs^=ySRY+Vn&Q|j$mzDVe)Qq^_r7>i>sT! z+T^KX>9rg=Bw;Z3t*$%#TG8RxiVnY4bojNR;TN1LWNkRjKIM=j6lm7t1iiJ8`=tcr zvqDF|bC60SU}~S|su+5Deu8Ac941L7-4>UbHD>tlPy%Lz5-?Msgn6`_mlTpS26^4g zG_SMY?>Y;$Wyg0(sO5#}2vDYwf$FT}3b0I31J`LUXQsrlKXc*b6|;stS}YS~T6^(b zDzNZMX)FNat*eGYy&0c+`HWnbF*Cut{#o4K8M|)_>|vQkygG;$RqC&GH8a(sJz?m7 zZ=o|Od3+C}-HPI?mJL^yE*Zq>Cf0FNfITekp7%*HyAx-PO0mjT__Hkf@|6 zP7;A!8s&PETJJKq+r-)N0c?Y8Jp#{Oet*)=g8fO^H_e>Cd~PSc2XNRGll5^43ixio z!C`)oL$Su{Ax?^2OLw$}mC?>tRCj63D1~@OR(}}R^21tIK$e2_#u-*(r_vdMY>_Doy3Th-zQE7v7^cU_=G{gcqS`fuP z3aXu$pIviXIe^8|D^_$BRg^Ueq!`e;w7L~fQbbe8J3Ge(;o+=~n9eg*=@4{c%{c)` zcfgfCi}a#cRPxIO`z$keSS~jqdS-&_o$nP*kCDx0V?4m7KSWhkV$lX(O$lcAhJ|MT5 zBbTJo9JwyP)FYQjt1yX=W;<3m>=KE!izW0HFTq=RRhF9xkL2jJVhO#^Yq$)0_vi?E zce9&@o}TgOMHvdcjRL)tJbK9j(`rmKUO$jX7+_@{#`lkjq%+t7;VjuR^q;J2otLKd zSVl4jM#o78|&v0h)orLkt>FGf!+&(r055yy3PFP1p#G+xI*2KbUG~7_AKM28biO zmMlIr4s2+weKOVc0A}rCWQFI*!fw=fPZ}ryrn}W0a&w4+#nLG6?X6~t-YpfDUzJt7 z9fZ^KcO$Q3ZXxk06pE6{PkL=}oTJ`3>a>Q%Mo5mAZUkbxPNQCd9IdjrEa&kPUV$9< z3gnnmAg!Fo>&BRn8Eu%8|H>6e@ru2TuuzdH5b7hOW(vfL(>(=p!Yh#DUV$9*3S`bU zQevU8$VQBK5PeK7}~5?iw%Lt{d)#tiOl zTn{eYu34f89!BX&QK5TScEG+FPJyBHS~7rgg;1u((d>pJR*~yA<|D2d+ocl)uw-8b zGz++whSo&y)?mb%e6M8GRH<<^79WmA5*Q)6FaUCoWwfUxZI}z>$#x_3bZ?M&yI=>D z`7#%c>(4%p1AE|#;P7#7hKudB`Dfd>%7)o0Nq3L!P~0EL{luo`O3V601Jo$h|(sUc5 zRQ-l14N;9zNpC}xhHZ#~!-pgD@uc%Ct@x!>L&?x$8=^4mXVVi1+g9zi_6_g9{73a} z|4-5_d;7tXB!ZJ=`@wb;46XY8V0#Nb5nR)8Hb-@-+st6WXP3O&&>Aa$m(5ywC#8j@ zc{_~F07(16YU4dl+6<6LF+qu8aIC(=E8lUi!d;y^==v9e(emSEn}Tq z&RnW)nhk+>;0k$T`JOD=!W)H$gQbnywdJf%oS5K!XgGluxG7M)kZ&sScHX80V`0tk zTv4&#-6dWdOsjJF1Xy&ZNM;cpm8D4#7ziVyhOr5aQ}v|(et~TdHYbf1vs|^b<%`@T zX0Nh;@eJuUC|4{Q34LgRO?jIB%|1&%*i58Zb{5HHwSf(j*6?{MRDpRUwr!Kb20=DO z0={CFosCh#0Yfz=;6NWs4K!*2i#N(0&LXF%2(wpyS&HGcsHmX`q4b+~7Oj|jGjPIT>3CT0kdC<72fePJ z^|~GhTv%qL>bK9L-f>+nz-eCqFO+wzyXBb#|K(8N~ZWc#g;4Xrl|2T!(;%J&%xAI5L-8meXZgKJRI{$J27RqvhUzG_-u)({hieQnJcFyiVg0B z66P{%7*!WnXM5-*lEM5%oq<~Jy1ZO>Ts^DJIl1{#-F%{>m_%(30C(5$)*F}OZjA;V zclU|A`$nlrLrursoWcs1=I%a?9xuh+@XgE8F>v*)jN$#@QO{5;7*#xK z+-j9eK+mJmayC6n88+=bL<#~Bu+6SlHyuY9)?)JoxPl<(>g5;woshgZ2Ec(J!i;Gdn@jI+n2pup{V#7Fczla|` zWX`*sda36F=F`R53`a!|_SP*F;GMggIrLnE^J-4#@2#ipf(ZNTPE=;%dc7SFryK@Ud5f{uP>qfnUZ>8M92iul66=zh} zaUMP&O2U{z1i9=QEaTEDew30WCWtWe?cBxJtcw=PLq#pPhRcbEPNq$bZX=C3^Yx}V zsq=UlGhG4@BseRyCQisQ03S;6fsh6}zktOrwy49RcM@L}u{SgHijQ9-(x-aTeWEAb z$4b&|BY4q6c{{V>G|I7=Swn?G#fAV z1khyBMVbC#9fuQMl8<{yKISEP4pEe9y#mLvQ`+So)26TE8nVJ{_uf)@a|B}8Kr|Y=K~Xh z&5aWFg*|UIhA%A1>t$r~$B!-o%TW&tGDsNG!*blia?HVU@*-Fyv)?o1K?lB+dobz$cD-duS z0v@M7UcgPfYrWm)exIR>i8l=ygvORG5(`%{nuq_j9?6EMUK&q_^JRcc0x#X?D4MG^ zM*cug24L}Ax=pBTWGa!=%%HVMSyO{JToO7P<$Y5qJLge$)}!oMwZVTigqgHXYwdIyFKoF~)(yLRx`E|uIbO7SE!R>P;YDqmswydnJ*FTW zUgQOTQ+PS-@p8!H<)FvQ?3J@puDp)$ip9U7*&)h`i)IJr<03l*{%jMi1M_imu!j@n zSbAPjie+vI$~dvz^NM!4qd}|ibBMCMi0mla>*#aUd?3kxuiB#T+N5Q@re$nQ3n$*d z3E`G?CA~Us<$thW#X=_smgs{?)f#K&`V0P}!((O?$ElU$k_Ia!&pEZG7`H zq|8(gB{qq>DcA(yEJY&J&(DwD7>{dxbN;;EAJ)3{;{CP7`;>SiUHb08|GSs3n9i?q z>E~46y7K#cV$8Qs={4W)Y*hsUfN|1$uq8N$4rC5DYJJGXH?r_C-MhZms`X;cyz}8@ zWAo0JUG=7U=U0uqv3Gu3`wa!uZ|HSV;9nqsXNPBhNsyK*xvjmrcxm+|UfN|Z&1>np z;-%{@@zN*kr8ktpON*D%-b)THL-K|A#pmp;)#bOk#arD=z4d+e)^*M7;8D^ael^T? z{}wSy`;NGgF=lt0<;$)j2CP$}rpnk(T;!b5m%^ks_~74hE$5wb*AC6w1o{b{Vm1%e z_MBpZe9we=1$KefS8X8sag_)yiBXweCB%1gixuo@knDdLd6fGL8F@z3(2l+WtD@EC z+Bed%9_%n2VtCxyZEdCmxEJv~0Gyx7e4f0I$mr5!X=!J>4|2soRMgW=3Fz2JmR^WE zKO|VmU5pk&&0Zik3kvsUm@L)8KZemRFlxb4;Y(j?&3;i^;#D({WLOxBp0LPhbu4<4 zp_u#1L47mE3=doz<28sgV=zWfpHChj@g>Gl^lc2S-nen~AMQXl&Ud^0QvqouPK05#h zSCf+Q(HL=^uHMrKgG}@7FWh6#%xA zyKCt|nl<{Snhf5f>V|tw+A@s=D*FLF!@}XbNt;{v=9_%4s$&Cb*UMY^lxbFDj`O+0 zd~JqA9@omPZ4Jb^yjz#aCM)n&VB$lnhdZG7n+N87sss;Ha;EQqK&5(B5Q4CIW}dPsV`j0b8e^)Nk)kL4YFk=D zZ5xLaJCZ7Jit%N3P|u^SXyAJ#e@~=QrY(V-T<$_dO)%H62az09lU6=StncjLKPU_* zKBhL+?*Oo5f4B!o%Ph-qO3X^sN$|i>>Vz(Y_$G7ObeJS52672w=YRu!zLUW$2f)b! zmzHI7ITeCXsWRb0Fc@`K(GzVa+F7GK^kF@ykE_vMnANF*s9HoYj6jvXik39s2-T_> zjU^nox{btIJsNht0B)=|u3^SWx*ln+kRWdsHjO%S`qXL<*=Ei0P0{dU(G;6#TKLD# zo|LO)x{*b4wsW{;U{^XnjJ_O;5~*(CrZ-PkkPsTNZNrV=1XMVMs=WGn=(ZU_Z#|^@ z&0c<1)`Jg$g{-YqJ{N`SU16W>pMBQxU|x#G!MDDb%%_hrEkQ^VXm*=D_BL?7y_*7X zz*%25jIx0z7PW!W9Sf}q@#~vKDY%@Z4^drADzw9Z#mq8@DVP*|qv#Y*15-wFjth6- zHQrjl>mZBA9j_bn*-rm@au^Yt=sd3ndhAO#HZc|~=HkJ8Z%!RXTrew-VUQfq4^2_R zR~DYs9KE<514Y;(JBH1Bq zNFRmt#q`=MNRXdiJH?pD4TPc-`S55BpDbE9YheQ;4M-OqwZnQgO4916**x?~IiJq3 zw-Ez|ZM`69FLG24f*$rk&_g~5de8+ykNl$vf*$rk&_g~5de8?!XRka6Ds*W_H*_`w ze0my6XXsD|@)&~tujP(b#;reckXC2EQvI~}EWJ6fT-nQYojdXXz%fIP%Tvu!y2fRE1FJtCs z;APDG1pM>Hrh)S~%V2mB)6|`p(F%r&e3=kF)rOaZ8(6N5;?NQrvt*j}$}fTlU4&&M zNJ#OC$aS41AGU?ElEtE4Zkm?;m|0*h-L3OsG;ZeE8Cn}asNoKBB80LXhRgFY)CsF^ ziH}tH21Hz>{4V`rCH%Thi3AD@Jh3s_r4S~?M>j?ne6Zj_7Pa`|J*;!_MLr_-iZ9-+ zd5CP5&j?w9l6II~pbPQkp&RLzb;T^KNaiP^YQ@tOSGnR@imP4mJVgf4dTk1eaD$3W ztfMxSg9&9U!GZ6o9szuXwdszh+!{pH=xNJ&#GZQ^mZ?n=_H1C7`4V4|eX6??s?GHC z8BpAd@k{+#Fkv z0#4tBUE;t#Fezp2tOwgB@!hN@n+Z8zwU#?a57Je+J$_qL|J;nAAvl`ks$({?ZSB z@pR>>%~L=2J2Qu)C#m~|H2h-sDg>Kx&--9XT)ob{?2|2nlotspSy6o0$j+#tq(1pY zp3?yIDn1{t7rA)VB*r`@Z?f|yUxO>D0!qdEFw?7;!w%7hMs@+&QgadmIkuedJf#u{NR5#mUS`nFJgpK7*E z9|HO^b}NH?hZ??OxPx7;^(Y->b8PviD9U~PNk?efT}_u$TF!oPZ1{Iq+Y;(P6=P_1 zkdGA#8|ML4aF8#cuOHK@gQj2Y8(agLw*nz(Jp1^l)<6v0p`R_2-L?qbPFBDnxlF0; znUGDD$8fsYtilM>r%9qd^?yJ$k*=>qegKQNb^Bql)?Mvzvvvk!9KhVD4bZX+$}HU0 z9n5bScp`DIwQxI=m!W99+Ja0 zNR^c!D90Q)EMtybw*qsLOou&KfdI%n?75ql#vtF5xC90-aR&@8dgt#SgP0z0C?q%} zng+@d$-r}hBz7svWT>(;84{-YF5Z1=_g1msPsq6agFl>At4kH4G9XE|rr>H0-@@r{PY{)M~>A78e?q!$^I} z@+;-Wt1pknzSqHxxUW}?#{X$jZMv9^m0pizFO@zAl>^z(t%_UA=~zmTPJt=sT_^|x z9YC^qhC`^k1a(*P42_+f=9DM+219e-Mcmq#^h?3?-!a*R;)}ZMOVy@#*_WDh;Ibnf zJ1-Z(-h{tjHH4-pqRfgGdx->2>yYra4Uh6J1ohN^=P`4=Oejc4j(_~rF-NNT6 zx^mrZRbhXUZb_CT=^`q3XranAh3iKVPVG9^y={nTdq9>HdKc~9PL>pmE+v5T;`_o$ z;kwh`o+F6s4)5##+-VnS`WGRM<9pgoEa@^`j5KYLrVVKjwgGD|JK<%boC?3G_1X^lKr(O%_wo{Va4#3VGv8;z zs7|IWIp|BwXIdgv>vdt?UNIW5K%9TScu}HIaxb9}o8mbi-CRqt%1j6a7{UeQZ{~jZ zyb%n(0#D5IE}bvF2$o*U5nt3({MNn8qQgnsFeQe5y_kyc#`-k7Z4sYLR>#i@2jtE; z(+jLrmXAS_?#mH4S?Y#=OZ5sWezD;nBglowGY5Pz7IRL!vvrHm_fih{x9Xbrkmm;S zVuRO@Josm6jy3t?Io5K0&BVLydAiaZGUq0**`kR(O+O;D?;{jN+`&Z9&vQ^nD|Ah;`rkSmi|A`A% zXXlCw(`W37U3$fyxbUC3upxV;xNuk(HfAS^3l?I@&ioEjDb~mkP43rS+f-Zt94^iP z^qrvs$v7~Iq%$>veI>@|!jGo%OI2x1GFCbt%g z;39*o!arqk>3HdX%}TTNW-;1pd>bKP$Coz*N)ocB+t;;}`g0|3r2)Y`|5nlhP?k_I z!$jE0cPigHuFce`#j$N0W@he~5b--nwR$^Dv0o3fX*NT<%JxX7>Hu89{Ne)6_Auyj zyT$^e^ZMM@(*#$h9GWb zz?hboUuGh@J)$&|D{6CjK(dLo8Ml|&Mj?y0*K18w8V(p<`nQ(Y^8G7$%l3Kn{TsAx z9I|69nCE5VKgUwXd|8}!!tZ^XK?4{(8R`q^+I0%kMP0{2)_-w4YFTrdRO$|88Z!EC z(C2T`rRVsD1sg-yu9AMkz814R(iQHj>jAsxxLrrqz=(qiz9DKPqN|S#sgLS7V3W-B znGGTb_(*^nFRHPn@e8Wa1D$R|Yp<=Av#JHUo;J*twtTe5uAn+)s4Kk!G+J_t?d%u3 zNSV|bp&+pU`ri$aaNmH|a!s^?i8%q?>yuMr65&=lgCLTWDq2@%ph^~7*eX8P8|Tw) zCB87@pYOhB9D-J+MaLl;|MxTgVTHapBqj*vn55sB#J|T>;KUOyZE6Jk>4$#U@UO22h?5Z}TtZIjf)f|}ZOgO+R zt2mgz!JW48owBpk^jYK^Hd%u{hf`~C>QXsRIUMCL$eEQe!gXL!ghvyngKlvFY$;); zB~5@8vAeN~FQd%kf&N{86P6o8?+5 z^XlUw%>*0r$@m}+lrCYOG2|M3}nhVqm>Oty-fUM(7hMYn> z7l%_Z(F=$pT135~5{SxrMY7xcR;|!l?|2uHb;SPrpujIi4`CiB(D+#p>HKsg(M0m zG7IKr+Lz_AfO32M?h93tmTc>XjCli}{h>rAYwgdZ4gvRE<*d zJD@mY*3nC>C2}SN4$evKx1;QMDt8Jh^K|0PI$G_d2oB-R{zLfVI!B((*dX5KFF5o6 zl=}d)n9VjtJTH#R_nJoGYfwk!BL!zcKz%`ugFz{iQ8#uoh@C~!3%OTp`dIqG?&Clk z$3;piHB9EZ6s+R3NtaSW4LDuu#9)s!!E$Y3tj0~{nX%O}+aX<4iWP?-MHZC5NqGdC z7}rC5wpW8|h74P#x6!y%#GLCW{hAX)0G2QZj&Z9)5lOkYgY7r zfQl($JMM8MF#n({(fdc$-vi#Wz=P+D^8!&vk*pl7J-zWg)F(A<*fRmGUt=$ zVBQg*WQ-(;YlOb&DabWls4&{}j5HRlV%FYzZ&)f*s?1LgSuD9H&zZMN+{2*NJVn(0 zWw{8eG%Ex zh*odDE<$TxfmU+}=(;w56D=uf1GsybgloLGORk`~gq^Go;WQMKN0{3_ONzFEBRZV# z&-5Hsm;x?MLC|g?h?7oAKc-O;C1auSrg`_aHdS>$0qctC^to2Y<5OOVJc(0g{REev z#D^{n?kwpVN{0h>z9wR$Omzc!ms@Vdqc+O4BDqnp7~TlF!Fb6FtGeQprF||+WW}e; zj(lng@)>$RrAvGzY83}sLHdQ8X%wXCTU)Y}vNN8dKJR6l`hpOR zikOzy7>Qbt;Eb=Z7=n8&+LZK4qe?<3AW&NVh=i3~69dH$n+XWfmUkZ_$q0Yo%a1t# zB`m&(Ls^Cg6@#?rh6mRX!$VSC9?rl8bX&-y>)nW?r>s#PB{gX7Si_AS3QZ(cElnio zdt)vTHczY&GgHnmNKYyA5=sGH8#IkoMM1H`2gefV%Er*iSr*#nV)XBbctZ|T=07ZB z%ZChj4L%I$Vvr)Bz*o{yK$+_(Pp?@VPW4bjCs}l(L1EoGPa(j%?HS86E34 z1!QR(PwmkWCFW$$@7zsip5!t^7lm)=;gmce`^y+qiiIwa($V1}CMH2d0bP#gpcS8mH)4v4v_v&Z4-=UdLtXeO;6}b)@g8TD;hJ^+9)C_6Y|UAWS5)C$K@O0P6lGLGsvjuL#v;3Ye6PKOM>#b!0s zK^K+u32c(HH}@JZCYZHX!)IlN6LRHM9HUr$ar1g-mu zn!koz`A`D_yi3@mZ&NzL{1(FODg8sWT?z@!a97GcJABaezFZ&aeLhhb3YVV4b>ZbO zHB=uB3r2Sg(sLJ`GBjVU#M6XeWPMz(d>32Fc8*Nk#oeLC)%G27MgqpU+PtKUhr(mF zSj{|lu;(#*chHoux-BK_`4fIKJ_IwyhhS!&f4oo?gPTLb4G78p=%)=ge&HghnDMv~ zTK0Ri90&`RoktKo!oc|QzFFq0S*ZL z-5kKt7zdau;Q)qZLO`%&4E##Q*x^`it}`KW8w1XieZ};XKB)2C3XLfPc^^^7;@hAs z3>EYidBWUdxy@Q>{j7pdmuL$(dTsdx@Q4`_n}Lz@)3c(#cx}|#8EOKB)cv8=fp}4W zuzS}q)a^GN$L;P?-2e}aQX)eKscet4an)IE&^!n*jjXnVbXj|QHn135V~ftX(je%?X(Mf+&s$rxgp(vo zijxVOi?KVds|R4h*PA z3BR;F=v(er2~I)$2)wCL*^|a((i|m)`!SYC8m2tt%papylX^-Hh5?>eV~~ReR~LEC zt^;&Qb@f|aq%L96;DEZo;0zSg3x_o!ku2rg=_-~FuMG|#a$7S&XDcxr3zAk6OlFnG zg<$(GN);ryKDUYzaX|wv2ayTU3v2;v$F^gG8kiiGZ;GLsdJVs`C{f^3bOt>Wx?IB1aSW<2NyiGyW0Wnq|YYfeh z>Wuk7mk|ghawxTHxfDFxPzg}zL=w1Bgn8VgZ!&3*s$noB5?=c_v!l2*0sw-bfF%!B zGCcK9kUIiEc=_p79;y;R$)xxq2PhFh!)jfu(F4dO0bLFtdIdl_Gy}tRS}` zv{>sZE0H0{Sro4I^Wa)9xGc$KK3rq3iKxrLHFjCJ){|{{F}}u0NhxDY=fHNu z#W>q^3D^|of{0D!2$pfC>yC`V*`^+B?E+^_aK^oHa_3obVDWb`qDbE^cn^8-+y}=w zSzuJ4>>rfgz)V<=fD7m1?x%M0nUI&?u&z}*YS&9 z7ULp>8ggit17XNM5{&gCp#V=<^4gDB(QgV06Mz$T#Y2AexWboeNP32!rQ7GaOV_XFdTqm+=xw63tSc zE@5d1RJZzey1E)giP{fh{O@bpR1&_>BGHI|?040Tzn&_x)XlDy#-DT$rA! z(9eOgo*HIj`fk6OER;3dyr841NyqCbc1|!IB{RVPeW(V$3+wshHht`mG;Pm7^g$>6 z(o;QMP-YiXqh4K=^i;tnC{#Ac6z>TIi}8k$SL`!@`r;|UlNb~Nt7!sQz=3+|!BJLI z4i2ZKqN2oA)R-2;vGfT*p-J>RXjY#r?-=&%7-YZ@u>sz`#|pN%6<0Luv6DQ;cC zYv{pLR!4l;oyKx)#1xamjRFkby1y@N3MTiMhpC$6YKNR|35!=dOLDctCi@H3j#oB7 z>lKiL7Mr&KS`<+k+W8zMFmeM}K-=e_?K4UOt>-A7^^#;I!y)$^yz{k9#|BH6dCw~v zOOoV+MKaY)M%rpJ*Ie45XHq-<)8kCM+{#x|IOs_n0oHO#=|D17;?xd3-$rGqoi;nK z43oN=Fad^i;)WDTfKpHG49-_Oo#Gy9hq!XCc3M(9EpTOO2Ns&IcB)(ufruwj@@nTI zWJz}pIM)^E1E6;*#G?{;YmyTW3*c3-5=W zEv^9xoqEHCB*6Xw(fDL%3sH7@kTE{(JjhGFI{M7^Dh#1&JY989GuGvV@5KnxiOz#g zZURq%D4}E&K&AR?R?;;I8huJgplhLy$;@XE12jO5I}IfXL8%`sn~~<`;J$gmFxGwY zf-l_$(Ri}lee=Q`|5&!ziL}N6#EL7a)(xiGL%cQV{Vy&{c$xgx6)Xr$?u1uU!S%_c zVIHf!-$F!V$*j45RfkOc+HBruBiwV^}KXarx0w zIW96GSTSsZY*h}KfEqENYz3?vFDwP9crsb)+-Q=gc@I4&Bp6UuGN2mjK0ovwHt4cT z8@nkg>kkX8fH6H)z?fl#f;9DHXk8e*GtfRHLu&(ew}8j|;ygMaw^#c{G@&Wg@hvb7 zD9)aiu>2fv1cKY~Qn5;n! zCaAS<}3IU^7?j#>I@0)o6=+v@jU^p-(sHvUZ?i zJC7C>63S_qzSYh=pll)u*d!gLqsinDlyI4d3_q%k#)TZ!9_AGz*0%8$N4^0_sMLt7Z=21}Wv@eDL+&u)~>CAMQI11c6 zmDE4BjmVdvf|Isej5?7o0ZrXnb7x_|N2t4*XOEPPlA>(Z@rtsw3mzqeLdEgp7+S?3 zTuZdi+u#fy@R0I}07oRgY!ta`5Q0<+552NfkXA`G_EnT+B;pQI){y<;PT1N-aTgY) z=t~OX#eD|9R)j0o(2Wgvn*+8!SA{Z(?@(kciE)ww&`x5m1xgxg;f+{> z?4i#>4!T+(3R030lA2&3*&wRo5d|uGh+<}p9t%-0 zav=he1n}h~0R{lf9#$|)^RNO(2t-4ILx=hRGs@TyR@dw*Tqijf8Y0-ekOpZKZ4req zI)S7zieP93Plb<9@?tH!_O{U-Y-|*CgIKSFR_O!z7;@M+D8@hv5In-Wb&_}j9+p;d zyKhNU(LX#XH}2}kv&uGfS%+P;Ms;S0LVAqU^lg($Lh;N~ zWnGDYG*vvF>ng#<#$cch?!7}Fpo5KQP?}Aeql@ARX`8!us(CkGU%x{it1}*C+dH}v zrGWutGuG9DErL6FK^VPj8+}Hh2X=R?|F)|5Wq;yD@gAG zr3Vc2m0r|SdXZCl!dkBMBFIa0!01dXCB+BX09G0W=lf#C2Pc*kA6}Dz2i~0xkhGEd zY*-W$wR%BG9MW&#Qr*=Acf5J#7UG0HGWCXAJyFv4jjjC>w~-N~GSjs1>7x>SgxShCPtdAH?{_lP5LG$V^K zlm(n8j<_NqsZdfpVR8pMI%&&)>0_>cL!v62zT^~3s`&tu7Z%uDA_QK??e7F)?YLhL^m!QH?PkzA)T@@gNaO9HKv!hZzl$AH3 zGHeD)q(+bFjyss5Q5APEqZ0@x*~`BB5xw7w;phg)FOBL^u&-un6Pnkh*f2qqB0J&V zf-R*|=x?2G;qYE`r}PiL2?yS2F+ySLzfK%iYAXpf!^DBFes%dsf`Q>E z1~3K%lc$my4}@3`ZL>)Ipu6aW!AvilxpAFgs7JWY-ff^41C2juSgjktBrlTpBOiBg zLI#AdzxFH@A2!V|(ooL%WFJql zehYn7!VZqg;LY3LO9)@1EPNz8Tr7Mvv54?l-l@qW9A^?q1fl2hbU_Y|lQ^yrKD>oO z_}G+CER!P$wWtr|iq9lSa4%oV=%XjW6W2V>;ERe;bWNnm9aPmsHUocfYM=A7Hj;kI*?ulN^Se(aEH~RVsiY?CC3Q=z zxC;4(v4YG^b86)=1{Ri;y2Yzk*EPWR#86y>)mwQV3@rfZbs=0PUD&sf9JmTNCM8{% zlOrhU!oYbZc8LZYIY3@d7XlN!<`e)2rDo9|9YiA>Wrug!LEAjSsFO1!-9k(9nq(3l z@f?-wdFRHdj*@ppb5s?%ppULg{WxdLN)nf{Z)nyw_YDz0saMlc&L1)eL+8{)q;NrBobzLVk zIIp%C;S|v7taE$OdgkEuu;C2})^WkJdJ7kV_oe=&@A4B+V7;WW%d_iY7}war`l%CH zN1fFqC0!aC;N1wE4s6{e6n9Bx}rM=bu!~mbS&;1DBn4(6J60eFX`lvKhd$c zbEJIdWu54X-kB|*9Mg%e=+4pd$qAk4itZdQpPbT(uISFm^2sYY(G}g9E1#UviLU6* z>GH`ro#=}0oGqVR(21_-&MuMqyg$*gxU*Y#ruflgIu?&TuajwiN5|r^eLC6W@96md zllLyrl3izE=BZP4>(;$>A9eesR$m#PD%$4uShCxhwk2$V`*b8*vTUS)287465X2!~ zeVx#MKiDlth4VJd7Y_rY$@p!B~mn{$v6vVaDuYJ z49>DZ^L_u`=TzNC%My>3Su5(LdrqCR&wl*--~ayKyDj!He>{}mcx{V)+#l!j8?SA# z-MdxLjz?!dm~LHc;M=w?$ZWfH?L|W5?z#;PlH9`o{D~<1BbPQFFkyJD8xI&9531ql$FVM|O;~_Hy{cP`4+TN? zj>HyM6c|Yu>0-&Q$&b2BPBB<8(Ee42s!P5bp4jVOy4JK6nuGk51hRe_xrz8xKbqC_ z$tBg{zZ6<6^vxz|gQ2U;Yr*sHzP2Lw9)vR`bINVx?+)=@YKn5^EFjY!n#bk$t^0#* zNCoAn)vCu`sAut@+0^-Djeg9@_@`kkcaoisamal|x6y;g^)H6Z1!HwF*AkptW?f4b zY8`AE*OL9&Y}?cZL^U6bhbgot8QcPVd4w5gWdA!9pb3@kO6?vZK5Vju3t*2gTpBK4It_@*;>yAhk(yO1WqQdC^ZB zV5LU`I+|cXV*X+n+Q!>8PQKK(6lARtBORQSfHY$U>wsDKemgA{|40fVbpfcl_)odBzn6(1^%QHQ6ZHu$vA+f|q ztnFz6MLb;cNUiUMJR}B5OG)nw=n@_hNR2G$D6%}M9GKY2;`9H51eqA9Bkpe zyn;HR57n4qD~EF{JPlu5+?w)<0NSea$idB7_kevz zfV!_Y|Af|XAd}q@!io*7Lj@Fb5i16ZL~>0CuY@j>ix1ui*Zn~_B%mmAzR|G|4WUB< z=?!A^`~;=<0;o3hi41jO!*q5|0OhU)C@0hA6%ltCpmQxixeI{8epb*EsJlJUyFj2q zDD{Zz3DlO&J)&Yc0hRFVDNwU_07Ru-xpo~)fb?VTr>X!|b{rVIDA?iyunCYr9#;ZA z)6u4%90h`{)l*U)#4Z8a&>`dZ(LKp(Wf?i78uzRQOh@=ZY+8buKL#z>RHy_W+w3lQ zEW0^kl!ijWE5Z2dtQRnhyCe?KI5ecAb7w?v4Hdpdtw2YPTpWGS{Qzr116B_ysLUb`NA_jW2wja&6;B3ppSoB7UN;mv5}N586tk_0I_ zY&?0mTs>FjNQHToA?M;HobFg)(L8H`S_ z9eOuEIsvwj+K}F|QTe-CeBb(T(s%!hDEeyAX|?ZcKuy4Z&y(fBFi(DqMTANB2@ z0+r0}WLIxtA!E7M@DU$g3;?3eU{_lA@u90}n*_p&%D5YM0lmz#K-WMI*(R37G9QZb z%MF);`?$$STM2~N1QiB~s128bN9S$q86klLmjWuiumrM?RW`$=9L#huxRis?nf!Yo zm*Of4E@eL-!KExn-2&rWtHN#`xo4r_Qg+EaJ0*~15(_fGMgm!7ATJ<+EX-mt$hJHl zupAXXTM4AmLo^&~^eW*m<`x$T>^4X|1Ra_FJPmOd)1V;LAvd;&z-M6b^fQrpk#86H z)`R_8(SWqA&E`RSGoOcS-?S=9&wkz_^hH0m@NGqVEPv z$k|N`UmY+}bKrNbIZN2dw={gSGfa1}=kNl}l zGuhpBcUPZP_3?^dBvOP$P7H$Fi!VFz$hF<$lL5zm;;hl-c4>XGDswN_O~!rVglK4) z1p{O4&vZ1lY(P5hTT%w=X;@f#g)>`zr8fsk#ObSz_Ep85E;6*1syUus!P6HVnBjbXAY~?5dlK)%-g>90QFY4^ZwOf)xZrezx#1PZT|Z=>r}z zuE1mZUY-_s#DhKH;c@n8&}dJX%y?D08=06|8vne-4Lgcz)mMr86VeNZHDi`W#yhSmLrOSwo$@cy=}fwq%HE@WH+H zHYkDRmb(i^0#{cr7PM#0`n8;~UCoqDz%Y2Az@;aW$M zpvguEgoB$$YD29gVLbC5lEl9~G!wIZsIgel;T*9YMm1r9Mi6-bq<$(35jX?sL7*x$-@)mpNL|QVj@d=ZfC)^V{eZa|5*4;S zQMI^|Kf;F!o-x9ks0vOu6>h_L-$wwbf{AJf4{UMU;@PTR#oUn0#=S zi61ulZMmrn2}#Z8WdBTsOW`&zMB6bPOk+BjqiQ+qAXjKWvI>m0!oya``kbvWVhLl4 z{umWP6x1~z-d<%KAo9|x3?>k6mN1uwy+nw-2!w5O1|)wB7)NtJwr!3m3}q_kPc*ja zc3zwV)=ncw`Es(Gy(HiV0?O`;@(6_p=X!bImn73lGJs`QS?V6pcsPJ z0yJ`W-0sx$LkGZ77Fq~iD^tO11=EixKxbHFvFz;yXB~vMAH@f}Z&ux~#RbgftG)K|bSLgB;J^#$>MXm^Hj68G(OAFQ37+ zy*AdHwXx!6YfCH6eKp6UzR22Qu~{F>ZMMF&++J*bY;Btrg~b=rTu} z%kazgoF0A8RFnt;I_Zok!}#G?ke9xP3zFODgPrC>{QVT3P7-;^TL5OsXGnSTJqS?> zd4#KekdM@EmQ|6bN!}^7s*sT$B3Mj@Vy~NqY;|zY@^+NOs-O%yXIVlUQP>cV3KFi^ z3cOs#=1WXMXFw$9Meqn_r(K|=Np`tM3Ktsbw|LrxCMIbDE)v2IJ|RWXo)`-QL}l6v z+V#>;p_256b`nQq5M+O|+SkM%wsk{ti50I0vtow5mqmsQ%EBsRr2tUbCys*I2L}~9 zO@OGYwKpJwX%H$bKquXZKU1&(G&urvX(wn5o7@E&!zUZi^c&jc`SUZNQALwhleryx zfMHs|2l%%wPHG_w6*(!(oE_=%oX~ENYEDIj0U$Lj)Q9y~dWK0v3 zK%7mt9)X2?DX`c&EGIU>=z&{FAUg!YqqzUQ{hb9*$vqA}Hq3T;GX1N{`f%*wR}}ao zZ?1I9{v23|-#JJa(Jz~IX#t>IBkW}YH#{OQq;5`Cy1(wGS@ zB!sie-V*UR)5G4TsG%YN1LsWtBK9qZ#l)U&XL}k@BikOmrzM^FF^w4u2o{mA%;>ck zICuyUjEjVJSaDSCSNsZ}X-KeDc2Cz6ZHWjNgaRr^a_8*OOE49-1F59AoTNcrc2(-@ zdNMpyM|V$40*Wh&PW>hVS$XqvUv%s55ad04@v6D^M#-`%SyB?z=->X{D1SyN+q9BP zJg~}c6ztXeZpV54*@75Wf{xp7QkmZA;TQ-eH;IG?&0lI-*jza>*Xwlpojv|@nfB_> z7X*B0f)fq5I@g;3>qspD+ZsV(kJM;8{IS)$9vKH(C_0sSo(z|0fte79ML!@Iwnsnf zt#j{X2{HCNU}mF2K~@dkP$U|Dq4Qp$ZFGfEpo|=i9`rkZ>NkYY2*3D9-fba$J6}Ju z{o5#D>=^|tH=ip>#ev}+^_gj72AQUD)SYHUl-n?Fx+3b&f6j%Fb7VXA7xT>%9lyac z_!8Rre0-ByezEO*F}`V*`HSn@7yJeSgN9d}MZ4F`!cbrPP;5wpcv*j*)m>l7DkdW8 zm%RV*_i^yfmbk;#)vl@lUc0LJ6>E|A(v(!D z!c{nl!2JS@ARas|6<3}8<;{l66-3%7k4{{5>Jr%ZC=de70yq>i5nXs;Fa=<&w(0)I zFNgrcW?e;(Jj-O_d1DX+?njgE<;4Kv8B~EzLKPqx^+JO16@^GG2PIXIx&~D!r3&-! zjgpH^$wf+nzETCt2UWlUEvSN34x?Z>r3&3EiedXrs%#0WP(omf`nOr$(6jnqqJ=mj z$5hlm&F!UzZWZ-UbY!QB(f?@Jt(Y)8EwN*6;dr|eyHaAeV^~5}#KB4*#4ZmD87mE| z+YYNiF-iup+cm6i9+rDd;No;xd=tbjzHwM364TCM{WkfZZi^A+!5!bMl^OEb=n`X# zpPyi;{`@FIWm%R8)3MDudC;tw&xFwlO^Z!6zW|4J6N!uGF%sqS8nA}Nbz2X2lh{So zh;~m_ZrPz6bsVX0FA9FWK5Bo*M_WB}k2C26d4NHz1Xx0GiMvpK#+{+`$Wh>Lcl0a#p_Fmt zOi*A6(<6VjCXN}~K3SBlTolpZ2{+JPcj{PZ=GcJ@Mj77p###Wlp?${H)wc`X)b)hM z!jDt-hUEn}YHlxw^H4;`4WP#N#}lWB(#E7#f9hxRxl+nepJ;v*R6NfvffSVhM7-cd z;6jF$)AipsHE#=-e!c8~!1}qGq{$W45WUSIG5#W2+o8EjU^H=%=}@EX?G}UFXUop&&XR(yIk1$YqTn zZOZF2DiKH33NfCTGSrXJrU;A3iL*v<4k9*EHui3)aCBsJi}4~`L~lpr{t8G8LAR$$ zWSkVP#%DqzB-Go<4itn%mRGY9e!9{GvZDqH9QDGP&_)fi?CQ^fZ#7h%@HnvxB-`LJ zhb#1BAyhr(+9R?0?gdF4u@8^V7Q8<_JDi_AGrMp<^1)dIW#RT&xU$(S7`#Ol=eT=| zIaXLM2LKI13!{rX?c6FO2NkG9BfwPk*MPQrUIc_em93i5U8!q09!_|)8# zGCjF%1v0=T2Urri3CfTD=S1@)3VB5RW<)W~;|0WM)RmnnNln9?uu$npLpCAynLwf4 zqdVbs^ybMT69|V`|G^W?=kxqQ^WqSgT2L*`<>O9=#_tZ&@XYk8cK(eA`9$L)R5e)R zKbvO$^=vcl$cow&@xa}wZIH) zw#2N#>G~u0QS-q41zK|^()@69J8lh}RRMB9moN*H*ueMfU+5JQI=`rWNUEGLiweZg zi|tobet1&22aquX?#srfhpq7$*bgr`M{W++A91PHMQI=^@l z!1ft%4*OPhHw{md%ynarl)7MX1?whdaHY#ss2L{L)~O&G@N^p$+>72O*l=E7;wA}p zPoS-b{hCfgqHr0K@^$JHNIr=XxHb*xOv=Sk*3T60VKpYI+k5ZWJ?jCOOLIP@h3>9R z0nZD8@}6T$VxD19*@z-JJwKx1IL2zueLx}>n*$%+-?1BUbV|5JKhz;CD3R7*kG#^U zu9=!rJie&4S;8ND{ zhu}cxT+z@b_b5SZ1_Sg&jA}6YB=d+*ioj%@vLjOfIM=w>2S0T(KnMj#pH_5AW^|6w zlln_P!?J(*=tGEdHg#P(dXeUDN=L)7A74#LdVEzXah2!2MBh)Q2Pe^*XL|5X>jTl~&qjGXrF#c{8!G8I)HtPq&(b}; zOByv{DfOKe%pcddW?NT)if1orUCh-a5h?|H*LU zT!7vLCn%ArGx|{QiAOzyz^STmY7duezS$_R5)RxQD~~7GaF@px$p~55v8>Y$;^IuF z<;^xH!R?Ihi)J>)xwYU~X4^Veo=Cu=h07Dw$y*gzBCuu}N+=gdmB|COLjOlU7rY>% zf~1yok9;{rr*!8$4Pt2~R>WvA1U#N@OgJ_$;oVBPP{0go@DJjMas%oE9($lI`Y{sTR=-q&eOTs5`r;i7(^~>9knH*7@MLfs+x?)v^p3|)-Ti@k?|<<8g{{tA zxa83I<*Mpnxg;K4uphQ);q)V*A)Nt+|UKii2;y@np zZ#+_W@4!E*8k+g1yd9FK%|b2Bfm5A3s{^Tckh_D`!Bd_4w$(*VlvLl2LV_$|L%Iwl zAHs>ycU6O=)+@i4_!}}q(!B%Ly1k0j1B;^lAKnIYc9DXA-L9U-Y!rkJAe;zldjb|v z@_}fff=oSdx(h;cRZxnnpe|~AZ@f7#(L(d`friEGm6o1*&PV1{`qrSbnirV2qzY zv_S{#Wf&T7P<*Tw-oD&pn5xUciKchs;cd;7>O|x2y=|IOLZ$uHn%f|WrO3!i z7DiO!d(7KSeB5bfE%Mi}0zZPXs9voWL(DI(O7p-zFKF44vs7iMyOYv*>AjaO1b0>fk*J*!-R>26ci6sSE5f%k!}+ z5^=q$C9dBVgcyA@#MPr)68!`e^LR?1=97rL)Qp1pI0s*bScnx*axDc(`9&cZ-_{b0 zn;;mo94H$PJD}zhyq1&b7(2{Seu2Uj7u;+|R~E00yW)~7i>q*JVG6r69EY?7&P$=( z%DS?OeC10xvvQauqJmwzP<~B@W0|*GP0;UqYwrCyVfyW?^zr(TDFIRoyF!3tUH!QnuoJ$yQLR_}#p%Da04AU>G;yHXbs;Hn^R`A(I>nyv@TV14f z?qR)BPC#&J^ajV{%`YLP6Tq3ll7LaZs_U^gOWy_Px%}uyuPO3>J{dg5_OJ~AomO5Hu|o|+mi`MA}(Qfy)y z-mGs;Dfy_R54QxNU>!+L^vob!!brjnCX4#B=ia&=v^W3QI}fc>4ak(aS~ErKF{lrbCgCmAFm( zFl!L$StPSjdPo9rYPh1%zJ<}d#B2u{z$VA-cf5VMBy2gGv>N+;S)Yj{)et4@_aTWP z2(V5DqwnuPknDhm4tJ*(E~=O@=O?NG;Y0mWV~7tBWlOkTLKxBM5?1*e86IZUHx!q; zrs^=FAFfM<$x>D{sE_qzp675K!U#&JJHpQ(*J)+hx*oNmrmL_*=k9=75Q&{ZzKonAQ*1y&gEQe4O9-mjFGZV%v!= z#`Alnf617P_lCyg8)4`=(h#7Tc1C!<15?s8-5aVGCV}0rLIT;QADMLCuABxV4g3wc z0SnY`qhOey@AS)VZw@SB0~2?;;EqTW0V9jrOQQ2ry?@B(KznrwPGQe?yvj6x#$1p- zTV83vfo7-y%mudbhMh3N7CO)pTy|UZwD4NK*hCMgKrn_;p!!;SL86Ljqs% z1jao1il@2m<}0qFu&Sm9?hh^khD3!ca6uwT0J)85$~L3BNkE7Q~J~L zcUu^Ewb=Hroj}HN$C&wu_0}rEFrC~?myq*5VZ8(9rCXdLOrOoP9 zxY))ZLS=%rg13eI(U-Q4wDcut)`9#k6H1Fg8z3IeIDD`T3&m#&jjcbwRPImOs;9^S z8Yd8fUbvhhdgT8uP{Cu9OSdLRs!Q*hdHT(d$xYRFS2vPd7tmnN`pfmp--p4ErF{o{ zKHBW6kCLI|nSiy`Sjab&AX=XEzx%5rXUCVa_KD>&XAtZSod$tJ;k$Cfo;!F`ZW$4zs8~_Qv+Smk6-S$8jSmFw|#c;T(7p(qw1!tvY!+O={B9X1fDSOyf@Ok zIRnZVJI;Vghx=JW7zSY(-S5LiLvYb_YPOS`osUR{+;}s<@#+b!C6x5yaWHr(ok-pwB3EB1#_e4-1IE{4^;3(sc*V)6Gn67@c zE`zQJ?0F`>6e{_bujW&U9DNqyTjugpU`o0b|>suC!Xz z)r~}z#rk9GBPvo+JiZ$eY}2`eNWI6-g2SP@01qDn`S|(4zy8R06s}HafW&-)nF8V9 zvJZfKTn;m`2(nn^{EzQ1Pdon=zJl2ak?olDNrW3flVY}6W_QpNUA0lae`Bn1X?qd5bu~gYj7dSjkQ=A6+2etoF>7=D~lhd-aDNu*)=heW8VCSFB> zX@2&A0L-Q*)_}3hWi?V67>MfG45($4JtVN;nGnru#4wDpL5vC8Xsv*9hkUUM&8Y4v z&$S&swrw9dpsoR8zxO_}{^ItLdC{8PV%~jZey@GR63srcp7s%(%P(O&VXtsI2{S^V z?JB>PsAqJ;AuV2Puj{iQO8AEVRa_Qel~_)wW9nJbdPPJ3l(!@03A|Y zm#C2eqEFJVNDxPsDT5tQ85@$|71JIdxL;zc)MVyh^NxE`sT!mE)Z%HpfV z)E=RBJRlW>HHC8pt@fi;jUw$H1rkwm+a9%6S3FwUwMUVUF)v^j?j6-A?@`3wiv5pO z>&+gun)WD+7ZUJGD$de0R0IsB59r-NBNmKI(Sdf4TAkga4!B2waWi`qHhT9c6cNkr zQN!6iisZ7J4m9?Nc8`Kc#2zK(+iUAVD5J{Qqa?|E4}kXC%-nL*_7oINJA=E_{Pjfc zd5Qt^p1y|>auO!!JOL)Ww%dh6$h*4p7uyB13=Q48QX{~_H?zLTj8VB-r@r%pl{<{W-^*n`<{E|>jH=0*~2pG*EG3kbJHFN=! z-c8HM4=DR5{hOEsQ*`vtPUgN9vV%x;GbCuP6;7&m;OKdCC{>?F?5TQ>Y)%es{xto6 zPyP5KbEoTH8T}P>K~EK0R4-A{7wJ>!@cqwx0AKl2N?^VFP8Fjsc6g7>?xV&0JAU-z z$Ei*&2TI=`IZ)%@|GQ{FWmbL*8_t?_14e)#%q-6^!(!2 zhky6;-8hTwNW4i8aOXpeulqGQ2Tr@51@#{*O2ZYPGyDm z;$?pSSMhe9T;>{Et}bPgtEKy(7ISAO-ERfG4_8Oj;h@Mw*-@|ExIA}?<*IPdsTY|X zYp56h>Lj`mr4H9?uobdx^}UYtp8>5PNG!(FlS^40i+7>dUAq4f8$N8qeIAX$aoQlIK!KzL|PSl%PP( ztb!Dwq`_DRwsO8U63lC3~&UddGon_{$gZOXU$>Z_-DRMEzD1ri!!qQOyfV0(n z8iLTOURGV^5MqY$JwFTJqED262gC}BLshnRC!;_Y#*?KONq1PU@$bV+l<#+(+E#BS9Ko{@4Ip}cG|I(LUwS1~~=PgV^`Hm!kwy%n6{f!+p zQ6iB}QlQuzo=`Nw6x+lh{)bpNW4&9vyOa7Bwlz_v;{8(x?s^BfNe{rSTkbl0i;*Er zs)hjSZQByDXv-&Pt%@N8@hR0&tJ-5>!aLYwrIJ@sO0NA9jfv>3czcpS4z0EI)Bi-j zesrgx>42BhXG`(SXiT+e&;CDgl2y2e)nDKT`*G5hPtCdK_v5yDoX?76f{foA{)SMe zM;9zo)&KtcQ6=IGhWz6rkjDPu_E%RE(D_$Sn)pFU6l~hZ%yj+49wg@+& zlp7=5HCAlrwwV3SP=aqCE3b6~;PvHIk4i#rT7|6+KFtI(p*$QoN_3ohWmhmbT%ar} z&Pi{>1u;yKga5-5*?hH-yHzjRMMA@F*Z|)6-jle%EHrb}$)+y#?L=Y^`taqJw&y)K=l2d7;##K!GHhIyWe!vn_;{O);QH>zymH|DYhD6D~=?z z57C3s&f>UGVkTC)YMeXVNRYO;H16;32t3c( z;)f|yQ;c-CK9L||PYC1orF0!nNys;stJ8s@f?c{3sZewmVZc1PsNHj zA!8Xq#d|btZo6Fr3p?+&9>A2K0!*E-3#$9O@|Iy(q=Ex!-H+I5A||hSJ^&+ly);>5 z;B4y}9EpmU6W`~i2FDI>bysJP&h|zXg-AHrOFbJM(*bI;Mo0GIz5H4(Pkt>;8WPe-tX>L$;Cg|w5=}aU$~JyVrg;iKP(Ot| z{8&-w8`PX_4}elX)ckO-pmn*q?IVW* zb?b`^Jl|l2mhRV~*XsF4x4d-rSsosAZas(j(Js?(+Tw4Ojy9*>4K1;w;TZ z5hkU8-3gDw+2%T<|Ec4mU|HBmvRcxmV_n_AsFAx{+zg{Ho%G;3vIa`2cy}FA5I(UA zT!s#U7?{{8dt!{;3ExtT>iv3S`h0`M!1K!|UA|zvBE8I!{<-+6X>{wgxDVay>R+%8 zK(VP&#dWf40w^jx35OoaHha7qJlWn0#X-CY6m8%G^BUTLDX!b&s{+?ymvDhdfk4oL z*O%`ChSYH@y9v7-mInm?e6Z;tIWZxrgcB1$tuT<2F85UY|6i@+XH;Q?r++Sq`vFgg z%EaGpagXZ-io+USjI2D2CDT7h{_D$|Y?TJ7z$_)&rcvi;n~qLhlYTJ)PV)m+hUD81 z-!DQo*mL+nq{Zkj(hHK=8Jx{A*Ypgfo&06jtqz7LTtZ4_5H>VIEa(UtZAO4NK}5i?4R5sUc>zyq8GH=dY)icK>^KHlHU zdz`8P+hUksvIh!7V%&F(!49kDYm6smd{Ez%l1n&FV(0HbOf^V8Qd0ONd%i?@^k&sC zeYRAmyb^vE@3a>2<_s`&1H`F&qXimGUKcPvjZ z09T4Km>{8#5SN4#!r`(+Ymhz=S&%WK^cGHi@AlT&BlZO-gzpPa>Mu4iyAfk09=c=_ zlm2)gCjDfPhn-JT!R;TPq`CU{aS*sqH$zvt{sA=l{vaLfquigJG;{_37#~=YEwOnz zNCQ|3{UnwnsR|1{Jb7AbQn{0&s3R)A-AM`e3Q7b*ZQo84J>9mQ((Jn@g}Aa&z9+|N z;WMdfu_Yd&Nnf*mxV=*FstKFYwjvO^8T!&q)CCDV$wP_v-q!BUHiCq-P2^qW(P8%> zJ_Mznrg{;qUflY#zBRe5TL07bB3P>~JBtn`c@c2gI2}eHd@VsM?FMx*#!QB)tV6oT z$)x~_eVWa2!WlySYWcCrW!V6K2Sdpqi9{f=2}sI9dSoUHasm1!P(wRhR7zk*dCmkc-C zV*E0eT61p4LiI9D_hH8mlmE+D)sE3rxMAQNq!M;RGHDOs0mRn%Sm#*v4SH>?`aqrW zugzNZ*-Cgczsq7``mUtIp5Q2ADow2V>vus|ka4t_T;@-$`uh^k-CFfy$}yGfXZpE# zm`GUlSFqeSR{edm788y;BX50UF`@Tb^=-x6zXxuldyBIc6SCKBhE><>o2|v28Ia~~vPuG;I!53Y z&{*jg)nBw$dX7fus2pWHVWrnXtL7l4qZ%aXOe6@i3scQPSlMNz4-C}ovQLdcAYL-N zEGkq;vcl}LgxN1}9tWvW@EQqwXsv*{iC-`~JJ5#el9m3KSIXt&?e#2XmlFQJRPn|q z7e0f&>M8%MkA6UcfP>ymi6h57@>uz<$*SqP!&UMDZzf>#sfC@VjnC$6?=o8{Vv^6wN%Qqo~X*; zSubGey}a(hd6)Y3f$I2xD$a7@p!o7+_hbprXe=MYdi)>bhxf~>GmvB9OTxPs5m!1S zpTqy0!`(LpTZRO_DnR=1d$8}0z7otpQNPythQ*RPyGh1yZZb~T5EcjG9~92C*=J1r zLzSXfp>wW`m5CM}XnX=odYJwp)=hiSjYM#^-;MT>&uQ9q(M;0s5LQ$l9R1f!g9d4X z9petHz0Mxoq#iN4#HKIh67h9nZ!jNl;h6v=gCm#T+sUe3~ck{IVI-QB9jB4+89JYTdui3yUAXW97Yoq=22xMb!Ev;65B9_ZDRy4L9-N!0GxQsMU_4$N-nRtd6-*p*@e_rNE_(l7vtt z2Dg{u4@8Z^d}mC&jC~?d2SRoeppYG4 z){>o@ss$&M8r@@ICdOU2BzU);WGAuX$mUDl^<;NK+1cThLK5=xkmUrh#0&isqKh9U zs3R$OWS>-3+f%TPppa%Mc36r)%B2XoPHU0Xo7SRS)I_ff*CKz(c*9y`Dde^20*RH8 z)}lXg@#<<%aD9>1#c62P;>||EvqEb<44{AURuw;RZz-UG`3w}h72i#;F4=1)0^QFN z7vzZn7j`Z+9a?x|K&C^ADY%)Z-AIQdidVfE;f?R`rmFwxPXs~|2M0bDb@9dyTT9Zf zL6ppmLDd2&graU!A6PlXNOnYEEY>lP{BRT4hLOnID4FfKT688>mplnJJJJh`g)W<~ z0d?9REtbP`ox6fgV2yAY@;}p`^xU0rmP}qDY$|4;U695D-K?ZX6o|VxKn90Fwc}Qz zH3A>WARW-@x`@pmg*Zu!-i!|?uW>TeSCd&7qz#6oBC2t4rA!q#3e@oRNB${xs<0zc zXV@v=6eSsKXLx8OEj&zq8U@{i{zkgm*={By#89;hj9uzx^4c1p8UVS~b$WqJ(sso)Jndv+-|=tb-{SRhxqOehPhqY32S{XZ8925VtRS+% z>`z{F3_;=^k|#i7N%Gy>Sm8_#ZcPL(xpoDe2{wB5FA1i9&;c2GrlJPCIuo5@*{a%~ zLoM{$qPUOWb6%^_z24G!f2I2}-QNpOge=Euoy^CwP%9EkDmIs7Y3QhXn?ZI*UMt+ODmTp}3=w@C*H#sw<98*%K= zAhm=)36`oGmtmAjF>x;NFW8WTlUlbB&Ez6tVgng%t-=jeaN$5?m7KzL z+&}F!C)`}5)5{{OonGGAX}SnH`~MB=h_XOUUo(atYG_;-(Mh36A1uxCjJ+Wh}|Kg0Lk5@*Alg!g2*_CnHZ>Z|E6KbcTj#Fvfe) zNG;avYdYn46ln>!dqNpDP#KJ2=wC5ss2S>Tv`QO@_mPo-Ac3QhsALxjn<_|5K0UJ7 zvpZbm?XaGc|GUWB#ky}-e9NXcui$f$lJIt~EA2`+FrR2mjWS5TMVR|WQM|s;ZuqPG zIHpBWyWuZ3KPrCwO!Gs#;ZHR`v>Se+`JvtLCz>Bjz3cHBCJoN?WYv9D_ayFB#i>sk zesv+Hzwn%27GMfeV~0>4W$|sAQmZ2sHF;E?9dHgKPH>Ur0#rrhF?O;w=wbl>*v-Rp zWBXzJs)i)(N|m8w;V9)RiZz@D>BeEbyoi-UUB=}AI{@!E99UMN>WKpfzyZ6W?J%;k zTv=QhKO&n49yJZFHdh?vo%zCfpX=l2)m7c`oz5)&fnVQ!x3k#fAA|PEw_%fJkyZO& zU%uO!+xeC}9x7kLS3Zb*{zfy*9*@B`ypyn|d0l%$acfl6`h9!)b%qNR^(>c@ z+F85m=lKi&$lvGC)dOlMk*f<5a1Bd{pKlxU>s8&G!~@$2BWQyJV#^ZG4^F8?5Mmhd zm<&`$oDTs~bVQ0Qe91IK=2p~kyO1K7c#@BKRL2W{?euW4bl?eA+NQTi_OI!@6?O&$ zxn9}gisCvDEDHxopA8rLC{#HGOOmQBgb`d!t7L>&0*zWsmHlQ0+;UX6aA5`(xiA9@ zT$lm(p3faQh%NVd^BW&Pp`4vFq+tWmRu$tp0iSxUF?E%y8h%JG_j%G`cN$S`r}_z zWXGSTX1w^*)c@}He4tBBq7Bu`6~)#M>G1Y8@Jo&KM)^!6vb~PqUG1$|h*GM5cRc%C z^DOe0+#1iWo-KAuJUTJ^=qBnqdb<7(A4L4>Dr+i#1qzGaCc>3*07Z|tn;9v|@?KW8 zTN#pjvy;uj)DRJ7Gm|40Gs%?@*t{q%M>}+?u}$Apg2YN~w0BE#Sh+bJUL9Sl3$VMq zgFoHd>f$YkKhSHBcThA{>N*!joy=W#OvoS?ph?+h7^*sn`MtpYck;Sr`T3XM28&y3 z*iCJ6i`iMW*X;V(-2IX>XlK48?FKc@)vLEjaV!>vNVyY*>iOGDqJXP3e?t7Az`$SO zYSuJlhvXkqdtpIFbfO=u5LohB1M;BW;%Fju)zEKtd36MHn~n1llLak;3k)cLvg(mg zsGJVf(SmSnPbiR0!HA6SQ#K;Q>`UCtdo(p7$KeE8Rk9J;;@OBCYS=MeIbhYn~3^ zN_e`I^Cz^P9gcZwgPjWyC=ph3Nh=>ZTELmLwDXx3$u_Dc0bPQ-GW~=-5AI5&q#u)I zr2x!!&N>f>mI1F}@|%3aIOv|1R6>fU#39|K-4mH40`A=lJ4|Zqq1^($iS4k>-Ydz? zKhS8xZ9%$bcSgT@UFlb_I2S8O_!XPv#ok`KyeNiW{B?}c;X}=|=-^hZG!+3N;T{&r zloeMLCfFP)YUZPYI)#8(>0wI7II~TqH1svuGxX&05He*fB@L9nN*XAXB>O!nJOcZ4 z2EovlfpwE$qji%&$bqc5JG9%v3?)yNm>E(Y${Pfj&q;_Qcpm{Z?MH;^2M!d&^Z!Nn zYtQx02CYAinkbR_s`Hu2u{e<^qsDEMvi{1ieP%1XLd*Ko5B&SMb)GBU{OlM0R(|vR z^Phd5wAU<->ewlg=~AT&srE2Yj}Nk4Jq|qz@yJpnTkd*&FkkP_*R6bge|mi;UD!=5 z%m(5``pkum!V9~P7f7_1tJ39ox@@FNl`e(lxARK7l$uNU(5iF|!LUmwla^ZEKTTdeIpm9J0c z>xF!MB3~cR*GKd9e7-)EuMg(y{rS3;uV2pNcs5_Zn6J;|>(lxARK7l$uNS!1&vZ}2 zR6JEYH!SKeC--&)EO^lxlC@rSt|{_=-^Ed&@<(f7kEjpaQU4GDYG@@k>%)J=ozVsN z*7XT#@?5ioZQhRPV5Y?T|6c-;+@QxLQ*HRf9Bp3LJKNSx7z32)Q$umr1T|wFO?rMK zEr3=G@IGU|$Id-gbFjp@^=PrUa#SD#kV>%Kv1_+gj$gqNTI-SCiduS9xDW@!y`q}a zy}?GfK75`A;?6uZ{2af6SJVc-uCNNzPDj}4Bc!wP1bbTVZ=&fLQsxz`B|?*K4>u0& z>1(LiBj_<#Cg*pdRG6kv^$Le4!38|pbtar1>bP>BpFNjvo;e4p+h4yMBjT_=j8>-p zqtzQGht}J%<(pg8v;X9o>nE2qubzDqPd@Pe>n4W@ajc)8f9vGZ_4*GlK?yR?<;Ha? z+JuPy_k+#q(E8-E`q_8Kt7qTMp^P6|WoN7ZA&EmTStrD3zM>AketsSX@5FtdeR%xJ z1plvT;s0_*_j$|`6?+#^p$LYrLHnqa-MBuU?~YK0_`(U7C(6^~ucagCACFecYEi%j zH%Wps#Y6xlAejP`;rs?OW6I`$^DFX@&wS&* zIeArZa+k`(9EOC3O0TK$nR5?M8YJhw>Hrz4xXgXIDRXOgT84YdTwPx;?cCs8F z0OUgE&rO+^D1mAeo6TGs>H4}1C?N+Bu(YHA0B zJ<3NVrEv<5M;z{*tJa$j=Awon@o#<>h6F#QBhBYQ1Xf*rvjNqC6+XneZeYjL#E><9Mk;{>77 z(>$}Rw^w}BsjXi5(P|EysLLVRk7lll;yany6(~h7l!nT*P|&#>ur5^GyJ$*hpnFot zGM=jcUWNo*3n3^SS_Yf_hJ2dvV7ad3!83y`L0PRlxTV9Jg*pL6JS+z}`uEC;Y~U2FZ$`dDJufoU8^7gN>;6pQh(zD~GIq3X%pi&sA&Sa0W`j z5)Mq*_M2fXQuiN^3cq}o3V%&Qh4&!AoN=)i{guXK`m6I%NG{M{P)GX9e1@s0JjpsE z=Gg`PHYTowl$zD9nNF5ItG=wCIKyPrzW`BXf>bIs1)v{M0CG)%yWgJ*fLl$0s6ndB zI^~k6E_KY%ny5pXZIOm%kFA5>GlV7s_e}lWQjfGQ0;8lepsjVrQ+7}1l~I9iEqMw; z>e<`wNFYAPl%fRrR8#Aeu7XgQ0*2+;STt@bf+lvE<%VuP`zE0f+mz&$G9X~C>X~y% z{C(n#7Mgj$1}mT6-5Pq*9h*@5wg_snWA|#`K6}mD>y0u1XOrp<*CAuTZoRM4ufmyLKq+o5RQs)GJIpXUBx-Y-6D6S zh~<{-MhZ%>M&pJ)<#*B;dvEt1{4&fK+bsBnEVUAh3XdOZ9&@OuuNziKdH{8o3TIOi zP?ie1%XV*nRoD7*zhTpYYUIzwzw=0PiEsq-Ln`b|2Br;xdiCaDaKQLB@(gSn5MvKR zSgIibq?{SB@0|`Sl0T4pJI_pJh-1lsXUmZ7hD|b0B*vDYl@<;6+w3dY9Y{3a ze#76{n4M^D!qaeDC!7S`%Ggp9BkIP>@6KreFqF16V`@7d+h^K20t_>~MtDM=!vTSf zjS$2h0wq~zJ(s~46D~LaS79*l?l8kdqrg1j>T?IwzXKxQ^W-o5mE+&>g*QE%r{tD0dnGZLprcwTD zd~)XFZ`kwWZ-|fCo67pRPy7>Rfo0S71*3LT-SKm0e{)~-8JLrgQqQMFgY}EO;lj! z<2`%-RO)^CpA(VkIN1Lj$pPwLf-UiW`&YxR&g9{Jk*#5DOqe0+-}xQfFXrT}$Y|^( z9CSxN*a=<;MSb=xXZtxEcx*-U*_FR9wW;=6A)%^Ps!wAngyS@FNSw;)gX&UxA1>!T3a<&;{ zj|`6#Nn5OJaVUN zcZ-_oF$NFqZk`e|wY$w3yt&Gw*6yaZB@P9T^74`q^GOoH8M|A&Q`Qf=oA1*1se!p| zb~iM*+3rSM8M7%wby);b00#&K&*?bFN@LqH3M2!ZCQ=Xq+nL&UFhS;66WowtF?ZA8 zYKAvs!Ew-j2ZWLhZjL7)JSI3+p{bc8xXFCAWeQ#o0x)CdS-O~+2TyD{l<;-Io`w@< z*mCfQPDY(rE%={eY|oyaphLfY&SkFWXZ?V0;z;1`Zp%EjChQwQ+qPNeG4W3=^Xkk0 ze{Y$W{b9z7?WTD(jXRBG!@sxGSunTFGvGuAfdj=H0_xBG;gr5-_c~Uk316TXoQ222 zjkEBQlPULG9Try3AkYb?H=Nq2Eu7xM&m)`gumVc)fpz0Q;4%h-e83W=*Hc2wY^0;? zYqGXoj!1^lS>k|CmLHJY+Y5xuhe)oVvdRsp7goxOdoFlsv10nT%^js2mO=jFP;xW1 z(cl%unQ(LK)fY$>q_r{xH|jaoeSdNh;_eKFteSKIdHfv-Q``b>0Tw|t?_mvwE8j&LjMYz#?;@iLocp#}cil%? zA>K3Bj5_9;c3#Xp!?Q0j!9ae;JZr~*084zBtpa!b{5VG7>ZxrO4u-bu_T0lALJ9gH3a8>SQ6IWjx5dLg`&nXOq22-E|uZ;J)h z#`N`Q<4-VmFbmDx#qEolyV(}o$z$ovB0X>v8`&YicF|L+E*g#g8@p=&F_G=? zrblcP?P3DE0_H3Q9qt&qz65o! z$J-$=7F=J>0;cPo?v!4(aCl_ffBoW(@e=z zm{vg6?8bqHOHA*hq1I<9W%Q>9Ii1V&4g~Ke|Ag!_!4`>X)0J_+y;Cm;l%K8>Y(Xxq z{&dHU#m1Ve@wAb`$LiX-*i;Cn*q9l|3CPUCbW7;43BdN_H__~;Us@;!$r+Al!R#QB zsB={Yi5h4G(>op%=si}El;S2>uNxTKTXG%*q8f`1pi2-kfk){>og z5!r;G>KKwNN!*8Egi#ZWxL>jHME_wfvhXc0oxLzo(Bv;paoax22rxUeOV8z1RXFgU`tiq z4ZV_?X0@D<;p-`u4X7P@Oj`}Bg+o{PZ^OIN3D#9IvI4zQ=rxV=YFFds+c|K4uf|EJ zqMH}pcui5fF}i_&Ty#Tjw`&tGts4;ifC1m_>PDO-vsX9T#%`y(A&(lo^ zq{mKXLyQfJ>7ahwPyqk;Kmj&RjdR4{0FB=5Oe*(RL+Wj7vgF>VVWe9>%KE`GUT=A_ z8I1Q!o8cUm5!K@#lZr(fr|1H+b_zn+uMF-fqE{9i{>+aYk$||Wr{b;Y!|7kW)HiU= zNdXDQBa{$827g6y3^(%>lYm<2xO!2@0&fVFVRMip_7=`h8Z5_y*CNQokw~c&&e53E zVncQnT%<6nj8p`b@Y1&}@@qub>L(@(^~S(zoJ%-;%M z8a6s4uP|fMPW|OpXF{GC^@7-Fpy^*dIB7dT8vSI4z9OMXIXY7wmTr5vJrffHz>ef> zF@Ma|Hoi7PE|DOXW+P0(F1yhg4MLwA26lHbiFy=cFWwdlvNk(A7n-x)|INbe=~?@Z z7SKy#5@2H!xkE#Ffqwp3ot`zCIXw%2h>i#Aj$V||OV&E{74_b>L$o;YgzPih4$)fh zBqMviK+ggHLZp?M(hjM4!QSS)lTzWtWC>}`!X|21tqz(Bp$tc(HT(#{4cPh733hN! ztb&8q`D#M^Z?Na-Gmj;?$Y%;RJHKO7_86T-`-vx$Q6yA)2Ojv%K_mR6tr1G|=AaP@ z`zt(iJlU8ds#Zy6C4UjgtjLFCS|Xf!6+hyLsz_#Kf-6#q8NiL4F->b<9Xk8Q zP66^aG(&ZgjM=L;n*>j#YlSQf9h*Rykk97yVp4=o=69Yts-sjrz`zGqcj4zIqf z?mtTnqx(-ifA`kbvoF6Vc9pGvwcxwv(HFEOJ^9r9U1!lqoF$u;%mWe>{a`+7v{?Fh zMIr|~g$8Z1=n&`X<48*|ptscv5F47N$^K)fp6}daE#Z{Q-YW59h8aFH=u}6RecqDw z0+r@m{c72XrE#|wic!B%QrbWFKJ*<8gg~T)Zwk09{wIP~;WSFbLCNSpZ#|b`$7vYzgEOe!I z*$g((`2trri%=~BRSA@HQdjS-|8)U8eGnDn^sjVDOSn=KpFUa1QrXH3f}+{P>Xo(@ zMA;~rQercZc7jWBa*#*IQMzf~JJkW_y_<%GjrRZ#FcyBxq`N*oz^eZ`yCCkHr$f*}vDO>vHFtZyjR7zqYSIJ5cy?p8;t1Ihnfg!1A3 zO)3>ItfV9#$r&2!`0953iHWZ<*hBtq@kSC^D8A91pyJ@LbcmNI%HFozJ;EJgefLx` zUbC$(IB)&C2M%SI#Kp8W<6pzA=?DJtPyLI>o?X6$ikxEr!R%73edDn`kw2}ZNOw~f zlcJje8x!90YjIPIi5BRyV*@c3L5186oJSMd?2* z*8WG(eC+!vLag^E?>@p@@z#9kKYUY5Mz`rG^e^x3Uz9u~8p-`O{qNSMu)ey7WSk-!cbbLzK0`}`mM z;aC3P_rBwvQ@`+$AO6KJ{P>4{;y0zTI2QTev!7(X2n&JKb$>;tL}lnLW(9!b8 zhJc1yQ}sr)_-ri!9QJp#0Q*LNP2KF_&`kv+1GQBb9Q%(2I2>m5*XnaMWSD=H-FOS^ zA7+S{tZ!aVZmdOZa+0*iSp!r!3XS(ku-(fl5w3OE?smb&y{TCPw6EI;`vv3+ zd=6H3Ud7Fvt`US(rjX3Aruu!X2Q->64y;fsj@_)SQI{K;Zp$St02ClqjgbNV0hYY$ zvO`rz!xRetVqSHZ-~?H@%I)bJmJ@n!RkE+vgD*8r$$sdZi9Lb0;X5FL4x)1=B%fy7KwLzL(R0U_51-K_ffm!he_dXzekMlQffq9n;Az_dr( zM-X4~6%`1fxy>PvmL;KURFkWyxB4a+eCa$2$~-nuK6hrs4%C+<*C{{=)qi%zRsgSi zf6IluJ;WKEx#MHLuOIqACRyJKNE6$r#);TEcnAsxx3`@UIwJ1W#gKlaFB*LCD&M2!3+;wp z@bosaa=NWEW-gd^d`O@9A-@d&97d3|bO4q^adYbgp-TOCtaL{^kgbS#(TbSJ4rA_m zssG&`EePlW+qOc>3jKdW@c=Xj1`oZzl_w@*xmUX-QmaDek!aqbPuzll(v-g)$Uac0 z1T?I_z#IoL2Tb#R3DKZ2^N57)$CMA@Hj&>?;@(MxLjkXz)n-r>H zl;V#zGfwTXX?8aGXi);npt0-%)^5Fz_?2Nz;uhRCBsDCp(@-1g=s<#i4@g%(5GjGV zf3T0r`xH5{V}#Ja%5S(HrNf`T6Q%=iZ|A1|N99`?V+ofK6DNw<4-^hp1JJVGuL6PN z+8_MoyGL?zK^eQFZ*MBwIz#vx{bl(w(z#b#9-3x=wSW2(RT?m{spbJ(Mmkvwa^2903P&? z`9OyWwgcrHsjsr$U-0|@3Xb zrWrQx11}?mEV+g(ax98)vNcPgE7E#OcnFPU{YRP~RrW?&CsB3?baGqd;{ckp1X?w9 zFd<+gkGU~0zjOM{JRqTAaGITZ?#&_gW4i_Mq&rO6qkV_2%t!O4Do>h(A?n$7=3#JOHhE$#K7VNQcU)}4AN8Q46hNa_NWCcBB+rXGoYnjLCYT^B0ah7 zVnAgV9DEg^Qe>e4NCv4Ad|^~^toyxy7@jGS;w{F!2NcsrG+^kvpok!K{|po(ZRAcU zmh~29C~*>GWn#uaAIUcTH-8U_@Bhd!t0}YxH?PYhF#9e0ghY1YzG@#S2(~d&&dKA_ zhT*RdF!f``VY!Xo!FMM&Y3n4^mS6HOiYKhTlW@DbPR5U7`a>-|Jln(-6d^j3rN6`? zVZ}nz(B^#iq*#Z36xR;Ne2RN9OCgeMvdM>Q2O9}!l(jf<7n-{{x}uWBYp8L?i=YD? zIYZk}qTVJVIJAMl*|zdY^KRnfiZ6l25*(mo-yK{>Bg#S%73yaB2r_aW}04=TFY z1fi!Wb$}@B3gRYI1OHFKGAHKm2^M$x7lsNwV9x?7s>s~P=?G>Bpn)+y_ayEzG*Dg# zG+1ydwZa3nNbLiSywOgfkslNj8I9Bv`5W(cfTHj8^fM?>+z5(hI^u2?6xi%$KmqUj zX9WseZ(lShM2tTbQ1k>vFM|S1eF0GPt0^cD(Gymr#quY?irfQTiBuSZa2?hn1RU4A z7Ad%kIl);tYdC|R&VnG6txuVPFZ{??!@@9JkUhfxHJ-65z=-A<<>fA4uV zfOz>vlcTUy4tKyiK@*BC;!2`BzzIm)Zuz7<);397j&Gvj#@;RW&&S5DGk^Mqb zacp?y?Jv*`rZ<1zehA6tS@F%pBLbC_C>twh^jtj)-Xb`~0Uv6g0Uk!n8Q>wDvE$$V zx&V>OT0kz$0&*ZA0sk!A2F;0wF90{J#utIxMcx3nJ>OgmZW?b>@Bd_Q11DgScEe3O zi)eV8s5XOqJQacxcR_nG)Pub!w?l1yH`Gr3%iq0ZPkhTS_Qbe7-nBTl>)pkmw~KXczlrz^?wtzvqbMa&*c^ReJO>A8~rMk1iDH+2cN& zOV74&dUAz-&S#7HS(%=F$!Gh01_2p;=aJPUHQ1y2OUN2YZMV_v zouo~U-D_H0fecK&bsmJ#l`cYjHp-7rJrVRd(6)`e+bpq5=~f?}#uGsV3>TgAxacSj zK!|MaA8lb0!xDOfbAVK2if2U&)z=Gyw~ghS{6K0SPPlI#Klu}~)Nx*mj4 z7=AFEOURdADrQ2AAAlRvA@_c-_^RB?)l%c=I`*&u?l_d-oO+K}-lp+4JgW7Mr9&Y6hq<*Ku8Bg{q4C9lE2#dXopm|6|oV2}* zAe}`K3YZM_md1ex)2K#Ka+I>VoaBuw3%yTJH@)V{g0}T~!I{dB&!k`P;lh->p9|?K zD`uj8I^18r6o27&lM~G2Qzw{Tnxfw4rl|MnDeCDO)1V%+g?n81z6?Pjrjy;4Jsw+e zN;x{G7fMdN1je-~N14`Tlo_q>3&+A{-{eZS!(53wJvWILjmX{pdou3K^}6S^c!$^PZ~kRZa6skFD~$ZEhb; zs)yv$fo50<23l`!t)Re?H%aEg4eOH#SVb)0yZIZ?Fl++25)D2`q2v=z>`FaRFW0w# zt&BL{dkH}$Qw-ss&c&#C!Fwi0Vi6@@0)ia`7ukmywthoTOcrL6Y!78OG3 zc_wvS21}gbgnCOvb39dFGH*haw9U~_{eX_YG7{>syOc(Oe3VZTIMoNb69a@nSm|C1{dfHB)Jt7AVc3>6%OuAW4M(p9ii;e@H5o7^10Pc0cf!Eo8ugnsRzo zbWiSUmtQum+ITQ_g?n%I)vz~E2;z^LHa(R%ae6k=G<0T$;ghy!_iQPCX86vw{2s23 z&7Rw`dj=gH2cB>OgdT3ly0ko=i<{TPHPny#AEO3wCFQ$Ge81@9Bh%R+x6` zhrllwOqF-|1?d%oYc!jxPSN8_+<%Yb-oWK@5Q}#k=o&GYmEdbB&xwSx3|dWAGH0iI zVC$jnj~Neba<^XBK&!dpd$coK{QlN6`;zRIJ$1sya)!1oJe4cXhl)HOJKthK!!>#5 zQ@xT|%ex;#C4#AqE6f>uKpVLh7}Rt%CK>Q*|gT^?Fwy%1r8Bg;z39y4SnLy?U>AjeGU=s+*nCa!}C)GF9Ga;FBZ zVKXzc1tfR&Pz5FnSK`=Ow)-v9@$l7_bR}V;bvc$QBxVe1_4z4RIrXGwfne%OyyRCs z%wb2n&B$a9Y43r5iii4e;B$(igQD5VgtQ&x_FUgxh$`FF$~3?AEymNP{G9z|tvnnEaDpsKkl ztkH>yjEd%(GC}QQ$7l-55~qsVLcX7=NT<&z;y#)?WRWJB2n6#j%i*wRsbQO%?b$bt zm&Mk=Ey7nv>8{F2OqRxAUsODk#02~NODT@vW1ExZYl{5ecfpaqn%)zM-qD+|eszRW zweQu>ezaQtvA;Lb20kR^Z{wX);9Sradsp-PseOO3ewVtz;d5P79_$9PquP!L>(!W@ zgLumlc2b6)V;musT%Z}~TG5r+7dH&KeW))aSnZ+y9CFi<{dz96V8w0Y#kL3VK=ay- z1+)@w2cu7OSG9Me_6}mRgbX=+m^4L}zAF7DS=;F+nr9o$vvT^3lqG)W*4UN{U3mkH z(aH1lMK>2%`QVw7pC{xYG}hZYnY+w;3X)_S+r$v`5}N_uXjKs2%t$U1~=*06j+HZ(jFMAN}f4&Wk8v#=44pzkr&U3i9VF=u0&VIm9JSd&P}SLA_!CJhYsfw$t;vNav83sDc@q42g0}Nf zzc}|mq;^bYNV-cL2Nr@E_L?12IlpZx+c`vTi#bfaN4mB59J81FlNbT-S9-motIOm< znpEnZnN-?ywM8eNoOUvU>}f%^Pms;dazq*i#7-c4(&ll<43`T3hmcl;761;gWe6qn zo6rG(AzjQaS9P@g8EPD{^&!n>Z;Tq(my0vcoz3X`)Ch#^ic(A^pSdx zi|WzuKq-{WjIxS!14&{HxY4L!qWr~{hJ+-bF@SK+jSKdxV)TIyPoKf`3~sg*KOG^; z`G>rDkH?9yNoJ@@beX(k<~M^LdUvZ#LfqZr5{^6AQ=J@m3wv77FXY>b3-cDaa?)yG zYF!Pi4Oaux=zOy_q~ffN_)a0Q8eY#S+DDnBG*2?g-{yoNr$%`5px%gpzF%D|=hKnk z4@&QjQd`86a$&M{*@VC!uI7>tF~TaxV}(T6d+%62V4<#Jv&UU83w~WTe#XICRCtGc zx>Wu@?%oARvgMMWr^ zN)U^YP!_Aqm}HRe`_H}IJ+reQD5;c`vE=l9oO>Ss`Op78|JnOr*%dZYTS%o_YV0}I zBd!RobRRwawtz9Ad!ES+l}^i(9Yd!jd|F1hK7;XupLdKQ%*(A}R1j~J`VzmFG>93! zwvZ{d(^QagWy87;L5T@giF3Etfeu$-=*e^i*52e*U~+WeG|DvzXIoAWu8TB@onx(= zgdooXNn`Q?aU(HlzBCvrB%`#?ctQ|Nobo5K7k0S%fs9j8rtk;aU@wK7{t-U_fa?wvI1fS zW@&QLf#s3BB`}f7AfUH=SGJ~JO=lcq>#lTl^3ARL($!6o^oZ91pbH2}EE4zy_xSE% zVen;kS|#6|QL-v{1lDCRWPXs(fE0%xqk6^R$Al|@)&FzwVkAC!AnceyF}9R)z+3j! zK)+opY)*9Lw5V3R_jDn=4g}W_Ia-xl3TzrsjtC#Rc9&iUO5tGuHIKEn-E_$BeV%w& z4qdgaa#<$@#x|!p+<>f|5I;4D!K2|+yALl9++R#Hpxtnh1;D0a&O2qq(*>}&_X2Q# zgffO5J7d2@`efbW@^o+~l(UR^=q@=r@FE3o*L6d7Dab+>NFQeo;;RUX=3|9;##sF2 z3F8Y?b6Yoa58@xAB>})$>6oh}$-%Z0f(INj;eZ*BI#(f=W^l-oKt1{a06|Yecy9be z6dM_@x@c|HdeBjQIi~fCUcP&r13~W3Opifl!zVH-^kQzwfWC8gfO75*r6$R~Rs#o+ zj4}i`fPxUV%~*-lN2vx_MvQ**@93zu5v0mr=@o7E%7ML}O4{D7MwhK0+cp4N)>i0qiL-yRN%G;nM?bzAg+K~GY_cQ5@K8n%&JBmkh z11bl?0o3R4__8>|p3ORa7LT?kpyUJhkMj)z6vF2~kO9wNy=5yx1y>%L6x+x~l-eji z{BX(5A{XqzRu^1(h(&>yH@(DW!Ryw;NOWAKic3mgC>I_cFGdseq>V!7dtChtfIva} zs<=S^$@b@6ToT51(pa{VPNv-}y5lx7N;UV0q=xkzgJ&A_HbD@9WuHUE9lrbGIg@?j z%!px^1Lf7h_i;=G(g`C!M`v5_CiT#{a&UhXyLdmS)ZfVOkM1u36qNYlRB;O4-mYz1 zJ3D=hbCPJE=xk;Gb|l!G4Z=`J@1lcewkN|h2=E&5W>R;H>(i5I->8L7-d}d2FZ7*G zpn+l)EQjYN{qMhc4le|z0tmDtXnlXve|#eEj&Hb_|Ax^tpJ6g+SL6txKLaLISYy=! z{2vqiF#puq2GWQzcJwa)K$N4Dgbh^a(-qtE6{LCb9KE97+`Ugo@_PrvyLkUZB&I); zotRv9g;wCQVP!i}v)+-x@V4F4GKpIdS~864V{}uCTx!iQ{9Q| zDx~nZ1{_2n`}%4qc2O0#>7<1FwZ}5?IK)O?m~voQRr8O+k-L!X5k$Dq1pEpsT0iS~ z$_HHdopE$)KKh$EorFMz%R8>Z4IWnzt&k;xkgf4m#7f7hBT$Rmh-S$3)*uMeo$N&B zh#10v!{EgCXx05gwp?Ux97sp2*h$2uq6OEeAQ@@rpIdhjCg&c=Bzh;ZytIuFw?1O*N%msSC9YGFr{E?E@ixOJP3##tkC-UXnjMe2mOP%^&yN5fw@tG zU<+)y6zQlVmx!bgLO8EarE#K;u{1)NLe%#PvJ8Ls3T3MFD#+Tpoj!>?jxv>}0k5Y4 zGYaez0R%*YG;E#$huANQbTudTA#A97wVnmNyhI6ky1qm+d8)p|cuywHD1b%(@%obf zJX&AU$xqgo7*0OnWi&~K)pW^cU#Kss?8Ugm>~&-D5|;v_qgJA^dGv4M39!U&q_4D4 z*#ie!@K6{!=jW1k2%jHcB$%~n%F2TclTILU1;ub6>QqzY}eSe{msMRIEIg9s*lD%MtQXJNUKCyvgS%a5u2 zI4D&G9-uJ!|J$*)tQO2H$lBO>xxN9XVMME|v(I#T-rR&GDOm*vlrJ(^XKcp837O1C zR@EQF=Y?z9{jTY$71O}bTy&lANK%m8^A-a{$@~O=FReFM@1tJioTyjn@Z}J7e&ax~ z@4*P0*tR0|-|8smB>nHRunBB)E^k~prn5s`S~sMNnz?juTOBsR9p+~(X^1H|BqK9d z$CKRvE0**q(e#-6WD?-{(8`*B+D@kN3`|(1l5KaL4z$ziIYiX~ssW6V-)Z0~UM@Za z7?$GKEw%LM-B1kUSG_(HfmxAi#_+{)UiK3_5fvQ9EmB5C1AWQ4j}qDhq`N(6a8`MeHW1@MqGjNeE){RVtqm4m zW{8a#f!>Z>i7~8OT|qEgOw)J)-Etc#HBY)__2{o%4Qc55%g#kPB}RpNwWwh^V-c|L zwJ`b)XE3{hFs9WmKAAx6;v->RWE|;_UI>RCL1pp>l|1Yqn)EPWpp;R!cDio$Om-WV zZ6g14vIxQc=<~6I#3H2SHIk<;BOBe8?+p=7_VEfkCF1>=jR@-1jHuW(B2@U- zGNLP9!-xo=XhzgmoKA)+a^ir3;SvM}fSO2WaIM{fE`UtL7qWO-rdoC{rdL^g<$=(L<6MAudwhz3f#sea=91i}( zvhxb2<%Th`11|Feg&vlRDbT&dC5Ze;|A+|FArB6d&)!~%ENKh*K88BnV%gEZnAyHJ z9D_h2vD>0g2fW-W4@93NQ7j>bTMp~C<0|@-GAFU901KEM!j&|1zZ`-wCVa!HDZVXS zpAX-XId*oF5+HZVCx$?uv1G6wH81#ZbpQ;@FGX<`!s zniwaWo_L{;o23hK{9K&nwUP03Ztbtppl*|CJboQ zlXwZxlE=JUHL?KUK>uz`U|P=xH)hDUJHa#*OqzWWFiD^tCZ`So_grECmhV`BY%s7HVRhoE!u0jMC2MaO6w& z&$!NI&{GLcN0D3tXVH zOS6y27Lj7L3|R?){MS8fRv@|QACW0l@eW`@&N+XPpPx^;>g!!4v1w9fHK;n=Omwm#AXb8tXPv9I#95ud$?hq(R z%y)@_ws}?S9lTPz1si9tYUP7hXe8*EusE|`(`2(m3d4O;6Od$vfI`Y&_MfvRa5AD& z*5lQ{nJFRHBer;ZI${S9WlaYGh*QpBkoQ|91a;7E03Bk6?TPZ z^@=WH*UgUMqnAaeXGLC8oSg@QMdf^ z+rH`WB~86=`q3TVLR0J0ugcfn)O)5Mo%t4;x@r2=$#2?JtAX)piYDTEsyHCUbh(=P!I?h4ORXbhpQ(YDg~{l0K@R6n6fGrw-qLNq~B|lTqo+5{`(wD?mNHB|x1BfLSDZ^G(EV zU-}ro3d;@Q+25tP0Ck#?G{^2i5YnKM%mv#zmc47bd+-iEqJclB5N`+>1VWrujc3Ln zv`xGOE8r`1D#(HZcK(dJ}WLjpQWhvDg`I?Yx z1oTTnu3vl8nPO!Ie|hzgYh}n3_pR=}J1X3DzGpyoh(XO5rvcgjwBI7}O4{G@Vitq~ z>@%-OrV@rkp;BQg74F*_I(Gi^F=mw$SUMD0mU~$~+bPRqyeP*an6zwP+vtxy~ zt4WDa6JZ}4MXd2c`MDkz?)`ykrGDS4kMUw#S zGDYM^77^E(0v0};Jq51mLYx1mOD>zZ=W4mv%{n;?RObnt4?ns75lv zE%gP(p6~FcU+y!4!|SieHlqV$XWcUx||I9G1CIoSc6K5XMNh9`>BR%e?D4o0oalvE#l=D*vuh&72cg;Shor(LXG7 z%$0#J8t#FiF?U!QIG4gR2({}E!n<0sZa@lC$-xA}5yC2<&nVl@s8Pz?4f&xYj?5%a zLE~BM{2BUZt=?jCs@_MXDfOX# z=~}JQZZ4&}F-!DBb{fsD2>af(ErfOm%*|Q--w$cQ#J<7tZ2zedSO)q~n4}|5#69DP zPR~VTIVQX(pMQAUu`-mOkj;Lxt|xlKN;_5%+o&kW)k(D*t|DA^6`H3l5t}IpP z6F^8nTPpt#ff4N@GoRkbzYjJ5i8^DzVOsPs{Ln|(5KtLvh^bh+1kW@@ppM^Iyw!RG zQ19_d;4ztTwf^STX$mQE7qnz6cSI`;x+OQdw)H;53%-6UJC<$S(@xMHShAQ%`2hOk z_C>TmqAlE&5Xwa)9lRNcM(W1YK#VFHSugI;q8!x=jbf9qudObTIg^wR`2ln`6F3560Y{)`&S`C7 zhlErwe{sfF%M?}@21|^2>LN(1KLvE$bhE(xk&i9D4iMt8OU}q6;{f0q2*c|ksXC+o zQp9?8O}4G(vtxFhJ6O#-((IllIG|UYqDhUI*5JGWcvfR{g&?kJS6*8;Y6f+>nR27= zcFsBb_^_5>E!{omXIP5NIg`RZcI}d+Opb|u2hSMfX?GF#nrU84)(SAz2@c|ihxj{L zns8US(H=7ltB7-xUUjx2$Ontg2m8fRN`F#@n*f-QqU@#r4fP`8^4l12S<(H`PpA1! zIk98G1p}L^7u+35>P3F6SgpH#tQgitmV_{@HF`dE?_l(($%{13y%bY|A=1_^9UMxN zIFPN+;XWBV{!$>8eMtZO_~@huRocl3nE}pj=#xni21E*kHl{Y{A?>3u3p_H84CIn~ zzJrzPTG{I}Sh9 z&1sHD)KEBK^Q+FGFjscT{fZ?QMMYGKC(j!cDwE#27l z8n%nVmfSDtD^fkBT$Yy>3{Mdl968@F|9T<#%q7hBAOqBKx6zbV)(o2xCKv1VIo<4Q=!N(MAu3pU6zGjk&y3X;3i^qEA0 znQ0NJboA>$VW&NCE=>p7m4e$>WFg;aAI%2;V6|9FF(xPLMAWvqhS>>vgZF`H50RKL zuWpWhgy+02(`!yrMQlQ8=4X}7-uxV8{~y#AR>O%Sh!oJ3rDVqsOfzXjPK^2FfMS^2 zX0R|W=-=Z(dt%ZK9<5ZZd$DNr?&Q`;a}Kw-H-!pvr5Q4|TIsg0IKV_>l$1lSt{J*b zb>4eFu>TuY@(td!ZjUJGd=t(zdXkhC`ojo8vGe;x>6O%hEV4m&=_3hbNHAArx6)c# zNBo?nZVxkc=ORobk_U$yB%55d@!6-WDwlxD@_H0yXT%Q6Tz*r;8QTNCcXzhz;moB0Ooa+>3E3D8fVuJ z&raaEd>8xp=MUnTTt!qa40(}Hw69RAJ~=|$F5h*usOMnU(KV#Q@YD&jA<|`LL`0PkmL>`s}LmR3GLFZ0`;_Zau9M7OYhQv$CI>&@*%oFNY znJ>BheE_;#6*U0|3rl}oxABg989Zot3GOm_BG!(gJ8Ne|#YNK?2b=ng)G!W&&gy~f zv8+fFj!DUU()Nyqpo#lk?JTxZvrSAHt7q< z&1&EvfdLC}_Tc=OFwiO5V1%x5_>ef7z8H@{ni(D>Ko=WH}n=1Op|418MUYcT7X;Ug_&8+Ha9Rdmkw5(r2^lNFnU z1vjEwrnw;8ad8#idzPi8LavK_)>Nv+jrP|4b37?;M?l5N5!suohcyr*uTBr@Cgb4Ith`G7AuF#=-c{7PObQXSA_KJth-I8EE=W#>vv z)n|UKW?$df7b)JDrlnegJ|ifAUbE^epCFYO- zD2`pcdh(-$X#e^ru%yAuuoewQKkPaT6ZKPQOJaZb7+uz(%%lN}2<;0N#y4wm?wB&^ z%DA6!)4(kqzxwJ|7GQ7!U-HV!gp z*_UaRQY-~(oba^yF6bK6I*!%D(PnK@10RA5 z7ybv3FQxbb6*HcE^`AFSVkVDF$l-KDn$@+5{spEEx6yK%v0=;@9=>t~En=Y#yIOhY zWRXsj=ytB>hRKCp3NrJ_rrCyu2ar%juma*A|9dEeF%u#T+0oQwQquiJVFbM*D@v?c zC>EO+xdgDxS%~j84PbY`Yhe>Y#da+ebxH=h#6c^ZPss_#sTTlhacgoQVGzv9##{1? zAqav%C4$fu@R+nmyg}q+HksUBxqpUW2c)9Rn+QfB2q53IG0}rPk+_f3T%6G!EvH$J zn}toWaVdSgNC7?`Og!0*ZugKF1NqXksCG4`DDfTbSE9>uD~riiDR>@Ko0EkYfr zE*4O~BN60a`Ufb0cP)BDrHTfu5zJpADb83ibU25hhA#H1ry5idd4ga*K7A4xx~eY> zn64#q{bIA$T?LwKp@3MuGXXhTGWAgurqT?U`{&FuXY;pa{%i0Wtc zB_46|?mgFMzx4bEM{miL#)?h4IpWow97SiL`Paz*TeO9V?bH9#-DocVDug5AY=r8- z(1Uzdd%kx?Ae9UGu(Z@KnJ2%btrOWV(-lOKgpmXE5$rG)Vwq>)B8Gie3Pk2K#4nH3 z82Q^wg%b{c3{$zD0m2P2d0`}hum*b3)8;I9=r%@I=i+95xPzb@KvjM2zuyKN5SYI! zXTWk$wh6WW%UrjsU*}!iz6T5WH86eL>Y1+<7M4=&SGq?R%%qBgn7q*eWl2ffod zRIL@9B!Hn^?n4ei_5g4Iu;39F9tq2?Qy%Bm|EOF znwZ*6^E{1hBw!AXuDS2nPvWzab-9<_%U|#V7HQR#1>Q`LK8s-RoHvhrjGbHCD&>1rZ6E1)lEk`*J4i!=M|yd41c9SY z|4JNTgf&5RCw=v3q*P37eNtNyWmV>z@1lE%@&Mrts@AC8OL0L)!QZk?Npyj z6?&XNr+T`%!S<$%got+*gKq$#Uz#JUBrk4QT}HA0iRFao?al;7p~YN2b$3^3WM-zOlbu5m~?p1 zMhxwNvkZ0+pbS52^e0>*IxHL&__Xp)_Jv%gZhQp+9c+QqaS0hfMV#$tc8rdbrF{75 zzX$SPSACJ6*tl4IIX(Ck8yeGtZ(3sS-WVB5hgs`(DH>0M5^Z8okP`*2!1d9R9(d5b zI#=Bna|QWqoh2VINU3L+#lcF5W4&MsK{Qwqg)5@u0n2uDGmCWaOgHagQfA_EaJaQu zonsM}8TyGZHd%TD8hdB!M8)UkdfwY8et~h zw5D&U&M2L9CM{LANKYKKO)H{=Rq4M}>WY0r6l7sRIuo6UkYAlO>A(?cs~cwRu||}e za337c^5|JS#0OkIEb50W40Ofhksc$w;rE4XF;hK$;7F{jvo3Fz7^)b~Kh92xM162& zfeWZ~4#}ed5@Ue;NjymL`+=%=FN5gbdv}E`rhisu-`4$extIM{dpW%9%V7Pe{H!8n zQ&%wuKKAGu`{M}&sQUL-uYB<9y|Y}#?`HME?e?A3=w9It!Dog&*9*v0UuU;Ew&)2l z9T_N@#*oj(Ah!z8vMtHL4`O64Eo4{Nfds50YN|gW$x{F$n^gqZ27DV`J8~At?9sEt z@oFlM%lYiM0MM+Kl=UzNWy2-iilK(on~;#TG(|N^&mkeTOy4kcGsjHR5)$4M6AILv zNH|1;$dt6ogpcWJKr(zGNbxos$#@-C*OSI|f8yM2PQ7a%95lUZaARysg*4@RLF z2u}Xd+gU+*=~+K%f1a(v{bC?N1R=nh!NYo2_eEnpuDlzIZCC3@pWMbMaV|Z%kDt%~ zfe$z!!7zr0DWd)2@d(iQXxxEFDGD%;*&*^7Ti!^j0@ z$(~)v=S8;D@r+{%lEn7BvYnIIs@NDaC)(W<&%Uzb*-1)~6!VYIBiOYN50&d$nrPgt zWcbfx#);tJn=jc8wr@>~$pIRh-LM#rOg>%;ln{ z+Ga|z{&VtEBHPAS@W?WZ(kt4$~(8$WX`V|gKXen3!ez-@OQiUJ{J+*&Ym_022X$ZvBTkD18)&*NAKj0VX6WG z4~8C(u!F;==(@IdVwbXU4p=#4m;Yn|6%ltTu4+a^Eo8p5CmcEt@vu0TaV%Cp95NMx4ckK`@TnLfb<&!211zON=_V|+E?jFX z<#3R}AemuVAnFSImdHVeclHCqWZ@u0a{;`vKzNhq4^t@vTu4F!tO*&LX@+t-Uf&)SX*aa^RaB15gZXKgyF|iTy~N==ri(pR8(G<>+t! zptkz>Rtl7ZauwOi*+KSCkuU}2V^&}z)?9B;F7O3?<~JHjzi7`(JOgs)G+ovS?qR@3 z)8bkD0Oi#%%Q>L09Fi1 z4l3xOhzzR*ffKRzcMbaMvPUO9rs&sRYR@``jWL($*_p)i_UsIESa&9|yjf=w$GcB@ zjsDESPQ}M%r?Ma zUL`P%V6~L8A%fC&GCa6aL+Is2G3&K}QFflvh4c$zj6ARbZiw}?NGw~T(!v?nRD7SI^~74cHn&2iV4o*~4K$U}hWsq=nP|IYHa? zjz7r@>#BMYQ73HY|LdEI^#{8V-rL`rEW)1hU!5GEo&7pF8DPdN)ql7=jze<87#IFq zd5GH^IN9Zu6&%}#Cnq?1WPDu(1)D9n^5mJxutIrbr(V^jyyh+b`|2y%Lz9zd4wuu) zdGdXSA(+eUEGMjNP_=@q!`dR@Y`^+tO%UaEXU6S~e0)8CXzD6UTK+J9Qq|l2?_-17 z_{2uB0qHqBzCOOG{>LA!p8HYm5ef|NGMErq`v_FE`RJ8(lI$!eidxdx>`0p@AE^D&CTRLL-m; z$0bB`|Bb~b>1Xv@RCi^u8_*c2mmG%?Ka(Yc{B))?gY+f()IwOW)K68g_s zVAU1)r8p<)0nv4rAM^WUYJgL!*tXJYJso z@J2Rz2}PQq(TLGve$GvxMe%i|xOTyJ{4ljU^} zO^)Nw*C})R5{H{WjH{P9WK>Rx_`8H+v#?UhTji+`am z^(E4W;Nr1J1!nPT;r7Y$VW?8|$$!o1iASm@`AMdr&-vhJ_0sggAHD!mkE^dX517W^ z&Z-N4zz1;zQrk6CJ^Hb3-53M(j^+kLp!P0~Pq0)-Cb9)1eFphtKkMu5KtMs4wTfU; z?%#R_0f8+d#760|gJ2-IQN>+hpYT`#?dbrPSS#FK*KI6rmrEC!yz=_dM~!h0v|&vm zB=tdEcDJbmEWICfBZXFtR0(_KGQ=3K$)Zz$7qVJ>|HMW@5*s3mAVJ}^GDSF`afrVy zp%0H9DQD;x(|B?GCTP`lG<9A1rV9xxSAtXrH}@=bo1zEDIe~owjzLXRKj`=ayL;AL%xjh@yPKVFClLZjMZ*%b2}kH%fsra*$2@vY_cpt zn85yL#-<`#F-F zpuP7mpX^?=thoN7yUh34MUzLAkMm>h=6vTW7S+iXCd9>yKb)s4}V%Vq)1 z7+Mp`1N$2gQ9XMZtGxA{gZnN<+dH9gVh1$vHS7k1`p9MgxdTK_ z?1IRNfXIpR`1a(wIcV^pysn1C>}CCQeBw1jAgZVG7<~-NgSff)G#V>CL%3A=syMWI zQOpZBP_jedwGUj3=zVlMJP_6QoMpRm%s${3^TsNU%!Kmgik34%T>26b%;yoE7qc&+ zO2*p#D!-J$r$HRqnqHQqjNtZn#p!ZA&8pv-Bqyo0HJ_LZj#Q9@>eX z=%FUo!NrnnzRL!H+7FtsV!~si;@hYg6i{Miz_%=!CC+t$&~(pc61-JmHNUWx>PD7< zfO@{5egS2oz)p4ST}ulRndbBu55=aQPx~FepG<2Bkfgpu77Cf}WH~~^Lf5a=T4=u^ z4$WE3e2sAZX?ce@#P}=>j)q}iS&MB5yg+wI%CUMOdSszXez`fjIhGxD`6A}V)di6+ zkDr@B#=vFQV{8gZkD)x%H-apV6ORw(-;nZe&o`39SQW@qu1LB(a7D73=#`+YQDm=f z@J0Ro^uqy9LaORIMIu|ws}vYeIXws!kr5q8(ZT^A9nj-QNIr;j;2H2@^_j`?>B$=q zJ2csaKhmhv)nMwNLt^U7?u}WfUI4S0X^A5Xp(c;CH2SN=vn^C##UsN?nY}1@aWyYM zo%t6D2iAGf~074P_QBOQBUG|7k}Q(Zrx)Dh1Nh=>_Ruh)Lk#z=Avf=9Q!2K?+B zw3XNehCrSYwrW_pHn6p~8(S+Djqct2kQPe9Va6jC0eYx50)9Ns6zX7ztC+_R@M)%A z{AVWzKlmWt3PKg%3!=tLBgKCRtmv(kvz7Sk;c`k?Dl-bEu`wVfujBL zun+os0CH_lK)ON%WZi&OUOfdQHP@Z6%GA&tAelM>@tv~O{r&_;{hN8h>ov@mUGZ#xnBmFmqp8+&=iLP3+K@iXzq=cdqZ;% zw7hBxP5N;;v^*f~OL%z&98qwR8I6CD#WsjUfHRyRK_TYB>GEE`3^-|2aDwfE6Jz!q zI3b22CqHNT!z!NxCsgw_gYz=Tc?mcJIWbkfX5?(ZIYrK(=2*9yg)$FP5R_Y`j1UF_ zq^ya+PzD1?hvkY&*$Nvgz}nE0pmhzO4*0P2ck*YpioGg-UitTjKcA6+$(>h%CLrnT z$(_-#_p3+3Dv)#_cx+Zxb^L`ts`Yg4mTy}!9AH_16OtYwZOUhYzG4@C_*M>;2i}tR z%R`2&2RE-R1fToE#zOD~l*{U>>V@fp3ttW!!k4BGzW#sl;Ku3&+cr~n^`sBpTzzi# z07F`JxcYKqPoodZ^!7;${G(j|VyH(;c8?&(dnU`uIylNgJlp5=<2+_CEA!%+%Om8o zeY@vB-UO`+$*8kSKwBwSl-qnfFNPtYUFHn}+MaJNC!o1yT_X@AH_7mObz^SXe=t`ZmkT6tQZQDclh_u~1B?juv z1W^;U#DArM-QwSAgPO9bsk2!N?!Hu_i2AhV&>*LVKy--}1#P>at-k3u>2;t8&hTu8tv`TBTFJHz)4WjQdCsX_0reyOTV2Z!7cuxBhX6>*;QI=j|!oSfz z>K4TmHTsYEeYp<+2fy|9Vt?Aayo~`~-v&|PTjL=Hsuzg@Bc26k3zg`;L-7{&tzEJmoqb_vP-x2%aVzyBMXt=P2uH9hHZlqnl%*9LD>a)ztiI%b}qq zLM~dEGIT%h{VxhOJ4Q4><|Tnfxi%eEOye8Err~p56ImXP$I)lc=k`XOIN4_ACjk!3r^+q-a=!IWlwqhRzc3f?_n zFdgho6+2nAWR$nW&-olcr|IBfpWVLIm0Qb)v&H7WqPeJlbH+&CoD*onvQREx%x>Xe z5i@(({}b8Qf05Nj;Oo$U&5q}rKoB`qQ{Dq|V*K=MF zSK2b7O^ldy(quEi8f#jnJUHT-xP@QWP|IQ+3+0Kaw(zupXf6b$%9 zK{iCV6^RkhbTh>V(iEfbbJz`W`I!9bmJ^OmTfQUarfE5FE9_F=q~$1h_W*R>CT=)` z)-2HCwvN%NRf%BR+eA-$@ERsvHi!V6j4j37Dvq}UxbhOBE!v_wKQ1VQOw@yBLG4e@ z0qu;u54}&=E(qJ0QWlc7Hyo&GA(2tKUPv7ml3T-LAqi&}QqMV{(2j-F0l?yTf_Ex2 z2W*PZFC;L>1JCR>;mc$WKE1T4m6_;_oy&;n!0`6xxsDjX8xbU{>u*_NDNK9m?tXgt zI&p!Wzwq7$OfG^NOn1op15AUv<)J}^@oGxJs*@Obh-6w=>JHgT*}!innhM3B9Wyj- zAXlU5WMPUdS|n%4!gU}E3l(Js>|mC-6j2t2C<~#)u;1IP%MWjeHDQSp=A4X9P?;Xog>W}>jAFlHepAqwBjz7O1R4?xSI*K5WS;Ufq zx|;MsQSHCCx@*2csJ@6okLf*VF+a1jYbNZA+1B!*Zod1!f(PxqwGhFofq^SM%k-Oq z9SrB5Hw^y}znJ2hMCD5h!*6rJA>h81pVt|Vd!YK*Pi-4xdupqWv3*N^Lx~xjr0@0j zqGKTOnGoO7EI0?dXQ7JxO$G!4SdKe-Z6A3^6tp%zV#CX8`-sG^(~l4|U)x7y(42mx z80GlB>6pGa{}lxHwS6_2YYKY(+CF;2+(+Ogy?b>sadZcnxWHE;pJi{EEK4Gg zhd4Z({f&}xv`FL^9uFE~UTXvh(F2Fj4moj96Z1wBXyoif$p$qspQB`r4p7V4RP%pu zNCLr5@%Q9bwdmc`8G9bv=wG+9+szKM7svbw#qInAxQ*F2H!owDlQFNMZ^#wbC|9(R zDZJTCKbB zXX1$rJJx5BBo#Q$PDw?!G+m#?E=gtQ`YbLlsWj{J8^L??v_XoAaiL;KVE&{Su2Ujl zh^S{sgX)@kp2%hQxZc&4MrEXa;ur8pN399CzDAD8!=R2B&Kiyz8>E39PH z2p11YFvI@D7c7?I)Su>GOnnL<$~pS^mL-zzRloPjE7{pVk3+Y`gJ0Cv!QPgi%a_&$ z)j?M(@)Nj{Z!T}=`Pw)8ub{wUXKiVzf7Slp+QO{(fz{T*_U!i3tI^uN!KF`UPnNqY zuKd>MR|2N(My8vJ_7Nrm=})305qS9!t~ZxpnOOSA#y^J^F8Q46wsP47z$NH*Z_oS50_u&vfkd_Ak5Tsf!?QSypGWtFRB?BNHa%vJorEyn!p8&u!U527Ryz{8b6^+tY{2i3Lw zEDfsT{0s-x34U1h*YUGBsIKQ{0cOJwF&nR|G<`PxCe(DTx^nJ;VIY^6R~Qw`y^&X# zY46mjN+cCcS4t|K#QAFjW~iN0i&n$)b@NYWtg&b{Jbx*8K3dEUi`LwXH9S8GhF!_E zl2PZ5wc>*`gv#DYaIi#)PXZb!}xH8_UNH?aK5*u2ptF9WzOM&isLD!Qv!Ra zJ5#TsJ^-fX*XpTIlrQT&C%0`t(=24Z}A5c$9(MQwvU* z(fzi;K0ghdv3QRrJ-tja!4Zw1+B1;#sxLMiT~0#7Skz8qNy1WoIA@X&PVpu#~Xr9g-?>M0R>fv9Z{8o~0KqY(!gK8*yG=rKVd8vl7yiSq91_mT0D zn`W3(Yp_#l7bZ)1RINBm?P4U;{UP;8+NzO2DNU>tk65y>3Gb$Oja`-_c3nR~vZfTT zvCB5=ryuL5p?Lk7&4Pkqv#8fk2rXHjX+LNN(`U|hAe}IO&EwJjR1YI$y4}NorEo%&e z4*ZIEPAeH>eNyy_KwyMi)wg0!z8$mt;M&Z)8is^o33kyL3Og1Pb!Z1GV<54Y6`lOZ! zqr6H*ogI5$ZG1{@Tn~}Y~4g7AM$j&Hrg%PN{GBJif`b8K+G0zmrg^TQt2(xfYeow_m z$_4vD?bo*6^PR2r^t7z8*<aK*huj ziwZ7-KNKz_&&iMmQu#2u)N0;QHIbnID9Vp3*qDnA@nc2>rrVsSBrQ4uNlQkI@WQ}7 z!JS4ZNcweHG~@B4yBq0a25JJ3u)VfeG)i4}m-#taEE=V5&SF8qIjkO3e+)r(DJ#6O z&fsJjGp}r*F?NS+;DbajyizuxsIq~#$_7~}+bTvspGyLQE>>?qfBPLQlvRc&Nq{0A z__I0*Vi{@4Yn3A4J({=|ii6K(vuYI31g8krr~1IoFy#R_moo*@s$W1Y%uPtGn7aH4 zj*4pot&1KF=s;sNP^;v&-b`CPX%4I3Nv8`BH-3i`O>}$Eu5ORtfmkVl;DX;RfiPn* z944z>J=ZYylI_jaHI3Sv**Nr0TSi{}t6$z8t(zA4_1t`so3NH>6M3PzQE7UvxzQ%_ zx#k9bSzWWk7{c9pZC(wav7{gk4E)_JGjad&;#4T?JH)93_GG9{+mvf*Rss(!ms?pb zpK~`Xw<)cGo4>gsO+hR*lS4`j(cFtf5F)YJ+dv70pS3$vuP}ib@)f*&qK|3bySgx=>5UW|1(AYh4m0C~FLjv3 zIzfkvV2IDtkOP z7oVXeBweOND}xWa`!ZHR{16E<4Ha4CEfkK{k)5lOb-(EBf=0%h7+_1Va%5YiZQ;U_ z24Si|T^jaFHO00%-wC2z=q!U(w-!S3%j`MJnj#T_fy|~A|d(Vgo3&p(%}}1 za(A}u$^N-dBPaa)gY#ozZ`$SlNV8tO4<_8LR<{`3n59^)dF9?4ex}1@JcL9#h_u;B zR9zxol`TVY-qWDmZ({KMbkkxa4&^Wk>NW8?-Ak#c`Jf(j1T><0Gb;@HB+MqX;@A+M zc23Nq@HfeAAM`Om_%gp+~;qmZy zn|Lg)J*u17mU0n$b-Vgth=wGuy9XVJ(*gJ|Ct)r?i4E=JSKD%!`ZcZvIwkW(U7)I9Lw1&V1+kc3$}%zRMDM29Q>WDY z@64;4>A1omk+PMsy{=wf2K=ww9*5bt2~+NGkybPX4|p7hkR<3w_q3|k1kpDGNtbC% z&jnj2BcHiduRtr>fnOu8N4G_l963^swm5Vd^$)d^*!p^MO!hw!OXw`37)^^zC?-K6 z%r3;h7BOzp%woAO=_oFER#4`MI_$Ymp&Wx2pJkiC_;M8mOOQwHu;t&bxg%3q1kt}bqv;(Qzif!c}b(?-- zb@CM@u(RlW;>5JT{@Rnyvsr)B`k{C``dW{XZ9mDYlI&|BXBNGq2O^gd-OPTSDY`}5 zZ}nCl5S9_H%zmadF6Dqk_@mW&(W#e3Ot)e= z)e>5%*A-Z_ZVRSS<+q=mEFNZFSRDSJV;=(5n33ME9zn*_v3eVal=MlFJgg&l=MPGp@}p9N9sFCUBQ}=3xxnNQv?QrL#gW06JF1pnddz zlv24;ahz2L6=MGf{OH+kF--jE`6iy%J>OsceKZ;5EJ*AGkR-4+2OzU`yg?D5AKDl0 zN)0dQ7O$HBEOZ}c)b$0{+VLGJR{%B7PihRX%{xmvUHcyU(zsX036)Y`yP&)rErJ|sl?-y8w6Lfe z`N941AYeo;C)Eq;2*`M2S6Yd9T?k#7++Q}<*JcexOAnR&dDxCzVz376&|{_-83~rV z@j+${>mBq?6t*%Bwn>KR0Z$+&(I4KcNHgY;k^esr@Y+*1zo1>3w z+S-}mXNqm$nlVI?9qVOqKb;_lM3EFMh92j`HkpoF)o+>N8N{1qI{u9gE2%II(4#=i zvkYM0T(b)zL^V=>x)pZP(WcmOOPfks!9JDEF`^qQ$rT=?QpXG1R~DHZb_7R>7S~t= z%2p7Zp?gzWP;i3!3z!19=PWYO&f!F}qBeX;+{H1;SIi5;JAhthk;F8w)+4N3M#*j* z@->>NVD!Mb$%@;NSKRv?JT!dXHoyd?=6Z06S4j5 z@)qVi3jzsJ(6w;qh9H_=Tj#UC%H9YXO!Irjo1#V&e$IvoFI3VHH#z_N3$Hi2&$g z1JEJw+*5%UkeXToRE@m>X!lhB+Omsgjfv*SM2GaoWPt&5AocJ(D}||2`#eZN<2YF_ z9g_iSa!O(jJEM5om=eI*c_%W0ii=qWNRUk*rCJ^&gcnG2n_m8~Tl5l3s8g0wGpWY& z(FY_-m_Fk~Kd+9fmF|xD=%XpvIq#gtY1!fHqlo6oZ z;!Ly@%WUy62^7Q9v=G6Sq;y3DcoI&Ox+zmFNw#6WfHkhn0}#grjj{fEG(rySPeBd;(Z z1Z_UXX|^$GC}02*{^@j0ts)7$uWh;*?@PF0e?W6~%m%HUPFJ*cCSB1QzM6X4?ua=X zFM@aJ=x|v93z2kDG3vNXqmIiMbzH@$&G+I*}>9=6fM3 z-+q|=Xc?)Zz@LDcRc8s3P4fRspl$~eLh#Y2&5Qrr7~*19|8#v2GHAImW5GoRgWv5G z3$U{4TKnl(+`6(2j5>!EgR3j`s>RwYFu zY3i6sCko$TvtSspYhc&Hjm4W?pARPp2xf(j0rt;=lRVhcgNCHOP+fJeq=KxGt-K(m zcqo<7GJw^dWTm~p0Z0B_Gz=Ch2aP)XKB=($>Rz`gE@)xO&LR%^5zLey@D1pibZ$b{ zKt_Vj6dO-q$+B5+fD@MXRzU?MLppbuu;hciWx(W=dn&w6_{71A3{r|@%D4LugKs+g2+2bn ze6eSZ^>A{A!q&3tu9nU)S=Q1S2Qn*akexsY4Wn31JR04diNeb^WIW5)wnDzfst`t^#uP%ON|QSHdZ(4M&pV~C{;qeJ!^eFpkoItWW)P^BE4et3^8vP59!?n2c zeU+(QvRop2ZaJ669r8HSuBj8;Nv0fwdNmgBg|EN#?-#!Q(Ep$C^@m;sUw6IRfv>yX z?ZDSv?{?tpu6H}|b=SKc_`2)e4t%Wv`u`2SeyEH1(AT7cv#tkyl}T6s=fA@?iq0sJ zMeA{+IK^B>fFxgu;`x{7;Gx*8FwS=dBfbQrr4 zrR3rT5&&(;HV6%+aC)#hA;pO%QC^OqPgw6s_Jgzt-dGvNfu?1`e zII1$a@^bPMWAW5;9N&>l*6)M`oMeow0wEN37-m9CO27($5nd^8L#*j_vreSLMox;} zxSa+M6#3^>MFDt3pCOHN&{w1(*y|my%s{Z`tDdQ7eT5mOzS^U1l+o{i{|?=hYzQe{ z#)#9}IZ$+DO}jBrq0X#+{fXL*U48T$T>XQPl`$-S{p7Ke>p(cTk@ZX z2aV&6%Pk#mufKPU^(uoKV2wj0KarJH>lVs#b&{))zgq~Vk=(`9%G7m3UG>rW_a-n+2eM-BE2{hhTp|~usKztbR0KWu zr(**-Voao+i(l^huw`yJWdQ-M*E9?zXvT(627;oMgM`AY9kuDhPB5$8Vk~x(l52S2 z!k!@{9Cp=DA7M6XAR51#+i5l+YiJP3O>w)0(V-iy#};cPim1Asw)O;Fv8mJoSxicT z9aL>xAk3jN9@ay5XYYETL{axbQYY}a$Eub{o}yX}d}aY7MDo=Nd_)ks$OUr^QDoUA zwDur+mvCMd@ytjNu6X7mmwITAi7UQX=PHY5283|MvzrEATPO~sgfvK%lH{C@Co737 z|MLIR6i5*y2c2$@byK_zRZshad&j^A)@4Ki-@;>d@M4?46%%%Lt&5UBf0f4sn}L?M zBIYv}ZBS4hegY2HlY`tTkg{9OA|(~1Vg>DPYsUbR)UdJBsE{2r&I$qjqFtDghs~rk;>==mdp!~#vP`di1dD6|8 zO)Q$}jgwZt0Y4xX1Tk4;6(m82QYFTk!L^;^TDCK0aQ*-Vh*fwNAfy~4m4jHVD!Y|o z$Kf2LoYz*xN~9FZEi{mBdB-f!uH6X=mgAd}F5B%%Jei z7H70fTu~%CFAibxZ$Z!8x|o%;G>?Hg=hr5S%SFeCM{ZUpY+DL@Oqd}F1Ca?4j$`Ue z4%Ttw2c*nt4TK4ASXYD*51dW{#~>dp23p0Z^&^BKQ*TL_>lKe-geb4rICx=$vmrJ( zOzy%b9({T{f56O2*1n(NKmoX3g}3w75qP$p8jCDuR2r5CHjlwMuPk48o~%s|o~OEL zJ@-E}7whv7ugzxLiWP?|b-oJr6QQ^|G?334McGPCqEg;FifU{=_PZetjIds%=4ybI(_i-D+( zCz=>DI10@#Cl(7r;;;M!#xIXIsUF6Yn64g~Uj0II1s+C1 z`F!wycZ$w~9p%w&JsVQLU!5$>ois8Czc{86P8wO*dD6(j^rVp7RbXVE-c#-#Uhw=Une%N#H_yJ)VLwLYT+DS#EqpBFR#u56B8SJkI#EO@F0#=vfR5C@8Ii)GBiL*UI|X{iMZ zSpyQ`b`!3S6(w#BW1sLY8d5@wtWZ#}GgnX4z1P7cQFqD~7oW;z>>~$@ly#p$S?IiR z+3osRlA~Oen~IMfv9V(`O0=wtIu9LmPnI7YW}k>r+#IE$>%|JpJI6Do${(}&@fb1M zhSC`)He^p2O_$XWql!-*@3d?>-=ry<-m`F`(O!rY?&v!H$PA>m?X5D1KhBd z608;59s?O{4AvpnLL!SjK5#qt_~5chdwkdygR|%ED4F*7P%`%TvbqIrulQ8kkw+k28pG(m%f`gE$=q} zwVI3i7m87K3}zAU>MUs@po@@)+b0kboGdP1WIu-9;T>glBJmno0D>yT(-^G8?IU_6 zQ767G0*GSoNGk>5IW{01IFGLrgWA)R*3LuXr$ul|T~Z_+5?}8Z!Rc**OAm=}DWA6X z22{QiP`#94uG9QiG#B-+25sTtF(bN1Q---BfoTRiGR%e7wZ}T&4bub^*pnt&(6iWb z8#|SOq68>LAQNcWSI`*zt9Cl-6VbGLGz&D%%P<0vU8u~(OF(HBsAy&kH>mLvDYo8w z))FsS6bUa)B;wvPOYXh*tkvv2i#<9~FyZCgE*)yGp$;ym%EU`}NUJJ1-&GfYXVMmHqKfxCemrNLKl*T#YxO>p%7&`C+ zc2KwE+<}=m@UUM47>x3QgsWp7krp8jnO;Yp1$&GjZ{+M?{wOJ!gd-T~w>qfK`MHQR zG6!cTVVc-B`^QMZZ%iPZz}G_I2{D_Yej(0AU8kGi6K8}x757KE?~rx#Vl@1OhoUNN zbNk2EMYLjwMvRkkvbq-iE%!nP|U`DeQ%`;fX_Q>Akisrd->vx5HR#(hAxO zbyEfF`8cw5){7_N{_?%}pFT9#3y@0%0H$1hiRQy15?us7Kc4iFP+W!*ZIvGasB9Ts zCC*{Bhg@NY8>YTG3Ct22UD(|0aWud;L_;_so$6UQuIdD60RJ4lSq1tGAdVpgtNIsE ziYz6l2v564D!vtHUzv8Zu8-|K`?CMor1ehd7F7~}qcLNWW4X7NQ@z_LfA#LYyT|B`6MRg3 z&rjwFG{-?luh@w&;Q+q~yQVEeN5Ub5h8qEwJH{!$0V7^;tPy||$ZVq?jZ30}Hr--< zD1=3r9c9zTxnDJKE?26>iv>1Q1}p2Yarkc)wubg3O-L0sR;M(HLk5LGed z>lZdi)|i12+uI&56!9$)Bbur1p$8fEPL)b7iS>&jH zrVU^=$17^cty-IkOo#Q&q#bgdln0A4s^Z&XFwJ{)D|Me-XCi`Wp-QDKD(`VGJ^66tkahi5u(^~y@Hemc@(x~HNQ9Z@cl@0nLkvp6~U+8|{ zNW@?-U`I`wcwD;(U*@@i&+&!;B%-Gw4ROcVUV4ikL!#wkO~ zrB%bXMQMaekoF@8D*UI}XGm`$A25-0 zKFO&!KrzBxyJs&#aHTdf9GSAHAyhh5Df{o1F;^SZx`JM45if4hOHNTxQV&q=B<+f3QJN{7K#Td;?UhOrys{XbHl2g z*f=Jez_stlGEEftB#9K%fXOUv{s$SWjVOtWA1+%D^A`W^-EumbV>d4WADmwHK$Lvb zd`a|lcOd!Q!;_X23mthJNZDOhhUlq%|kH#rQe0- zVF*y{Ok1NyKOM^q($p~HBGxMIp((kW^7kNjNllva_fU>6;qO5wpo7xQIk8l`Pw;gb z;oW*lZphS$xjZ;Z;pAfo&Od_MVdRGb&A2QT5PD675k~pRfYDW*dznuxT1npzddF@} zNg94}-lRMkScPSQlvAn;ayA4jpun&-*F6$hI#Ov+or*mas1Res=CntGUW}CylVf1k zErdCc+MU0U7Yw`V-0ow+tw0YWZfr)(7^uXI9L{}Y;W8Q88L(ZW76@3~I|WLROJdZ5 zg@Ki|pxJXed(|DP;?W{#NyAaGz(!^!=G#BO&8O2_a*$eI^F z`Es}T8QxT8VNU$aN59UL?WA<^***0JtXlkh3XFsEvjGOewX{?I{FxdV(R)6S%aji$AS zW!1>-ot9Nis#s|>n1+=`TWIOZ18sI%R<*hMytb@bRmz^!SXNt?T2|wmRGAhmW&+D< zEIYbQ7PWTux_1&B0Z!gi{oM9;`|M#jN)bj@MpVnJ_y|GwupPFh7Q=jcl`b+!MUf1s z?Jx;wP?;V{fsHH7;W&vRP3qJNn=FZZh!K{_jWw*F8;sD&%}Pg(bkM91zdj2?1@!B#5~o-=NsQ|`Iby2J;eY!FEVPfZUM zhzf;esC9<;_)=gwkQ3k$TC!1yP)Li_DJjqxUIf{?N;jBZQH zd7S4~fRq+u7GoE4=)8AVrZKqhEWQ*w4|0%KjOg1Uxt~5!ju#pfnEh(V`Py%L%m{|E zEH6UGmQ>1=iValRq-pPbgghnQ&zFKKfptwxcQQEF51RD_roV_jv>e&_&Cu_EIkQOO znX{a%UYn`g)z6U&Iq-`VbDQE_HH=6vHc3?PPrf43*@PWC65E9JdRJpWy;HqRbDccP zGF=8;JYP{6+oL7oQH8{`dYR3PwsMj@Y+_}*`Zzss0WeIqa+p3ZK*6KALGn;1-Y1?G zNopqFYbK`Zpd zIjF-|N~~a6jTJ`AXQ%0a-Dj4JS`rPsH@+-nfP~9bY0Xe@6!~^UIsrH&MvQWXoe%NUxW+K2%6t4z^T;mu)ts)ENQcVA>ng3 zbDIUa0JV9;vSu-W_GwriG#04W0uoVcYp!Gh5QqTV=?DZS7qDY9XXnQ0Z zfXoZt(n=;R)*h+ocvA4BPL9Nit6X6J@$H9e0&IO!@wyEiN~{k|{$vbcw#wLr;LZ%z zZkwD5yhnxdAMl*+KPXsyFx@nro#_SxI*gArHW(oALb?=6T4yUMX&CzH8pk}tJ zhAo4pf(-(~zf%mfE~PH*26K^s_}_|clpx$^N5@_THaoi&wbPBD`l+d%6-^jDZHW{E z+7fc>?%TKB^z^Iyiq#ZIg50?0TUL2 zZc>R>^gQ`ysGXW!(wzHk5hvX&7d#qNt$PWC?%l~P`?x10bGVmnlI>G9>OWZW1XDH3 ziX4_f^Vl>wk#u^y}bS%n^)1)S+J>0I1cdth?VeVh>f zgO8zAM!pudW045KG^3n&t!3Y2?&Mriwdu2V7e-HT^0Xpx$Dh%7!~~B1Njy7}o~`k$ z-8?hD0p8prvJx9&4$=RilvpATiTH4)^iHz86N%d1>roC!x8dYoYW=2_w07 z=UzI9HxMoSh(DR9bO%ubuAx93tg|vPY7zNCzPyTK z2p7tODPjw|&=nQgnaIdA`jN*bS8~jmYW`eB4^0l!G={FFAbljB@3EzWUU)`tkC3W8 zzX%F&&@ioo4~-8}@^ESo2WfmEpGv~ru0cexF-sdNyUA&i2k)K4*($WfCRsk-bmFIv zQr8iR7dX_mzF9h!Vdff916L7#8du>4gU{lhkKW}TkB6_|X8C?e;qnqkTHVZkjubkFQeK^m~ zPP%)15!1ccpnP{Tm7Ag5;wk{X$1kbxwtVZ8Ti9t!_;Q@shAmFf+aE*DoR1 z=_NMI>C0jLa@f2Ccc(8$^-Gk)^d-l=q?g!vSP6DWgD^c<2z;?<*1i(%X?+$@Ik|=LiEGtCGz>&$J^2qsE zhpfEI1-c%r16_g8lwg+2XGL5%Tb<8Nc7`0d&}6lX*shet%jgftRm-r}NCXKEppd|p zNdpECsVOAgAW~K3y z$h6k1Jd~`&2PKw>;ztN5B!WY!@3nWL^#r$&M`f zX`^=-1F=CQ8MoRdJP!SX4eY3g{bV}cSR`!@n&k!O51q;oI$cu>d%RY6BM^qL3RO~6 z!!t`bhxyi-h1`XHCf)4HVR#^ki~F*mooMC^U%K+F$M9IjiNM8SIh0fA$C$^v58h=c zm7@Q6VFTOUhha9MdT9>oCvOMwJ0OU*P{vlMP=W`2^7sOl7IYz{i^KL$t^-Cl zjA0=|VPmJ`Z_NaI=OLkh7HGHZ#%43Tuu8+{zbm@{;5JML$FwsnEX(OLzQVFfux(Dq z?MBFukdR1qfhyyt4j2ZHF-l^Cks0;@_|lRAR($6FKJ%NzQAhL%)3E82=cZ5iOr(fy zKD~<2Vkc?4dwT-1>&tmPk*U#f#VW8k!vPN~R&0s@^tttZs;PJIM4NOu#W_09{t@g* zu5GRewu!5H$MHhUg*%QH|GFF$q4bB}rtK}$HjT6AL{{SB2*uEwlj-xKsU_`iwwAQ3 zdGW8q*Q*waDMfApJXNbwKw13Z3E{u0tFZx!Yu4)k7~@{Rh359BR=xeH&oc}OJnPZ< zFwym<{Z@ER`=dql-Te-<1GO?%PU>=d`sHlwhV!R7#KTmF(nybniT1`sEW0DQ6ZcT$ z*a0kiNuxZ>au&7K29i4<4QM(pSB{st#tGM zW$#_!^s4H6?|pf0GtV>069^hIvFv%8wn+tv=g<-;HQCbj zfRXkDG9eJ-g%*S=;B6ArP$ezY3#dQ>-Vjjng2hTT7B6VMM9@ktlK1=j|JUBner6_t zcxn5-?_o60-fOMBuK)F4|N9EDlM0MvC>L!VKxlG&#hGE=V3g<{yIA>JQAIeH)j-e8 zqHDku2M*zf%#vVs_#wm*nS`X`dSI-@^_Zdi3YLVt<$$9U!FoQrmq>KX(_)s1pDx^s zxoH&XE%p)Vo!&6LL9HN>vaplrwxW8}H@h%=7lFQc{eY1kGz|v_3$ACLF+A-1RE>WmK$?nvR70I^O>HQ?$ zYvo<$Wk zhM*0=7nNhFm+o=@1!c-8gv`PbM8PyrR|44RB6<9Bj2giR%sf>|l`}UGT>`V7(ggmr zg8LL{+zZO?h{I^EveLd;FGG?Dqjg!?bW=mL40k%cd5fK4hp;2hpM+1uAfoJkC3oPV|zdQ+Ya*^MBd@ zcorpp)Bd9-QM=}sKXkla_g%;9S@|LfSAj8(0QDVtCE%v`vN9Bb0BMS*r|qCiNd##& zP~$)9#r!c26hG>Cz}k(zk|&K~>D5Kb>EtW5JfvCBdcsJt@0qhPW{X}6oNQ9c$n|4G z)SQYfVu6QT!vjGJ^<(8=ZH)5(n?qW>$kcNZ;hXlys}gI@>LC@OCZ?J0TDIwRRBMY` zdw3}`Gh$`Jw_Yz|kmK!Ms~p{#lt$*6nYMQgC$00$J`(IiBqoNA-dlfJbW^WoDovJN zzLb?`1hnIH=B8eHZY32?9???a)rsnBi}=2Q_u6yO;IiY2uUhB!Qfi{u3y1+!q^h-Z z`4&W6B!z-Z$@2&#RHT}VXH#{=TVKGcV#f1qLq_TOB7N$(j`nIhk?A+|RNvWKfG8 zR56i*Ra;TkOhpY@mhEz0Qp=u5I99RvnL4`My@(2s5T{FewdW~Ewr`0mH`?~eYt%L;oom@U!-jX#V#25QL~`Fy z_nGmL2-7wp!uZ@?ZHtMU^!jHzdkZDS?cxNowZB-?nYvo8omHiSqoKKNzF;KuzeE3_ zc*+*1acgIViTd%RtRuM!hF19uleI{%CL-smB#lX7$oY6UzZgX@g3+0n1D0Q|bb&h? zkGl6G4B#XamIilSz+A>#JsFwS%Jgz1{`_1V3nrhl>)bKTb$afYWp0br@XB-=Us-^s zoe{mTldoZS@r-@KEzuOCUW2j+JFa!2tXSq@SttO+R0EYj^L#Ni)=@p@s0-URdZlM_ z9&!RWtWaHklTK-?VDDfB!=ilk{Yx2})xg+zI(=8s#IRi|vod|25B`N}Wp0^OR>{-7 z%xUwMfjU(~Yx~{A9+we3Og}sMQ=Vb4I?SANs^F+Dm>d>_GE}|iYtGt*XvrpB^(fjb zKiT+sTQ+9Nb9d=wiT+tp#Sj}ejwc(LuVT4aVZLjS!oM#VJvSTL1_tKUH-(h^8(Xy-gedJ1!mhDma~Q`e1P)sSC90Hu~4sRjaWNH2E`bW;0BxI>a4U^5VY3sBM54g@5gdQhoPN{GHS08T$IfMUIe^iRyn49<%nk(@eA5 zu-Tn{7{fZ7Ka8;YbMUzz&YInUIXIMDn<4w)pfjWrVTP=*&CoB02^to0@bj6VZ+-01 zC#YuggW!VoylHy@eFO7z!M_}Aehwwq=Epub==`Wem>(-_^Yg?oKSMvi`MKz}N1Y!S zJJCk{E&gF`V*wRA6ZDj9%44VGnZJh`I;Vw47mAHV%P_s#$mx7$di7Mk7c{Hv>GOFp z23ap97PYJbeTuFW6JV>ujXacm_-l;-z1#@ehu$0a%~~ByIu4RMu(ET$Wfvdh+kt&C z_^qw1B^`8SRU)jc6}FXqFCqZL4afcbmiFOm9(`$D_s`VArb4fcCHZC#-6W|XnjHn{ zKmo+mFWx{T`#UywPmH*4g7?~nd?Cipp2SVZB({u?>ynqmQ~3|=QMe8|H<{$nRu+8n%9wjx#4rDZl!aDxze8N+kTo#B z{H?f^4|Cb<2=81cOQ&+v@$D!LIRU?6lak{`5X{73D`#Re{sNa`=&!cV&XCJunh3Xv z60-jeO_Z-Z#TY}>BjOdXm1*i$1`vCOaiFOgrA6mc)GMHG!{RWbn;b{S7R@19D>F@v znFGXch7-igSV(Lx{ZY+hFrz^YWfwHa)|CmAv(B&Kb(Y06!a%7*41JzqOxbHPwen1e z^IsEeX&aI43Ru3CB9YU2@S=|Z=qK6=-Uza}8LdpY3U<48p0c5jXsZ2sT;Krx6yZR3tUhVQ2wX$Bo!y(Si(wLW1=-NypEN z#kmrlCKC`8k2=<6^_G8N3jx~oQkU0@q|eN63|Sz#wfIlW;+`?Z{0d(RU=3+bo3`_w zi_R}%V<{)5GvG#mRwA3mE?H}-H&$o9+3vldCzG`B*0rmT$yIKU~Y7eT#hloSDbe_)!qKsPkdign4< zs8aRPPF%L*P*kmzVX3~brYx4m=R&|~_JhE{kUA8pjt^6Xuq7gmospx}ri}>AF1=x% zA;+BP2Kz9Jr5aa71ibcrtk&A^uQ`*l3f&t_3YbFDI#yGyr*b(Gcy_03jwMr;Ld`rY zc;I3`y=Szyl#WO(m&5vMo3M2l1{p8R*(nQrNc)9NsQQJcB+!WrlHERF4X~e^pgA? zZ{FNBnAAny5WKwN@Z4+sR-|c=+lIuT>UFwO!Am;DbZ`;klurY;v#h*kz(&JEn33hk z+lqmyQ=u1Jq&;gW8YWB2kSe3mQq!^~25pZ-cl{wH<&dZh1moYc4%TmoY>h_vK6GC= z$QH5E>i}kadvuUD>%JQkt+ISjk!?>lYozk7nw)LpLg&xpT_ccxbVY5x&YyE(MbPPl3EBi`X}TMx#<>%SfaVnz+q`-KQu# zN{8V5*sJ*-8j|$6wUmLQ-AhP$2BWn03z8J>uX1ptRxmN0`Z~w`{hG zs7AVz0FV$8e)ZD3>%RLDHPKq&XRoG|Mib#{t4M2Gr1+l!2n4ZTMxFRSlmp zm9Ii&5iv+S1BJ}vDU5=K&-7&GCK38oEGoYFYV@*dmSJX0Znj z&#V=yt9u6b1gsJbf?mcGu&W6Pgw@oiO;6C|sN1$7`ZJ@YWLp!ANtoE~bAZN`c-u&m zD-^-cVx6!S!YTp_HnUb-TU#^9n8R|LG9Ork7`OF;!ahTXjV>(`zqpL^UAv6BGq!G* zECk!EF?d*@?zbVM-xIBZi7RS9IR=uY5HZvs9V(#6lid(3?8f$D)oDqlB29jS;GZlC zb%adN1lq>$AvKidl22s95pHs#fQ$##=*k3Ji8;+%Ys9}%^D9uesx$o|3%pann@MC9 ztXn8DLsvW2jOmuyfofF9*bplUQSfX2%Z^-SZV;8x9Ddn#qV$uha^BQyDo}M)Ks{2S zvkLh;KUChVp5#~YvQoy1OUQX+@xr|d`K85+yd_^#yqG~-ocpER)|;c|>&;OEz2WVE zz1dRK{CJvq_}0)Hb>IiZi#qV_;zdH|9Fo&&B+&f=!zMQWU@IX?H$gxt<7mljj}X<$LJYoQSO`gd|HxVqJGT^jonwFguF|<`BGJOdU8|Qz!f_Eg6AoeXNYfS5r)WiI*;^ z#luFxXecbE{Hyq>acK)vkgNsEU_dX!Mp?~4q6%_=5kW~)_4Re^O-5$f%BTjlldAp8 z$R|0FJLd!Tq@$adj>fe?@i;vyyqfXL-^xs;cve4%CXm@1u` zBINZehkF& zS^!M?!7MgilFm=oDEh^zQ=S#&7=4oNO`x(~s<{BoZ=|(g!Ff}pcN1Wfz z1uQuziV5gB9il1kUJ@5avVILER4lK|w}!7x8ETeSHKvvXqS>8*c9i}CNp>)hB3x3m zqkR=q`_EV-EKaq?j51FJ6=FEX(D`{G4d>HIBUijxWMJ3zpJ&sXORhs2{JriKEyzivyN~Haa#E=fpVK$nH9ER2Q|vpfwYE) zRCpTNPzc6`g;Z#YFl-HkRA_~e3Ua%mLsr6`8lnzcm52#C?<&750peDl;n^U!yE3*QV$TSrP~r?zk{d(G%2 zv2_Wa3rJ0DzC~CY!A@F-Cv755e{%&E)!lwQL9?7AE#zFvs|T`{U9RVSY}Dz`O+m1zW&a8um7r&Bro8b75W+f z%2)sD!OwsD3pajSIShxSAKw0nEq{N_7q5R%Ng60R0E0aV*NrmiK8I8}8lK9W_~q-d z(jbS%OpdT*jG_HTvKCT<#MRJ3{LmGdZK+1AeV}$^zO;Jl1w8_o)rn8WJ3-g#L^D(P zG`P?#-q?#RhFasoUP~op_8BQ0TYO=UU~I}9-ydISU$yiVaxn@J^{ginp-GNcKobgq zMw;>!AdTjW%zl&oj|uWN`^&Q7>X&L%4O)-XvnXqBq;~azXWEG9B##%iVd}u!j7kW6 zt?d=g52TQgmJo;FD0i{q%!Br(6useW?LiaxJ+D$ph%m$wOZ0rWO_*IMjA9vnYcEas zjk+W&SJ(xyPPk3jX-jKO^%eK!N)wWlEtx%I{|;ellvuy0R%5W5!5_2l5DpDWCNaA= z?$8Xt%8ZnaAZrP2?TXy6AExVvKbSB!Z zOr;}SSSsONp)RbG?P_A--NCDgrSs9OQZ7tnWt`zcUHeLdH;R}ozB!jyaXo9wwOYF3kcW(96@?wX~OMJqU#BQ2K9>QFnrXtU&N0pDk{-~ z0-FV$UrdF7L%ebm&HmH5UqiA)ti5u4JVzzx1v=On$yAnNu7Vj%zH9^15fHJXJnt0H z5t2pqs7bh+(7U3a;s?{BNgj(Po1@|^?IWpa^)V+z_!xz)Jykx29oEO(d_sR)bSiwr zsY*v%qm0D-t5gx>seP_sNB)E_12HCaBiESeP#9lxRKicKhHB2lcn?oyZL2@>JOPQi z5MJd!CMKihxl7tN3}9gBZCOAH1KW?Chr+-di?cDXl4fCG=HFe4=3roQW@BKn!mJV< z2gzbQZHSlE%|C^nT!>dJIM{+8A>Nu0FOn1?URF?umw((-%n>hBXo$B}V#Oh%T@u++ z*sLkAuVB9+;Z4~gl=#mx9r5zjkiJ4pWq44C6`So6@zO+76~J>^1%{Z5+WSrRKjsK< z#M}R}Y&av%rDrxSoCoo?Du|boCF1=;8V`w03NrpQM~8RMC!wfNQ40Z=6xCKBKx#Y= zH7WJ#hNF30-uI@0j56;gw#>?8l?&WOI5BBK1YYr`s&a%dNSa#b;7Wok1LXKlz9`ZH zqMs8jVp=wuB}(O@I%vq1naeBW-AN^RcU(!{5hq^VpkJuSkiuIdrj_*J=-`zhD-mdW zHF<*YBws3icd><}Xmk^X55eJb#wa#maJ`c-}&yh#MZ8TdW&mW4lQz ze-G38Q_;exdVij@@cy*W+Uq5!}jDp}7RPBBh5bJ4YEwKyLuU4(1l zrkjsUEjX+eSN=y%p+vslI&r zm<*FFOq0wTGWL?dFjn4a@?^EA=cy%odZAk9X+`o<^$64_R>W|me*7W;;RW^Ql?bTL zF*E>PXewq@50n5yJ&N^(CKz`Eb0%vc3i}6`Hk7%-U1UL?nIm=3xMnRNb==R?Q&EMEyU7-}M7Dx! zD>xNkD%?|tj!$Ln?EcAmxk}dm&xDaJm94y(^@>R9nT{|X%LC$rR z67d&7!$4_1{iOgh&?7yI=bv9olFXvwoXv{(J%8PuN?6Vl`&fbh)8YoElk|eAW^n`4 zYTk8ofeY&`guwGG>9~+|mqG%ZW=Tg^OFi9^2Ci;eOHJUX2QM_a{@N+x43Gk0xY-_3`AnN{Yv8 z8^@PD7hNNFggRg5-|j!^^xhEMdpmz*A-5kfc1m#9tpE2T)y>`0CJi6TKlBQ@0;F^# z8=Bg+ZEj@?Pak8ksK5ueES*SJU z&vKJ*YDDQR^+v%DV1=` ze6yk^wHaUt1(ziNo=4go7YIbMZ(Hlvrr6ptlNNGNv>51i0}I<8WY zXGk1CXy`HcC#1yMhf0Bu@G>$ZVb1-sP?kZ4D!~*1-)>~JW}qOU7QxWPh-#YjONuNJ zcr_DDe823bb#@W<_K0;Lmt;Vr&%uOP0SJM)Nll)f4Aly$p2>S0`$I&gR-f>g)%wsm&h9h1+V?ct@}&4^W{9l6o-DlAxJH>MRsJ0;QtY7Q+e>xTjk6xsItYh!&ii z?+T_Th{i-MBi*V=`b1r3W5X=EZ(1@IL3f$RmPw_=X!~wy1HqEA7cI|5+P6L!D5nDD zG>T&8Inmj&B1;M~G$X~y&{ZVPK$~LIg|8^d8DuEuBTq+9iUK7KszX!CaRlB>!eHPr zLga`JgtUgklt~=5&Ay1nsDdGfa1s?^f$-O6r-p$caG(hbSP&N$)Jb9HL*NzQSbIM( z1qf=*wef)a#Q1h`GvA$PlxMqjb z`8r)`s0q>O%vg@@#q^DbRj_=-?WGxJRn5SJg}VyL1(QK(+bO<8`!&$Dm`Kg0Ya!}A z{spU>xP{*%37ag@oUF}H%kOm=|5W}8g!`EHu=ZHpcA7DR&`U;rMkThHAshM}p!@g%#*Qh=Et*$IWHMw$adrbQuAx-Zi{ zWyu6P#Y$RHW|_@pEun8nQHfB6--{#lIPqX8&kjOq((i`cQfQgsp&SWalg8J;GIWjI z)P0#2Qq&QYQ2Y7;v0$>6Kh)|#5dxdstji6T0N6khtA8l0ow&M^r#sGt0;`+}g^p5% zn7T9k433w<7_Hx}$odYAu`6YL%h;EkT1!mHCOk$9rL3>xvc8sNeWjpJ^G_)*bp+m7 zkpsjFD+PU^%D$ivL2uZ*2Nd)*sFvf~idE=V-&_?!@iDN5rO@wuDbk?9Qd={v+nhf( z0{lU%5p_Cs5Nt=V7Df42{^74ah!MD8ogSM<*UBgw-*@XjzVV}f^AFd5Hxh9e<*v(bc+kR0M&cz5JLgS8VOxps+fMN`(w1GEypl^RNxE;MleXFl=9=Ek}rlCen7-G7EFyqpC42hIQ;MXdPE`3#A&JQ!xo$Dvd)WGFh3 z51r5h_Xyb2eD8Hwg%Mp444>xr6fd28b$Jn!ozFV7in}gTVW!lWHKam%f`QXjY}%7z z@6cX}H^oHMwLjbzXc&OGGF0V9Z|Qo_qBAm`PvD}?7?Xr)g*l+`Kzs@zG~4bO!eftp zUkLv}ku+W?1Xd)+**Qg;hi1bpK`lz+kL`l-h5iU)XqruAl~D*)JjR%6b~Yrpa&V?V!i=}x?r-wkb&_= zR_qjr8}OL0k7}1sN}MGW-HR9m4=WgIkZ4sJr;061dZ)Qqm3y zY?5|KFEahJ%sfSTSVGQ%S{&6Pk%lr0O*oDO^%xBlJuoU<6mLHqC9TP(@Bm%1$*Uol z_5KLx^CzFoNLVzxn3(RFS3Y$=fGI!VL-0lljk`3mBvkAYRPG+MbAJe&srP}+pLP%qpXJW1>pKe$fL_(_h z&4=0ovJ9(%s@a&0b$LU3v!SzX6+d?(5Y(o({;cr+EHArp98Xa4*V--VC+Wpxc9+}x zYTg^OWp+xMC9_k~ESa5>X36Xb`yOO=#b6pPv%}Rl$m}>Z0_woCDxeddg3OMmip)+c zF0q=?=4o!eYlc+p+%XOY#3}#@%2N3U2&IAoNo@!PBZGO1#H54UNNL{f0;DE-}hnZdQVxStZy<{SvIEF0L2xU(_Q! zX@>nAE({!+*KJd)r#5OnG*bqZz@2JvXMw;jYZAv9xxMP@-( z(Li~X^^h45#u>&TNMHxAvL5PRWsNkJf=~?LFScUVd`T}FMdHE});L*fdp1NNn27CMin^8Xv7=nP8im*>oDS*?VJ+CY(hX|oXd1PENXL}UQKod$352$_Y;g$WyUd7tX)4w5 zVko;l@iM19&eo1Mr1qfciuQDp1b`O;$rSF=2nSc|Aq~@)z?a)+z~es)-?m_R0$N3I zE$$J)7f{rGs;Tc4dZ55a942<)v7x+vr%X(5C<n+`M2J`7dw>tve+8jLpV`GiR?Mi|f??bip3Gasg?aM2 zYEB^^M>Ze*UawskhnYW+a|2XigW$KYPm{%!S6Zp6<5hJaRH&+`D9VVxh!2o@HWbX} zSXgb!qh3x)<>|Do%h*mYSY&BD==-yoc*F!1R;jO7_QEKPH^$A<_Sj6{NR5r{w@bU z_#qjte!a){7ISOyzU}=#=-?N<2TG#g$aPQz1d6ka6enSb{8$_P8TO7Kl{M;UvOPjc}^sWSRPLW}b$? zHx%&FtS-`9M>RTtp42RASZxT1kxv4Um^ZVEfIBRV1yIA8Su_$CT+mQWZmGBjf_%mZ z=4P&_h~Ikzk*~)IWIRQHftfcV(v>jyqB`kd^~`MlU-nkp3O)2^#B83be>TSft~_U&JT z9kb3V6g@z<1FNefQ;*w0LAyt?VP^>-w?QikR2q0T&QSbj8DDF!aB8s5I87_0k)W6C zUP1w>sH~bEpv&Bnl_`ABsOvD%)^#@4K-bB(u7{3Wcup7Lh-way{%ufbEc905|#APn5t-TFCj5mHfi(k9MMfC+ERrv|sI<<3daa)ga2t5H^5)s=i9IgbEZ%^# ziyjht5H0l7thwGV)Yj(;CPBqKqCqyFe>RgbdO3%i_=LQB3SKk3={Y7qD5_Fjy^F5b z3^P@ZA?4EU(qIVj#2BH|1kIcTqL-1rX%6f8Lqt^)%J05};pa1Nfh+jD(g}imv0fhH zAG1)S@wANS;RiR{1!D&DFYplL?e8b^FzS5SI-QB*=iIFIJnnB2htoLsxt6AY(IoTl z3kV}h79|L?riXKTjdQcc>AZr2PC>R07SRQJj5U8UPHW6LGhryh&RwoPoP(t^`S{S24&O18$>*_$`a$6o8v1_icEip^Hto8(YBZd)UV7{QXT0N0)7iMfTdPt z!xk`4AaYBOiM-{R!f}}{e$Mc(2=2b7Yaq1W&hMS7z< zve!%s?YXqVu0794oB@>4o-e2N1ZkH9$0FGI2h;T{5@~5f6CmqXH&GQM42tk#gr7GE z3{L5g8~tIpoH@0yMrK7)_D2rzIqN3a+p-a7xA1W6*d0~@{ms6aS75%X;CCKh3Z~yktcaL$z;OpC`uU#dC;1` zb$_+xQEO5FoZS4*)goJ@=ocGF_J`0!1M*Y}jt69wYbjEz3<3o-aF*Zxx7PIPVh}5e zK@e3gNIRA(_D$X(7$>(4$#}Qm!yGEXR2_#@U_k0Ea|>!;78pasBXxF=VMrlLt-Ws~ zLy!pUnQz3&;sGFP{1zsBe%S{7TbK|pNWhf{YnZIO!wfJUGsH)vk0jXm30jvtpDnSN zl=`6jdxa&{s`Bs5lIDoSS=?JC5=R{CqOEE-kZDuk0vm zROlXR=pLZ(qZZCB*}r5@EF8%~avC3^TeGyX+T)^P8-Nc4WRWB^ zkJ<$o$S?m_EHW)pXckGn&kmzkVgMPMRvJ`kmTtbQQOX$MV3}ZC=hdjJ)ni<)yyLSD zy{0)iZeA-7OZ}s{KaUeB-SCQaOsP@+z$?=(?OH6vppn|qPBO#QXb`GWu_`kk2{IPS zgY!MARsVRc8jaQ3epT2R|H0}Kn~G9oavym2;35+U+`CGV3B(rm&DZ`%icI96;35-E zyNgVOh+Jf%^Npo4Ie>2vvT81s?yEpvQ&|efQb302IDMJ`y@s4rkx-XJngd9dB!4%f zZf%%?&8QD3tqO#x9l|t9U{x0&a&x!@R`vYGkNfO{2V`z%?Jp;thL7V7mgM4~rsBn> zeqZ1%)T>#hO5}AvKw=2R1QI=3zGqTTnKmzVKa8t06;c`nXY|BIESol zRNR?cF5r8y20?t=|HR1|a8bW@kiJW=>5(b~vssXl1AXkFfvMXrD;>j*7_y#k75Ra$ zMIE-K+|c)8IrN10JTbx|hR zuT3d34}=})O8=lvvRJOHDm)S1MMOihbid*t4yY6sl6H~Aj_Jy!BxSJ%|1wI3^$^!E z-+ByJX6!)gQQYrZuE*H$zt<`NIb4*YRS0|ttANSPoK?VBnmJ|-kdR2z&B+HdSzJfY zJlbg!wJ#ovmjw&l7|KXSA^9GO0F4T&^|-f<=`RI(&qTBf0Z^uf7(r-DP*+SN z0BCN=>PqPJ6XemKSgH14Vrq#agNZdu#PqAEPoLK<@vyZmbi2|zIGL_RA z$mv*)ER-d*Qh>%Z$1ev=UdtAU@U3y37U;#d6`B@A$tK<+D0?&IWc2;T=2Zaa1GS8> zMPCK=Nx)c~C$wfF>0#a2+r>~8zK#HvLL5fp4egW(`-YW_!31IZ&K8(NPt^Wvy(%sq~8<=3J*ui)m*l`P!!|yu03{KpQ;sWJm|gs}ZL@Vs(d6g0o2% z^_TAHwTU;T$zbwQra^;k7sW8x?-wJsSXpjiS&qtdK?IfMT*kye+x8E*RTE_sC|C&w%h?k4FeT-@L0{wXDSyK~SM@!D^$aIm3w5Y)$7-#@8sP+QL>J=bs zX^vPAgB@nkfUIS6r!Nf1B>r+BQ@~oI-1|VrHwI+(jaLSc*o7`egRh2RFve=o7+|!a<=SFtz9-fm8xlc_z0qDe z`YQ07YqLOpMutOV%5+S4k8r$ZSj&@LPhiYOzj&T;(=Qb{kjnfU=`ncJ8e=$I1_>F% zmX9^K#cWa5t2d-@wvs+hi*#92B?4XdCtM$9>6>WqrP z42fG5T-g1;5^@tBSQ}9H|61ogdN0wPbY-vIDoI0nVzB_X4P#tFS$waQGEgv-r&Nf@ z;8f2D!4s_lK4T(IjARW$o{Efw@8=5?tRa^=b_Rn;qNh&Ve9+B9n2Jqvra~dCrC(`f zLk89JO@pvE`RZGXk%nn7Bz3^STX_g@A3V2n7K0aV@xfc3ic|-$4IHjJmMpn4#?HZ( z+n`?i;TZ_Z!g9BZrhQjAefLR#Q%*+(lL7PysB-Ui^G zb&E0DF+(0Cb~fTgx|IbU7$d;Idw?c?VlaRw`Wqe0HUl+V|Tj98lgrE9XFaLwW3LpMwskPY2drzYtKu6-u(AbBH ztxD8(-|AMaW+lVyLp!yEaRxCoXM+#*H#p@FxWUOg;07NW7`q_@8#^8MRTpXz5QNtX z5Cp6@KM))U>&*rN!+9kTh^RB1*9QXI?CHQn7!V9#x(W~&rlWiTJAF)N{I`I>FrDD) zu>nCb5dz@;L`bx9xSy4ag$a>of&nW&qUJ55tzy11 z7cZSFk+}U}5(yjcim`=#iNu2ZAQA~ARUP`j&?OS^5mo6d+r%XjWCw{vm+O7mXh9m$ z(%}uhsa2&BI>wPkC~^Wnf;-bqaxI=v6ReZau!2m~Sh6N+ZC1aA1&@g&hLsARB-BU| zR!4yqTr7dFSi#6=Ln1N?Na=*W3$a8!|4KzHQ9lbrO=b{FbOtgzAv1_2 zMg}rRLS_(4JYgX72_Z9xC6*0jE(@7KEHOHeIT|v9SYqiw=F*TE#1cmiWF8qZgIHq8 zK<1K=8N?EgAIN-s$P8kM#|>mYE@TF=#1R9TM}*AOg$s)ZG8c!;AeK0MAoK8$8N?Ec z1~M0gOobflG_!XY}KjSlx+ zbVB@MBd{oHOL$=@aEp?KAd-*`kO?H3aD*AxF{xM1D^k*UMNT>RY?U`&QI{z>uP9WY zDw};?k#CGwv~RpJ@rpxmVQ@pjaZF?_a6|7kZb+u#Ox2sXa8%q77k$gN4^e?|ysWmI z8-l9}+z?NFZm3_J%dyvi`JNDxP&k!%{2SEZ2# zr-AjbX^^ABuqmjVP#&p*055$I;Ke}zqceek6UsJpnlctaFwg_zBc3cqUeIYEjS(NY zRVvVMGPyng03!kbPUt=Wj1&N1X>L&px-IR(B#q9+$yz^qb-71EJx0gH74Z})tNK=PJj4( zG|%wMZ;{ey^$#!yopKKR18p|(RUE-;J9ZZN{{X(@zWD(^;J!J_&*{_$e8+nw*mJqo zY_Okq@mY_9!v4V)-`4VAi{IY>#cGFLV6W|-9j%;~&Jl6S29AiQz!9}djtFYI!V$sd z2=~FZEa^2$jtJ*HaYV37oDI$QdDoc5 z5pgV-O&S!0b3{f7cr4(8BU+d({24f+1=+B1L|;j`>eB9V>>tkB(UI6LOdSe~PH~9f zxnvjScjxt5gd07L0|X)0P6?+?c}jR)V^tayg;kN9+E^7L4v-)=v8GBnx!k9Z1234! zW$bkc9Yqd6H6>>Ah!&nxUkXX*=5q7~6n4|jPj(S(dkeS{>c%jHtAnxX* z!N?1umlCIr()g;&YtBp?P&&{ZK}HQbwPeh1>QG)r5o~FedG$o958ufcMH2tJ?%WLj zFH(aUME^w{L`Gp6vzp%ruDhpYjZ6cQahib{>u5FSKmN47E-DxKXQNOvl)w@(l#oFo zqf>urfp)13WlzyR4o%gfHUSu#*FrGeDCvZ$A$M0$0Rvv1yOBlgGz2UV$1zOl}-AU(V7ocf)yeibYpEWhF>ek zuzIOjb!=N`E1y390>}!cxYyJ!e)VNn-xZzJYfWXX^`3{~YqFBloWjx{dHd$`FE}Us z&_A#WBOr_}+lvPw7L+2k#lJvZ0aGZCv z*TjP+Vwhkzj2j{A=^>Z2v5IVOt)hvE>}CbI!9LY@t(=_Y%WQ`D-7{T?l;QSV+iB|2 z@gs@A7;PD6Y}+oL*)tuV$EK%=WnY8QDlnG&fPMu z`LQ}SZ6P~)PHk-plFe#=zB5lZaIal9ybh}}EP(9t92^BsH49A9)AG8Q?2Y)KI2{oxQc~_dw}XQV(P`cM4y3oD?fkNL zmk}<4AF@PWQTr!JY$07rGj0rC^V|NhZ#iQg?~2zQbvMTb+}Mh)D(<%9`I*{aEX~Sf zq6}+%QW@5m==W8@l+3M)>cO^P?N5#2(*NDMAXBz-F*KcBlxs8 z+xNdce$1<64vi8Hcm73N?Yf~@q5<>$=MX$sOD-a@HQz9zv4HGgj!`fSC5l4ZPZ*y9OVzQPjWMd7b(D9xnpwE09RpW9bxJ! z&js)WTUK}pBnFA5gtD|!uxmz54+vWL4fe5pfdOC{F>~M(nL#9?R|ec#Xo5yr`9)SG z5|e(r1{bs11tkOXAP|rEk;t$Rtw7Z@A0umZUER%Z-Gwo}TIjxnAqqt!u@O0@BKiAo zFd$UPavCUOdDkfqV5;V^;nbWq8^0^4hW7InY&4NIN!g7(4MI9ryYcRUZaBV=@^8Eb z5HWJMY+h3&^+6U9#DlB065Yzl;>IM!`D?1dIW%7$<+ge&r+3~Q2@H zVU9^C!))lt5-L#&vW&77DYAd|J2`ue(mh6gO|y3q$4>W;bog8`1KO#VW&fnOMsw6j zUY1=`U0kDyJW3u7bX{>Td1H(ME%o_oCTT?!{buxdUbgeX@pgP9f14|c7oo*ViWlw7 zxx39wULc!ConNW!yx10~{Y4!q`H`IQz|rTpy|5QEcO!}bsiiUxl+UxipyX&B-X_Y0 zI5|jedeB@9CJyo~783``?RTYpHl!$V_lTZ*GVoeE1$rM#3kpDbY@@RhKL8*O9`lY7_I#pI&u??celKbSSS z7{(tYcK~wdd^<3?hmvcPYabkRa#bQst`)Y)y($TlyYlBZxgYz;qfhR;z}n}T11MPA z97FQ=Jj6+2XPM%(32SrQ31@3ViG~qgly_DLWa!>m@PNYAn)P~#tDS8#Y$cRUN&NDK z`YJJTpzOv!w|D0^zkKh%e)l16CrrnGXm7l-x{@b>H^()c2Fdqz~HaLu$hCy0&7`1VRQ4=vYn|i9ysCCETdy}{|+n)Y< zX|HFm)>g1LF$$eJDQ@H35^l{iw0?R>xPyOp)!{ zYlwE^jh?B-y6_5xcx=%`E@_A$uL!AN8rz2Es)BfHoM1GK-B zF;&7|6p3j6@PX6*mkiMUDx&aBRpOk*5+`6Bz|Rl`EYS2X_9$SY?;k@HFs&@-TDh5d znnmc(x0z>yYK7cL9aKM=B=M$L)S!6SGFD=TUV#))#N@h*g0ocAaUJxM$A$oj4%jVF z40m}I5yFB~D7lLb#WbFnF6l>I(;$@6Yu*GOUR>tzzn%w^)2#YCTU75NIHRxeMh4wJnjD#{&>rTf1Br$CfxYwy`*pO}C z1TqarS5Wnzj%;J7A7n_BO4jO~ zeJ+V_B>8}bXi91pR2(>!;3Cax@~ZGvGW4cgePv{l;gwMf)ZkwM2d(3y68RD9|eyJXez(U3hw$BRa`iKX9R6AtWsqN@F+1X2SW={$QsznDq1+af-c zn9Hzq&{U14m?ra<$&)daJ&G43_btN7FXi!9v-E%V(y0xQe+(lgM#odmYD>bY*an3! zFLFL$Tv0ZHd#phqyG2WD6D_uYH_g5#aKM)~Q%rW`a>?3cEt3P&g+;w++H=@fwlkq-I^8}b@)eE6{2LuM{1G6Hafv7&RmqAZZH#+=38 z6^L#F1ZRG!)%&M?E1zra+%NzDX4U}O4<#NV6>S2N6Lo#?k3JG&yb-0uyp6&7@jy6j zfFuOd&Y4sWhF&~Er;B(8F}%_EkM4T=8?WDW#rqXnob@S+Q9cAg0OqOYdmsMmcUh3{ z+N7Ge@BUZ;zL_w_Zk(48k-<)7M+0X0JO6_1Y!ao{NUmOll0bMMZX|?~2$YREPsaI& z@oJ^(0@K)BTe*x#auVJEtI8l$PWxR!A`HsaIeQcMJ%Z%JY8KZaF-Qm* zAq`6i2SHy=&2X`#R_R7{{Zu>R8C*Wk{UdeBGyggsqk8_Zzu-s@NwLHNN&-|ulH?0u zy(gy9-!K?^VwiLa=q6eWuxVnOgM_^CSGlkh1qBlT&$fQn2X zNwCNdM$Rv`6=Iza#}m618tk2CupF zHZya&MKz$^gAjxpSwN6A0ULo_m=nxYY-q8zk#B;uP=g6FiohmmKd^~RPdu=Rwg(bI zyOoo>L1dx8p5

^p$lSjFClho4Hh}{q;*gr`sH(l|C=$|#)O%U#b~&}^ zpQL!^MHun~H1R5)TS`M7e`yH)rG6TB^Ua4M#}BdZ#BnGxj5s34>6-QJ3ZH>=a{UJ% zd=Po$?Pw0M3vP-!>OMet89@3#=*oOZMnsWdjj2e}gbP`;bwzVUDf|Ai@ zPyJ=NackSXTes30KBiayjux;n-H;c~aU&T{(M&=TB9dt!^c3TI__#8w&zW*UEvBHK zWlF&OjB>4)3a+zY#=QwBkysAO zRuRB94Q#gFb&B9e=8hl|b|X+)L0R_c3KCF>&OWm&G4hT`J4W6y!u?E{htbQvq!09$ zx#fP9dfw)!c|@?7P{gKDv3rYjl6fTZ2?_Jv0RJNIl1n0+BgsPlqmie?JF=mls9h51+gyK41fV4hmmxKr zY!oeoz;uYFjUAJnW%EIIM=O)l;^Ul%b23kOPq? zUR(&s-%OW?+*cefa@rLMB{noN$`M**N-RkgfJwQuWRIqBr*H)%wsDsN63d3F6mW%H zE*h-gT@?4(p%aoEytV#^ci$9ddF6?decDT<7y946w<*#?ZfqYd-O(wJYmgPrh;v9l zg&!cdiWE)c9xd5$!DO$~!xK5?ky55w085DEy!lJ~n!0ZOkv?q859;6E8mVXI3J*ia zqvXz$JHgDW+-`%6+#>;W;F^hhB2hf@l$evig{=-7bJZsbJOg@#OMGdrBr1UoiKHU? zRx6{Clf`bCkl1cn^Ez_^Mj02z4*P>m$v*dHcqTW>)7{^|)||?lTo*^yOTA z%huFH@EJ9_F{uGOX~p6@CzzWpYIMS;CQ1U{ zZgF}D31kzER|HOtj$QK6ZMS{2#Q1*S_I>-d-?V$*cKnb2#9fE5@}F;D^*x96$Nz~w zOxHiqKh{6fKfyFi<8u>p5ZsS2^S+5IKbyG7`=)$`iMzonf6T-a(JJpVajg@++{9gz zt>fHp;zr(=7@ouMA>f59D1fT)01pz(%k`yEiNxCpW31MjOmGA%xnOt)lN39s^!xn< z{`~yHT$zU;msxIR$!0rrF*yI*W3FJ(2sU6mGj2y554^c<2><=ysyXN;I}#NN$=*hz4}cB^~5vg zKZ(4;cu)Pu_x;z);6Xk!*8Tdagc(C?HA`E|>`Ajkd;o+LY9%KIt5+zbooSpE6 z!J!iF={BU)C@%ZR^}d?JUM5=BNmOlgpsEh2W51X+3s5Sm3>G6cTgUD>WIl*?d+a&* z{ihll!YN)afH&yP$xLT6_GD{L_MaBd_SWEKDKMGWLPTZX*y5GNy*Yu1Dz~hxlyCd+ zr)sj*qo*!Oz>xluy@e!4rsRdQ^$GuceQa~D6&H*@w^z?|C(0|5TQAigY}F54(;62~ zp28`3-et?$Uew>ze_nFp#g|Sl0Ro=_(6d=?aDYox`l5$u?Ino>&092@pI7=o1FTFG zEt*`jD|5E~;V*{|;q(Y5KXmZAXP>y~AbI0W9p%Q?-?(N|MU=rt{nn)mKo?IJcTxfqkJobiHtw9B5N{0`Q*eoQ_hM|UeMZM5 z{o|jWK5*c_H}2Vgz1;ZuTmSy_9sQKts9zS@ap}J8SBm#f)_2jHnU8oO0EOW^f*@h7 zs))cibBZZ6QjD5OylOG|okX+#`Wc(1W#8YedB@Vf{&&&Rk8i#0qow!Uv~S-{H}BrR z1CQuWjCIvrGJDvf*5L=S;+UCu(lA3Lp3n7<(TAx(-~|A>O01d5yuKiaypJsdf{ctP z$}1gnSrcZ_Ts%pGqGAArX|k-Q2|aWzUjM4TiLIeC;1sG4U3c@5BRAe8)jS!D>>wi} zcgl@VJ+^k44y(6{_!93Iao5lhcP6fxxCf$ma%-g~96hg?@m*GC?Dfp1k~fohXvvBXcU*IPQd7;t7fiTv zQt2ftu6m+*(F>Psd9z{8(0!BZRu2zfz45{W^H8~e&gAh+ht~92GIsDe!vjULubwyO z=E)=L7gY}Eeol48xFPvDQ*K@@bTQ^Ebf04Ao@B)}6Zgb{p`#uUI#$DqFq?C_k5Yw7 zgh+{qBmn_wM<-4~$?U{2MR^q`GZv!Fwn|BK;)E2o{GJ%=#4)~Dbz8_gaZE(@oUt4C zr+J+F%$C!8b8Fuk^@qGB96HxArE{n5kgcKakC`_4%rNqN#r@YK;1)25b<2!n|{z0|94_JEwrRR@fTv zLCT6fv)bd{lUIt&XRm_cuzo-&Z4KpS`l^n)PwpMnn+)4>qTF@1^_H$B=U0x8IhvsQYi?avi7Q~#`;tM zmIDwwiyKtUhLzZ{(rHe8D%$j44(e?v>tp1`YxETxBZJ5z8*%eB+&9I$L=Ko`kO39pz62%cf<%fJg*8Z`nb*R;Bf;4!GlepZMJzA2%}$Rin3rU;XR=<;8RJ+? zQ1z4jz9~}%@*vGC^YI{^l$gQkV6#50UH&9v=NdlW$WvloV!k4l4#oD+v@641oOcOh zo5-kRxB_nLt~r0N&x5@rnAC(kBA6ZD-i+^i#h=Ik)k=NJ*CKn7{UO4g$r@%9eU^< zJ;b(dv*=%WyMm8p2cWw}EyvdPcsrFigPo}(C`RR_ZIl}+AhEw87u#=B<>sRw-L&)b ze;m5%_BVHkL(#;x@7X)1QqpGlhVc&JOUq1O>cBHh+zl37IcDOCXqESwxEAGO0K*rH z{v_LF+7(G6j1d%bmyE`j)9KViJYY!t4e-C;=*ynPV(jsVegWS1tiD&j{bBMBSsVG5 zXps$(R5Cwur7?aF0D3VS-^MFzm7)YF7#BeoYfIR`<`j%0ZxQjA(2MmRhxHy$;CZ-+ z`NCb1uZbp&iqw<4m@Z;W!O1Fv6TV+E@eC7ps}@{vV&I83tGv&|HJdT#Z4CE|zP~u< zA(D&;oqB8lvGXcs*eE+JMU{${u|LwCyyj_NPu_|wlt$3k+n&6(m4>et?=;31b8j)` zUTDQN6ZZryxN^e8lX9(Rra|*;FCC6p`XWKIpO9W{*)s}!gn1Yk*S0r(^`r!oQHsnv?+GJQ&q$W#t;H);#Wz^l*N0!Sw~b_czVGag6@m_LfyE zws$+c=kL$y+gp2Fzx&!3J{iz2VY$0yc+IG*X54yc()^iaYpU9tkpC4C1L++*TuC%nkSWh*X!YU0pIK4{{kll&1AcQ9P=sb>m4OQ0W&2oKFi zD(9g@`y~@qDRC2`+7XD%*HJ~4l%|eL8=@?(ssmMxoz(~O7^8(bxqK;=&yan8lVXh- z00qbVtXlf4bIba&>jtF!n)CePQ^+~5Z|&jje8uCc^4yx!OrWdGGI)sDVB`>!qXi}x zwocrsCTIO6c9Y7t;U;{uKGfY7GWyPgEOW5qYqa+U)w^=-taG;1{O9P|QyM~N4=lc7_59UcyKZQ#uJ3Ng zl_Y1>Kz-=uWupdF%?zc|kpAQU`UURUom;RZR5oSiya}VPYP|i>gul#6$y_t=?D1pI z*;;+|>ZMoJ>a!O#&6sy~rjSO3e__@Z2AIP zl3Fc^zzAOlMq*flA?%Gc9jfYNq!b$oB32?Zg3tU!v_+yHgZQ)|+=VSqna+$nS1?<2 zwfPRusYPo@HK3J4S(HqTk&TP`UElEHsSofr= zQ(F;$38w^%>oYk~L+2X%(2gr2A*tv3F@ygxW&68Jm%n%8bJva8v}wwvBlm7wdCvU4 zgEt(%eP`RYl?$hy^U%iUpAm5)=AjfY8(c5WETl=_M$at1HO?$dnKV;I=`3UDqX&dO z#r$SQCQ_-eE0Jk&5lBStxJUys5R^&tX?J6)XnioiZ^MZ5#WU6I#pG9t_B3w7ynOm@ zd)>p0oiuMU({|k>_SUyyon!rFv`Y#TQ;Pzi8Dk`QM(C{kD!7g}M69ldS^= z#J%?Ni?8k?3E`nahYd{60woSIp$Fd)rix?G%#3t??j#XAj)>l4Xtp%@atm{dMGeEP z$NJoAvWOsytLCy;%7Z+!Z(?*+@aKjrf{&fIb@qjK?OA?oTgxjKEPZnElNY3KZ2ar_ zq?;1jIiq%U&Cr&y)3(&eU5YZ-74*G&Qp+lRh5p{|Up6j#_lC>gyKu|umxkU_5jkEt za%|0xrOR#~H~mrL?pHn2;{|4mY`EzeKvnHRWS9xII|&}1X&8(^E0fvGWKtjpR&sl( zQckKY*;K;&{c_Y^emk#C5F{CzKvfOr<-KSl$MoSjCU|BU_9+(>CKY+z1rYFO_}Cj$ zG-oiNX%6Q6=m~T-rMJ}2{_}by!IxoFx_QUdNqvMtA8I)~Pv46Z_v|TJHGKW0+^%xT zhPLshQ7`;y!(PwTk)NuD2-^x>cQ9Q&BKKrLI9#D3NH(J?r3y+wr6#_&?r^@C-=(Di zq-CXb%}8gDrsf6%qKBMGm;pPdBObvjD5{@L8tdq|P2=j<4jVb*@y6@^y=d{PTh{%( ziALVL!9jx3r5E7q%Xicimn`U8z3G?R_=G>-SzL_A_V3+wh}%xgRjd)W7;A(Fpab`q zxY`LXGI8ZMaM_B>pPD#yl6ROmcEW=uPCAWq#Kav87hLP5g6nP&f~DbjJ0fIx91_9U zEn9K<3y`#^r~t4pew$5PB@kjb6kNdP~o+Wx3UGeHSZMOLWX0yaQm z!)Aw_0H}?is={ufGsPlamd#6PHHUrd!QM>Du7bVgR|BBk{=3hI%YN%oAfQm9G+BnQ zJjgne&WehPVHHF3yY&jVg5^PH9KUqJoWNXZjV0BHTq=Ac8g12JETg?Cw5ITiB8 z$8`LF*5>=C-MzBc(Cn11;kw7>?r+pje!uIb@LvXcz)mhy(dpN_wki$ zb}bqaxqbDT)$>;@Um|_$iXV6H+*>Ex#T^5=i zJnORA&AX?1a^Xpav!)4JY!9 zSA%v8`-tR_Y7MLQ1;wV?6tx8)9?=erS_eqfAvJf2BZSx+!ER^VQYvosF!QLY*gI9o zG4oadvB%j-T+45dgmH1dJ5adt561usHig=ntYeuYaD!*p)&kT{ter4s)UY9a%R?o_ z-3#*rS*c#9#wh5LoWQQofG}!#NEHQFK>mN_4(HX^$ogjK=;(M zg2%o{IxDTX;^F^Kj$-z3-?ZmBY@&vbcBq2!Bvf`nrb6&u~%7c*!Un#b7>lz0PnGb_1#8BEBElGJ5Otq zVsp6VmOVH|Kg6a*L)NL#{Tr@y-nK#iVAKQ=CqjSqV#do|qK0+DELIUA9-hT3A_Ct7 zP?hl(2OgMVWM{u91yn=~*MXvl^Xz_gGMZPF`OP=>F#thmKC?ta*bN|VOeQ5Jbctuf zJ6O8*a^>8yf9`|kwMDXR(4g|tL4!*5Tk%6IX#WBS>rX3=fjxT-8XW35P9w-$T2KxQ#3ZrP8y37}}bqq^0jKLT;Vk}W}+-KAr5&)RE$Hdi6c#(-xth^`PN0i})O@aiuQQ}w%Lkx?%81`u_ zAM~p;k4O3_ym$~2OxVs$b7m=Ko6PulfNn*F1^Ico!JI(0Ki(Uk>`W3?ia*UtS(cw& zZmQ;;b}bZl4IW%t%D%|p!Gp^94|Daezv{VS_X7Qb$0Hv-e5Z5~w`6EAw`A=9Cucr? zs&;Mhw5yw>KJA|~b9gT{c|2nB;t;$rAJt2vK3WL(+?#?_iXA$1b71szF3gK=Q(4}1 zRg9Zil$r_Gpt1lc$W)&F2ak$UBoDx0WaQ{WXO`rdI1M1iXNJ$~F}*%6mVu-Hs?GJg zH$X`ai-K|%4ePN$|L3pnfga@^j33GwgL*MCS$MR~U4Qz0Q0Cj~t$wDOeA=UYKF<7X zWz^4V?@3A|BAe7&W7JABD&rZGqa$Zi3adXr? zcyM{?z=5SZ^aJ|6>2M0&`Uo=Bh;XjT$(^V4kIOG9JbHwjV}of7s?iNNq! z1HB*AYbk^^{)5&xtn4)MUh8mz3pO6j6|wsd(fgKRqu}BVahCCKkc^CCS47rEAUJ}* zE0(3%VGO@$>0*6l<2>VyJ$p#&zx7DP*!vK$mY_&tv4bDu5Z4uoz3e&TW!c2@PUIxbX#0@8D-d~tl!D;u zeAa{bR(={Z7#4QO2t={e+Mbxj`dYVmzOXBL%-Uo@8}8HGImRN${nOm+3D2B4W%T%S zx}ViDV#>C9{Zaf9>4?F>RVkT6)}2j5>$%Qi9_j~7=V!&;R_WA3xX0+2;2yTzm@@J) zQ>F{NEcWOa-J=Vc$WuZeA;Y{CEDT!an7#Wb;GuFEH6?Spl{wa^`fZB6!E%`a{Sox()1`^smK#bz}#d zM(+^cx36=Y^_St-6!ti;mWEdEYX6S>TvHRgsQu;G|7pg`!8Kb44Ykx&Ob0jA-RF`B zkzxwC%>EXu2q+ONvM=lf_Pg2Jsxm)eEiM2yh&#s>5Lb*t(HWZ4=T*>i+qzUfK9$v9 zsde?^uRDuoTsg8q6g?L&zpy{AdZ44$5$pNO#(EA$zC(t$$?rlJ_Q_#mmT@)&^lOC5 zq}IoOlVZO`d&`+-5ybpNmW@7rzdD;jj0(tbrfjPe``p})Rdq;)vtqSU)0suY#m0mL zfQ0OX?5-K9DIQl+BAaY{vYq8rC(o&>8Ynli>Y3;{Sn0_cGpm1bb@AlO<2g}R?nz@r zU0Wi*TTz@^Iq=}ug(bxmC;b-QmaXnTcUWiMicH=Vh~kl_gpCC*a@bvl?e)n5PiOfi zK3NkPj2RS%M|=1H5aSD?%`%UnI)J53#`8@;b9EQ-#r7kjv@n$ln3_tTS6{rivVLq) zO8qEa`Z8yDlojKBt~fj|v@&PNnuTO+)D5BvcIc#TqRVZe|9*AB`Xp%k^lA=0S$s>3(!d z3cn$pl9kf6FjwJ6^@79LC27HqU>2>7>oZ{k?lpK<(&RxV9?cHs}rQ^8? z`>8mhDnduDi{Sk2GjOh&y4wxiPqi`pWs#%Lf<7=VJUSC?sxyulhlWyZ>~JsM9w(_P zZFIyO*kjl}dock*CH#-4)LR1z!CYvf70bMoB?G)yx)E_u?ond`jY30_;sc&@!5 zS0!1Kts0{VGFrP&1%ZOmgw$cQ_G^vNmVk)hAY`;XP%t_qJvAU9K-qReswtUPBA!G) zndZN~vh|L^Z#+8u+|p0xFX+3xS<;dmId#>ne>2TAv{xQPg8snGwJX@@H(wvpU5zIJ zd5;j;F1I8hPDFu!5D@SJN@y+xJrC(N@ECxeYQkwWA!xhK)VZ{rOb^s!gc_bvo}?HSGIBAy>f>ONhdXiyxiAyNx%ssWp?GQ(#o~= zY18KK95C+Oym?P|&*`*r>+tAJGYLA%$_-TP)WBA zX)_x)@6oYo+on-bxeG^5S=(vd^j2;8It0C9-Pe_Mqvu{5PtnHpIF9RMv0{Dgc~mZ} zDd=_0!owt4FHuS*e*o%-apilbg?GHawD68~)506a@ods0Obd^@TUNO8_j|KZ`r+M! zbz{`mHY3aC-<7M|b~hN|8L+PLE9MNm7mw@bqt3}+#|wgwVqEMWB_8t(zt4to*_TN+ zDQCz#41k6TAZUd11MVj+w}Mi6GzO9ERtA0DJz1CQ>Eb37To-B8sr16W!S+_k%^N3Vw#pyZeSFn~ z?NhqM4^NpmGmYPXy<5emCa1Nu_wO=$cIA6d>8|!D>7UvwJvKSr9@DyUOpCtDhZY^` z*L7BK_>@VRL)s@NcNo^bX^$2$$sL;{<)xNyzxA4&a!FuF$$rj1KV38lLCjeKriIvrB#nVvZ8Wx*W$ZtkIKJN$+J5Kz?HARa zf0!&)?D?g_BuDyLte`)Ilw?IDfI&(GqX8pYu7nY*g|A0B-FCuPWz{hqzO31PK z9xrfabb^e0a=ajTAowJF8XXi{3iC%~D>0F-=Y90l