From ff66d0aea37a409467826823590e85d6e85db1f6 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 4 May 2026 10:13:03 +0200 Subject: [PATCH] Prepare publishable Tauri app --- .gitignore | 44 + MIGRATION_NOTES.md | 26 + README.md | 22 +- backend_cli.py | 46 +- run.bat | 1 + run.sh | 2 + src-tauri/Cargo.lock | 5392 ++++++++++++++++++++++++++++++++ src-tauri/icons/128x128.png | Bin 0 -> 9404 bytes src-tauri/icons/128x128@2x.png | Bin 0 -> 18038 bytes src-tauri/icons/32x32.png | Bin 0 -> 4295 bytes src-tauri/icons/icon.icns | Bin 0 -> 223694 bytes src-tauri/icons/icon.ico | Bin 0 -> 50042 bytes src-tauri/icons/icon.png | Bin 1354 -> 45200 bytes src-tauri/src/main.rs | 355 ++- src-tauri/tauri.conf.json | 23 +- tools/autofill_translations.py | 10 +- translate_summary.py | 58 +- ui/index.html | 190 +- ui/renderer.js | 125 +- youtube_summarizer.py | 251 +- 20 files changed, 6386 insertions(+), 159 deletions(-) create mode 100644 .gitignore create mode 100644 MIGRATION_NOTES.md create mode 100644 src-tauri/Cargo.lock create mode 100644 src-tauri/icons/128x128.png create mode 100644 src-tauri/icons/128x128@2x.png create mode 100644 src-tauri/icons/32x32.png create mode 100644 src-tauri/icons/icon.icns create mode 100644 src-tauri/icons/icon.ico diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c01fbbd --- /dev/null +++ b/.gitignore @@ -0,0 +1,44 @@ +venv +.venv +sync.sh +summaries.db +.env +node_modules +data +package-lock.json +dump_summaries.sql +.DS_Store +.git +__pycache__ +.mypy_cache +.pytest_cache +dist +build +out +.next +.nuxt +.turbo +.parcel-cache +.cache +target +src-tauri/target +src-tauri/gen +coverage +logs +tmp +temp +output +tmp* +*.log +*.tmp +*.swp +*.lock +*.exe + +Cargo.lock +!src-tauri/Cargo.lock + +src-tauri/resources/backend/* +!src-tauri/resources/backend/.gitkeep +src-tauri/resources/ffmpeg/* +!src-tauri/resources/ffmpeg/.gitkeep diff --git a/MIGRATION_NOTES.md b/MIGRATION_NOTES.md new file mode 100644 index 0000000..1b176f4 --- /dev/null +++ b/MIGRATION_NOTES.md @@ -0,0 +1,26 @@ +# Migration Notes + +## What Was Preserved + +- Static frontend design from `ui/index.html`, including the rose color palette, compact header form, list layout, collapsed summary previews and pagination. +- Frontend behavior from `ui/renderer.js`: model loading, local UI preferences, Whisper toggle, auto-translation toggle, per-entry language tabs, delete confirmation, progress updates, expandable summaries and thumbnail external links. +- Tauri command surface: `get_models`, `get_summaries`, `summarize_video`, `delete_summary`, `translate_summary`, `open_external` and `open_file`. +- Local runtime model: SQLite history in the OS app local data directory, media under that data directory, Ollama on `localhost:11434`, and Python helpers for YouTube metadata, transcripts, Whisper, summaries and translation. +- Release bundling path: a PyInstaller-built backend sidecar plus copied `ffmpeg` and `ffprobe` resources under `src-tauri/resources`. + +## Electron Reality Check + +No active Electron app was present in the source snapshot used for this migration. There was no Electron main process, preload script, `ipcMain`/`ipcRenderer` bridge, `BrowserWindow` setup, `package.json` or Electron build configuration. The working desktop shell was already Tauri 2, so this folder packages that actual implementation as a standalone Tauri project rather than inventing behavior from missing Electron files. + +## Important Runtime Details + +- The Tauri identifier remains `com.victorgiers.youtube-summarizer` so OS-level app data and history stay aligned with the existing app identity. +- `run.sh` and `run.bat` now change into this folder before creating the Python environment or launching Cargo. +- The frontend still uses `window.__TAURI__` because `withGlobalTauri` is enabled in `src-tauri/tauri.conf.json`. +- Development falls back to local Python scripts when no bundled backend sidecar exists. + +## Imported Legacy Data + +- The old Electron database from `/Users/giers/Tools/victors-tools/youtube_summarizer/summaries.db` was copied into the Tauri runtime data directory at `/Users/giers/Library/Application Support/com.victorgiers.youtube-summarizer/summaries.db`. +- A copy also exists at `summaries.db` in this folder for local migration reference. +- Thumbnail files from the old `data/` folder were copied so historical entries keep their images. Audio and transcript files were not copied because the Tauri runtime clears those artifact references on startup. diff --git a/README.md b/README.md index 2888a03..b0c32aa 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# YouTube Summarizer +# YouTube Summarizer Tauri This is a local-first desktop app for summarizing YouTube videos with Ollama. @@ -9,6 +9,10 @@ It uses: - Ollama on `localhost` for summarization and translation - SQLite for local history +## Migration State + +This folder is the standalone Tauri version of the app. The repository snapshot this was created from did not contain an active Electron runtime, `package.json`, preload script or Electron main process; the actual app behavior was already represented by a static HTML/CSS/JS frontend, a Tauri 2 Rust shell and Python backend helpers. The migration work here keeps that behavior and design intact inside `ytsummarizer_tauri` so it can be built and run without depending on files outside this folder. + ## What It Does Given a YouTube URL, the app can: @@ -48,7 +52,7 @@ For development in this repo you still need: - FFmpeg in `PATH` - Ollama running locally on `http://localhost:11434` -Python dependencies are listed in [requirements.txt](/Users/giers/youtube_summarizer/requirements.txt). +Python dependencies are listed in [requirements.txt](requirements.txt). ## Run In Development @@ -73,7 +77,7 @@ pip install -r requirements.txt cargo run --manifest-path src-tauri/Cargo.toml ``` -The app prefers a bundled backend executable when one is present under [src-tauri/resources/backend](/Users/giers/youtube_summarizer/src-tauri/resources/backend), and otherwise falls back to the local Python environment for development. +The app prefers a bundled backend executable when one is present under [src-tauri/resources/backend](src-tauri/resources/backend), and otherwise falls back to the local Python environment for development. ## Build A Shippable Bundle @@ -93,21 +97,21 @@ cargo tauri build What `tools/prepare_bundle.py` does: - installs PyInstaller into the current Python environment -- builds a single-file backend executable from [backend_cli.py](/Users/giers/youtube_summarizer/backend_cli.py) -- copies that executable into [src-tauri/resources/backend](/Users/giers/youtube_summarizer/src-tauri/resources/backend) -- copies `ffmpeg` and `ffprobe` from the build machine into [src-tauri/resources/ffmpeg](/Users/giers/youtube_summarizer/src-tauri/resources/ffmpeg) +- builds a single-file backend executable from [backend_cli.py](backend_cli.py) +- copies that executable into [src-tauri/resources/backend](src-tauri/resources/backend) +- copies `ffmpeg` and `ffprobe` from the build machine into [src-tauri/resources/ffmpeg](src-tauri/resources/ffmpeg) Build once on each target OS you want to ship. For Windows 10, build on Windows. ## Build On GitHub Actions -A Windows build workflow is included at [.github/workflows/windows-installer.yml](/Users/giers/youtube_summarizer/.github/workflows/windows-installer.yml). +A Windows build workflow from the original repository can be pointed at this folder by running the same commands from `ytsummarizer_tauri`. -It runs on `windows-latest`, installs `ffmpeg` and NSIS, prepares the bundled Python backend with [tools/prepare_bundle.py](/Users/giers/youtube_summarizer/tools/prepare_bundle.py), builds an NSIS installer, and uploads the result as a workflow artifact named `windows-installer`. +It should run on `windows-latest`, install `ffmpeg` and NSIS, prepare the bundled Python backend with [tools/prepare_bundle.py](tools/prepare_bundle.py), build an NSIS installer, and upload the result as a workflow artifact named `windows-installer`. ## Notes - If Python is not on your `PATH` for development, set `YTS_PYTHON` to the interpreter you want the Tauri backend to use. - If you want to test a prebuilt backend executable during development, set `YTS_BACKEND_BIN` to its full path. -- If `ffmpeg` or `ffprobe` are not on `PATH` during bundle prep, set `YTS_FFMPEG` and `YTS_FFPROBE` to their full paths before running [tools/prepare_bundle.py](/Users/giers/youtube_summarizer/tools/prepare_bundle.py). +- If `ffmpeg` or `ffprobe` are not on `PATH` during bundle prep, set `YTS_FFMPEG` and `YTS_FFPROBE` to their full paths before running [tools/prepare_bundle.py](tools/prepare_bundle.py). - Generated thumbnails and the SQLite database are created on first run in the app's local data directory. diff --git a/backend_cli.py b/backend_cli.py index 7522f2e..21ec4ec 100644 --- a/backend_cli.py +++ b/backend_cli.py @@ -8,6 +8,7 @@ while still supporting direct Python execution during development. import argparse import json +import multiprocessing import sys from pathlib import Path @@ -18,19 +19,38 @@ from youtube_summarizer import process_video DEFAULT_MODEL = "mistral:latest" +def compact_error_message(exc: BaseException) -> str: + """Build a short error string without dumping a traceback into the GUI.""" + parts = [] + current = exc + while current: + text = " ".join(str(current).split()) + if text and text not in parts: + parts.append(text) + current = current.__cause__ or current.__context__ + return ": ".join(parts) or exc.__class__.__name__ + + def configure_stdio() -> None: """Keep progress output line-buffered for the desktop app.""" if hasattr(sys.stdout, "reconfigure"): - sys.stdout.reconfigure(line_buffering=True) + sys.stdout.reconfigure(encoding="utf-8", errors="replace", line_buffering=True) if hasattr(sys.stderr, "reconfigure"): - sys.stderr.reconfigure(line_buffering=True) + sys.stderr.reconfigure(encoding="utf-8", errors="replace", line_buffering=True) def summarize(args: argparse.Namespace) -> int: + prompt_template = None + if args.prompt_template_file: + prompt_template = Path(args.prompt_template_file).read_text(encoding="utf-8") + elif args.prompt_template: + prompt_template = args.prompt_template + meta = process_video( args.url, use_whisper=args.use_whisper, model=args.model, + prompt_template=prompt_template, output_json=args.output_json, ) if not args.output_json: @@ -44,7 +64,13 @@ def translate(args: argparse.Namespace) -> int: if not summary_text: raise SystemExit("Empty summary text!") - translation = translate_summary_text(summary_text, args.lang, args.model) + prompt_template = None + if args.prompt_template_file: + prompt_template = Path(args.prompt_template_file).read_text(encoding="utf-8") + elif args.prompt_template: + prompt_template = args.prompt_template + + translation = translate_summary_text(summary_text, args.lang, args.model, prompt_template) if args.output_file: Path(args.output_file).write_text(translation, encoding="utf-8") @@ -60,6 +86,8 @@ def build_parser() -> argparse.ArgumentParser: summarize_parser = subparsers.add_parser("summarize", help="Summarize a YouTube video") summarize_parser.add_argument("--url", required=True, help="YouTube video URL") summarize_parser.add_argument("--model", default=DEFAULT_MODEL, help="Ollama model to use") + summarize_parser.add_argument("--prompt-template", help="Prompt template for the summary LLM call") + summarize_parser.add_argument("--prompt-template-file", help="Path to a prompt template file") summarize_parser.add_argument( "--no-whisper", dest="use_whisper", @@ -76,6 +104,8 @@ def build_parser() -> argparse.ArgumentParser: translate_parser.add_argument("--summary-file", required=True, help="Path to the English summary text") translate_parser.add_argument("--lang", required=True, choices=["de", "jp"], help="Target language") translate_parser.add_argument("--model", default=DEFAULT_MODEL, help="Ollama model to use") + translate_parser.add_argument("--prompt-template", help="Prompt template for the translation LLM call") + translate_parser.add_argument("--prompt-template-file", help="Path to a translation prompt template file") translate_parser.add_argument("--output-file", help="Optional path to write the translated text") translate_parser.set_defaults(handler=translate) @@ -83,10 +113,18 @@ def build_parser() -> argparse.ArgumentParser: def main() -> int: + multiprocessing.freeze_support() configure_stdio() parser = build_parser() args = parser.parse_args() - return args.handler(args) + try: + return args.handler(args) + except KeyboardInterrupt: + print("[error] Cancelled.", file=sys.stderr, flush=True) + return 130 + except Exception as exc: + print(f"[error] {compact_error_message(exc)}", file=sys.stderr, flush=True) + return 1 if __name__ == "__main__": diff --git a/run.bat b/run.bat index f6a348b..1ccfd48 100755 --- a/run.bat +++ b/run.bat @@ -1,5 +1,6 @@ @echo off setlocal +cd /d "%~dp0" REM 1. Prüfen, ob venv existiert, sonst erstellen if not exist venv ( diff --git a/run.sh b/run.sh index 27d4289..df98eca 100755 --- a/run.sh +++ b/run.sh @@ -1,6 +1,8 @@ #!/usr/bin/env bash set -e +cd "$(dirname "$0")" + # 1. Python venv einrichten GREEN="\033[0;32m" CYAN="\033[0;36m" diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock new file mode 100644 index 0000000..89c97a4 --- /dev/null +++ b/src-tauri/Cargo.lock @@ -0,0 +1,5392 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[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 = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +dependencies = [ + "serde_core", +] + +[[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 = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.11.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "cargo_toml" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +dependencies = [ + "serde", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "cc" +version = "1.2.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a0dd1ca384932ff3641c8718a02769f1698e7563dc6974ffd03346116310423" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" +dependencies = [ + "bitflags 2.11.0", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.11.0", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.29.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "matches", + "phf 0.10.1", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf 0.13.1", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", +] + +[[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 = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.11.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dlopen2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dom_query" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d9c2e7f1d22d0f2ce07626d259b8a55f4a47cb0938d4006dd8ae037f17d585e" +dependencies = [ + "bit-set", + "cssparser 0.36.0", + "foldhash 0.2.0", + "html5ever 0.36.1", + "precomputed-hash", + "selectors 0.35.0", + "tendril", +] + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "embed-resource" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 0.9.12+spec-1.1.0", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "fallible-iterator" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[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.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.11.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" +dependencies = [ + "log", + "mac", + "markup5ever 0.14.1", + "match_token", +] + +[[package]] +name = "html5ever" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6452c4751a24e1b99c3260d505eaeee76a050573e61f30ac2c924ddc7236f01e" +dependencies = [ + "log", + "markup5ever 0.36.1", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "http-range" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "pin-utils", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[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 = "ico" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "iri-string" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itoa" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.11.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kuchikiki" +version = "0.8.8-speedreader" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" +dependencies = [ + "cssparser 0.29.6", + "html5ever 0.29.1", + "indexmap 2.13.0", + "selectors 0.24.0", +] + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a" +dependencies = [ + "libc", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "markup5ever" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" +dependencies = [ + "log", + "phf 0.11.3", + "phf_codegen 0.11.3", + "string_cache 0.8.9", + "string_cache_codegen 0.5.4", + "tendril", +] + +[[package]] +name = "markup5ever" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c3294c4d74d0742910f8c7b466f44dda9eb2d5742c1e430138df290a1e8451c" +dependencies = [ + "log", + "tendril", + "web_atoms", +] + +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[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.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "muda" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c1738382f66ed56b3b9c8119e794a2e23148ac8ea214eda86622d4cb9d415a" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 2.0.18", + "windows-sys 0.60.2", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.11.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "num-conv" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.11.0", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.11.0", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.11.0", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" +dependencies = [ + "bitflags 2.11.0", + "block2", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "open" +version = "5.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43bb73a7fa3799b198970490a51174027ba0d4ec504b03cd08caf513d40024bc" +dependencies = [ + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_shared 0.8.0", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros 0.13.1", + "phf_shared 0.13.1", + "serde", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand 0.8.5", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared 0.13.1", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher 1.0.2", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher 1.0.2", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[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.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "plist" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" +dependencies = [ + "base64 0.22.1", + "indexmap 2.13.0", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.4+spec-1.1.0", +] + +[[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-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.2", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[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 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", +] + +[[package]] +name = "reqwest" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "rfd" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672" +dependencies = [ + "block2", + "dispatch2", + "glib-sys", + "gobject-sys", + "gtk-sys", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows-sys 0.60.2", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rusqlite" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" +dependencies = [ + "bitflags 2.11.0", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustls" +version = "0.23.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.117", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" +dependencies = [ + "bitflags 1.3.2", + "cssparser 0.29.6", + "derive_more 0.99.20", + "fxhash", + "log", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc 0.2.0", + "smallvec", +] + +[[package]] +name = "selectors" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fdfed56cd634f04fe8b9ddf947ae3dc493483e819593d2ba17df9ad05db8b2" +dependencies = [ + "bitflags 2.11.0", + "cssparser 0.36.0", + "derive_more 2.1.1", + "log", + "new_debug_unreachable", + "phf 0.13.1", + "phf_codegen 0.13.1", + "precomputed-hash", + "rustc-hash", + "servo_arc 0.4.3", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +dependencies = [ + "serde_core", +] + +[[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 = "serde_with" +version = "3.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.13.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "servo_arc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "servo_arc" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "bytemuck", + "js-sys", + "ndk", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "tracing", + "wasm-bindgen", + "web-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.11.3", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.13.1", + "precomputed-hash", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", +] + +[[package]] +name = "string_cache_codegen" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[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.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.34.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d52c379e63da659a483a958110bbde891695a0ecb53e48cc7786d5eda7bb" +dependencies = [ + "bitflags 2.11.0", + "block2", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dispatch2", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "parking_lot", + "raw-window-handle", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da77cc00fb9028caf5b5d4650f75e31f1ef3693459dfca7f7e506d1ecef0ba2d" +dependencies = [ + "anyhow", + "bytes", + "cookie", + "dirs", + "dunce", + "embed_plist", + "getrandom 0.3.4", + "glob", + "gtk", + "heck 0.5.0", + "http", + "http-range", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest 0.13.2", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.18", + "tokio", + "tray-icon", + "url", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bbc990d1dbf57a8e1c7fa2327f2a614d8b757805603c1b9ba5c81bade09fd4d" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars 0.8.22", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml 0.9.12+spec-1.1.0", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a24476afd977c5d5d169f72425868613d82747916dd29e0a357c84c4bd6d29" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.117", + "tauri-utils", + "thiserror 2.0.18", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d39b349a98dadaffebb73f0a40dcd1f23c999211e5a2e744403db384d0c33de7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddde7d51c907b940fb573006cdda9a642d6a7c8153657e88f8a5c3c9290cd4aa" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri-utils", + "toml 0.9.12+spec-1.1.0", + "walkdir", +] + +[[package]] +name = "tauri-plugin-dialog" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9204b425d9be8d12aa60c2a83a289cf7d1caae40f57f336ed1155b3a5c0e359b" +dependencies = [ + "log", + "raw-window-handle", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror 2.0.18", + "url", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed390cc669f937afeb8b28032ce837bac8ea023d975a2e207375ec05afaf1804" +dependencies = [ + "anyhow", + "dunce", + "glob", + "percent-encoding", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.18", + "toml 0.9.12+spec-1.1.0", + "url", +] + +[[package]] +name = "tauri-runtime" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2826d79a3297ed08cd6ea7f412644ef58e32969504bc4fbd8d7dbeabc4445ea2" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2", + "objc2-ui-kit", + "objc2-web-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webview2-com", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11ea2e6f801d275fdd890d6c9603736012742a1c33b96d0db788c9cdebf7f9e" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219a1f983a2af3653f75b5747f76733b0da7ff03069c7a41901a5eb3ace4557d" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever 0.29.1", + "http", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.3", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.18", + "toml 0.9.12+spec-1.1.0", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1087b111fe2b005e42dbdc1990fc18593234238d47453b0c99b7de1c9ab2c1e0" +dependencies = [ + "dunce", + "embed-resource", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap 2.13.0", + "serde_core", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_datetime" +version = "1.0.0+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.13.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.25.4+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2" +dependencies = [ + "indexmap 2.13.0", + "toml_datetime 1.0.0+spec-1.1.0", + "toml_parser", + "winnow 0.7.15", +] + +[[package]] +name = "toml_parser" +version = "1.0.9+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" +dependencies = [ + "winnow 0.7.15", +] + +[[package]] +name = "toml_writer" +version = "1.0.6+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "bitflags 2.11.0", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e85aa143ceb072062fc4d6356c1b520a51d636e7bc8e77ec94be3608e5e80c" +dependencies = [ + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 2.0.18", + "windows-sys 0.60.2", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a68d3c8f01c0cfa54a75291d83601161799e4a89a39e0929f4b0354d88757a37" +dependencies = [ + "getrandom 0.4.2", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version-compare" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8" +dependencies = [ + "cfg-if", + "futures-util", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.13.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap 2.13.0", + "semver", +] + +[[package]] +name = "web-sys" +version = "0.3.91" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web_atoms" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a9779e9f04d2ac1ce317aee707aa2f6b773afba7b931222bff6983843b1576" +dependencies = [ + "phf 0.13.1", + "phf_codegen 0.13.1", + "string_cache 0.9.0", + "string_cache_codegen 0.6.1", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webpki-roots" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cfaf3c063993ff62e73cb4311efde4db1efb31ab78a3e5c457939ad5cc0bed" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webview2-com" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core 0.61.2", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "webview2-com-sys" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" +dependencies = [ + "thiserror 2.0.18", + "windows", + "windows-core 0.61.2", +] + +[[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-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[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 = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.13.0", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap 2.13.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.13.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "wry" +version = "0.54.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a24eda84b5d488f99344e54b807138896cee8df0b2d16c793f1f6b80e6d8df1f" +dependencies = [ + "base64 0.22.1", + "block2", + "cookie", + "crossbeam-channel", + "dirs", + "dom_query", + "dpi", + "dunce", + "gdkx11", + "gtk", + "http", + "javascriptcore-rs", + "jni", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "youtube-summarizer" +version = "1.0.0" +dependencies = [ + "open", + "reqwest 0.12.28", + "rusqlite", + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-dialog", +] + +[[package]] +name = "zerocopy" +version = "0.8.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..0506c8dac424b2591591f3ec6c39dcf52e9fcb78 GIT binary patch literal 9404 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%0DfSG564I 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 iM?}Ru$S~KCZ96;mj%_$^{1^mKLA zR83D;SI_fQRSy6F1b_e_A_Be^LclRB0O0(!g^Bs!@Etq=pab_6L-^nD$X7ZgTmXQ9 z;lJS+Q~&^*769Pq|8F=49RMg3004Y_{~PWk1pvg={$}bg?iFA)nfqy2%X!93_JJhi(4WVR_230x04)=nfo|3@vF5;whN? zY4_a#JK|$HSM&60lQSq22t(788g$5{C81d4T1vrD2`CY}Gcz)W5kr#<@N7{edyK1T zSn9aD_5kCVH+57uE3A5Au2pspb_Oe2t8R)#AMLk{_($jD-+?|CSi%HP0}ra+X>fqr zVxy+Dmk=v6G=TOgkbK8`$doQUAiTcY3Es;Nzuoh<;@}>Q33bKBhL#jijs+$C(dA1H zypNEM=Zs?a=H)*<*V_d4ct=K|-)z>#?#04`qtkn~&#(tMAx{JlA5Qq_NN=Rwq4bF& z!V|^Pgwn}PnxiP8U}=KE{7*UQPY44ag==leVe3ywv&m|}MMT*A-uM6tDkMTE4@2tN zOD~vVF_7n}h`F@Xtk)U;4=>eL>5ox#QlDr8F=3`wWQFOo^fwJ)7D9jsKgbC`&JhSo zFKBZwQY!#q2LxDvA{5k4mvP4*H5N#i5Che>DHk)*ze@Kk{UFhUkQ>gA`)kQ1OpO!zo=lGD=8EbQAI3rA+Q<$dMth+ zL0h7e|q6e}E7+17c0Lh-CZ8N)$7Po9D^`Od*hV2hqRa=x+tWM-D z#LGy8q1&s8YojMoPXupBzUUkx3Y18w>OgTpDm~h~_*qeQsa7dh0aE1qP}xD-eBah! zH3@EEZaG}CZZZXNV^UU1KT;wqqVpeF#GAxjgb8D!h6wiD>e5?+*5o-v+dp~~a;em) zKq;94kyH13^uE1 zR@7)?8qi3I79O4@*(jMU88vQ)Mv0e)GY4{Xe8=>n_u}-zr9!JBr_y~wzQnpjU0$&y})mlY8Ghm*Zgdbz2e#t-YR+m_aZZ%Bjj*n zIq>Hc3ki#=>BR!>Z07R(^3B5deEB?Q!M$=u^?6=ad6&>@;6ow2%7~0uZiCQa;j}?8 z^gu$~bgAJTW3l5;r*|i^_WSmLc4qfscLnz#_jC8hJE#|$chYyfm#!Bja87U{a4_&H z@D{l1V44Bc0qx-T;F_q&DE&xQOeZWJreDnP4AX4ZKf5giS?$==jpudkr%(;XnPiwZ zt=!jOSsU1-7%LcYm_nxTCczFmrb1|E(PhyEBfukYq>&dA(grMzqBZ7e188ArJ7{v$ zvDAh%tr|{RUQDfQvaB~vy+(rdQB0Lg7YuGIs?umznuj0OwQjVw+bRy7XS}RUtVde@ z7`QBCn-l2w^mVU%1OyZWjOI=0&Cm5R&ebhngGUTQ8(0}Vqz2=xIvY^>hSOIg;111rxAnwg8huW5{ws`jW%2EKHfa`-52705w{3Bnq{@j z?x!c@A+k&|G32>0#xUBjOOCuu@aemG-=Zd|l2*$Lx(k$S2pb5S_{(wnLpjnm@}wU; zlFl+)+1zP+*@|&D%Dw2yFxe$9CCf$KvM@4#avmso$h&wzQsPqWl*N&Xp zyOEjrapQH{^V?6OPkT-?SF^TR*Rkku{6%H9yr{xm^|XdggQt7gX3DQAu*uBAhoX^= zhTgM{&RAP6?$=y;e%-zIsb&OPxX2J2YpZ4HpU`!RRrXf1i{f$_0x4HA45=z9YRPSz z1MBXmq$$-T9k2EHMx)xvJj9WCYC7?9lDrp>QkC(jGCnU}U+Hk`s5!e{UHDa^qN?#|U88$B z<=*o$4PFo&?v?7r@rutX%J$$h_0rxZQBc-+Jm9_See4$s;x!dLHAS0FYgA=hQRsA| z+ut{_?dr3zIc!;BQ__-x4;(@og71^@bbdb|5aJP28{Oz-@}zAA(Ns`~a-y}xv6M7V zb{>6-&x`Ha*fLU7vhOi*`AD$9^UFc&pX(Y_e^@?Bj_g5BCU26{$?@^u1%oar_sh&M z9)~LWPMa&s*|pn4&zY>_$1^^+t^2n+m}!jY--g;}?SE~{9D2QT_aR;hIKlD2xk7M5 z+UdEpFR-%NJomz1lNMCFYO*`fZO`XN-{N*p6;^Dv#9N8F#yXyle!Wy3wm4YNY^Xb6 zc(we^p6?2OO@GAkW_hpEJ|X1cJ>lWJ((Mc2GT5m5!DsY&=iPZk^sF}&I4yij@<(ih z-0KHD-|r{aH;Lthw2~n{>QAlL$-iqZJ+5y|3}{?GKeX=N7HTqdN_$p6=P!&d9arz( zRk3P}f2VXR_&Ds)o?3l&q`IImw_Vm2JOCV-(j|n2h{~3Yh=YOx!qhl*$c+t1 zI8p>zglem5km%6<#H5gt(vXso#wZPAybT^RSP_Gj>tRYVjGk||pUhV|MZ&_2oa^CB zs*J`c_nf}OkbSRw!A*>UnZVZuq(K>u_tP3hiKC-ePRlO8_06I8Fog;2kCe^xAZDS> zZ{@3dPku5a7bYsEocqJGGBYOx>NAQX7GxH&d_=v?LNqpnLV9;kmv8Xyjb*mCo+tR0NcO+H?%AgQORXoI;|u&cCl{OzoAtC#gF<+DLd8B z+ZmoQ`Jr0YT{fq87-@S8USUkG!C4L=;1R#>Q!u!+K;|b<8tknQft&pY^e~5KQ*a>v zMqOrWRg#leS0sq~R;i#Ee4_r8-+SnzbhkH51QF>HcDXV+sgLOEgs_&B zbeCE&E6+ef!r{})9vW-(T--n*v0(hp{KV{Vt*|yQs+8g5MgHZydieraykt<-2smWl z!u*z~n|*i~TY&HyY|*7#qXS~U4In4fTu1hDh#3)7qoK3IEn~N2hH+XxeYBt|PoYfl zRRM4*Ky3z`Xz!Zy)UU-4dID#^nW5HJfRpljc)d$z4ViT8!4hL!<*_3yXY^ks6i_7? z5^FYl|8T+xhMb$736LN|VFLpb)7vAnw$L$Md^-S|05Z=Ey$4aDu<=(xAr9No5#0yR z)yzE#E;ksqVq+Hl7s3D}L}Z1l1$F)ZKS1X{XodMdptIw`^Yjfm-=OmiI^Ur44LaYT z^9?%Rpz{qn-=Ooq03A^8{{uS7QkID-s3SgyTbCKnoXn1xxkbJj6oh{K4Bh#r!bE~B zq!iT1zv$EuT`C>(v?cQAQZe@(cJry_4YW$RP_PAEL81J0!2*Gkcun&bryaX5J04q8 zDHkBjXB#@(9^XC>@A)uJinFprxwzmy7nD_sU*gm;tT)re{)zTJ@wiWew4whP+Phjb zP*5Qu{_Ww;Im+hc?-KL%dwEHH=hKu}5|Q2J?~nae+Vk_CigGBxT`!Q7X$J*58v_fd zv1qY!-)oPHHEbw1)_HJ@YRYZdmet-9vDPy%33kdS@ zogd|?3@ok$C_m71!FNc8Sk)|e@J?_QM;)#!F4(K?^LoJSNlb}R>j>%|MZ6(6)Vt!JogzR&0vZt;M=p;>t5kO@$&wGPbf9 zEj?6Ky6T~nbg#;7$DwGg)hC>75R*fO)*v9#S{HD0ZU88h$Wthh5Ta&%ZeaDgp$LA^ zY(8)=#bw+P@XE5Az?;LSb5=VN{Oe0;zUm$Rk=A2O1|6BnGc&t}4+)$*H*d@Y97$C5 z3kj$$*|1akPw>d<#y!&M;{}n1Jn$u>p1g%jprgM3%`9XR&H(8@$%1GlNv?{~6ALh8 z>cN(g+BKT5w0g(Qw5?(0Q*G{x9`?6VEG_hT&wj6=k|K-GoUQ}@!ME5BUt&iE62{Fs z`+Rpb!-m=Og+_oVL=IOUmbm}C+q+X0)yPv9vaT85F9$w$;$LrxA+(!tE+=Pj6tVZ| zOT5yhm-PJst-oM)Beww4Z}RPCz`f+{dxV+C8h>khtb#&RAY1hjxHM> zb#_1*_3h0+qrd})OrJo~ri2Mo4N@0P_5||$z&xQzyLiVIN5{MJ6HCeUl@?#ge?9MX z8pibR!TZy)1&{4Vmj@=pE&u2vuz}O#;>M@{FU(8$6;Jp-%q5`XD~5zo`YfWUhO%S? zHtr&NnKBp@sjx!q%dil^4nl4oJ>ep;3X34W5Kvj6Amp_?5f#N)xtRtTbYWP($hEkzy}dWBL(orlTL?@Ha+W_{FBh z-{TTImdVO;QQ^$!NY6OWhex$PG2#Xf?$VQ*O6YI&AIo=2X!)jzwcTPbuiL3BlyK8} zrlm2JKI!^qKa(UQH#9K#RVb4@tEaRE!Ch+27D#>bv>t?o#|-iFD?GkZ1cs6onXFY$ zt2?;|T&%BzJtV3YoFGJmD$;o*`}qZ<6(OjISlc=x6{-OaHDGDtfFcEIrkZVj z5SLQPzI+V;H02=5AA?H*p}Ly3`F*fAMkGBf*QQX1D2P;jp{IKn_HUN>^&T<4t$ zGvJy=pT|F&Zn|6J;JxP~Ay@5-(4RC%(jrKlJzp(wpT~GD=_Vd{wgDxvG!VTcS(8R- z?C$<6j~|ijunHw*&sqAO5#-0_NM`e~nrjmva__$5ZBTUC+)+6*b|)@A{pUVd^pL%j z`!@I{ulqU>JqcjQ0I->TJ|8Y|t9C(a5qj(&sgW_5LaxtL0&;ASrhAHn!wgQ&nGH2~ z#`|6_x4UyFPea_lS$ieXeUCH(b7p8q9t5FrL-|n^YJLw)7|NHB-g64*(06#>(+tq# z?@Z?CNMIb?%E(&LNjX}f`~D&D2$eg3Cbus4r~I3Wi@iG<SU5sPg4tJ^ZG;Daatn`TGr zH5GF13|F7_w8xRJ;$m&gBE~0XY~gYj!+y%iu4?+lwO584&0RbHm?X4@k1IN*XQc zO*uU)y7+TOL?54ESe+_*)G!^aHg-|Q9?&H`oO?_uIvZTxSx1+5nDJ0~Cct@5D zY;KnudIoQ4?bJx%Ehe?oh{K4Pg1G5q*B_aSomw-1`O}TVP*}n<3{K`>-HrE%F(5+5 z?w#3AFaj{1RxM-4Qy*SsB7u;!P&Wa-bnP@E=&H=(xC<@!tnIAT1`jtXk%vVa!C6vX zjKS=%>KzUcY8e{yjgGW{ozCcI`z@;b(7jV6zHN1?0a%bVeHv8vf|f z1u9A?n2}>kwQ<+%+MfW*@u>BYN|z|D*ZJ#wV9t%6oYEc2Zl2SXHpl?uMjA%XtGWnw z7c52d>!L;*ZYCwI)599z?3hSJ9TO#-4*1v3wMG*xw^tbm33GF=*XL4(Z-3C~KGdv; zrrlWt)n23T9tkXXrPJ+?7o?p`ONDLB*qTaXO5r0egJRa>LEm5v->6}Ge8inEv(r|Z zP|rSh?bTVs4{jBkzctueke#<#}!))@Z_jRB4IUyZSp?h&b_f;Ym~<3QkGVr=39Q^aqe zN>LOV7S0$R7A9O3gZ)!-Pe&95r66Bnk6>KtTvuRL4RId^~leM;BZ#)HfBv)9a}oA+V=C&!pMY% zaz(`rywuX0dQypo3ewzyhOi2r%FmLYPq6Xj*eXuRub+M$$u}9YT$1u|Y&(Nk5gK^nXWspBviaS1VL+T^@%5wGbtCE zdUYE{7~LT8+AgJSJ;{DIi0^z9y4DnFsl2>AS4$36y%McgMEGMOCZI`>tKQT-pd5PX z#D5LS_hMD=?=VgkK1Y2VJ7?%VXd!FEXj43uMYu=0I<(Zj5L=ACa4jq860Q9hnHU$7 z34pVi@23-^!YNcFqZ_I^3ZMzyPWwtLSSU`4;D>2EvGLkJRHQx)sk|rTwMH`^G2@mL z+Oud#3ltqRN_2?>3zleU6603Xd^1V20r$>1=yhl$lipTq^>!oBjiL>UA5G|#=p5aT zcKF@*r-2O)SO9GiIMLek)bZk|&ab%)6ge$GRxC&*^wxKlhIuaG%s~9Yvn+ZuEj@Bp zH&~JTm2}+v=62A$4X^NapG#b(_!*+(WGpfvzdI24G1~Q}#L#d<8s|vUGe&SIX(jq6 z;xL8g!&}b=E`<^jH&wNzZlA_}`W=BFIzh3L`huB}s&)|%8^#zQj*Mjs@ahGUhO>K2 z1a;gnKv7g#)L>~cO@H8t_{3*RZ?u5Rf9BlX;NCsMtx8kxPiSa7 zjjF^wfl1Maol0m(q~93)({0E6m7s&q9&TzM&q1RN`UtKd;k9LU`3K{$t_qTHl?XS2 zzhHB#WAHz!6Jf}T#Rmd%cp;Xi!gE$TYGP|vv#Dvjv$+xWml7WK?i4dgG&|V2GPmm0 zXEXAx2E585C)e<=!wIp2{d4gI{15Jw2o`N*tiO~%ix>q30z72S+tkezRxZ=g`qm&S_`+wR~7ndoNRilJ+11}8)xK!clxrTV|LJZ zR}pRGG4*9YCoG?}d8-!($7nBn!tJd(=lYL@weg>G75})K`g=73UtmOF-KwF)aNO-% z%$|;G*8Vi5(k1Tpzkleo(+Ocp)=u?Vr^`+C{=PZ5p0e5O-c;}nUb=WE^_zkG2yMXJebIA|2X@qNzd@jUe66@?^|w-#sc*y4VCTQ^ST31W;FCqey8 zxX}8c1CSY{m@}t;paiOhaH_7t<+O(eAFST?A8eSNwgWI{257;h1Rz(P1+km1#l|P` zv-Q1ijw?Top{vSu|JWTMRD|~^(vs@#vsXA^#;yp@lJ*r-p8mFHRNZKc7}NO-?&|0k zIWME^v}bg90egUT{7*JwsorN$7dv0G6XWw;K53hlS^cnE=C2(;(&-m;nO^BV>b{J{c97l<8#s89oDBE2yHCp+$%bb?@jO{}DVhmpf%AC>uf}>TyZ+Vi&u4^pE zx*a6Gab!t3>EPNd@(|vsT1^xre&}-!8l%Sn$LC`_tMJ^lFL;a#-?}WY2_5Hv>T*#) zGI@3}pH<3Ig8Hw~ijRLAi5xTEGi>yw-Ok}7oYodK8uPYh2LeqzBRosG*2|WQd}-v> z9f^nO%E{mq15AcQyF7xEbGbt-V|Bp3N2`D@n<6nL!9Rbin!_`x7TeDsyeS;@r;3;r zuv#8X%)QWnc0pyas`J#TOLv%z?R(=;6!CiWP#M}-0!PlG$T5}$H`S(9cCxTPnVvU@ z9ei(C2PN4<)Mz2=n+t$iHCcLKq{d$}KI4Kn_P8e3TKnv)6nl9mRxBkZ0PzA=vkn>L zW(f@xa4jn9VY z_f!a80b6Qd>9lI5$@j~G6KpQG)q__z)To~FWZ5;3nT4kCoyHqc`J$CJF{G4W= zvLh~(N~ZIFO}HQEJ@o@1{b^2=sbsJSa*k8XC=^x1T+W`hpB8s6I#wRa1hzr#$@%Wo zPt-uKzDOlK(57|9^C3xtZP8w~qYQk>5Jjs#8UTQXrmQe^elTwuJUK3134uI(5B} zr)m!@>Vx&_8dFr5U4|`oRU}!^sI+^vn%w9BIutJ zB+R_3!7Q`R%|SPG&g-IP}hYe4B?la-A_ z20(C9c+ktAbw?|epoSv(aVVeQ`sJV0+7~e}-8hu*T4~vdK+PHxrJAXJ7^)?ceP!tR0VD$8Kws`vJ)e1BhwzyC9XS{Wzvs#$Wa?6OQ8-E{c@Joj|_ge5X_k5mI!>VHYC_x9S08bg_` zLVVph9s(sK@Yl2UagB&LFb-g`@B^++puxRF+Zsk{?$w;uWWGB7ip046G`%a|f8A4? zIlfGqepL3 zc~DYRfGAqUvz<*7okE{e>c8}A(d$7PDa87rR4UDUH=wy%Uz$3r4p9SAw=UC1|25zh zVebjw94%_Utzt?%9uWeK?(IlJ_H%~oZEtr3h{Hg}RKWttOLsjnd$*K$7%_1|%YFZ+ z)@PE3-7Uv|GW5Xr0jG2(BbfxYH3nZKAH*EAi{Czwnun6cVHjp$WFHJ_*&2oOaiIUr zn*+W3sw9|Nk~tHO0y}}C93qAkHwY?BjwJ_5ggGLh1yMPjN9&)Be^9S!J;)wx^=PB} zN+LI}3qSAOGpz$iM=o_*m>Yvn9M%N&_l5C3m+TLNirm*9h;7A2Q~}ACOe$3*$}B~U zPAZL#+%@#vkS;EgTmi*|&pe2i)0%OrGy3z6^E5ON15_x8X~89%ngUqV7<7u$a;C~H zgA)2VhPJo~!*8j6zs99@-^PU#!be6)Fd`3E3Jd3OclbG^`FTS_5)!kEakCJV8-A@- zSQ09B(=~DN!m@Tzt&EZ_9(Wbf6Olap$3F5LrdNYBg#;IGf3SIlGK*V89{UGP6iV`s zud}dc?%RYOrEht1ZXp~hvAEev7k#;F%-q^W<1OZASr?&yIaJww%lcy7k*50j0unQmG_A{u*k02=T@SANcPwJ!?|f0O9|pSHu%z4 z;YPOGK;G`3;KR|laymzeJS&Sm2eT)5n%XlflVVK|T0bTpD=+>XKwRtx_q-y{_+0-c zmxa^kwoxpIykxY$LJaVDC^`S3PS}J_pEEFJ6n6tka)}SN(uii;R0O0CYe%-z1kp3J z8nl{dRWVc|BWT$dp#LD)1$A?dsRe zrplTUSg^J&JXlf}#1}P2jj&d`Vs-;U#?U)z6#|Ft+}HlrqemI^-++qGFPK}MR{Wy3 z8WBZm%O(zZeZ^X@i-_R+K+3dao$GGbW0skiI`be8v-Y9M)C5uPbHe0tX4304sw;Hi zr0WXJYk}V}WM*H3#cm>arj#gTcRZr-I;|eKq(O|1LJ88#|8ZX|Y;Ij1rZZ-|{vpfr zby>IvH*+$rYt$2)V(!&wO;^o$rU>zEj91s#=)bLcJZ)-+sSlnDoBNk5VqptFb7V#$ zlxw|~=tyHWCcA$YE)xgghO~5#chFmX71B810J4q?mYAztyvD(bg5Zl({q&}-IRh5*>0-qhS--c;$)OAm8yV(eG0vtu*pG}M+CTn}O?bDeH z`U?jbQ9hI^>2APbHN{+i2BY$CdQVqO_l#$F*5{RstfdDYTh2h4i#csKhDy0EXiY)y zvDf9*0R6@vmZ)k?7(^kXE0*6xF;-F&*mKUfx&x(C@&4@a*uiQlzq}1;Te!R8TG;p| zszcZqosTHevM15>c7z=pGe#om8{j#LyV3X99LN-Zs&bAahh|?I7H06 zR!V@|nZfcVLjV0&;Us7ef>(SGHXactTgaXc_ER-0T!=+tV$cFIc*|#1-0hrl5~b}} zt>gqQXFX3F0gez>&{*-!F=Iud={b+|$bZq7Ahv(S_;!2PEdSnJc)4cb87ALP?t!9Y zI5T-O>8nYx|30|)SzqLAR~~Z3x2EgJb=1tDWbB(TG8;j_oEd7RBe5YcJPiJtmbz;c zc^a#|6(B>>vzF_dF(GIf7JwK@Iz3a?WtFdVAIaou^$O^T&FP4xTG~Z=uyzY?VSQ)b zJ;L;M!Jt@m6AnzPmW34Rzh+ANy0O2l5j4RE-f+P8JV8UWbo*~FF-ldy$VU87oOX68 z;_$_4G3{ML`OmWl!Thp4Znx-@o6Ofs z#u}O36gl1`>3n~al0tU zoZn41*5q?%CZW=vc5Gg`#@-#Xrl6L^FBVgP8qK|0YYKv|Jz0qUGje0xNJ&TmMWWa^ zSu}mC=_o7x@K=$idF+IZj@a(W&$HJPp;ZP!Xt(hna(U*Ojd9Y!=;`P-^aKDzP2LAp zA3@xa&K3hUR@e-5uA;Jj7ETKvYy%FYK}Pm8*p%&SDC^cwdMq~w1e?!46Rvm?qN8af z<4TTwX>SjixsZWGU+qHAbrU_a~&PedhKyiAO%|d;x$ z-@7J}dq+EEMF{K?oT_|C|JYhZB1{~UyH%(M?ps_4ohL?xBF?clMFVds1Ih+Y1u!Z& za~>tHCiLUchQm3NBcJ0E*JrJG_9)^#LQ;6(J@a!meuIdWI6jNX0bmT#Vy@O-@`I0< zK9{H<9uEoU7m~;%X2dFyzL=5wJC3OFNGm7m2KdwC9{^iV8zu`)skon{Er|`|jy%)j z@C+Hz=$wc3E5y3leY5InIDr>Z^u+Ljkp^m@q1;zdh=m$ zz5~^l#^#%9zH})bZXEiQ$TIq>AWJsY1CR+7zm!sS1P!krAd0U8QYLOHbXq;?5-Wa6 z?jsH{Kl@|3nWOVlX(**@`Kd>C#S@P`H1E#+a-;!9wn83})=5DHVl4P+UV0jA420QB zY&mjkZOr&e4Hx1ACC`l@++6Yq730LFv|3N5t?ig&te@Wup<9;ZOqquXf`a1f#_6?; zXv+f0zg!cevJ|(qg{NF0SMS*t(X_jk?;Mv`8eFM%p;+au`SP-*tWxrft1tnA0s;aO zg!Zov2E##t*5{B^tYb=*3#K1boiFZ~EbMY|-U zB%zc9HG9Ft@=S4>1V{bYM3FzfrSf_F6OA%l^@a-k6zX*%$mEc|g#2Nszd=Jscn`g7 z9>)m0Oq`v85Sh6eIzUXlRRV@Kj{me=@|4VQcugNWwq zsG4n5Emvz1Q=Z299?om^0s#Js`TWW5;wFKi6l={>80whCCw+Z926I^_Gd3+CND7wQ z7nDW%gy6A)yZNr}FXnvJl|u}HCBe1mral|P8nf%JJ58Q+=m=JkP1z+)0{eP>x>X_Q znZk><#dYllqS9wT6mkX1hLKP_I@FdzN^okRQDj&pb<6J6Gt9i80YCBAGZw_4s$%vl zpqRYq85yo5Z!(dP5NajMnn?vU8&rfF6~}=`acnA?$X`~nn|kyg$NFd`Y?gINe ziGY^{>o5ztQXt=Y`eE=@sDE_=6Kb}&pGG+r*SDY5_f*amCsk|Ij~kx;5_=+E8zzYl|O1kkafDK}sYdIn1pJM03NKXOCapxr}CM#b1#7J~nTtMk43ntd&DY{^>-|3}&dQl%Y8sJ{u<)NW~Eo%&U*veb3bgN$b zrLv(P)9O%wC+C zdSg+r@@(7P*N)Z}A5+-e!s=Sh-0=C#vQ({4Lmas~3X$5^Eft%4|JF%`CG=N|xZ%D^ zc|ivYgO#KwMiIYtcE6P?0jt)K3~i#=7K6JJsuMP%ib)8K0xgvYYQW2Q{cIcLTBsZ5 z#m+@7+Z8C(Qtw>4^%wU=Z#6F?T+U}Q%NLC6iuoi9>3IZ^EE&eZp5(}j>o&>%+;Db? z`T5`x%qmHlZ=ZI``=C(${**QP6qq2X9S9=|yco)7w*xuzmg14N`ibpL9`%rN}~&{74apzmgv_md`nJ ze#|cM(rIL!AeNo{CpSO)hMX3SUx_%vU4wxV2?|Y>xz!L_r|*C%1RXDuYPl?$qeP`3 zWl)&@{6IkG?HDLQPPK4-JW;^ojxSHxDvGn3+T?D$MdV8Jm6~L6o?il7iL^vPd3x7 zCdE8687ZDRTYGcWN1?$-xx>^I$lIVIQ%^FT5h|W0glcr2&WGrk%$|y{z|4M}=;aia z*O>9-j=JeoC*V2kxWQhhUb5p7q&zIF|8?@K{01j=$8TY&?>6G>M=OI?A4O%8@-3Jp zCL!yZ80CdcROQb{U&RZ8Bv0{Fel`YpNuuTEOQqO!&{VzZHtDOoO`Ni5Ii$Z#P8k5? znBCQWci0&Z)mla9aux8E>VxLjOQ2p+q+)EneM}t9LF_&IpjPE!VI+k*VXbmR)p6yL zh*bMD^KS7(dig1gvICeDJCB#U#~p0QGSa(;_0dotwlKM^)<6ZJ5&6KG zM21W#GT6JM&$DRu~WHHrOH@s50boZJ3jkg z#Vhi1M5jPYAi#Z{cVkrBb8VOYLFJM2#2^)*pLm%PLR5j~k;+tqL&$bblFBp&RA}YT z#CAo3KXrPQNu2G=VdM;|yJNgdveIyLVbYQJNe*^K!b)N?J4??wZWImLV4X z6yTJJoyhgdsiludfrer-dsC(&QXXgAbM$kh`aA6NX`^-UGv->=Tl#vDU7_2z>=)xd^ZXKnLAAm4_POO!IOFZh zwD|_v9!G=Qv_S$e4UXdimft%C+z9k&J0%N&AYOM>8huCiHb$GTTOt?vDyt|Zm|Y*{ z)*iYfK93oX@>m&zQXE1JVIjWD_%mCdWSx#DGQn94em`ByP@$7HdX$pNx^X+2EsfrT zT^3s0$rR6VQD`DT5rJj~La)xc5Ux*jd~lS?a{~;Yi?X2Q$EW1!uga9Dh_2G=?=||= zXKZ%h#f1A3sRo0XzMjZ|>GP}t&;8Eh?DKD?^+NSxCtc?a(%C-!!wKVdA?KY%?sNH2 zLlcuCC`U4DsEyepQPNDB)}>Z-=dZpu=h9nvVbC=#BuJ=Y=rZ?hhtAHGo%0~ zPXkK@n{=SAV5quRBUdo`dV5ihAeeVPCu%eD_1UFQ+}<_H#?7&u{>X^>^K?er9tnZ| z_Hv0h+|SF(ICN)aN-tvx>MC1pnEt%|Ej&i>rR|aI8s0I#%Qv33q=IQIeQE8%oF!dN zD$?Lw(&N9ZtUG4)1rw{cNj0|vB_HrSEP;P-wQg@)P~aa(Hsc-V$vMXX#QxAi<0G=Q zmt!`u__)29H3*WRjKQ_^BNsKES*G^TMl@chEA=;4D@bS)CRtU7D4ZS;zX%f!jvVOa zIlZCrKsSFbXaI6z-C+aUvtr%1tk0Ux(95KLfVy#7($gGxN4 z^-7Lu%3N(g;6~U>-JMw84f4CC&OAJ-BoU_!g?(Pxwzas1f10D-M|nDC@n$`DywxXB zpOGWr03Y_RGZYiMYQQ4Rjsq?~m`uM+C#&N_$HBV?p{R;8PZ}RAbkJ-b0E`9rOw??R zT_66|wLJW-NFqcrqj@)pRrRx|4yyDQkoZ4)&^6elFiPe6M+PcXyntyjHK?QBk(oja zZ6jxEEH%y76l!G{k;Ib2DzHSwRP&_npVZG~Gw<+A$7araooVkeyaFs7BJAw7uFRr? z{~pl7Qz`mkJl~|l2~)nhNPzj|Q_Tm*T{ifgm!M0ff*Q^VEISoWW~ywTD1NwH4#4;? zCwp4u?^6+0D~C;>DgW>n(?CLt0DXVocq8DOD*D`WcHVkK4C%i2$%0|a7{YGIZ4kAM zr=?2{qgLr8a3L^SBu^3J8UPv z5D+OsE>?89SZ=lgn1JfTl1F2CPb67B&4b`R4Y#;m`_VIXKcXoHfKY7fs5RxHl0z|q z?6`rhv4o0L#^PhyTghfh+Cv!+Z{vbyjUmF{DX`naD$iykbrE(1WE?A(x#RwJVe+ih z${iv7)3v~JWr;nA)mC}R}9E#?M_@8>C zM70lx(4HjVwZ!D|htZ+?2NKaX33f&<6JwI4M^!3|>@^e{e>27!5u=g7BFkd(}@8%@EOejQTWu7!Fb;FQa|mmrd%2#36gHovl4G}P)m5+7pw=*5jG$}rJE(KmW zWs2q;$sz!CgEJl%NlTp!a=*&t{=#$QU*oxF+uBV0b!}LR84wFbJLyj{j9X@eH~bW@ zyPSsG?hy9perrV#5G#ff!PsEZSW>U5j|TGvq`!-!8Jzy;M|E_FAT&tk=0wqb8q1xJ zo0V>t9c%ZqIkjJJg?fEiSAu|JRw0|lPohCm?S6N!uTUkdOJf9{F?{;5eJZI4`p@Gp z0>Qt<>~|A3V6E>?ax}h6p$^`81=INrs6oa*_4|24i*1>1BQ+9c_mXpI z$In_JV_a$dbolLa@Y-qnIgq(g7g0+uR=#QV3#u!Tjb#06a?k}BZxEX-B8JqHP{5dj z`J_#z)ELJI=oQP{pmGYAe|j8%*mV0c5~o!nl+haQ{8gIZ>%U|mK0-m{yikgMrWujY zp;du=0E(RAcN9BnNufxH79e7-rsTYm@9OmqAnwWFlWSawH-_t0=Q@3mp5& z<{V2%O0l2_1!E=h-lsi)g^J?trT{c>#3A7!eV$R$q;O5A(98?S z^2a_7WB=R*Gk>k+b0V!BesdCy|A)P|ii)cV`hEv@cXx;2?(Q}aJh;0Dcb5SYG`Ks2 z;GW>_8XSVV+W=?Ycb%JabJqI4>*r?XV)pdx>D^sj^{-!7|Ad;_kg0(ff>pe6Y|WLS z5m$%H>y6hd;7(EO>pVi?&!J>P-jhu+bJqQ9#Ud#panzYm^_>;BqJYrtri23c95#8L zQN*eo(qa+5ow>D+IjjX%k;$3T3{#wFh0e!a8*b<6P3&|nJS@4oHeAfBz%q1-{?zd& zvlw*gn`qF@q{#>B@vN1peU$0UR_QIfkqm9AshDIQ^y!DMq#^EE+Y1)17l-s8}HPtBP8~w>wR4f>?vKEJU|y< zfEA-NqX@AS)gee{R+#6-JJ9}gA^m8frm=s_R) zWyZo08F`|H4u<20Z~8?daiENNT?3j(>SBK5{?7N?@|ZEaq5vwU%_n*|Vu-7V4~@25 zv4|kzp{aP-#hj$R{b=R8b@|5dvRo&X@CSGN?A;{z0t~eQCZ8+~a>}_8u@su#7k`w5 zI9xtEDZ_+ok2H>h=e1f&%heH!nZE@;+u!@E9fr;KO*AU?Owvb9i0Z7#(JM|BHQ(d1 zH{jPytgsk-CqA=yn|9tVQwL+eIp~^|m0ina+=frPnD0i5)AI_Tl4 z%hd3By2hK}GxtP^(WqeQ`q@K2CDQSW&oQp?Hp5gd&yEBLViUbr5#I=E%~wBX%zhn} z)nJBn(&mx7xA+a=YtK7>3H(cE_7j`A21J2IyC&k4v`B9YcLup4-=`Os&(HhKtF!WDz>-zQ891ztCwpS15=stI)42O z#rT{3rFWXJLYvAYq(@ApVF2V$VY!79tXkDOnbY@aAS@%U_WU5l9H~T4_{W4Azr`De ztFw+P)zVPyXS7EDrN?$mh@lTF@h*V!Zc&n88jjHU&G_|8?FK_O)sLKm8UEJWIg8+_ zCzks5tl&^A3j7A`v+Sk$2I!^suhX^$xv>QvLApIrj^0yl<$OlFr6HUOwcf70eR7;` zl``7QT3J(&bHa*z>~mt5(cR3Kjmv@q2+5*0>TlO1zT(E$9Zu(3g;h7c@BZ=vLe0yA z8crJ+NbFyb%ZNL}QWr<`uhWp-+IJC6>L3eR8*oq#tA%)(C9ATe#YAA`@(hHM`ZU9a zI)gsYZZnRfbryU>@`RSclU9*vpuak=G{68~yhLu?qEj;`Yd$dct#{6e)AgMjAfQ`y zm_khYJ3m`XT-ReEPHXBdD9Sud9I1_ikTO*7)E+&5xbzsGB3aabQX@9;< z6DG=$v)L@p>#Z~j`a2w{tfA|giziU?F3bXE-&nXf(8bz931N0)z5|I7Zh*6W7OU^w z=v2S`3wq?*PAbtCH9sFr;@14HfWwcq{xqp7tjf>DHEq|#MdnC>1ww+8+i9o1I1ChT)MK;{B!RH$F3yrS6iV{*&5byB%eu z{dRuO`j45{kvh`-!ATPf$4eHOeRpgmqXElTzQQJYUY_4CYy7Tz^_!B`tB62mwh1LnPQBQp8bR%>!ScoM2iJ6{9xE$7YObQ#T zHuabLzmdgETLQNlEd7pe1)>v?1y$4}L7C4$nYybE8J!%=bXx5s6xXO-U3OdA=5LEk&6$;uAXW}4SWjG6q`dcxbw5leW+G>DedfZ>-gL&TVRqfkzj8)behkoTV76?A6o zHO`jexN%Y`Y{<}a+J?q+LL%sQ2i*Roa#tTyR6V+nd+4vD*81CEgdpL*`%BS1PTs?Z zUafH;sr9_6n5{n<`xHe%8nBFya%gB%sq{u?z(~zP#&mQgq&gi|5xb`3i2rw;D6aABlimH|JbGf*ros2rT^Ha|JbGf z*ros2rT^Ha|JbGf*ropic1Z;A|FTQnzNxgjUfXZ}?9}en-BtX}-bhHSRIFK8(BT8- z4dd31P}~XE*Id!ls(avZ2ENU}w|*M&TM^opf$0Y^EzjQ>;z* ztGxK@o)q)7SDc!#e$5Mw=dZO~4VAoF6(P~1TrYK`B zu!@8Tr4>E_IL6wzwL*HtncSWlSYDz^SAj=atWz1dQO81QRe>Sda&O#x(MiUI@LNSv z03oZmy?nI6LIWx@983rsf|)yyz~!+`I^~6aFFI6!ekACs>$jOkzSdw;ky`a>b&5>b z=;4xJ^9KLBjxyEfK4>%#W0*PSJ8G`c_cxo!o?uY%eJtTE^vP!c!Ff(75QHV&PpUy| zshB$(#aZBQDWBPPJ?a3c<&jfCDlACT8D$vlNqkGU)jc#30v&f*TV&4>S|~|KI@Bg` zLZ>z_Nz?c6*S=B%c}6&-LUelM_El{qT20E=-s~Nu=Qb^a&BQt|62hvo6{4DTsuDP0 zcUzh}_e7jzwiGq0YSM`9-zG`6U@9rwD2-2_(=BEjlzg40wKCokQY7L<;+Dn)KuL$2 zW!&xgTw?E-S3iNwDj*!J=n5L;G-`!3XiTi~`?AlEm%(|}?IV>sCi0khszcd*x4S(w zfKmzADrM%Ke-kxl)!r8wU>$kCY=a<&a~bu!xHYM}jRoLqOO8Bk&}u_HqQI!vckiQz z$J)br^h^$+Bwz!y=(iT{0QuVD)#wrIEpzT& zahIBWYwOFml&G9(_A$j2OIZ_>@2>CF#zA*W|Jv2EsTCq2w>epwQMCCHL_;0d-j1SL z3RXLRt+(=FRPH86^2H=f<+|=KBgWXEe1b~FUNSdY@!i<}JA1RL_{QQXep z;3ZDbN`-GJTZ4qFBxu=~JTBRdUg1A_P-pIblb;5BrSv<MQ0435B5PEi4~_RcPE}T(zJCYyoUQCs>Gp8x zjYrjGNeo&9mZoz3a@jhLX@~xIA3>F>1YZhUdS}owYkrJG4bS0|H$H+GaiEj>zGXjO zW@sVbTCzn2o#V8MN30t7BEOf%(45 zz<}w|sB_{IC(8oHk6-#!3Je+HG_Ldx7vU8iEzKCSk8FEh!10QXjy#daxkYHN#dei-H=ysNuV%6w0i%qoQUZC%Y*u>?fLy{ z2mbhPDr^qUogct`oGBy*@Vh-K+)EXJxbNd`-o=XXgASei4hnJ)hL$G`u8tRDnk z>u&sahDdi#h?vojN)3AJ@a}Xdx0>3igXa3^lj}K9?LZlN!119*feV8gk8ay(<@8Zu zpNq$Kh}VlgE6bnE zBzc-7N-l4DWu-r+B4_~N&H)jVjh+qf<6A;Dok6s7_q6TSk^NsW z14Q(!_~T{;m`J0Czf$oxaa~T^yB?&WBB*z>4BmP*EALK;@yF#Pw3wtfKF(idxg@5^ zLPhbWR%BBChT7y8lO4*~^EN2^v!&C>FsU}vw@rCW=NJpfGA-U>?iiz#!;dWWEpwz! z4;=IknhOGDq>$m*@8au|T1yO|5JRrt8Z%T@Y#a2@5o9q7z%S3&uX)z!C(Y0t)VokN zT92=8LGf0_g^18ioD7>-qdG!1P_)R}$uJ1$|GaF~1|I+TeXyk$%kI3IPB4{=T@PrS zAsl5H-T#W#0ca6{=uY<$!?gd2w(7wXm*V!Ymfl4X#G-U2{{shR= zt6Lp1z8gr3sPVU>2|Z(zCFD2U*Ny5uUdaSWq>4gl=Iqc8^}rw~oQP^%&-TBSWZBC& zw0?^#xGn_Yb3e|W2!YJC7IZWD`XOTafYW<j@tC|creX~(Y=MNKvo zX5EIDtvNqif?5WGsL5t?JbhtUxibTOC)}x=jWrY97j`I5L^{GZ-G8vhiU1X+$prft%X%UCu zC|SmrL|`0u(5?AI&)ew&_7Pj)6%_3DUn&W9Oss_wM)3}?68SS&Tyy0YQL0oQW&={j zj~GgcAop);Vy<}9eOWHS+}4*tO*U!2-SreznXn@&V%>sXVo!aZJWQ;fGM!=wX`Afu zJFzj+u$4^@@A(V))y-ZwoQ>7>?lYxmc`9bjyg!b-FJ2c8i8fo(IL3Zj>Vxo=w;wQ! z;A(90C0u^uOAyb-aUizeR;lm#5(!Uf3cN->#LP+!|e-uF~S$5yU}{*^CImcpR@GKT_1Au?m&4t z5mH7KRkz`NU6=+7SB*Vbcn98s{TNJ1E0L<#GQp>9nzm;VYy-HT*d20!q4fX#>+HSs zEwFqTEp#&$j#A0ERMg3%9Ip%W3pR(db&X4^#F((X+H!)*ETM&?iq5@Y`-_j9&(O7Z z!_Yr(f-MoZ1+;A-2OBq>P-z23^Q>b&_+!d0F+uHu}&)be{ z_+amC#s=w-g~A#*ueOS#ywP>i!`{a)IqugajO@+$60lg(X6|vqpL(Nmmp5WIc>q}9 z;oK;uxgqlLa}V#exTQt1nz0ch6RZSAFCXqV+3ZD4E?ZpvP|`u}%z0!ntWb)L*hlj; zW~b04m?Y0%ePU$#=}UQSBPXWZ|M+hWG7aUGg~&6ePkZP@VEut5Rqn zJHLNF0URll>ChPQtcZj&^`HrA zP2)I>CGL{=oiler*ig-h^dd&gh+l%%Exvk+D9IveTidj6*PAPwPH!?M{w?~>8wmY1 z;L3pf=?v|d7#%eMCpmSUV|?h($hSZ>3jq%9ez?n59JRpHdfbc#4|=9Gyw9I-(It>rsrwD ze@8%vlR=Y`c@tl8Xbg;MVl>!uT_Zty@BQ^XLJQ-VFrgfgy*CP>u9FE)$y7rsv=-;; zr~%m&lBAc?Ar#9+MX9UF8J7{E1iL<%@E@HTE0+k-vhG5!0qFW6@wC1fa5 zPT{KXA&E7#eT3mEJ)T{!0)Ay2*27VFsVr=08X%^C9C zORe~mtE`%zeaS$^6d$PBPDuyy&TEHpme5fq=iW17*umSa9`!O@bRlI!p zZp6J$y}<;_lM zQ6y--m#fJOW$3aDRwY$^`^G^dZUkGe7Fi~+V}A)+0ZWOgVsQnGQr_^KVT_s4P5pBH zT|-w5CbwogE8GlGg9@p}9-7?@RH%y1Xj*P-s@4Ek$?)vH5Oqf4Bv5 z$ATZsBE6OlgdT7}sDmfEk||#K8*(hoRH7q2W~EKjmP^Nc#%%C47F}0BX~$CZTOkx6 zo1Pj)y7Gt}xyinV;5Q)$6=K9ba!|9JQ&4E6&7=F(EJNnzGbRGLPv%(OQRp-(M(C1* zL9GIm94yCZDj@m|+^mN6zDO6t3F((fRHwDLW7d&54e0OdL94t4xHdg+lOsKEFoL9n zUHC45RG|C^2d~P#59^j*X>P)`T~K;Wu_jN%pIPGaWE%b)o3nvEfeWj{P{cGC1mB0c zS0C`H@XGD?d@0OtWF(>;#!rlz@wj_fxv;i%)Y?kdD;X}J0BB`>Xe~uJ>cOnuXOg#O zSok5NHmsw&UtgW=UyqV+fnQ8MH7<`O#g`g*b(y?(u|-f}1DgG`D{y7S^7m3v*tb(r zOr|zp$t@v^*7Y5TVrT!R?HPPB^&JHf*-FK-o3u2wVud&^06K%m2BGCsIc(VvtC3AH zpU<)UI$ql#AMckH_-rDmR6NTZSsp*pL#4kz8 z5Ah#tFG1%fy`_R|=fKhQ2d7!OV>LB@g%9cty23|M5ikGGK-5fapXnJuJWrmE|{!5i;*_#ga%vV zT)=i&*2X9%$teH>uxzJBCM6=mp;~ITdr1g;YSd4dUbyonKpU4je;XZ^Vy_DNaS+KNJt9Yd`zSh^NYP-6cdD zRzZs3u7A~~aMaK7L%m-6de81>flj%Qu)Ibs){7Sy783{B#0W>-;m*FtkrAH`DRCdbp0`8?VVAF2L=YP`W!l^)Vy*5;0OQLCp8I#4>OE3z zWUa?h6_ERsaB$L2(Tnw8;%gt;IuYY%!nlVDx)A&5n6>g+9P`=D_nkj#x# zZhu?S_-XiZJK^JoUb}XQO*(MyxkTrBRkg)4C&oT^k^2B1aMd}hT( zhP{=AJPlaxB+)-$txkO(KaBfG>ibBz6OYmg0t}ciB|IclZ2xY$JfO158*L{23zS85 zp_k#Bbj!*=m-h?%=gxI2wJ#m0>e$NS-k*6Nv4{n)v8zisOB7pL84G0q+Wj}Ntmq7T z5ChbdK_x6EWo;Qz=#)()=q#*Np5M1%SFW+rLidXlKQ3jxNqg6haeGwpqT^+L{dIJ@ z{s&z_YTpx7P-(&m_VU)>-quYgyjDY|#h__n47m{yi1LpTJ}DFPtq1r-+<5d~B?ILm zIb*08b4X|&Jgx=xt*3oh`*8k0n~$5zv-dyhjAFN}We3GFgj#pp3Zkh$54by<&FW6L=G}|P7 z29dk#(AdNeTfQbGl+E{p-j2&LX^lwnS z`IA52EF?7^pyU>s``8Il z2(EV{>~5o#?&j@y-xUu^7S}D1i^|rrq-GqJwYGka z-14EZm==sJFgi|@U!T)@(IT!f>1~Yl`&bk6WGiL(x|ay5=|p7y=Lc{QqDFC4RtEyDf~ zr-&R>eZqrWw_m`l?3VHzLLVu+jfwY|Ir~#VM@y7t0))n5~FHr5_+;+0xBZv>G*R^&CItRFpNshY22E6DFgyFO7Vb?#e=j= zngAsSi0fJDF|{4B+=U$CvGr(^b62+Pv1~=Lze=$#XYB*apTFknfR_q<+E==ve@BUc zZ`GjW=aln(G|q9fQLI1eS&FAq!IaVJoy!}SXTm#lO_uX*l%1Bg_-yV_*E?lX*2w^5 zij1IgrjIuqaY3X@exEZnz|pQ+IKVHWl5m+0(q=4a;6lgZ%YTD5zKvABK1wv%-%JYn zwu__wJ(o~kaOwyCv>vaF1}NNw)!g38bKEl@^I0*+sD)0uO_3HX+tPbyr1o~dyw}8x z5qs(7V9s7j@?JOuS5OHs@CacWLr7Oq9bj--C4ZvAFb>8+xO^qrbp1iChQLIlQ6DpT zHuH#7)oiV^zJR$r&kgUnpcZo2wZAO*&Rf6x?jSxnE%r*M(m;-eGV#L47Re~>7T6=B zQTc7uZ<1U{t>+jGuPCp35TyIRp?&VXi1B^lCPTRFqowF4>%^;=Q7uby&m33gV&up)B;AYDu)uuyY+#Z2S zCLf(BWNviJ6gA|TRGFSg8ZB_ivf3mvMtbK|VAo%I+|>7g;+@~A*?pETEmR}|z3aMH zhW#Yv@v}{s!;6JQp2GJ0#zn@i+qyWdFQv(c@jR*LZa(hSAdar6F?tQIWGx6ub^bOR zU+0RW869OkAkSm-O-=26aoKG-y3TT$-+TK2#V1l~VXx$5oQz1xAq*J#62Ms}wEm4% z8K^3~<_pwbxp=g0&~CBFeWHuoV|2aQ!yoxkP*S0&OW+d% zY#(I-Q^K_gjZc51Y!4|8F_*OT*~=8hb7U)+`1yQ|5|u={N7nwqb?8mG0KXelgSKy# zx$(>~|0qhR4p(+mNfIMbU_1mRV=NJ-gr%GggMoK`!;Z$Dl9Nek3_6~IGw`&>I*BLPMG zN2Yd2b`CeR;(;PQF=B==5B$=KbfB!90cD8uf`gpnjzalTcsgia)%_8zeEL(usxjw& z>Z|LnZ2f*-lF=j%#HX@drs3vVk6|Yi*`+3{lC~P24cU;3F-P6h2pwyDZTt9p`eQc4 z&C)oVZH6nb-hl6`+9_R1VEk6Au20<5Y>xdz0;;?(1CR#%lS(=?k`a4`{qu{K)4r{s z(vG&;KR0x6$n1BuZE(_;p-Pu`-XOo#VF91%aLb_~S1uR-m%GQN?DNaXY!r&mSbW%yoomNZU$56nHxp7EJ=+!r#mmXes z)CZ&!yxr#)dXT3b!!Vwg@ciI#?~p|fDWe>aswdl+$1=Akf>lnGB!n&z2KV;zM8S#0 z>=Fb$^0yxyu;1jgzS*1%`kvgP*eUNenDD!QmFmd;zBZuTEOsn!9`q< zo^M)ASl_1Yhvtl`Wq(ocdWg^8O(E$S3#4#3AXk8M1L)$Ktj)eUkWJ%yeyDy=kZ@2` z=YnoV5A>7FcUH{rNF+yc1XE_ptsZaYco!%}!8Lq8Z)$xPV(59$ZM*!de%%=SM6Jfx zdVt*Mc0c9%L5pdF1f^@RN1z-5shOlIy zpWQ!s2r@!qTzrjm2z*hU&&9HZ!D=KV>SoP?iN7vOfyQE$8tN6p?KYka3{_R4A zKG<03P@NSVdZN&l+^^{6-OtpXzt9T`5&sT!h_aT*N-G>5l8MpcvA`O*qwrZXhfpH= zY&Y_Az0O!@-hA`A2vPHrO8!US%u249jjrdQ#XD7Z>O+423};OdAW)anl#bz)iX&0@ zTf&0y=la;O!1>xgqVj7Nigq4k{1aS}#pj~Ehs*~^%*bmA{*8{w+VfltLCj| zny_c=F|Q<**+&cFpBN=09!;4;>KWfG3o5C|i-ocjX2q_XU0fm7s_<#RnX8z_ft-_& z$hnLNKhyCuGENlQ;G!OL4PH?D#6w0-y!)5Fw|U!T2h#bLg|D$~A1(1;f54-Oe>?dk z&vux+8nRxdST^PJsq-s1b7BS2U4|&skL@Qk>VSE{W-b@!)6!q2RC-#}*(_9I0oO~l zi}&8;pRa4;1LFiE35jLY&lNzo0h9i(^SA}J-UZ{F2J&%K#_R<->71T9gw}(s26C7b zTa_Zjhh=tTZJ#3GIpuvR{NG2af<}VH0{}DCE);KSa}0YnKW#H#vrreq5!xRu^0!l_ zgNd%uo-3IKGPM!KXXe&gSmEO$=Q5{02@A^n=xkOi=8eK+F+yF!d|I+FPzhKZM7C8H z>R4comOT(AYL^Ip^fLa{6grOp>5*ingY?|J#_QyUZ=aor!+TEB{m|M3szy{CG< z>D?glG@!pnZk5rzKhmlnA`zr5{=XD@O+|-D-2T6W9F2BeZva5C9Vv0l#mXqY`zK*S&tf zQ~ms$(HjLsk7Uc{G|T*D+zXd7f`FNU;39&Awy_~wATyJNnr8FpF;4ML#L#tsC!oZC zilCrOSHSnfBNVy3%UxbRerw~7>ageY}D)i(% z{0#i$rO-*p9#}cmozDA#;T1LVX%v-#D0Ge*j10I`bvd(6$fxMcHWDmy%PM z+4jI$(jBg0xe{)gCQr>>puX}qN z+ygi4HScoqm5L~_^O><$cgpIGWk6ECu{Ry}BcwR)fIxdC(gff!M3LU4mRDh%`V&-BAG>aL z!%KR<1dzNXV+OMH{mvXgszBI6NG`c`|B~@MoWEU%VLbZXZuL(RFgk98A%VRZz?%9T z;ojYh*c_Ed-(l|vrJZ^Z$0v>$8FbJc?nxM)5rEcC5Al#}uc$~8B4|$r&s_;m!Gd}n z-(d3Xr4Rbi%PQRrD!D<)RUx?XpeDr8B`<60FW%`~@13X~Nq8|CXP9LC3d zqcMpN=3$I{f>N@B+&YsMv^~uyc<2Ghkh7GFu2h}g_H(wck+)NRU+IziXs8FHJQ`oS z9Z+n^I=e&jXB!5K1|cBJ5=L1v3|&PbYt-{bJ1Y9M`gNbqFpVO5_BpU`-^H`{B}xaA zFu|cWfO-R8k#*5q$gn4kpX7Y5UPycoqFcWc5gFgEBdhY6GI9XqW+GL%Md#fcHmYM0 zL8me(MqvPk3~8A8$IWSV_E$##o?w>E8O%rlQC<7=lLs8UT8k@WIBmZ01&2g9A!N)g zh6-(x;|bzuyF?S_#{Ee4?Xcc=kBa3zrU5*}>m9}@X)N~kjhEo}u;8~`@uDsV7u@h~ zQHQnaJ@pGLA&dkOQa0SjS#X$={^V)h^O=5R{29eufg!JTFSJPk?<@+K-?o~Nh<-Bm z6wAp<7n~irdfb1x*|twKVb#jblI~Q?)?lhdw1;GT0_g!e-~etK4fkDVBtXWu8@$K_ zPjU*Ie8jk;YqueF!PsZ{{Jzn{bmOeHA9sofrM&{SIg_Ovg5*{RYJXTmXz$Oyp6?j; z-bVjVX124ZCw%vN=cuY$nA#fg+h=NH$gze_C<1DRg3h}tLuRG$vB3pz8dBmNHe+tP zHQh6Mo2>%z!&HCWM~1wE^HZ&>7lHTzd>V~_?oK<%XdHFPi`zZ;EEM#uB=7Cr@X~Dh z(FNih&rJ+vhoM`rXwd^?9m<3&|Y|{BpVAc^iP3#?|7b%!+|=3-A`0vdB>zFnx45|v0a z$Un7=2@O39e<1Ttl+_`EF#P+tEOJ3@TXca@bmWFV_25k5u&V7y0_yDofA26+@4H`= znvmEONpenR|EU&e0m&9N?OMQf`R%ON-{zl>SW&|7aOsoW5Jot!{8@|EokUdm%{$yD zC{{8?*`wEg{OVl4oKP0ttnbONW`3+PeD(S`H!rt$@=JFC@8o-|vzQR?;~+|xV9C|| zSPE8#)?9Q4wP?{-_RAD`RHV05;7?LFq!kr8Je6Xr2i_tmuu0f--FXUdafkt0%f%#0 zai7E@C$$oCe&)7ElMkzYuH!?I3HtF<#{w+KumeJ;@wnA|zL9x45#vr03*Bp<1sZe45f)wgjO_1FG z<@j3KDBwB`AFqQfa1|;}+=JOVeJwU@a4H??W&kWwOY4PbAo93uvUXTIS zM1ri0^yu!1b0>W+??{`8YYj`B`8T8+1RF6zV_5CB`^8 zBL}6_oo0QRFr1v&{4#i5@qC;0`TClX`wAFCX_iTE;v$53BrjL6Iqh{Pf=+qzrNqc= z{x*O3z+-BFJ&i#2yZ#dTdB?)xq2Nv$yVcRtc??C;2bI$Mxsb^HTYgh1bSo)+mH2ol zf^r;g&UK3kL&b6}B$-K%I7lIt+;i>R(@zID!uBQXkJ5YL;d|;odnT zincWHNu+rCMv&r2BpX^t(98(vrUR~16usdn?7{5%rOAGx$S=*sK4E}FBl=p{b81fGl|Pn=eY0Ffy;Gc_Iui@d|n6#GiNEcaS1AEc~&I7@$RY* zc{cmEkH4E3JZ$5(pHIL2eezmkUQ55U@54kwqenyv6gT)+f){Dg;yRaYJWfQ=n=*@& z6uJ6*k(XI3>n`S(ms zWW!c2w-Y2s-#=N7!l%BLe5z8F2@?}7cQ3OPIIu@-*{jc4?AJ4gAF+K4C3x?t+%w34 z9~gBL6Gcr2D+IZd4eX)>VSwNsnQo)9rmsKz+EwniS@(~_pVFAknw5M%piWAWf%RBR zfhYUOl9i-*(L7Xyf1Xl`HKlMy(-c@eCyheTPNmEXzYk>}ygXR0Dg9dE5jsh~zfu|u z<(d2CQPKu0DNMXCB#=jdRJLSWI-3`sJ-vf>1Cd_F?yqhHxoD*S4avK?`*sDSgBM`4 z8Z?cjX~a3@yd6_jsFJisf3r{?Czj~hvl3q$A-I^Q7EWqy+iGZDs(mw9&$L~wBt%4oXo!0C{8jxwC@Cwn zX(BZrIfF3o^Jv4^2x%BCl4mfZ%t~0pLJBVA3xAqn(!ua*f;xw8c4+nCXY~w)I~r66 z#ZdPJY~_nZ>#vt%t7(~PH9+w=y-RiR-zT^CJs_(5UoQ>DCLAU>hCSKO**Fez)r{O2 z*MXS3z4Qjv6mr2<&OMqJC}d1oItiD>w}K-FZEtZ&x7#)@5GXCHN6$}L7k&xhC$1A# z7WMcL_raTfe^P^FrCJUz5dyI*y)2+uWe=a;k{=s5qns7h7O8lYt&5z3XW#Zp|F#bt z(_~%h!LJD@G*kRscy!dX-tg4)m+mxC9-uVSzA*G9w|7i^F-k!Ye}g0Mx}Xm;kL)W` z^_~znMID3QTP$5vMiA}!JE?>J9L3KN7b<)GTdD-)>~Ccuz+wTgv<)&tDrEw_ zL35ih3kQdcm!c9*-k_gGlER;i3o%i8R3n6rRxX58A-r2E#uVr4f^%wd@$-x2MP9{L zItOLNB9eob3MM2hh~UlVK*ZXT?+fv34>MtvQ4itrQt zF&1B695KWiF$W3ycC3C`-aJ>Z6*h$RsvUjDnfWv&h&>Pi!3pzTUeJS{AQ-nQ?S6kY zCmh-u^Yu{c6#fA1A5~3>@AfD+b{O730Z_bf>M=RfsyiB%1+hCJtc*a@;LdkEB^4UQgwd8{bBN8BT1~6nIb1-Y-(yu4x|p50=06NevvCq zM|79Mtx*{2AXEcb)6o(>1DFQrMVeX7e|`%yz*#asW`YbSF($w%Y}5b1s}M4e6s_f= z(5m@J3#c(ZYZ?ea!TQAP>;~xPe|mCpsQvytg50&)uad><~x@tw-^D7Hj{yQOJ`63yXAmaPqMO``bx;@FY6aTm+CZYGMR)1^72SI?meF zlU~}p0$`TuC%T!h4{+!sCsGQ%hkHny)izxFINrGi-j zrvpONsX&ceB2i~y>9tn#lluj6iFA61LT-@A#x4MpHjOUBYblJD$u$shv;)0n0+s^1 z3sw=B5}_tY`hH^QzA4qHF4TSr?!0StEiUBMuF82BLUB9eFg4WxNjnveEJ1AU0YOe^ zDzj*vjwq!6(~BjUB2!rs^1YE6OgyR5!W(U;4NtB0(L>`LSo3Z{t$Bb0Y*(1a2c( zMxz*A@dt;t{U|VyUGu`Pl&Y+tx42#v&GEY?5qN#vjGCBg!BaaYf@vfbKy<`Z#(*T5 zaFreXHY<&M_P2^q1gp3kZI_+W_giX^AZzofc|iW$`&-WY1HZ>RgaTt_<(&X)R)zI)gkBlEAn8E5VmA3)Y7z95O0k&lVjNd&cl|_rBbh!t70rFAs(b z73s^-{%62fZ((n`S5~PXrIR51#TTxs#%=U{qQHyM9G@MyoS@n2Q4lH(H+RbCrRhwx zMGA%jRTMD*b+~$5C)mRZ3T|pY= z3fjF+9{t@1%_Y8-&l$`BqeVbzwf|=sC018IP8PF}gHL5=uot%b%-7FKuwGuKXzn_Q zY|N@eTguL6`;F5Zk;9Y+R}wSK#9rso%!=l*#lve=?20C&-*LEbYQ9HuFjDXS8LBrmGMha$S5 zjXw@AJ7O(4YGIhh46Vep$UWY%EC#4eonvWteoAD^Wx!jwGxwRJIk>|YCz0@zsoBS{^*6#!X~h2oE6VG9DtnA0NN&HlCc zIH*T2ihc&fQb?d-TteN$AjAE6fnrUk8RXFZ9TO02YkNe5HQP=4Aq`P=W(6Cwvadv} z_WtJr8JR*Jq5RiQA7ybaw1@O`yExT@<8tx^GXWwiq+duEZ0UG3<|Ec=NPYRI-_?S| zG$KdFF7~bboS_EL7L+RAi0jNfwXt5|Av+}EI8iZJuDL!SySxBu^^p`W|4Lo-pl)x! zPfUxb*wWYFnKslAhM$J*UF@ywO+lkeT>1we&GVS{BNLJchX5%WbV3H*31bL{hIot* zrqh7)GWcF5Id*}kDHbdeP@mLAeJScZgwo=OV*C{G#|_L>Mvf|^yWgEa!aKY&DZzoK zBCqrb4MRYsN}<*DkAd5w3i|lLIWjD&JxRiJLZVm5hM~gg*`~nr#57=GjDY=Gi%XW@ z8}iUFnG86{cpgFtry>)Qd1y?10QdHiVqWbg^yg6HPncbv8ey6H|HY? zLYpc#yD$Bg*=PA}e`m*GEiU^t2aE2usVZz1_6gtL@OtkwW_AXrDN=8=xW!I;32=U} zneN1xd`9%#wPd|cGjIRNwQE{TJI{DeVQBDqUoHRjS3INM(;|ipY3+o_=^enc(ACsT z5`XZlEAE_itLSjn?7wT*bS^l0m{CI-{M_A69KQGJQJfbXE_i;KtJ(x~~~K zS??Rzya8r5&Zpg}Z|ALEw(X9Bb=eLt&COzm_%%=5PzG{dO-np zmd@{g@4QhXLslu{$}J7;?x!3RECl-)W7^s$D=ojTGXM7isrz4i8?MfJ72RhV&Tzp{ zMc`x$`?vjfKQ{mGn-Q-zxiO1XE7Va_*j-p_*1}_Ar*B>2xi&F_cYo1|=Zdpii!4

#`^~_5BO<#6SE-u?$?H#*%tI+dF>#c8ZJX3l5)`g-wURo`B;ddwZndy|CU9va! zbb0CwPEY?meV2RptsNn^U)<~KOVjcG^w(JOg483Uhsz?kwm!e>Y4-VV zm05jkS;~_*hRXZDO{T})x_;x|VO3Ku1;s!XhvXO)rFHRo|0jj7oRjGEKd0$~&YxR` zQM+&V#Jih^NtRb`nl9Qk^~#dBn`%$8SFFsw5TY`d|NX+g_*b8&+PyiwZSB_@S#_%^ zAGT^WK3$T!ves&UxcSi?SM0nsH$D|9e*XSA*Ej1cWr{-o6e_M%%w(PW_1)34z#FRS zXPP}xJToz$unN1bJ+N@-gu>Q_gnL8pMC|DY|C8vx%{`@>ACeg-*356IQQ+lJ;#EczbVVN{vP|% zGfC;a@+ R__v6+{^{nzsmQ0!004S_s*?Z! literal 0 HcmV?d00001 diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png index a0993731429af9e451f67948514dd242cdd1331f..b12faccca721b526bc41913d741ab4cd54baaac4 100644 GIT binary patch literal 45200 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�?(0{t2_x`q1|Gk?uN6pXmQ2u({Nz{?d~P-d zm3xMnHAWR=P&M!o_5YxUt4M>g;!;TZdbik}#_I^9OlzDXaQJY6gY?~yOlADhK!u%v zCZE-+YjTnB;~T#i!!D}X{e0HyAXyy;)Py-cY9Z5ps*8G1BA-wbp&JZO3A7(J?DPNz z5%JD&viy^Y0gzB+-7E6_dkiM@>ob5uk={eJ`nbei9F)AVTgoa>a4>V+{`QHu+;_R4 z28=Y+vn7=BZtksGALXBoJjk=IwSc8{#IkBO(9ww87gcJLR3S zl@_YmsY_E`8Wp3~LQ$;O4CZ#T3ixf?+Fq7 z6UfXH%kpciADYvz`)RG0n?>%awzlNFeD$=a&VpyYTypM3f4LLw;O#X7vnrD##$$Nu z2P%IuK+is@maq6Xra9TqR@h6finKNkY}pvTUA<(tnEI=xyMl9n2^-7fk;bH+IwzAF z!3mA|8Pi{z*Nd_s7XpJHsJWhH>DpbEr`cI&B`gchH$D^Co7a7=km+f0acO$oyOhMw zy5;Y*vwOBQ#IHxzwzQ~5Y20r?@LL~_q$4N9`7eV3v06!G^TF-K@g_!G;$oJJ~07kHD*!(!ZbTKt+5>AUT;D>Udub zud`O_4cdhR;qY9rL9E4^v+kX(R$0pS?K9pj?YN8ewOTI1F6&zjswZR~G3o`r&T;Rl z@E_DTYHw0=-J{kiui)b3ndif5g46r?x?8&R29?gqwM^{B@0lTh%P8!G#;qqffL4St zKh(Gs=#-4U9zE<~=5*`8i^ZaN-YZo>BAr`~f!6%|+Okab*HT`KJimNAb~sPtRZ;CX zJ+{|&MvCON%Ws2GVd&r(eQJDEH<%yMK&x~*ti9RtDr>PjzO|4dOq&_Y%z7TK0%BEU z6@?dadB?rWB|A}0tG|7Ee>+L{4)-2=OHXaLR9vW~&ML!B*YY!fLyT}=gf;KlYdI<^ zceeoj6zt~!%t*5;*rWGkX)80XlYw``O)BM;AjwsT-dq=&h0wi_8G$$hW+XvJr#gPn zf$gAhpKYCfOmNz>$=iCKx&p4Jw_h7cKc8>qBSaz5O(&T=@?_&D*Tt0$TGKGJ$k{?C zU*Aht;ZW2g?`r6<+m*5dF}%xijW+g!I}A_s%Qhy#~K{`KTLZ9GC%! zX4=&0YP?amgdaWTdDrBTl1536-T*{9!JF)%$yPpZsQWeco7HZ6!s zq(r%#ldS{!2`>{6X6`5fH0*=GK}HjT&iL+CtK6aI`Fhkks=s7)QS0#;iQd(MyPctJ zb}uVCw?7)|$vEvQ2$5k7i~}^_NTnt{g(9doS*C3G6k?<&;*8Cp-##(6?AJT#VN+Fp z(dui?o)pM1aJofX8s7AXaM3twe5eaNa2#6Num zS|&ijw@m?A`ug8(K7TsW%KiZ9FMMdnRAIkMv`04`f(O^$MBeD4#osd22IJka-;LSv zFfvmTr>}oQs%hLrn2Nt_9m!y_gx%&iO;5O;AL(r)UuWO1dq>%xUe*C?HqzfYf5A-V z9b7zO8H70mep{gc$#&2c9XHr*!UT`;Qd@uKQbUzO2^T%19SKd0?mjsUWAY+-J6N-j z*p7O$cFIKvl^24Vm|LZpD@M9$V$6aS1KDUcetR?3gp$m-Zq~AHK8~)<(VZ~oLN*k9 zai6?9g-2k&Gde9wwcAM#JgY4_687bS*^CCQr-c5tp@Hd_`~>GjmR^1_8DE;_Dx@^; zZ23X?u5L%!Tp(lq5T|)+6qXkgZ--Sm%+zMKbhE$j?!K$nKT~Uxx_XSUF>}aa-g`^$ z_*>JJqSF44WQ3@njnRk9mL@d&B+;Oxjg9t7Z;P{L{u{`t7`$ae)2zM1`d->#?rl?8XQ_&G_bCTfQ3tL z>1K_Wf+IJbu8DT(>Sr5l$IS`a2uL;>=T7YTS)2&gee)%sa9`HO_o+Vl)d0P?dgvAF#22)0_<7!V`PVZnnmr($rv2Qw`Tq2agvu0+h18G45NHQQ8uz^v?L4`2@C8bPMwV%BY=4wVyfOdA4 zYPK=EuPl{=$aqPht@Zpg<5MI?8J+od^c&$TWUj+Y`&poQgI72FRr_2Fd(1Ad=B=tm z&2qnTsa|1WnlZfA6nmzK?NCd@9m(h4HH;V|{Y|sgjMA$lRWF6FKYn0iFf*KEZ!__m zC&{O_c+y3W^;IS&K7pJA&1zf2^NQqWw0wpHlBJNwc)*idXsIK0nDttVG~<}(x6(r< zD*|vNg}+%79hj3j%}vOYUihY7f0Y^s^Gvb^9<-CP-39%qN{;v|0qf0Izj%Tv=IFtA z)N>ss29L6`eJxWn|A1T8Kwrl?88dBJUb!i!(XEM5wKbUvc47ab#J8tM#wn)=$R=FXyMrmv%lr zLKLS0f{GZJ3v=3;*!9eN@^^CFqr=D|9=C2=Udy05^Lv&>%6IzkE~;mcusaN?y@vqL zzO39cfby&2b+Klh;|VF?s`og(@GUE^FF&S!kX!8(nWZ6MvByI{^2CPys{$9|F||v! z+@B+Q3Bj#?HuveD_qI!ZRPQCn=++FPwcfLz~qkc7i;86=$-sV^SQ zsLEtE94a=gE8l3}_RK%?Sbx9KI&qJ|*z=3TZRzJjUTu(A7R9Tr2yhS zU}j`^nEPk>-r-CbycTMS#(2;!3}SwpqI_$H2k+^(ooi!W(#zyvoSmeb(2#hoiYtjz z`k>Kb&PokIjAR zC>5h`?~{P%0Ok%@D!E0AS_+_h>a)90C`dX8aaAX*%o@3UO5x+L+4@S^T8^noUkxMU zj;8gb-hgf5W@Az*Pg_;c+H`$_T(&GdV>NnB`K%mDfi=%jK4^BclI#3ujZ3AjMC*}c zXhtCr+xM+ibx%0oI@i89**wU-#UxaAS4Gvw>=}R85#TP9)V(1G`8@4QaxX4GZbjUR zcN3a$Dl=Hd1@UC6`R?D4$c>34GmolX>q_jyDGR&ryF8v@D$`(AH z{`om^!Dx)@s96~p$%|P`kQFzdk+_<0skLU|ZUU?4e6PaS`J&XXj$cbF{qYs)`E=W= zpSz)fs=qkY1?~DYGg6_$Kq)J+TvG6#mLO02PYjm`=R_=#x0dVj=r;yY3Rdf&?P>SA zxUAf-Sk}Upa*9utU-5C5!2Wv5Kg{u9(=b-wDXtzur1kE)Tp0e2f9;jTp+K@CrI1cEFzeyT}l3XyD!+wg}oLoA?;|Ee%K4M{mWC%+FenIt;* zefzOqT6G6O1Fppe9SzS<@ybXPz!cG7-;wrgDv%`8S_BIV5S#|_31m=GkZOp8eF>ek z$7_ufo=M4G$?uxPR}Br#=9{i=5v93*Z}M#^X}R&OYm_@UM0xZm;qENZ`lo{@#Q!@Dwo#t128A1PVhbF)NvRio*g~e3opkF?cbmuq! z)!Yt!>I*%Lr)Woa5OaEs$@h_z6SBD%YRPgCLaZ^PU>OJour(W1XS;eRL!wK#z+v3! zz?uV+B#u&wRRBt)(!t~yI?u7#F<0-6voM*Z&yI=>kn02)B@0iXA6A!Je#Oj3)PZ(l zpA#%(%SRI2i#jRkTEZ8Li=l6v2;ws9g3Jk`(}K*+z4tUwAmw!|-Qm1r6P=r*CD3r+ z$e@1ZwplZn_Y50D5b?8YH{Ih5Lp*Y3o_IWoHcV0ak~uimm#GUV}$DmnZ#PR{B8pw12CHRXJfxnOE0Nj`ZE~!t$@o zq%H`Rbs!+VcyU)=iU^XkxX9tyGPAAs?M#08ft^Z7*i5%F0&zE3fit}nU30SDCsNM# z61`Z>F}z482I}Kt0Z|{C)-oClN${UEXU_b~Ao4>^O1TXbF+`*mFBCvSyo&<~#+>6z zOF^9?lX<($1NDjZr#OZ`x{&v4!{AsB;pAWHeAkj}ZQs3R1}jDo^qdc?n}2)2@u49T zhSKdAhasvlgc_Mc-)9C|E2OaS-DL59D$;CU^$;UJ*C!5}U45yhatZGFr9%r@*z=q8wLL4QV>83t3ieqAx)K!e(F7W6Gp`btgN7o zof3L{)Cy69@RzT8?Us740sx%3lw8@0E6FhmI1GA}GYr>}kCVfwQK4rJx@ZI#6 zn*sy`w?@snPQud8#y)=Ms>0{Ri)Ol3*E)9OZFPm{gJAW8KJR6y(4~Ls`K}7Y5OO6X zazd=@(qTvec}D9K)S&Gpj5QG6ku!1oF$^&h%d@Yv44JbgYYLTVy*ftNn9(<#8y)c)@u-2^L7XaU24a)V0{3Mj_w_*)OYx4XMf$fkW z0EZlBq7h^VVT%yKVUA(=-Khn$BQZ1N{xFiS2E+-+2(a{|%3mIYN>CE6*st-s$dI$B zA6EeNhwX$(r6Qz{EjH@wL_rgEhUr_ae+f9&m+pj=1zw-u6ox)wt}M;5wId;ys_Gp&-bSDcEtQDZjGQSEFHuZmZ16*I57f(Zg<575Ty>Wk0Ib7hvU={$pKk?#_Tii$+zx z59dySuzzY1u**qO8)l~c=D&yl-)eAnt%}@!vGz=@zJ&Q~Hu1+N7ZiSv*gw^zK4T*u zJ3~=>;f^ldb`eF04;}ZqxiE6<(5A^|1qzJ+na{j_x(-t680EU|L`;U+^?Fe>z=g%Q z?yM6xcEOT@D*tNbZ5q3Mq|*H`I|bQan3Dr;NVb&$km2*0d@@8xdpS^GsRNcJaqVo0 zLUo(#uBvmPyu;yyKe047#OKORs#F2kDF2-eGu0GW|I&8luhE%#qpW`gT`A=qo;|d# zPMI4GJy5!Uj{dn~(Hv5wXxbqs%r036)OAUkijRP0Vin9M8hhB?rnJ>BaY;|d|z#UH{K?$ z4=BKF7pL<*n0vY&Gg7d%eaUCRmu2hq@5D1K0MpF9#7@b@KGfvqhQ|w10d2LvZ&Fr- zkaS>v2$JDuW28^0AW{j31E!(60F z)MNj7OS7cL$tznPX6sB{DDYsf4tfnqPVr=oLSuPE5r<9q5t1@b4X$b)^GWPX30O;7G1pj2fI}|8wK0>ashPfWrI>LO1 z`x(|YXD+~r#yq(EZ+?9-FRe+a&fssA6(~fC2uud+dO=`k-5LxN4Cq+#SN}Z+&9{z$ zR}kUMa_=>tJp{0>-n!|Jw@3Wsybb{TnLld02+etCMdVc!9^ltt!OGId<2h3xO=6;K z6FoEFKk4CLoZm=8It)K=LDHsKVE)4QB!#F3GzpNLVf|4T%pkzSTI79}b{DFw-D5B0 zQ?{!CtA3Z)L#4mP-pd!tT|`h|{+@2aV@SMnb1%<$#mk}qp6%bMZWrDBt<|OuDfWZ8 zM$I@o^Vb#Z_2%y3`2YoYkqC+dTsNeTS>8q7<9rc*;d5R6(qgJn^Ql7fWpP;5TFik3 z$w(y+G?#o3lwJX7a4uiJ^M*Y&9rnl{r}W0bLp=S>B-@{7kUDZJkn9b!62ZgV>7R<$k*6sLhOkq}oy81yT1fSV@g_byu>#Afu2W(Gyp18>n(B9NSUm=kG--Sk3XTmEDXpf4MB81)w*9Ce5PKTRq0sK>9MDmOXbrY1>mtN~WN ze+$BjA#r~^SC|TzM@gwS&*hXtqqR_LVU`3HGVq_g{0%*XfD_3@J}DtRHqf;*RbygH z6UwO?nYMS(tLW7Wj`7ufR)7viH|UniFGB(e_36~W(M2< zK(zmr=f|DF$Q=BXxWei?ZiMMlkO#r^ot>kaD072!oeYNh=+7kF1f-zrna&O@EobT) zm_Ee8F0VJc!H>jjujwFx6w4Snb*Fo1yBncNVU-I4CKGZ=*hx_mT{^qxR;6@!NhqW#wfgM2hq!`yfkz1+FmG(%uc~ z+o4%c+DbW{ei$P7L;5Yu_BAc`RS5&rTys-}F@S_avet&elG7U6@P*w|Rx&qURnwUF_Cs{g#=Jgl&%n_ z;UYA#6A+g880DXITaun0J8xNi0q?q-VvwJA*(g|HRk})m`z|mH52R7z)sBfDPga>W zSJnhey-i(*UVI}bJSku3@lSfPU#?a^PF=y{c&*2lKQI2!zY2>rJm9?jA zKfYf5%_q}Tfd7FS?7Q(K>2}fmNJEN}qr@%U%q9FhvagPd=MSP!wkC8#AZP;j(5D}- zdMV&1+bUw6={FT3hD_2q4xOjig!KE z3F#Dofx*%TkJ`-N1=|r{*)4rC@Sf^nS<>onDhIs$iu+G))ErRAv|W><#vT3h37Ges z!d5I~`cnVlUE`>eVRaY$h(|F0ZW`29%;25|9azS=9>egIxLx&Zvz=VEGfP}kgfKDr z57QoH5YB-2fJGKM!m2s5r=5!p7}I#WvdHXnJB5P177jyp+pcEcreAtTes{YfqB-mq z=N)M>SDUfE-eZBdV5s7dw8jzsWljOzDfp?C`9Az=-n#r1{es>@JS6%WhWd7P%hR>< zhiq?Z7Vsu^yITa^0N8`xQhpB3u1c`*!q(v2 z&0K|R%l8NTaARBFy#0j6{OtC;=x-gXPS~tXWat*qmz^x_TsNAmiO}<`S@DkS%#&OG zrsyHt?-1!m_Abw_XdM|z=(nap5xYtnCX0QPdA ztzOuRk5XXYvxLsYB*#f4sISn6h63^>twl@?2FEiC;E8|*;FG3nrxPP zsQ%u)m5PpD^3BzdJaTtc^+WH~e2*%3z9B!^)kUew7rgnkLNg_qF`MQ6iOS{qtI{v_ zybuwXfFybTo8$i3FbtkIx$~lfCo(o*cpsbMG#a7!R^wyswR1<&j_Fs*eKveqs+SxP zBZ$OM*t$_G}b#+F`;`1p~w-AOP>`w3G9C zfh0bxbLUoX=@z=J_8 zzA}zLGj9{rWlMLxzq!%OHOtSAmZ z^iR-!v7VGu__io#$NJL+^4m8FYQIW?#Vvw<@}o#?FZJ4H`1XzL!W5lY?)c%o)2_}d zzmo-tdmR{z;Q%XD&9mB*XQX-`jXj*j+>)$o_w;$|j^+(aS#jH6zxg|{s++nn2Oxs1 z++X?L>&>5t$h|;I7{;pmrs+i66rn%3(OLq+?gH%H8)c)P7#kd;t8O{>ec<%C>0{T)8L2gwT+L063)s8ME+nk<3Q08Ir%fjiLGeXgMv*z(vj~j&Q{Y4Ih*=rKrHfHqwZ5GVm+os1b(3izx~TO z^~c82QLj4wAF93ss;TVz`q4pA5d|9vqc|uCSU@R4Vnc!oQlv_;(xgdKS^`!E5yXOx zqM&pF(v)sxL5s(-x=3 zI=_ouvVEZOa;Ou6pX+;5y8oMfbeukUrx;nT;n1Z9^uXG!uNb9Z!7&MIo0!DWRl3me zKt1tPp%_st_Cxz0Md4%iDuQb*38K5!mw#3$3q7>r_kA2JPU-7H)-PT_!nS`epJ+CM zzJQ@JJJw{JZ;MGBXgN^yYWSCE++S1Vy^)_1f~Vq_mOLJ$PrSZryo2x1(uGTW4(mwJ zclZpaTwaLy?a0op?ejxDg{eZC0ZZjqVjqu|b3Rr4{+&?xZYI9VW5-BEh=jnOlL^Wm z5n&g|iXP-O_#m`N2!*=#4xbfFdQ&xpKT}-zT0Ho?kNRRJO|=J#>_Z{~*^$r*W!h$6 zaTjP~1o-727PvZ$D;%?V(Ol^^6&TKN`t&7vR--{LY-6O0m<*D$~4Iwb}mlL$n-Ir41vvnUy=PZ9Bcv z&zrMR_yq|Z8LkU1nZJME@iJ$UIS71tgeD<`!2{CzXG3l3OQm&Y82KB0fOJ@4iCy;g zsH3{h#TWZjD88zk3u=fUEZXX#Ob!7USW#aBHR;Q5 zq?Ex^AE18Y_gE?6j)Lx&t``;a6HQaI7$N-{7QT3LxzkdcI3KFk=(RSmJI=@NhIkJR zXWzO>nu0+1>X${cpUiux8A}M~Sw~}Y*uyVU&TZ*Ay`a7o{}GuI64jj#AbEu*CNOv$ zJ=P>y9FeWYI@MCMUbwuTAa}d>g^ypW@7i@#sIVZ|Z`0AGcIxvv|AmU$y9ISVdC9@5 zq=(q=ehrnXjy)12Ym2dt=05L9Mr$RJcqFV4@sgjNA`ssZ8NR4Rns08IZxevJF6 ziXS|td@DO|7wrZs}2bKvS!wxB`|RxPTCUpA*zSG#R|^0-TzL(832xf{&|{R~ABb z88|Rv7RWIzTtafis&Z-9-Pv7JIdSkVpaD__F`)U^FOie>ohN?w7O3kepBFao-n%`0 zcKy)+r(vP*_t&LWFldP_BQf&6H#Oo$x?8`Dht!Izb1JL-DAn6& z@xRMx33Ljh$7cimCx!KH)}``DX&pUOoIdx{BW{<#)JS%bmAm^yg%tpTX5*(eGOx~g zp2k%VU-Z-d`|mU)G1Zxtlac*CC#`>ICU~7i$o{?Z9$lS%nCKe*PHi3mvteWT-4uYb z2ZxNCA_TM@Js+n|PcF++zynDMBumuqKcWYpbLrfan&GU*Sf$cp9}eS!oh5UReO#%U z+r;#%f+oFt(LGrW7!=XZ zzn|`*B5q8_dK#Q&uBy zpf(4<1?mRG6lI}80~ALf(nSYXmS7`l&KO%AwH zp0Yn5-<@vq`rS|<%STJD(*E^x`%W6myQg&~u#1(+(z|TOnA~UY{yNm?c3t}ezhGR| z3h#`BB}*3;{GG#kBrgJVbbx=}*@U=L$ChFpAjlkiXjOgMl{9{;9;dGGB`AZM9e?S= zHYWjWXEcdd6tPK%I zW>whR(&)sB6(nZ>Bdla9zFjpn^yeH5us=U2o|Hb(^402RXt$Ulpg33l{S??S7| z-8TfdxI=q{R4&r*SadYGK7A_0{4*i5mFdvNvBx?V8ao$;PgQo$>tp=8gNM`pEp4;y zD$-D{dYu1&6Qn^;xKB4K82t39nV_AY*cqg9adTI8LACkQuOrD_74%L6HCW)H!GKH({>{$7)As)pl%NFw z51hZZD|`jK4#h7a(mIIqE`Uw??v^+x_>!}5=pI06-9lof+vCGoZV+A@{m{0;J(Yda zT+fN6|T!yBJnfFrrA3g|gJOgi=w> zSJ)`}Ve@~@3VhN)*0}bMp(r5Dp^Pr!GV5mS$D%O2?8t48hH5NEomWL;&kN$ef(-BD z>doiMf&7sMq{Bf#PcCi{z3lv^)*=6nXS(wn$Ocpu^pNj?you<(tG`j-8x=cnwvV_A z%-G5^_E=h!mJoGhd!ByUl(-Gc1IjVb+`weP-Jv$<;X2WrKMVwwuy9oVP0YV^m8zmH zU5e0SXFi+yG@^GM))SABTEI!D*HvHB|LZzW=}2Ga-lgHS5|84k_ud{x-7_fgo$r>e zC%v`;Q41u3>PjznNn!Z#V~a2cbdYzeU=iPsymW+3^SfG*v_rmqQS_x#EltAjl69EA zi&9(3CVmMuU=1W`yPe_u zN_w+kWgxmNVC-6~zWf#7Tb=@?Ukr_3!Zv&PYE4hN)PyB)<1P*DKF}y5iW6SCQXLAX zWxIkgg>*nAZg%Uv1f4qX*V}!H#Bb($5Eb@_+wFgI)ceF1;TCI&y=Q zyDNoy&9yY`0&K7^*vI3_Jz*5R8~OYg{>=iQf9C2q;v~Xd9x;OD2wJa!3z+Ciw_=Q5 zK!Q90w0u%5>_9%}+W6E#5e60N=sH1C+y5CdkZ}Jd`z&$sTs`c}C*`(O93Lj0GrQ0P zqn)0R!*7O7t6MSegPws)Y3@4@KG8xDn5?(=oLtvo$4;yeCZ)))TXfMVHCwk1sT4O= z>GEoj7GeB=xa=EC(?ZYsk*$@jFQ9u<5DD4Nxu2z$C4M^4%(!)ncVluw(uV)JjnD~y zRbxr)`RS7w5L<8T4@#~OU@yUtXkJ45vGGyJ!1342q4D9u$Dr|(k^nFs?s*#3wzs6a zd<=&vh|zU{b*!p)Cwm^Lqe82_^Z$q#zZHu8R3y3Y$j6{ed4_X6Esy9MSL9H0Y%3rEi&0 z5UI*qEGV@7`>sLsK$nrEVxl*wM@Bn1WLh>BFI+LIC6F!PXvpQT6XF6os*hg^-p{*^ zU`{t7YPt5jW1x}hi|>FA*yX!BLP_f*9{5@Jy#q6d+&)1HWGRQv6XH|^9Zk!ZkQ7A5 z;`?-YZY<~0zx{FIs>^oKo9G#UD&f8YI$ofRx+6AmNclX+Ue->#51O^^Jp;_*pWNs(ts1v6shHc)J_;AYiO!@3mU*E9Hqc(yub$j23Lpg$C z0VuWPpWld|Idvoq+m-@7`6ZH7SA z{CZX-ernZ#1GN8R6H$XC9U1=QIiAGo+l3_x{%673EyI#_GnjsK?obH5xMPj;&%8mq z*1_}fMYThEwTz((yHfY80Iokrc;bVEumTPV$xScdB_C&aSW97GK_M@W64c-s`V>@3 zox23wvpG!8uL`}3Wzw}>?HwKC<4Bmpg>^+6D)VR>p!=&jjF*mUvqrk&v=U3LgUU8$ zc27nzeo&W_SvBmYnYt^F{VD_Ne#~1lJ^Mm+8J#5#Pyb;TiyRXh(o!4bIju~;t@AY1 zR0h|yD)l?td|e^>Wk7L@d@CTMqg#c0GhFx?oJ0AX!zZfGL0;K;J*wO?YtM|!;GXQR zqW1IgdQKALyw0NHxnPxo^L_O)>^*Cb9Q(NfB}7U7z}N0o)K{vHLig!tKw^WxDsYFM zCq2CyQ)*qdTciFEH>q9zpqfDLf3#g-cr@gBKC8dlGu;Z@9LAUN&6>as0id1G2&K~O z%n%V}oX*e{0sc8(@p5l7UFI@D+HI?a&J6AB8f-eELCkjuf>P#5EZLkd$**=+Bzr>c zePbmMlsl6-2wLaiLZ*kQy%N8j*zq@EX&i)N@cTTmnLAs`wSfTb3hIrj?1Rs){VZDp zQZ*FAqAhQNmZDct33Gf8<^ltM%Aa{5*|qnFIHwY#$*+h!*Bw?$8Gr=!y>VB%=b?GC z^-B3%Q7xl$KyNbCKZqL`-8$?&Sl(jM`E&A(5tuI4c2He6xNcXq@C@>@spP&hp6EVn zyz97OBe2Q#@BL#BuXBU(OFc9N4?=2TVxEM&jZa;bM=G^mb^qzKU0sx)sF{g8SRRI{ zsdntIwCwC41Q(R{?@yjnw>5s=G*?`rceQn-EY!2mE=tuC5YUz!3%Mhv?z>KVn*ftX zcVcSWubo@;#Ok50tUrD$Dyi;@_eWLG;M$y@8!UGsup2Q6dmvh8=9Z+u9eW@qB*PNo@TTsF{~fFIyIm|hLG zZDoq1tiiO_p|VmnR-i-pz;wVYE5b0Q?_%n&J+^=&E*_cBlp8eq1kt$<7E;$%$V&LS zp~4W%OrV8g-Pu8#e?uyFBOyDlIw3zKMsWKWw~3tm0&s6KM@{% zt447y&AmIVw2!}yGI6HE+!VnBE3O2Ub*llpM9>A@Gvsaru13I=1OJ+xgVA@|q_9Dc ze{{CP-}sT;&VQ}&|Fi|W^_4#&>d^D3{SmXjH>~d7%gtSubXq2B*rOydN#-l4%b^MaMcDfX&=70FATTQaV$g&?n^~w}hK^*g7D)DO| z3%J96oeCtEmK)H9Tf44)>T*cKeFjCadA$PPJDIXFiQ9hnX9@6sMx>kxZN0<%Y|U2i_n zEDt>WyaY>1mT5JwRPkAYJyRj0fZ}R!kV?GfRw$ z|Muxo`};>pgWK>#kltS*g1GLR7IHnFCi6k^vzq-pjgMmW)bO^uU+Mg=VzJ>>YFfY? z3Y=4RKo%zM?0U17o&BeL3z|6lm03P|4#szwG!3kzJtOBqtJEjXeL453vq$l)@Yw8q z9;>+a)R6;yh_nHb4@Ox&|;z2ngs!D0Rw@s^@cs3=j}B@Gt{=SaEJT)xGuNL10) z{2VuRxuUr0%S!jAf{#b_-w!CEowA~1#k+{zg1Fg-uMD{#W{dYv2)+G5=vn~GLNpu> z%*X(*RMr+8gzQU$tiYP50Z2i}*2sh?_~OCgnXZr<`b&iZqcGdjew6MFx`*f6dqFeB zEi_ehm$N6>UoX^k4m^^beoqf}S=C2wI`@aoLAbHY8>iG~ zNw%`9yA`SzJ9e*M3;o zx4v+POshBgEU(SueJTQ4)(9tG#=1}!Hod_b+Hwz`Tq4R3-wrru_i{QEc&{yp0@X9` zMhM^!C2Mj2>}MA53aKiv_&WJ?ax#30)%(UApaug8?ccDL*dVpwK%)OJWB1gY#Taq5 z0A3vkPVpd7=?334}y#4Q;TL zQ>>-52$Cqo*s1w~=F$rL^Z0z-cTaU4lEI0NHq$gT6BNICbVvA33uJq)l=#Xh4<#SHD3j(4b)d0QFUyNh5 zKi+tH(pqMJacDDZDb<&7IpdeqCRGC*=oNP5LtV_M{928;D_P4-m?1f=CbmsEP}Jr; z6BE{E{&{glog1W#!xO9NE^Aj74L;Qz05Lpijk4RfIFXori;d{bgsEFNI=_NlzGD{A zIqir_dg#U#GLJ10pbDu9Y7}k^o{Clv9(Jb9rEEDVu3Oo9R!hyt!GX!m?n-TNUtgHo z@N=Y~m|E@pQ>(Lq@*@k#=QuVclLzr@ncd40D*1$ej*4|Rr;Re}J5?{n>=%|iw+LP< zoLnD+PS za*YGZY8^-Job2E2+iSl}H9uf`j3APZu^*5}*6F@j6`|?+GOJ`G>(qq#g(U42I7f?@ z6n|AuhkkMC_{yVW;u-PlY28;slK%#ILBsP^0m7~9h zs!*zZa2202LniGj=QK)sR+0CVBz_p$nYAZKw|Jbxpicy{8DG1|@7Nr#?i&t^VBY;K z4DZ9ZM2uLjP=9Ro>{@%i=X0+EaYJ?%OsI1z;;Y>zwRFneOUb33djdLg{5!>`A?~9f zEj^{y4?D|Gl61@VRI}U7%%AVKOJ9GpA>m2Z3=t%DemGW$*~~M;Vvhi-J|?<*fpvSo zOxlQF!rh5pnStciDlZiDV`8?)t8$71^oAMQ7$_&zRG+vjVAn)}PRug_%(dKtH6uT_ zNf2BjPy*0-QO;fG$yu@NJC|PWa;dBKqOgTYZ<2tetAxrGjSqHv#C#*OBltlxYgWxU z>9^n5f+aF_dn}-23)s-)KAw9pbAummZ~`D+03u%G;#b5R$};b=rCcJqMegVhQm7qe zH)(LmwD+FOXQ2Ud;T%wG{MhHb09%B4B_C^X022CZ3g}}Lz~XSD_T!-y7y*DvSm7X% zz3Q?5;+rGKF*8wpcHR|683kPH03Lawsa}15se(=N*~<9091nX!7{H&MZZg;*(TEe{ zR)Y25ein)O-(oE*2hqGWlz-?(A>z3LaO8hcu3Ugl_SE@5E9e8F0tV~P2#%*=_^tKn z`^gfIp8VL(a%z@)^I=v7cK=C#wR~xYn?=7dSU^`9!+Jlm!K#5&~@nV|4!Sy!EDe8TfO5PPNQhtTuwpAV;#MxIS}?|dP8?FfjqZ5=pqu$%L; zZ&mGfQ89X$iH7as6UXkZFLbRG0r(%OQVA3Xh&P!+^(Z&7Nri@#WH__J{oV0SU{;)liXo$2@5QzAF%z+k%*Rij&|oM4*}wm8V7OWy#Fk zzmg@Z8l7*F0z;P2e+Jw0eY_h~y!z2Wfav<>bImfAO*<`CHON2|HV;s7Vh`=$d(=0- zJinrI@Faip(%EuJ;VEta{UhU|`?`x7*tM(WZQCNSAG~t1LzZ6l8HszrKg27N^vL>D zGvpqNZjl4fqxfCgk6)w3mC{Za_>PJn*W959@dbc04f>i<@2jk?i;>T4DpS z>KR;&@%CG@`hM1rwx!GY@!xiocc21Uiazi+w4T>E9wkkCh(h;N{$64%=ze@9YkT2*zhIgeQA3qxZO7;ZB(~oC7^nLo0$a|F>DQr=-txC}N$r0q@HK!YKTl0WKdKumuY&rP?=o&6B z5xezVQ}`o=%7)r2wr@r|Y^yi%=FCpb6IO38%MFb%<)kaz~o)v zaU{d?G%=fcRM#G_DF5ZZI&@@^gT04@rHKAoKfcXE`;C2Z`zdR8@@Y(BCz#eE>iaRi zfoH9AdmtB}v`Ft?aXX^M+uXjhzSCjm2|&jeheQ-shX7jca*Pk3h8nL=4^L^`&@yQg z>MgHMXa>ERAL#iYHCL!2iN3Yo4hBQCh78lZpIEnbpC`L}xB~hj0WAjDEz#H{M1=)4 z2MaO&GKAT%NECpy4pD*y@AE}6(fMyqIn^YX?*4?P2b!HtNDMDqyb_B!hFb6~14mZt zyM=i`wmnn_vLsWWd)2VRZb9CMom;;iEmuL6DJC1#kZ^TFHpHCAnP{M$?`6HUPEOzS42bR>lz8^A`lyDVrmDo2QN(l#WQewXS){b-DQ`2*6u81Nl68LEe2dNZTxM@P6-OMv{rP-pZIalKd<@gw z=9Ib8y%tc@BAX8s6$xN(x7$jfstjg++4OKYoUMIPTf$PWlPGhb5ezt7vWL}wKO1TEwfewBV5_~Egj zq-+6<1;AvP$ay}og8V{iKD}c;Or)rtIblO1=g~64ww50u{Fp2TOHvDI5caP6iPUWJ$b@37t)cOYofpm+M<7SrtAo2+alvtk&6#Aw# zKYnEW#&shD6^l}P#q^SF2M6MlDmjBUXmdfTs5kZCA+zat;`7l+2Y=s64?wyyBe_Cj z!z0PY!dM|BO9MiA)jRtVGCE|01dhM*gVVC(WmR`!H4uRSTR@ zx1K}K7~*Fuz#Iqx21lh!b?$8~EAW}aC&yA5lc(eXTC6g(0^5&Ck0n(PS*x)Eavb}k zMPejJ`F%#<#pVC@V-$_$1EG=B3alUqg2RUuvtQf5V1n#i=`S#nX6n?IN)v8Ud@nF( zl~h#yJHF-k>IhY_*B=*--!GE8A4e>H(dGYfL-i{#;>Qmh2Mj&wDd|yucrg9Ws{6A7 z&L`3SiTrfu$lskKy&nCc=W(9qm&-pJ=}g(5AK5P=wjYO+utWqFUYoV{D6sX;C`e-x z9#BhXR^I=sLiid)@VTir`z)q|nHg3xqP+5Az@1Q~7dPrkA&>-rBoqau0}YyyHX9@% zfJqcU7N!R>5yD6aH=xn7?ak%%kvZQF8R|OH{7>LnrMW%I9u;XM3#&JQ2Fw zXGk9(E~fKe198>S^N|URE8-Zw6mhXQk2Lnv7#3D==tSX+H)m(PYcd>N_p++uWPDNK z)7Cah$kpMvsS;D6->YAa?>Aqd1dFrQw15DOWCM(YvlgUh?8&(YHT2v2Ud;v74?4gk z9>_2m+cn!Zx2SHT6kgfxEk4}2^2WQwqzwLNQc4~W*e452h45~uTE3wcrs+jIJ+m_d zs5D~mHeg@m3!GiGKdyD20WA=4ZJat^-X&WNU5at;#G0TEsn)9Qqic)hFBUEfoiHiC zW9G&}hR?orRamJe-yeVp=I#g<`)Jb78GLUT90Bd=k4tVt&PZMA-vUrL~KrfF1Yr)fBOsbK0wK`#J)_cN<#f=}uXBxCz0V7Ap&6JfX4nvGKTR@m=eqV<3y%UdN*y%=I zC90OL&C~)X#2do=uKngZhMBto&_^HIn5zpK={!ExVp`$$(rKmosQ<*;8T&_fmHv#J&f+^6@=K?ZK z@urh|fFv*vU{;`9H8Xa&(+Zezv@64=zbWkOYJWS%{IB4$5>^kJ#^ye$9xDABdR!w; zN7bjeyuWbI<%>faj4Q*muU+nLZ)-Oew~tTPY9>_XUOJAby$G5kG(vU?;PWf8@YzMp z9iel1>KaI!@7K9N)u#9JIT+uj}@+;@tuUw1KG9q z4s9|_5<##E{AZZte!y$(SB*hkEek%>$9#uUI&*#Z_f^s5Ca8h@zM>$V5BJe zOltHTL~_?{m)ER!4|B3BnrFPtN%){j5T^T#C*92~HP~@XQSX!@7KM7s!FZX?K7_ z*4<8kjB;*jA4Ldz%rAlsfJXV=qr^Tk%ul>)f+*3oXYRUS7^%uCIh9hQo_V`xwml+{ z<);cGl<=ugU+&5>YG6BX?cmtjYA1jRzJOjcZzc?6qf_%l_<`tj>?n>SLb&fPVDQjG zGGi2ckiaOPt2-)Eebs{>_#seYK?kT}Hqo@yz0)v5h~H2FuOPQ+ZHY@82iic3G%5lURaj;;i$ zi=@vVe3-72${`()sX!X--^-}(B1X(`vDk<=HAq|x0M_3A#JRJCZ`TE}36x8sz87HB zDLR>4OT(Wzl6>}Tk)hX#YAHs`of;en(TVmKc3n zIPCxjy^_?^Q2Jh*HA&V7NHA_pzGw_=v=4z5p9MgCunqvCOa=Y{0B~6FS)tw)K%?H8 zp8r>+MSr1oz^dsl5ph;*Im~f2Bo>eO>vdXMj#iF$aI-+6j>7gwl$byT*pbXd6;YI7 zVPGO^H;rkbQxDV!$PQpFYG>7$2Y$`qU;FJ2*c2ZC(~2t1Rmt2D#KPWk@+&Crcfh0F zr2K$z^yLeMUk$}Q&A{C=0lOTN?Ax5;Clb!u%pMaCw~1M12#WbCO~~JO3MCaoF$R9u zh{g%&eHMJ|9iQKhaSwVXW(4UdJA1Z>IKMQ^z2s#BMHoaaNQPiahr#wfB_a?nQ>;4` z2#rLp183DqIOvmMr3ZrFRwl>EJMX)@?Qy}&cFeNja_*>8?4bi2@Go{2b}T5}NAhUf zFbkny1-9SQ1G8Zap|c z9DS(JzU3*nW1{n2v5xH->q@8Z-S95J?d>kdbI9!Eb;{rXPRbp_nh+p&>H(&rngMjm zMYo^sR)zJ~me=y(Dor0eMb4!Q5On=duw95@fAmY$Zlj56QY;iQf z_LI}#T+{LdEPSC=)&l7lD0Yx!C2y7DFqKoT&x!B(5gMFoyOfKjHOh;^>IMs@P>U^9 zaGrq*ez2-@q1rhE&&ZOHU5gT&i{DHpb(7+GL0;7>&eO3RW-k z?_33S?JO03=!4x+n>T=ES`TJX5H>dYHUYEZwe+lQX>fz;3>Q&okq@Y?)y$loou}b` zIH^%<)^4^AR+ajKO%5QwQ4h`kv{MnNrBCn}=y4e*v0>P>4Na}!RdeN&{ZB5~d@}FP zGljVi{VT{iGakhZz_`HgCmS4#^9ONQLBzj42J4T5eI%ed;6@V&%60IcOv^1fXN*K! z*!S})V@~n;ax)y3Z}9gcVAe$dv92LEp2GC>?JU{Cg@hU~a**9~%9l0LJN3U* z&drrlnd5=cBVA)ma)0PifGQzr-wD$%RpS+`8{pIgYLtWuqcTo+OK;6<$Yg&Z=x*jH z)wB_$3&^Fw*XhnSEU7rlhb%RH^tAvn;B944b59@j`NX`Q^QFYVtlmmEKf#6R{8t<{ zAd&ar%7V50k;E4qc*u#*E`MQoUEn!1Zz9|tz(~f=zO=wO zcm3H>TV+cHa4H)_bZ_=(a+1HVw^L4805nqTG#}yyk*$88hwG+EL zwpm`~(0sBLLV(e&!R?ZR2N*jg%#kKn(UeC$C(3ER{9vFLvU-9t!_QL$bIuCP*(h4F zF7E(8jDH~SrW*;GUvSa@>M{Bc!7_HiP54-F+eX~e(s^HKM9B~m`?h{tTjB&6*( zvpgt17Ul8|83`g#O#==mRXfk{bQv7*Y!;l4g;v9f+0U;Os6goXJXHF&VV-lLtVKFE zoC{-d5Yqy@_9!&0eoNmXmF>xPe>&OAu0!?#4ED?1rIVQshJTS}*--fGQMGTJy-sWd za`4kneF+~)=XdD*Nzfqhr%xW*pL+f+7W@1GzWa-IA`GOVE-gxVdYD<&{l(CKH6MG)(H3SxkGTv`=Oa%k-X{0#B*>4Xj#NGN`@7>+%S4 z+kC|DXUMv_m5@T7((YNqiTI&3*>Q!Y^qY(;-)KgcPXBze2WRt80lerH2uh*z5k)!n z`N~TmGGuk9Urz}$w{?*xKut*%d|!W}bMrNimXKfKo4;tY=QZEr4%)vfZMMhMsG%H@ zBS+LjhLvN@SA9Dgz&{Ii!Z44~Ch($8Row8ni5 zA?+^oUwiiIQDEYS_$D-56szBC9}xy(Q8SfXdeI$)Fok7u&x$PHCAdzU;_)CL0uru2 zaEncWrhnmE)7mAgLw_G7G(wly|7Doep*Ax~n`82t*6*(QDn3tAp&mOO^G)!OeVOEP z3isY^gFl@%ePuVPlYe|&-V&g7q!W?=caaezN=;$~$M-naQ(0*f0xQCreTC?!uBYQi zzQ1mCd!=W}3)-c5T2i-mwLy?T(9@x^R^Q?Wf5rtx)d$)2+_CU!o*w+YPAygnxQ`E?4v3 zG7m^%mq`Z*Xe#qHoZqzR+cScsva_E<%b+nmgjRVZc8JMHnA${3H~nH{+#UyAyH-v} z@6yD~?wtK3)st6!3HtngYL9so{<>Z}*Bz3~8ONX_jmPgd2fS#I4xXe~(zXw@M!<@( z`^S$5!6DaO6iPGM0;FgFJ^t6wyj9Q+lr%=3#-2fC)r84EcFdRnk98W3{il2oJ?0eZ8-aHQ$>_7NhWq zJT2Y)Y3|@Z`4;2*+!e%1-yYvv>`DI}e(`9ze_QAL!n{*(T2%LTru^;0e=8bF3KZ-i zVMBQfjf)yy$mL|*{=)Dpc!fS1 z`y>BleRh)juD`vxJ?$pO*2Ugk6ub7Anv|EHJ`FDUr*vq$xk9=ZjkE4Tl#+Uxy<2%z zlPQzSpbr%6O0n!B9;DX=hS?c*)7^2DpN#79x!<-8nXQce)*r>ThfjDu2^$|7BrmaLf0WH< zYcH0YIXykR<-4cEd3&N9j(fpGZ{zwx8ng8zxhA%Y19Y@OWnND=R)hmYuZm;P{KFx!a%mufI^W};~=^bQL;VzQ3E{;Sj8Djog z{&_tO#5JJPK5}o!?!w@{jm^IuU$C=}?c6yNOsRGO6-R13h3?gjirUP1OYqZq7pXP` zZn0oXhd@Y`Vj(a(WGfM&`q{DEJV_@s%j%Aoo0HuQ|NgAv4Kh=gp6o9+v*?KDG8E0~ zS|ca7lu7EfEa4(*29fZq8Cu|R^lXabFYDU76*9hxxR^(iuBkc}mUi_u zdF7N9{l7a|W?eI~Y+i>Hrmg z=xn^@NL7zD1F(ZwfR(oGPBQ$i{a6VzNJ=r{TRP~c(|X%WnA0*Jnyy{VeV67neAm<`v9}tdssi_zU=ST9qDr=w+ks zk&zu>w}m{hz`s1(VOkM%=o;@T%$H5)-`fo`pFFkA10tm9vkP9_kq6+$JKD$4iR787 zDE`ajp=Y+g+Htb+ssTG3d>mT2P?!RE(=iWIcxD=2gNC`#hh2guh8u_Gr2q`*FII_? zy4ZbJL!`$ANdNq?Fh$*D9Uni|yku;CB$VN=-$P@$tgZ@*s$pJ{iT;`uJ73#HR&X&s zQRz4N1XwEIpR6kolnN*?SRkJ8Pbx92R4BdQ)2C5_jy*gJJ~e3Uv4&;_|CK2Hj;B#o zrHP((;X$QKzZ0@W7*iudx(<4l>`$9x;vhxq0r{%zOLDbxZrqeGOWFxzBhgc;JxB(?dzxY%HOLRJCUPDj0+TcHZTC(wWP@Z_~Tv-4MG^8~5bluBJr=(du@J*n0QJxt0 zc_z|(@PTBLU#;th8%OcoE*@X#1JM_7H z3bfCkjsn^9itywlG9m{rn%cjMC!1!1pjL{<=Z2E^9$>V%%QM6WXq}B$3d2nNVVL8> zuxP+&&-&clLfdw@vd}DNhNdh5|1VM&?%H4E_xRJgi^c2bOXUul+I|tBv&Dw_z;PH5 zgLLzYp&PJUTJ&duWXHGmy~BPR=;tXb16FlFPKRNA@-VaL%=H;4>c6KG95%+S3;-~W z0cX*-3B6`aLW2S{YK&yWGuNxyA)NsenL`nZOFG9}vT(4uog07)y$1%_3LbfO*92f` z>bxp#nsjFeycXs~y+QtTye|a|p3hb@z8K$Oz$UR{@(U{;hTR%y`@@B>KNr&l7>o^H z|Bdg4?*}&Wz#o{n{0aDvSe4+vZqjHz>%!mstGGb#8Y@|}h=6H`@FzTr2R|;3bN!!} z!^mDVbPpUqH$iMV4+5!wf9=Be^}7E8SKH7(`9}W>^zeQOV$<-x&<8_b_<;q|B>;rz z1L9c=9=39K#nHc#C=$jzuBFq%zitDl3)chQ{Nl|a)j#JMBJ*DOKi^~j-ZXRp#^ST6 z;oTqXH1Z;Xdll>9b6x|a<``-1q6s+seuI+l>0i)LNen|nUz5=r0=kM{;?%r@(yt z|KACZ$&DTgh9y83`2IT467b>n$qIotIFFb6uz;`f8?0wFE4H9l{rP|Q)Zni`F=OplX5gGpP>*Tl4*tk zjRiFt6b|sHCx;QU5^@Q1C1ILE6%1?y#t#S{!O1+}GGbO)Z%2#S;5IM^z@#+XLqF@p ze}l2{z9g{zR%egyBzzQn^`HAJpTcA6_s5~rk9h1UVd#=QnT_uOS`PjodVrrBAm%7U z6!ssVYGqm~C7wM|FQK#z$rtpIGpRru-D}06dk$8xU2J^6RX_UGwbl zCO1f2;EmVH1w;8Xo7YZ$*HGKiUjV~C z-m&9w6^SxlNBbh%ct)HiQvz6F)}57+aBKTeHyAm;0D%#BgW$6KShGr`ES0wew@YE> z=wpFwY}c-uGjQvy^7OftW0k>2BzKY=E;}G=6byJ=pV*^`NXITNjk$yq^nH`PKSO1>Py}d(&w_PgWP}vgptTuYD_Yl%ZXHIfu(jRPJ_h- zE0zWHSsa_a#cJW5Ko0O$z!?)SDy%cT$0j728M6jW{gg)ldH-~=%VSAwqErfY4 zj#!8_NAu<2SKbHW3ZQ>zV%dF#lS^9HJ)c^~B=a6##lir%qp=$S`Uc&uC=9sA3Mfi! z#1RMAG}GDWzv1|WVQUc>wjNA&5TuC|$PCZWMkBN~ggVzI9pycY9q>s9 zy)5|l&0Z}At&^YvybaNOcpK1)A8sV7s0w$=CoNq(?gsOv1+x~Jn@}EljKpXPVb|{Y zP`LoSf+GABt*<4yt`08`rgPv&G0K}cOxwDi&?!ya8|9GD}I&tJb?F_UIAsZ!=IO6gPCBs2^w6O zA_wIC{54iU05G5&<|cd_p|G5&#E*io@0DJT#W$!JNn$7Bd`zl5Pid#Zp7+Qio1u?* zTWTIUcoXl{)GX8#rdNmyWGqk)1>l~(-P*gCydCvC-;XUJz?oO4b(M?8f&xS%JHP6d z@YRJy>U{|#O<560pgDn-%OAW~TKjOadvUruEq0F?%m0NYmabIIL_}XoDWv|$1)KN581FeZs8WaO)S;92KvcPwJ zXL6VE2Sdn80SDv^h%m~f1X6VzF$b9_FFNhQEf6EFd-(ex*ur62Yiw z;Z!l2_;FBaw|tawmz3}BzHmVjVaTmG+Xc>;-HWZ4MbbNR3jkx-Vt*)Eu>v~uR^SZP z2B#!sazKEN>7`nWZfWw@dRyN7*-%ML7bMr&_#iib$2D}TD;&RO?9U@ zUsxkFf`li14AMseZyTX5c>{p(eH&^`be>2T*g z2@q0@uOE?vMg>qS(!}OZD(z~;{RQO(jGt71bSX)Z#}Fc!k94u;aqR1=^E0+nY0-r~ zq@ZjpmLHSQwI8a`yc$a2-MQ&uIUaK z6#|GT&=Bj!CPWE)NbZ}9`n~Ua|H6CshnsWGoMq0Ox#!H>%$$TXZ=vPNrCMQ|yk0G9*yFxz__w&S;?IZML$a=J zjjbAve>WVZ_@~!D<=KsO!WBpMwnxhf!?rv!Fn^@M+c()DvfUQPquyeCK$)m{Y^f2H ziYOlspn|TxSNE)39iJ4K)uHp_p`wcb9{Bk{hD!PL&#kV_Elskg>CgOLRH%MLFUc-= z_EAx1;}gXWtmX^)mcW=q+X2hA?8%W=n(B9Wc;-!6h7(wB)5C7{@818CMv!wUq zjrEM^RXd)Sb`6{MuZ}3~I1ratoYkvbAME($m6FG-#`>usn#8SZ4yU(vuRd{c2Kt5> zdlS9J#WAVl&5aE6E2aS&Jf6avas+7qHF5zl&{V87^%+)*DIzloJoj=aHe z*T$}+oDHL6SmyXqf~vK0Q&5`3F-i_~;o}7#wqM z4pqPfbc;Tvro3cO0w`#FPz^E3I5?FiT+ba9eoMiig!P}phr$+D0gtyc7{L|2tl~v9 z82M1bwIzPs6;eQz2qSO#e#8{BqW7m41%ZoyeDsSyHL%p;y&@8lPXUE7Q@(+yB*b&j z`}6jY72P{->FU67wAMgn1utSAC7&#qDzvvp5D>E1BnwTq*Q0T)-6nx zVwj9=7*ZU4=2InHR(@Vfv8sJD+Cg&gNxJpB4pn?2MC(|@+BeBm8r#!QBH4(7Ad(+X z*A+MXNAHl;RpK7^xox!&#Q$Y}Y2Oyh-p&nS!&xLLpHshcD?$_PVh}3GR92oYYU?No&!YLhR0DXM1|HJKu`N(u&%MlTjS%TX;E8!h(I< zrTv+dYD4JRi#L5iC#Fv+8bNh|twkOPtv^t)PlRwnFCb`*9*w2{zWE&A`gM?eJQFuC z;=VR4yJpBhf<$M~80IwAf{j;^$4wiuddDfyCMyJu59JRU!pm**SlHsP!u+$Rfnnl^ zugYo|ugNYexO)pFNkD5TQji7=3&*7hu|c>a)-ctG+m znI^b+g4c@6IJY%4mdk52Wr3l~2C3M`s>lG$^;LDEPY>Vy>8pSepX@(<3eHH3tk6__W={~=&nljc7GSCfqfiO^XR*An^} zW;d`YCQZCv&?04~L^zvPr$(@5N&BTXdrBA##67Wz^vVa*pGqmjE4N*}?xh1RSeK83 zLUMD_r0h8_+ZYlG!}hXQVIAS>S7i1~NXWy$K(jmle8>(JH zV_65^WLIL}wh8LAg|Ntdsxi?-4r+o`J~e;3-9+$N5NhFBjW2C?`MZ#RV|=J*8!FMb z;6gr_2`!YN8QA)3ITbJ<@91&Fo^O#$`Wb<5mbl7?8t-9ZGkHWC7Vo!T6pz`Oxu&Y( zL=Y~(xNHEC+`p<9>p(aqUjg4iBjd3VwA8IdkXuGG>7WCPUvja}1^JtETZ&TD{%r8P zxT7NIjlo<*>RtfzN_Y_;gd6oyspqoW{dxz?+2zL!aI{uw=hQ5ELm!i_hT!{V-&<|$ zh&XSp62#w*68~MQ#TkEbcq!^+o|mIiMIDaWgGel{y`mLb5R zJTcF6g1L4vEV!FR;CdMKFV2n1RWQAU!KPineLH z{KaK;2i2js=M#|%iA-$LQi~YWRJ5lykkj*l|M??|B9UuGEkqsS+8OhveF~AocjO)G z+mNqV!Lpm5j|;46H5unH3q$)?4D#%y_N5lUcbta>Z;c96C%4WZDoPhnxi2zFPfakI zBJz`i>Obs0VI)VCwyor;0!4GMyH7;QX$sYGFPh=kr9n0#<;muHY^K}O>LHdpkn{3E zJFjE+jrwANICzOZQpGNyhq;=@3TdEbXUCVL`@Ze9?`vxse%Zl zH<^;6j9f_r6EBoqVNTCjq%$3g);nV+NTPNN>Sx~(6d1w2&E#a&no2JnTojN)xnlXI>s@RY}Hqp>enqZ{`%P$Jl$|4 zA9fhiS@S7g zckQlD8fkJ$%ZyR^bPQH?4L7~IT(s&SslJ>4ow7wX5hTypbGX-OVys(~R_P)yD-YZ2 z6q_hl#WuXSAnI@YF1CB5J4X7AEM3_dk>}L!FiJKyzQ~cNrb~lQR5FLhtB+v(<%8)} zUCq^kBM+TA3X12E9v)>Sa@onw(c~v%!?MI`Z}E|L6(!@7VWWYAh@xUsc`2l5lgt&Tlw`$9SilmNmY3_w50i3Fv z>*e3wmDyAbG%6pAJLpSKc8b*%9q%?tuGW2DCAr}c8nZ>br|V|%1%*1J&)zyZAz{C` zB=O9zcbalZIa5@u^EBzXyr*&I56FSIhf`WI{!q^luz=bXK$}I~fkvHzzyM?>^wPzk o?gSuL;}Jqo_y0Hg-yy^^UgN#2KlKh&m{JSx>de_tw2pi1-yCVij{pDw literal 1354 zcmcJPe`phD7{|YNNiNqmE)mOiYh4moH-*7S8LVSOd)iu4f0SB^h#f3Z*bg?VcD9My z)>FgAoKh80r-&&IQAAxQE>I`l+I1BXCTjPGX_nT&=BlMv2PU+I?0HT$kiiB+?~m`j zJkRI*KJW9s@7?FMHH)X^7v%$(RvoCU0|XihkR^J(({$=Rz&5?QazTCM&S5?mK%>P5?O-R8|f4ZKXaJu8fL2=v;gWx z-GtIMhQ4c*87eTL)h2ZRAVXg>0PXH7uBx0lDgu3-+^?@bY*UN1k${;voe*OM z>gJf~xZOrqz|#CKe!!`Y8MG*EV|OXGKzWs#MenBf0o|8;5%4VwOZo(q*&HVid`sez zDxtzk>!J|Qw4PXRvY1kVjHLHK@&3iSIA3BM-sz$=pj+hxvWTeKpXIXbZF9| z1OKLUo{7nFYpICrBlw=sT*y^sr_~Mp%4-~)$y>11LcU8d7?sd~{H2{L$$uZ=7;Ev4xU#ahv*r z_OLcNkhW``-LK&e>ib7dy34V9U^yRSFnNnI-*?XeYGseUN#`*u@6IWM|@-za7#3 z(JCt1V+ng0-*;(Gzf&`AB>U2KHS(bG?zqM4k7NwCU2dSRWM}Fn(>5lt&8d&YS0L)y zo_Zb8S;kSD<`dh`!}X~?R)`)syGK+N@yc?@B}3sngybo=;B{W, ffprobe_path: Option, @@ -49,6 +57,7 @@ struct SummarizeVideoRequest { url: String, use_whisper: bool, model: Option, + master_prompt: Option, } #[derive(Debug, Deserialize)] @@ -57,10 +66,12 @@ struct DeleteSummaryRequest { } #[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] struct TranslateSummaryRequest { id: i64, lang: String, model: Option, + prompt_template: Option, } #[derive(Debug, Deserialize)] @@ -165,6 +176,12 @@ fn normalize_model(model: Option) -> String { .unwrap_or_else(|| DEFAULT_MODEL.to_string()) } +fn normalize_prompt_template(prompt: Option) -> Option { + prompt + .map(|value| value.trim().to_string()) + .filter(|value| !value.is_empty()) +} + fn now_millis() -> u128 { SystemTime::now() .duration_since(UNIX_EPOCH) @@ -190,15 +207,16 @@ fn platform_executable_name(base_name: &str) -> String { fn resolve_resource_file(app: &AppHandle, relative_path: &Path) -> Option { let mut candidates = Vec::new(); - if let Ok(resource_dir) = app.path().resource_dir() { - candidates.push(resource_dir.join(relative_path)); + if let Ok(resource_path) = app.path().resolve(relative_path, BaseDirectory::Resource) { + candidates.push(resource_path); } - candidates.push( - PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("resources") - .join(relative_path), - ); + let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + candidates.push(manifest_dir.join(relative_path)); + candidates.push(manifest_dir.join("resources").join(relative_path)); + if let Ok(project_root) = resolve_project_root() { + candidates.push(project_root.join(relative_path)); + } candidates.into_iter().find(|path| path.exists()) } @@ -218,9 +236,9 @@ fn resolve_backend_binary(app: &AppHandle) -> Option { } fn resolve_script_dir(app: &AppHandle) -> Result { - if let Ok(resource_dir) = app.path().resource_dir() { - if resource_dir.join("backend_cli.py").exists() { - return Ok(resource_dir); + if let Some(resource_file) = resolve_resource_file(app, Path::new("backend_cli.py")) { + if let Some(parent) = resource_file.parent() { + return Ok(parent.to_path_buf()); } } @@ -292,6 +310,21 @@ fn resolve_whisper_cache_dir(app: &AppHandle) -> Result { Ok(whisper_cache_dir) } +fn resolve_log_dir(app: &AppHandle) -> Result { + let log_dir = app + .path() + .app_log_dir() + .or_else(|_| { + app.path() + .app_local_data_dir() + .map(|path| path.join("logs")) + }) + .map_err(|err| format!("Failed to resolve application log directory: {err}"))?; + fs::create_dir_all(&log_dir) + .map_err(|err| format!("Failed to create application log directory: {err}"))?; + Ok(log_dir) +} + fn open_connection(state: &AppState) -> Result { Connection::open(&state.db_path).map_err(|err| format!("Failed to open SQLite database: {err}")) } @@ -341,8 +374,10 @@ fn cleanup_artifacts(state: &AppState, audio: Option<&str>, transcript: Option<& fn purge_existing_artifacts(state: &AppState) -> Result<(), String> { let db = open_connection(state)?; let mut stmt = db - .prepare("SELECT id, audio, transcript FROM summaries WHERE audio IS NOT NULL OR transcript IS NOT NULL") - .map_err(|err| format!("Failed to prepare artifact cleanup query: {err}"))?; + .prepare( + "SELECT id, audio, transcript FROM summaries WHERE audio IS NOT NULL OR transcript IS NOT NULL", + ) + .map_err(|err| format!("Failed to prepare artifact cleanup query: {err}"))?; let rows = stmt .query_map([], |row| { @@ -372,6 +407,30 @@ fn purge_existing_artifacts(state: &AppState) -> Result<(), String> { Ok(()) } +fn write_startup_error_log(app: &AppHandle, message: &str) { + let mut candidates = Vec::new(); + + if let Ok(path) = app.path().app_log_dir() { + candidates.push(path); + } + if let Ok(path) = app.path().app_local_data_dir() { + candidates.push(path); + } + candidates.push(env::temp_dir().join("youtube-summarizer")); + + for directory in candidates { + if fs::create_dir_all(&directory).is_ok() { + let log_path = directory.join("startup-error.log"); + if fs::write(&log_path, message).is_ok() { + eprintln!("Startup failure written to {}", log_path.display()); + return; + } + } + } + + eprintln!("{message}"); +} + fn ensure_app_state(app: &AppHandle) -> Result { let app_dir = app .path() @@ -386,6 +445,7 @@ fn ensure_app_state(app: &AppHandle) -> Result { ffmpeg_path: resolve_optional_tool_path(app, "YTS_FFMPEG", "ffmpeg"), ffprobe_path: resolve_optional_tool_path(app, "YTS_FFPROBE", "ffprobe"), whisper_cache_dir: resolve_whisper_cache_dir(app)?, + backend_log_path: resolve_log_dir(app)?.join("backend.log"), app_dir: app_dir.clone(), media_dir, db_path: app_dir.join("summaries.db"), @@ -403,8 +463,47 @@ fn emit_progress(app: &AppHandle, window_label: &str, line: &str) { } } +fn append_backend_log(log_path: &Path, line: &str) { + if let Ok(mut file) = OpenOptions::new().create(true).append(true).open(log_path) { + let _ = writeln!(file, "{line}"); + } +} + +fn backend_failure_message(stderr_output: &str, fallback: String) -> String { + for line in stderr_output.lines().rev() { + let trimmed = line.trim(); + if let Some(message) = trimmed.strip_prefix("[error]") { + let message = message.trim(); + if !message.is_empty() { + return message.to_string(); + } + } + } + + for line in stderr_output.lines().rev() { + let trimmed = line.trim(); + if trimmed.is_empty() + || trimmed.starts_with("WARNING:") + || trimmed.starts_with("Traceback") + || trimmed.starts_with("File ") + || trimmed.starts_with("During handling") + { + continue; + } + if trimmed.starts_with("ERROR:") + || trimmed.contains("RuntimeError:") + || trimmed.contains("SystemExit:") + { + return trimmed.to_string(); + } + } + + fallback +} + fn apply_backend_env(command: &mut Command, state: &AppState) { command.env("PYTHONUNBUFFERED", "1"); + command.env("PYTHONIOENCODING", "utf-8"); command.env("YTS_WHISPER_CACHE_DIR", &state.whisper_cache_dir); if let Some(ffmpeg_path) = &state.ffmpeg_path { @@ -427,6 +526,8 @@ fn build_backend_command(state: &AppState, args: &[String]) -> Command { command.args(args).current_dir(&state.media_dir); apply_backend_env(&mut command, state); + #[cfg(target_os = "windows")] + command.creation_flags(CREATE_NO_WINDOW); command } @@ -440,12 +541,20 @@ fn run_backend_json_command( let mut command_args = args.to_vec(); command_args.push("--output-json".to_string()); command_args.push(output_path.to_string_lossy().into_owned()); + append_backend_log( + &state.backend_log_path, + &format!("=== summarize {} ===", command_args.join(" ")), + ); let mut child = build_backend_command(state, &command_args) .stdout(Stdio::piped()) .stderr(Stdio::piped()) .spawn() - .map_err(|err| format!("Failed to start bundled backend: {err}"))?; + .map_err(|err| { + let message = format!("Failed to start bundled backend: {err}"); + append_backend_log(&state.backend_log_path, &message); + message + })?; let stdout = child .stdout @@ -456,26 +565,29 @@ fn run_backend_json_command( .take() .ok_or_else(|| "Backend stderr was not captured.".to_string())?; let stderr_buffer = Arc::new(Mutex::new(String::new())); + let stdout_log_path = state.backend_log_path.clone(); + let stderr_log_path = state.backend_log_path.clone(); let stdout_app = app.clone(); let stdout_label = window_label.to_string(); let stdout_handle = thread::spawn(move || { for line in BufReader::new(stdout).lines() { match line { - Ok(line) => emit_progress(&stdout_app, &stdout_label, &line), + Ok(line) => { + append_backend_log(&stdout_log_path, &format!("[stdout] {line}")); + emit_progress(&stdout_app, &stdout_label, &line); + } Err(_) => break, } } }); - let stderr_app = app.clone(); - let stderr_label = window_label.to_string(); let stderr_buffer_clone = Arc::clone(&stderr_buffer); let stderr_handle = thread::spawn(move || { for line in BufReader::new(stderr).lines() { match line { Ok(line) => { - emit_progress(&stderr_app, &stderr_label, &line); + append_backend_log(&stderr_log_path, &format!("[stderr] {line}")); if let Ok(mut buffer) = stderr_buffer_clone.lock() { buffer.push_str(&line); buffer.push('\n'); @@ -486,9 +598,15 @@ fn run_backend_json_command( } }); - let status = child - .wait() - .map_err(|err| format!("Failed to wait for bundled backend: {err}"))?; + let status = child.wait().map_err(|err| { + let message = format!("Failed to wait for bundled backend: {err}"); + append_backend_log(&state.backend_log_path, &message); + message + })?; + append_backend_log( + &state.backend_log_path, + &format!("Bundled backend exit status: {status}"), + ); let _ = stdout_handle.join(); let _ = stderr_handle.join(); @@ -498,34 +616,66 @@ fn run_backend_json_command( .lock() .map(|buffer| buffer.trim().to_string()) .unwrap_or_else(|_| String::new()); - let message = if stderr_output.is_empty() { - format!("Bundled backend exited with status {status}.") - } else { - stderr_output - }; + let message = backend_failure_message( + &stderr_output, + format!("Bundled backend exited with status {status}."), + ); + append_backend_log( + &state.backend_log_path, + &format!("Backend failure: {message}"), + ); let _ = fs::remove_file(&output_path); return Err(message); } - let raw_json = fs::read_to_string(&output_path) - .map_err(|err| format!("Failed to read backend output JSON: {err}"))?; + let raw_json = fs::read_to_string(&output_path).map_err(|err| { + let message = format!("Failed to read backend output JSON: {err}"); + append_backend_log(&state.backend_log_path, &message); + message + })?; let _ = fs::remove_file(&output_path); - serde_json::from_str(&raw_json).map_err(|err| format!("Invalid backend output JSON: {err}")) + serde_json::from_str(&raw_json).map_err(|err| { + let message = format!("Invalid backend output JSON: {err}"); + append_backend_log(&state.backend_log_path, &message); + message + }) } fn run_backend_text_command(state: &AppState, args: &[String]) -> Result { - let output = build_backend_command(state, args) - .output() - .map_err(|err| format!("Failed to start translation backend: {err}"))?; + append_backend_log( + &state.backend_log_path, + &format!("=== translate {} ===", args.join(" ")), + ); + let output = build_backend_command(state, args).output().map_err(|err| { + let message = format!("Failed to start translation backend: {err}"); + append_backend_log(&state.backend_log_path, &message); + message + })?; + + for line in String::from_utf8_lossy(&output.stdout).lines() { + append_backend_log(&state.backend_log_path, &format!("[stdout] {line}")); + } + for line in String::from_utf8_lossy(&output.stderr).lines() { + append_backend_log(&state.backend_log_path, &format!("[stderr] {line}")); + } + append_backend_log( + &state.backend_log_path, + &format!("Translation backend exit status: {}", output.status), + ); if !output.status.success() { let stderr = String::from_utf8_lossy(&output.stderr).trim().to_string(); - return Err(if stderr.is_empty() { + let message = if stderr.is_empty() { format!("Translation backend exited with status {}.", output.status) } else { stderr - }); + }; + append_backend_log( + &state.backend_log_path, + &format!("Translation failure: {message}"), + ); + return Err(message); } let translation = String::from_utf8(output.stdout) @@ -533,7 +683,9 @@ fn run_backend_text_command(state: &AppState, args: &[String]) -> Result Result { - let model = normalize_model(request.model); + let SummarizeVideoRequest { + url, + use_whisper, + model, + master_prompt, + } = request; + let model = normalize_model(model); let mut args = vec![ "summarize".to_string(), "--url".to_string(), - request.url, + url, "--model".to_string(), model, ]; - if !request.use_whisper { + if !use_whisper { args.push("--no-whisper".to_string()); } - let info = run_backend_json_command(state, app, window_label, &args)?; + let prompt_path = if let Some(prompt) = normalize_prompt_template(master_prompt) { + let path = state + .app_dir + .join(format!("tmp_prompt_{}.txt", now_millis())); + fs::write(&path, prompt) + .map_err(|err| format!("Failed to write temporary prompt file: {err}"))?; + args.push("--prompt-template-file".to_string()); + args.push(path.to_string_lossy().into_owned()); + Some(path) + } else { + None + }; + + let result = run_backend_json_command(state, app, window_label, &args); + if let Some(path) = prompt_path { + let _ = fs::remove_file(path); + } + let info = result?; cleanup_artifacts(state, info.audio.as_deref(), info.transcript.as_deref()); let db = open_connection(state)?; @@ -601,11 +776,17 @@ fn translate_summary_inner( state: &AppState, request: TranslateSummaryRequest, ) -> Result { + let TranslateSummaryRequest { + id, + lang, + model, + prompt_template, + } = request; let db = open_connection(state)?; let summary_text = db .query_row( "SELECT summary_en FROM summaries WHERE id = ?", - [request.id], + [id], |row| row.get::<_, Option>(0), ) .optional() @@ -613,29 +794,49 @@ fn translate_summary_inner( .flatten() .ok_or_else(|| "No English summary found for translation.".to_string())?; - let tmp_summary_path = - state - .app_dir - .join(format!("tmp_summary_{}_{}.txt", request.id, now_millis())); + let tmp_summary_path = state + .app_dir + .join(format!("tmp_summary_{}_{}.txt", id, now_millis())); fs::write(&tmp_summary_path, summary_text) .map_err(|err| format!("Failed to write temporary summary file: {err}"))?; - let model = normalize_model(request.model); - let args = vec![ + let model = normalize_model(model); + let mut args = vec![ "translate".to_string(), "--summary-file".to_string(), tmp_summary_path.to_string_lossy().into_owned(), "--lang".to_string(), - request.lang.clone(), + lang.clone(), "--model".to_string(), model, ]; + let tmp_prompt_path = if let Some(prompt) = normalize_prompt_template(prompt_template) { + let path = state.app_dir.join(format!( + "tmp_translation_prompt_{}_{}.txt", + id, + now_millis() + )); + if let Err(err) = fs::write(&path, prompt) { + let _ = fs::remove_file(&tmp_summary_path); + return Err(format!( + "Failed to write temporary translation prompt file: {err}" + )); + } + args.push("--prompt-template-file".to_string()); + args.push(path.to_string_lossy().into_owned()); + Some(path) + } else { + None + }; let result = run_backend_text_command(state, &args); let _ = fs::remove_file(&tmp_summary_path); + if let Some(path) = tmp_prompt_path { + let _ = fs::remove_file(path); + } let translation = result?; - let column = match request.lang.as_str() { + let column = match lang.as_str() { "de" => "summary_de", "jp" => "summary_jp", _ => return Err("Unsupported language code.".to_string()), @@ -643,11 +844,11 @@ fn translate_summary_inner( db.execute( &format!("UPDATE summaries SET {column} = ? WHERE id = ?"), - params![translation, request.id], + params![translation, id], ) .map_err(|err| format!("Failed to save translated summary: {err}"))?; - get_entry_by_id(state, request.id) + get_entry_by_id(state, id) } #[tauri::command] @@ -733,13 +934,57 @@ fn open_file(file_path: String) -> Result<(), String> { that(path).map_err(|err| format!("Failed to open file: {err}")) } +fn install_app_menu(app: &mut tauri::App) -> tauri::Result<()> { + let handle = app.handle(); + let menu_builder = MenuBuilder::new(handle); + #[cfg(target_os = "macos")] + let menu_builder = { + let app_menu = SubmenuBuilder::new(handle, "YouTube Summarizer") + .hide() + .hide_others() + .show_all() + .separator() + .quit() + .build()?; + menu_builder.item(&app_menu) + }; + let settings_menu = SubmenuBuilder::new(handle, "Settings") + .text("open_settings", "Settings...") + .build()?; + let edit_menu = SubmenuBuilder::new(handle, "Edit") + .undo() + .redo() + .separator() + .cut() + .copy() + .paste() + .select_all() + .build()?; + let menu = menu_builder.item(&settings_menu).item(&edit_menu).build()?; + app.set_menu(menu)?; + Ok(()) +} + fn main() { tauri::Builder::default() .plugin(tauri_plugin_dialog::init()) + .on_menu_event(|app, event| { + if event.id() == "open_settings" { + let _ = app.emit_to("main", "open-settings", ()); + } + }) .setup(|app| { - let state = ensure_app_state(app.handle())?; - app.manage(state); - Ok(()) + install_app_menu(app)?; + match ensure_app_state(app.handle()) { + Ok(state) => { + app.manage(state); + Ok(()) + } + Err(err) => { + write_startup_error_log(app.handle(), &err); + Err(err.into()) + } + } }) .invoke_handler(tauri::generate_handler![ get_models, diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 9e8f15f..27a28c7 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -27,13 +27,20 @@ }, "bundle": { "active": true, - "resources": [ - "../backend_cli.py", - "../youtube_summarizer.py", - "../translate_summary.py", - "../requirements.txt", - "resources/backend", - "resources/ffmpeg" - ] + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "resources": { + "../backend_cli.py": "backend_cli.py", + "../youtube_summarizer.py": "youtube_summarizer.py", + "../translate_summary.py": "translate_summary.py", + "../requirements.txt": "requirements.txt", + "resources/backend": "backend", + "resources/ffmpeg": "ffmpeg" + } } } diff --git a/tools/autofill_translations.py b/tools/autofill_translations.py index 9de497b..056fe2b 100644 --- a/tools/autofill_translations.py +++ b/tools/autofill_translations.py @@ -4,9 +4,11 @@ import os import sqlite3 import subprocess import sys +from pathlib import Path -DB_FILE = os.path.join(os.path.dirname(__file__), 'summaries.db') -TRANSLATE_SCRIPT = os.path.join(os.path.dirname(__file__), 'translate_summary.py') +ROOT = Path(__file__).resolve().parents[1] +DB_FILE = os.environ.get("YTS_DB_FILE", str(ROOT / "summaries.db")) +TRANSLATE_SCRIPT = ROOT / "translate_summary.py" MODEL = "mistral-small3.1:24b" def get_entries_needing_translation(conn): @@ -30,7 +32,7 @@ def translate(summary_text, lang): # Führe das Übersetzungsskript aus cmd = [ sys.executable, # benutzt aktuelles Python - TRANSLATE_SCRIPT, + str(TRANSLATE_SCRIPT), "--summary-file", tmp_summary_path, "--lang", lang, "--model", MODEL, @@ -71,4 +73,4 @@ def main(): print("Done.") if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/translate_summary.py b/translate_summary.py index 2d0204a..cc46696 100644 --- a/translate_summary.py +++ b/translate_summary.py @@ -18,20 +18,54 @@ Example: import sys import argparse import json +import math import requests LANG_MAP = { "de": "German", "jp": "Japanese" } +OLLAMA_CHARS_PER_TOKEN = 3.5 +OLLAMA_OUTPUT_TOKEN_BUDGET = 2048 +OLLAMA_CONTEXT_BUCKETS = (4096, 8192, 16384, 32768, 65536) -def translate_summary_text(summary_text, target_language, model="mistral:latest"): + +def default_translation_prompt_template(target_language): + if target_language not in LANG_MAP: + raise ValueError("Supported languages: de (German), jp (Japanese)") + return ( + f"Translate the following summary into {LANG_MAP[target_language]}. Only output the translated summary, " + "no explanation or intro. If it's already in the target language, do nothing but repeat it.\n\n" + "Summary:\n{summary}\n\nTranslation:" + ) + + +def render_translation_prompt(summary_text, target_language, prompt_template=None): + template = (prompt_template or default_translation_prompt_template(target_language)).strip() + prompt = ( + template + .replace("{language}", LANG_MAP[target_language]) + .replace("{summary}", summary_text) + ) + if "{summary}" not in template: + prompt = f"{prompt}\n\nSummary:\n{summary_text}\n\nTranslation:" + return prompt + + +def choose_ollama_num_ctx(prompt, output_budget=OLLAMA_OUTPUT_TOKEN_BUDGET): + estimated_input_tokens = math.ceil(len(prompt) / OLLAMA_CHARS_PER_TOKEN) + needed_tokens = estimated_input_tokens + output_budget + for bucket in OLLAMA_CONTEXT_BUCKETS: + if needed_tokens <= bucket: + return bucket + return OLLAMA_CONTEXT_BUCKETS[-1] + + +def translate_summary_text(summary_text, target_language, model="mistral:latest", prompt_template=None): if target_language not in LANG_MAP: raise ValueError("Supported languages: de (German), jp (Japanese)") prompt = ( - f"Translate the following summary into {LANG_MAP[target_language]}. Only output the translated summary, " - "no explanation or intro. If it's already in the target language, do nothing but repeat it.\n\n" - f"Summary:\n{summary_text}\n\nTranslation:" + render_translation_prompt(summary_text, target_language, prompt_template) ) payload = { "model": model, @@ -39,6 +73,9 @@ def translate_summary_text(summary_text, target_language, model="mistral:latest" {"role": "system", "content": f"You are an expert translator proficient in {LANG_MAP[target_language]} and English."}, {"role": "user", "content": prompt} ], + "options": { + "num_ctx": choose_ollama_num_ctx(prompt) + }, "stream": False } resp = requests.post("http://localhost:11434/api/chat", json=payload) @@ -47,24 +84,31 @@ def translate_summary_text(summary_text, target_language, model="mistral:latest" return data.get("message", {}).get("content", "").strip() -def translate_summary_file(summary_file, target_language, model="mistral:latest"): +def translate_summary_file(summary_file, target_language, model="mistral:latest", prompt_template=None): with open(summary_file, "r", encoding="utf-8") as f: summary_text = f.read().strip() if not summary_text: raise ValueError("Empty summary text!") - return translate_summary_text(summary_text, target_language, model) + return translate_summary_text(summary_text, target_language, model, prompt_template) def main(): parser = argparse.ArgumentParser(description="Translate summary using Ollama") parser.add_argument("--summary-file", required=True, help="Path to file with English summary text") parser.add_argument("--lang", required=True, choices=["de", "jp"], help="Target language: 'de' or 'jp'") parser.add_argument("--model", default="mistral:latest", help="Ollama model to use") + parser.add_argument("--prompt-template", help="Prompt template for the translation LLM call") + parser.add_argument("--prompt-template-file", help="Path to a text file containing the translation prompt template") parser.add_argument("--output-file", help="Output file for translated summary") args = parser.parse_args() + prompt_template = args.prompt_template + if args.prompt_template_file: + with open(args.prompt_template_file, "r", encoding="utf-8") as f: + prompt_template = f.read() + # Read summary try: - translation = translate_summary_file(args.summary_file, args.lang, args.model) + translation = translate_summary_file(args.summary_file, args.lang, args.model, prompt_template) except Exception as e: print(f"Translation failed: {e}", file=sys.stderr) sys.exit(2) diff --git a/ui/index.html b/ui/index.html index d9590b3..86bc589 100644 --- a/ui/index.html +++ b/ui/index.html @@ -98,6 +98,12 @@ .entry .summary { transition: max-height 0.2s; } + .entry .summary hr { + border: 0; + border-top: 1px solid currentColor; + color: inherit; + margin: 0.7em 0; + } .entry.collapsed .summary { display: -webkit-box !important; -webkit-line-clamp: 2; @@ -130,36 +136,160 @@ color: white; font-weight: bold; } - header button:disabled { - background-color: #ffe4e6; - color: #9f1239; - opacity: 0.7; - cursor: default; - border: 1px solid #fbb6ce; - } - - - -

-
- - -
- - -
- -
- -
- -
+ header button:disabled { + background-color: #ffe4e6; + color: #9f1239; + opacity: 0.7; + cursor: default; + border: 1px solid #fbb6ce; + } + .settings-dialog[hidden] { + display: none; + } + .settings-dialog { + position: fixed; + inset: 0; + z-index: 1000; + display: flex; + align-items: center; + justify-content: center; + padding: 24px; + background: rgba(69, 10, 10, 0.28); + } + .settings-panel { + width: min(720px, 100%); + max-height: min(760px, calc(100vh - 48px)); + overflow: auto; + padding: 18px; + border: 1px solid #fecdd3; + border-radius: 6px; + background: #fff1f2; + box-shadow: 0 16px 40px rgba(159, 18, 57, 0.18); + } + .settings-panel-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + margin-bottom: 14px; + } + .settings-panel-header h2 { + margin: 0; + font-size: 20px; + } + .settings-close-button { + width: 30px; + height: 30px; + display: flex; + align-items: center; + justify-content: center; + padding: 0; + border: none; + border-radius: 4px; + background: transparent; + color: #9f1239; + font-size: 24px; + line-height: 1; + cursor: pointer; + } + .settings-close-button:hover { + background: #ffe4e6; + } + .settings-row { + display: flex; + align-items: center; + gap: 8px; + margin: 10px 0; + font-size: 15px; + } + .settings-row input[type="checkbox"] { + accent-color: #9f1239; + } + .settings-field-label { + display: block; + margin: 16px 0 6px; + font-size: 14px; + font-weight: bold; + } + .settings-prompt-textarea { + width: 100%; + min-height: 260px; + box-sizing: border-box; + padding: 10px; + border: 1px solid #fda4af; + border-radius: 4px; + background: #fff; + color: #7f1d1d; + font: 13px/1.45 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace; + resize: vertical; + } + .settings-prompt-textarea.compact { + min-height: 150px; + } + .settings-actions { + display: flex; + justify-content: flex-end; + gap: 10px; + margin-top: 12px; + } + .settings-actions button { + padding: 8px 12px; + border: 1px solid #9f1239; + border-radius: 4px; + background: #fff1f2; + color: #9f1239; + cursor: pointer; + } + .settings-actions button:hover { + background: #9f1239; + color: #fff; + } + + + +
+
+ + + +
+ +
+ + +
diff --git a/ui/renderer.js b/ui/renderer.js index c69cfd7..bebf36a 100644 --- a/ui/renderer.js +++ b/ui/renderer.js @@ -3,6 +3,28 @@ const invoke = tauriApi?.core?.invoke; const listen = tauriApi?.event?.listen; const convertFileSrc = tauriApi?.core?.convertFileSrc; const confirmDialog = tauriApi?.dialog?.confirm; +const DEFAULT_MASTER_PROMPT = `You are an expert summarizer. Summarize the following video concisely: + +Title: {title} + +Transcript: +{transcript} + +Summary:`; +const DEFAULT_TRANSLATION_PROMPTS = { + de: `Translate the following summary into German. Only output the translated summary, no explanation or intro. If it's already in the target language, do nothing but repeat it. + +Summary: +{summary} + +Translation:`, + jp: `Translate the following summary into Japanese. Only output the translated summary, no explanation or intro. If it's already in the target language, do nothing but repeat it. + +Summary: +{summary} + +Translation:` +}; if (!invoke || !listen) { throw new Error('Tauri runtime API is unavailable.'); @@ -21,11 +43,12 @@ function toWebviewFileUrl(filePath) { window.api = { getModels: () => invoke('get_models'), getSummaries: () => invoke('get_summaries'), - summarizeVideo: (url, useWhisper, model) => invoke('summarize_video', { + summarizeVideo: (url, useWhisper, model, masterPrompt) => invoke('summarize_video', { request: { url, useWhisper, - model: model || null + model: model || null, + masterPrompt: masterPrompt || null } }), openExternal: (url) => invoke('open_external', { url }), @@ -33,16 +56,18 @@ window.api = { deleteSummary: (id) => invoke('delete_summary', { request: { id } }), - translateSummary: (id, lang, model) => invoke('translate_summary', { + translateSummary: (id, lang, model, promptTemplate) => invoke('translate_summary', { request: { id, lang, - model: model || null + model: model || null, + promptTemplate: promptTemplate || null } }), onSummarizeProgress: (callback) => listen('summarize-progress', (event) => { callback(String(event.payload || '')); - }) + }), + onOpenSettings: (callback) => listen('open-settings', callback) }; window.addEventListener('DOMContentLoaded', async () => { @@ -56,6 +81,15 @@ window.addEventListener('DOMContentLoaded', async () => { const paginationBottom = document.getElementById('pagination-bottom'); const summarizeButton = form.querySelector('button[type="submit"]'); const autoTranslateCheckbox = document.getElementById('autotranslate-checkbox'); + const settingsDialog = document.getElementById('settings-dialog'); + const settingsPanel = settingsDialog.querySelector('.settings-panel'); + const settingsCloseButton = document.getElementById('settings-close-button'); + const masterPromptTextarea = document.getElementById('master-prompt-textarea'); + const resetMasterPromptButton = document.getElementById('reset-master-prompt-button'); + const translationPromptDeTextarea = document.getElementById('translation-prompt-de-textarea'); + const translationPromptJpTextarea = document.getElementById('translation-prompt-jp-textarea'); + const resetTranslationPromptDeButton = document.getElementById('reset-translation-prompt-de-button'); + const resetTranslationPromptJpButton = document.getElementById('reset-translation-prompt-jp-button'); let fullSummaries = []; let currentPage = 1; @@ -71,8 +105,45 @@ window.addEventListener('DOMContentLoaded', async () => { loadingIndicator.textContent = message; } + function getMasterPrompt() { + const savedPrompt = localStorage.getItem('masterPrompt'); + if (savedPrompt && savedPrompt.trim()) { + return savedPrompt; + } + return DEFAULT_MASTER_PROMPT; + } + + function getTranslationPrompt(lang) { + const savedPrompt = localStorage.getItem(`translationPrompt.${lang}`); + if (savedPrompt && savedPrompt.trim()) { + return savedPrompt; + } + return DEFAULT_TRANSLATION_PROMPTS[lang]; + } + + function syncSettingsFields() { + whisperCheckbox.checked = localStorage.getItem('useWhisper') === '0' ? false : true; + autoTranslateCheckbox.checked = localStorage.getItem('autoTranslate') === '1' ? true : false; + masterPromptTextarea.value = getMasterPrompt(); + translationPromptDeTextarea.value = getTranslationPrompt('de'); + translationPromptJpTextarea.value = getTranslationPrompt('jp'); + } + + function openSettings() { + syncSettingsFields(); + settingsDialog.hidden = false; + masterPromptTextarea.focus(); + } + + function closeSettings() { + settingsDialog.hidden = true; + } + whisperCheckbox.checked = localStorage.getItem('useWhisper') === '0' ? false : true; autoTranslateCheckbox.checked = localStorage.getItem('autoTranslate') === '1' ? true : false; + masterPromptTextarea.value = getMasterPrompt(); + translationPromptDeTextarea.value = getTranslationPrompt('de'); + translationPromptJpTextarea.value = getTranslationPrompt('jp'); whisperCheckbox.addEventListener('change', () => { localStorage.setItem('useWhisper', whisperCheckbox.checked ? '1' : '0'); @@ -80,6 +151,41 @@ window.addEventListener('DOMContentLoaded', async () => { autoTranslateCheckbox.addEventListener('change', () => { localStorage.setItem('autoTranslate', autoTranslateCheckbox.checked ? '1' : '0'); }); + masterPromptTextarea.addEventListener('input', () => { + localStorage.setItem('masterPrompt', masterPromptTextarea.value); + }); + translationPromptDeTextarea.addEventListener('input', () => { + localStorage.setItem('translationPrompt.de', translationPromptDeTextarea.value); + }); + translationPromptJpTextarea.addEventListener('input', () => { + localStorage.setItem('translationPrompt.jp', translationPromptJpTextarea.value); + }); + resetMasterPromptButton.addEventListener('click', () => { + masterPromptTextarea.value = DEFAULT_MASTER_PROMPT; + localStorage.setItem('masterPrompt', DEFAULT_MASTER_PROMPT); + masterPromptTextarea.focus(); + }); + resetTranslationPromptDeButton.addEventListener('click', () => { + translationPromptDeTextarea.value = DEFAULT_TRANSLATION_PROMPTS.de; + localStorage.setItem('translationPrompt.de', DEFAULT_TRANSLATION_PROMPTS.de); + translationPromptDeTextarea.focus(); + }); + resetTranslationPromptJpButton.addEventListener('click', () => { + translationPromptJpTextarea.value = DEFAULT_TRANSLATION_PROMPTS.jp; + localStorage.setItem('translationPrompt.jp', DEFAULT_TRANSLATION_PROMPTS.jp); + translationPromptJpTextarea.focus(); + }); + settingsCloseButton.addEventListener('click', closeSettings); + settingsDialog.addEventListener('click', (event) => { + if (!settingsPanel.contains(event.target)) { + closeSettings(); + } + }); + window.addEventListener('keydown', (event) => { + if (event.key === 'Escape' && !settingsDialog.hidden) { + closeSettings(); + } + }); function renderSummaries(list) { summariesContainer.innerHTML = ''; @@ -345,6 +451,8 @@ window.addEventListener('DOMContentLoaded', async () => { .replace(/^## (.+)$/gm, '

$1

') .replace(/^# (.+)$/gm, '

$1

'); + escaped = escaped.replace(/^---$/gm, '
'); + escaped = escaped.replace( /(^|\n)([ \t]*\* .+(?:\n[ \t]*\* .+)*)/g, (_, lead, listBlock) => { @@ -525,7 +633,7 @@ window.addEventListener('DOMContentLoaded', async () => { setActionLinksDisabled(true); const selectedModel = modelSelect.value; - window.api.summarizeVideo(url, useWhisper, selectedModel) + window.api.summarizeVideo(url, useWhisper, selectedModel, getMasterPrompt()) .then((newEntry) => { if (!newEntry || !newEntry.id) { return window.api.getSummaries().then(setSummaries); @@ -539,10 +647,10 @@ window.addEventListener('DOMContentLoaded', async () => { let translationsOk = true; setLoadingMessage('Translating to German (DE)…'); - return window.api.translateSummary(newEntry.id, 'de', selectedModel) + return window.api.translateSummary(newEntry.id, 'de', selectedModel, getTranslationPrompt('de')) .then(() => { setLoadingMessage('Translating to Japanese (JP)…'); - return window.api.translateSummary(newEntry.id, 'jp', selectedModel); + return window.api.translateSummary(newEntry.id, 'jp', selectedModel, getTranslationPrompt('jp')); }) .catch(err => { translationsOk = false; @@ -575,4 +683,5 @@ window.addEventListener('DOMContentLoaded', async () => { } setLoadingMessage(line); }); + window.api.onOpenSettings(openSettings); }); diff --git a/youtube_summarizer.py b/youtube_summarizer.py index 0dec6f7..2715fc6 100644 --- a/youtube_summarizer.py +++ b/youtube_summarizer.py @@ -35,8 +35,10 @@ import re import time import json import glob +import math import subprocess import multiprocessing +import threading import requests import yt_dlp import webvtt @@ -62,6 +64,17 @@ NUM_SLICES = 8 OVERLAP_SEC = 1 MAX_OVERLAP_WORDS = 7 WHISPER_MODEL = "small" # e.g. "small", "medium", "large-v3" … +OLLAMA_CHARS_PER_TOKEN = 3.5 +OLLAMA_OUTPUT_TOKEN_BUDGET = 2048 +OLLAMA_CONTEXT_BUCKETS = (4096, 8192, 16384, 32768, 65536) +DEFAULT_SUMMARY_PROMPT_TEMPLATE = """You are an expert summarizer. Summarize the following video concisely: + +Title: {title} + +Transcript: +{transcript} + +Summary:""" def debug_print(*args, **kwargs): @@ -70,6 +83,30 @@ def debug_print(*args, **kwargs): print("[DEBUG]", *args, **kwargs, file=sys.stderr) +class ProgressHeartbeat: + """Emit periodic progress while a blocking backend operation is active.""" + + def __init__(self, message_fn, interval: float = 15.0): + self.message_fn = message_fn + self.interval = interval + self._stop = threading.Event() + self._thread = threading.Thread(target=self._run, daemon=True) + + def __enter__(self): + self._thread.start() + return self + + def __exit__(self, exc_type, exc, tb): + self._stop.set() + self._thread.join(timeout=1.0) + + def _run(self): + while not self._stop.wait(self.interval): + message = self.message_fn() + if message: + print(message, flush=True) + + def get_ffmpeg_binary() -> str: """Return the ffmpeg executable path, preferring a bundled override.""" value = os.environ.get("YTS_FFMPEG", "").strip() @@ -82,6 +119,31 @@ def get_ffprobe_binary() -> str: return value or "ffprobe" +def get_ffmpeg_directory() -> Optional[str]: + """Return the directory containing the configured ffmpeg binary.""" + value = os.environ.get("YTS_FFMPEG", "").strip() + if not value: + return None + if os.path.isfile(value): + return os.path.dirname(value) + return value + + +def get_yt_dlp_ffmpeg_location() -> Optional[str]: + """Return an ffmpeg location suitable for yt_dlp postprocessors.""" + return get_ffmpeg_directory() + + +def ensure_ffmpeg_on_path() -> None: + """Expose bundled ffmpeg to libraries that shell out to plain `ffmpeg`.""" + ffmpeg_dir = get_ffmpeg_directory() + if not ffmpeg_dir: + return + path_entries = [entry for entry in os.environ.get("PATH", "").split(os.pathsep) if entry] + if ffmpeg_dir not in path_entries: + os.environ["PATH"] = os.pathsep.join([ffmpeg_dir, *path_entries]) + + def get_whisper_download_root() -> Optional[str]: """Return a stable Whisper cache directory when one is configured.""" value = os.environ.get("YTS_WHISPER_CACHE_DIR", "").strip() @@ -286,6 +348,9 @@ def _download_audio_with_yt_dlp(url: str, vid: str, extractor_args: Optional[dic } if extractor_args: opts["extractor_args"] = extractor_args + ffmpeg_location = get_yt_dlp_ffmpeg_location() + if ffmpeg_location: + opts["ffmpeg_location"] = ffmpeg_location with yt_dlp.YoutubeDL(opts) as ydl: ydl.download([url]) if not os.path.exists(audio_fn): @@ -295,7 +360,8 @@ def _download_audio_with_yt_dlp(url: str, vid: str, extractor_args: Optional[dic def download_video_audio(url: str, vid: str) -> str: """Download the best available audio for a YouTube video.""" - print(f"📥 Downloading audio from {url} …") + ensure_ffmpeg_on_path() + print(f"Downloading audio from {url} ...") # Clean up any stale partials that can trigger HTTP 416 resume errors. _cleanup_audio_artifacts(vid) @@ -322,16 +388,63 @@ def download_video_audio(url: str, vid: str) -> str: def get_audio_duration(path: str) -> float: """Return the duration of an audio file using ffprobe.""" - res = subprocess.run([ + try: + file_size = os.path.getsize(path) + except OSError: + file_size = None + + ffprobe_args = [ get_ffprobe_binary(), "-v", "error", "-show_entries", "format=duration", "-of", "default=noprint_wrappers=1:nokey=1", path - ], capture_output=True, text=True) - return float(res.stdout.strip()) + ] + res = subprocess.run( + ffprobe_args, + capture_output=True, + text=True, + encoding="utf-8", + errors="replace", + ) + + print(f"[ffprobe] command: {ffprobe_args}", file=sys.stderr, flush=True) + print(f"[ffprobe] target: {path}", file=sys.stderr, flush=True) + print(f"[ffprobe] target size bytes: {file_size}", file=sys.stderr, flush=True) + print(f"[ffprobe] returncode: {res.returncode}", file=sys.stderr, flush=True) + print("[ffprobe] stdout raw begin", file=sys.stderr, flush=True) + if res.stdout: + sys.stderr.write(res.stdout) + if not res.stdout.endswith("\n"): + sys.stderr.write("\n") + sys.stderr.flush() + else: + print("", file=sys.stderr, flush=True) + print("[ffprobe] stdout raw end", file=sys.stderr, flush=True) + print("[ffprobe] stderr raw begin", file=sys.stderr, flush=True) + if res.stderr: + sys.stderr.write(res.stderr) + if not res.stderr.endswith("\n"): + sys.stderr.write("\n") + sys.stderr.flush() + else: + print("", file=sys.stderr, flush=True) + print("[ffprobe] stderr raw end", file=sys.stderr, flush=True) + + stdout_value = res.stdout.strip() + try: + return float(stdout_value) + except ValueError: + match = re.search(r"[-+]?\d+(?:[.,]\d+)?", stdout_value or res.stderr) + if match: + return float(match.group(0).replace(",", ".")) + + raise RuntimeError( + "ffprobe did not return a parseable duration " + f"(returncode={res.returncode}, stdout={stdout_value!r}, stderr={res.stderr.strip()!r})" + ) def slice_audio(audio_path: str, vid: str) -> List[Tuple[str, float, float]]: """Slice a long audio file into overlapping chunks for Whisper.""" - print("Slicing audio …") + print("Slicing audio ...") duration = get_audio_duration(audio_path) length = duration / NUM_SLICES slices = [] @@ -351,6 +464,7 @@ def slice_audio(audio_path: str, vid: str) -> List[Tuple[str, float, float]]: def transcribe_slice(args: Tuple[str, int, str, str]) -> str: """Transcribe a single audio slice using Whisper and save to a text file.""" + ensure_ffmpeg_on_path() slice_path, idx, model_name, vid = args if whisper is None: raise RuntimeError("Whisper package is required but not installed") @@ -398,9 +512,10 @@ def clean_temp(pattern: str) -> None: def whisper_transcript(url: str, vid: str) -> str: """Run the Whisper pipeline and return the final transcript text.""" + ensure_ffmpeg_on_path() audio = download_video_audio(url, vid) slices = slice_audio(audio, vid) - print("✍️ Transcribing using Whisper...", flush=True) + print("Transcribing using Whisper...", flush=True) args = [(p, i, WHISPER_MODEL, vid) for i, (p, _, _) in enumerate(slices)] with multiprocessing.Pool(len(slices)) as pool: t_files = pool.map(transcribe_slice, args) @@ -415,17 +530,36 @@ def whisper_transcript(url: str, vid: str) -> str: # Ollama‑Summarizer # ----------------------- -def summarize_with_ollama(title: str, transcript: str, model: str = "mistral:latest") -> str: +def render_summary_prompt(title: str, transcript: str, prompt_template: Optional[str] = None) -> str: + template = (prompt_template or DEFAULT_SUMMARY_PROMPT_TEMPLATE).strip() + prompt = template.replace("{title}", title).replace("{transcript}", transcript) + if "{title}" not in template: + prompt = f"{prompt}\n\nTitle: {title}" + if "{transcript}" not in template: + prompt = f"{prompt}\n\nTranscript:\n{transcript}" + return prompt + + +def choose_ollama_num_ctx(prompt: str, output_budget: int = OLLAMA_OUTPUT_TOKEN_BUDGET) -> int: + estimated_input_tokens = math.ceil(len(prompt) / OLLAMA_CHARS_PER_TOKEN) + needed_tokens = estimated_input_tokens + output_budget + for bucket in OLLAMA_CONTEXT_BUCKETS: + if needed_tokens <= bucket: + return bucket + return OLLAMA_CONTEXT_BUCKETS[-1] + + +def summarize_with_ollama( + title: str, + transcript: str, + model: str = "mistral:latest", + prompt_template: Optional[str] = None, +) -> str: """ Send video title and transcript text to Ollama and return the summary string. """ debug_print(f"Preparing summary with model {model}, transcript length={len(transcript)}") - prompt = ( - "You are an expert summarizer. Summarize the following video concisely:\n\n" - f"Title: {title}\n\n" - f"Transcript:\n{transcript}\n\n" - "Summary:" - ) + prompt = render_summary_prompt(title, transcript, prompt_template) debug_print(prompt) payload = { "model": model, @@ -433,21 +567,50 @@ def summarize_with_ollama(title: str, transcript: str, model: str = "mistral:lat {"role": "system", "content": "You are an intelligent summarizer."}, {"role": "user", "content": prompt} ], + "options": { + "num_ctx": choose_ollama_num_ctx(prompt) + }, "stream": True } - debug_print("Sending request to Ollama …") - resp = requests.post("http://localhost:11434/api/chat", json=payload, stream=True) - debug_print(f"Ollama status: {resp.status_code}") + debug_print("Sending request to Ollama ...") summary = "" - for line in resp.iter_lines(decode_unicode=True): - if not line: - continue - try: - msg = json.loads(line).get("message", {}).get("content", "") - summary += msg - except Exception: - continue + last_progress_chars = 0 + + def heartbeat_message() -> str: + if summary: + return f"Ollama is generating summary... {len(summary)} characters received." + return "Waiting for Ollama to start responding..." + + try: + with ProgressHeartbeat(heartbeat_message): + resp = requests.post( + "http://localhost:11434/api/chat", + json=payload, + stream=True, + timeout=(10, 1800), + ) + debug_print(f"Ollama status: {resp.status_code}") + resp.raise_for_status() + for line in resp.iter_lines(decode_unicode=True): + if not line: + continue + try: + msg = json.loads(line).get("message", {}).get("content", "") + summary += msg + if len(summary) - last_progress_chars >= 1000: + last_progress_chars = len(summary) + print( + f"Ollama is generating summary... {last_progress_chars} characters received.", + flush=True, + ) + except Exception: + continue + except requests.RequestException as exc: + raise RuntimeError(f"Ollama request failed: {exc}") from exc + if not summary.strip(): + raise RuntimeError("Ollama returned an empty summary.") debug_print(f"Summary generated, length={len(summary)}") + print("Summary generated.", flush=True) return summary @@ -517,7 +680,13 @@ def download_thumbnail(vid: str, thumbnail_url: str) -> Optional[str]: # Main # ----------------------- -def process_video(url: str, use_whisper: bool, model: str = "mistral:latest", output_json: Optional[str] = None) -> dict: +def process_video( + url: str, + use_whisper: bool, + model: str = "mistral:latest", + output_json: Optional[str] = None, + prompt_template: Optional[str] = None, +) -> dict: """ Core processing routine. Retrieves metadata, obtains transcript via the selected workflow, generates a summary using Ollama and writes the @@ -552,17 +721,17 @@ def process_video(url: str, use_whisper: bool, model: str = "mistral:latest", ou # Fetch transcript if use_whisper: - print("🤖 Using Whisper parallel transcription…") + print("Using Whisper parallel transcription...") transcript_text = whisper_transcript(url, vid) if not transcript_text.strip(): raise SystemExit("Whisper transcription failed or empty.") else: - print("▶️ Using classic API/subtitle workflow…") + print("Using classic API/subtitle workflow...") # Try API first try: transcript_text = get_transcript_api(vid) except Exception: - print("API failed, falling back to subtitles…") + print("API failed, falling back to subtitles...") transcript_text = get_subtitles_via_yt_dlp(url) if not transcript_text: raise SystemExit("No transcript/subtitles available.") @@ -601,8 +770,8 @@ def process_video(url: str, use_whisper: bool, model: str = "mistral:latest", ou audio_filename = None # Generate summary - print("✍️ Generating summary with Ollama…", flush=True) - summary_text = summarize_with_ollama(title, transcript_text, model) + print("Generating summary with Ollama...", flush=True) + summary_text = summarize_with_ollama(title, transcript_text, model, prompt_template) # Create metadata dictionary meta = { @@ -625,7 +794,13 @@ def process_video(url: str, use_whisper: bool, model: str = "mistral:latest", ou return meta -def rewrite_summary(title: str, transcript_file: str, model: str = "mistral:latest", output_json: Optional[str] = None) -> dict: +def rewrite_summary( + title: str, + transcript_file: str, + model: str = "mistral:latest", + output_json: Optional[str] = None, + prompt_template: Optional[str] = None, +) -> dict: """ Regenerate a summary from an existing transcript file using the specified model. @@ -648,7 +823,7 @@ def rewrite_summary(title: str, transcript_file: str, model: str = "mistral:late with open(transcript_file, 'r', encoding='utf-8') as f: transcript_text = f.read() debug_print(f"Rewriting summary using model {model} for {transcript_file}") - summary_text = summarize_with_ollama(title, transcript_text, model) + summary_text = summarize_with_ollama(title, transcript_text, model, prompt_template) meta = {'summary': summary_text} if output_json: with open(output_json, 'w', encoding='utf-8') as f: @@ -669,17 +844,25 @@ def main(): help="Ollama model to use for summarization (default: mistral:latest)") parser.add_argument('--transcript-file', type=str, default=None, help="Path to an existing transcript file; when provided the script will skip transcription and only generate a summary.") + parser.add_argument('--prompt-template', type=str, default=None, + help="Prompt template for the summary LLM call.") + parser.add_argument('--prompt-template-file', type=str, default=None, + help="Path to a text file containing the prompt template.") args = parser.parse_args() use_whisper = not args.no_ai + prompt_template = args.prompt_template + if args.prompt_template_file: + with open(args.prompt_template_file, 'r', encoding='utf-8') as f: + prompt_template = f.read() try: # If a transcript file is provided, skip the normal processing and only rewrite summary if args.transcript_file: vid, title, _ = fetch_video_metadata(args.url) - meta = rewrite_summary(title, args.transcript_file, args.model, args.output_json) + meta = rewrite_summary(title, args.transcript_file, args.model, args.output_json, prompt_template) else: - meta = process_video(args.url, use_whisper, args.model, args.output_json) + meta = process_video(args.url, use_whisper, args.model, args.output_json, prompt_template) # If no JSON output specified, print metadata as JSON to stdout if not args.output_json: print(json.dumps(meta, ensure_ascii=False, indent=2))