atproto Thingiverse but good
10

Configure Feed

Select the types of activity you want to include in your feed.

initial skeleton

Orual (Jun 29, 2026, 7:06 PM EDT) d43203ff

+11398
+1
.envrc
··· 1 + use flake
+9
.gitignore
··· 1 + /target/ 2 + /.direnv/ 3 + /.dioxus/ 4 + .env 5 + .env.* 6 + !.envrc 7 + !.polytoken 8 + node_modules/ 9 + .polytoken/permissions.local.yaml
+3
.polytoken/config.yaml
··· 1 + # Project-local Polytoken config for polymodel. 2 + # Provider/model defaults live in user/global config. 3 + {}
+49
.polytoken/facets/design.md
··· 1 + --- 2 + name: design 3 + polytoken: 4 + model: default_model:full 5 + tools: [ask_user_question, switch_facet, write_plan, edit_plan, handoff_plan, subagent, job_status, job_result, job_cancel, job_block, web_search, web_fetch, file_read, file_write, file_read_hashline, file_edit_hashline, glob, grep, todo_create, todo_update, todo_complete, todo_delete, todo_list, flag_important, skill, shell_exec, shell_monitor] 6 + auto_facet_hint: "This facet may write durable design and planning artifacts. Allow edits to configured planning/documentation spaces; deny destructive code, build, deploy, and broad filesystem mutation unless separately approved." 7 + color_light: "#6f4ab7" 8 + color_dark: "#c7a6ff" 9 + undeferred_tools: [switch_facet, subagent, job_status, job_result, job_cancel, job_block, web_search, web_fetch, file_read, grep, glob] 10 + --- 11 + {{ transclude("polytoken://system_prompts/facet.md") }} 12 + 13 + You are in design facet. This is a writable design and durable-iteration mode, not an implementation mode. 14 + 15 + Use this facet to turn large or ambiguous goals into durable working truth: initiative notes, goal trees, decision records, research summaries, executable slices, review notes, and human-readable design documents. 16 + 17 + {% if project_vars.design_workflow_instructions %} 18 + ## Project design workflow 19 + 20 + {{ project_vars.design_workflow_instructions }} 21 + {% else %} 22 + ## Design workflow defaults 23 + 24 + No project-specific design workflow metadata was provided. Use local Markdown only as a fallback, and treat the storage location as replaceable project policy rather than a universal convention. 25 + 26 + Before writing durable design artifacts, identify: 27 + 28 + - the human source of truth, if any: issue tracker, Confluence page, Obsidian note, stakeholder decision, or current conversation; 29 + - the agent working truth: the local or tool-accessible place where you may write design state for this session; 30 + - any project convention for design docs, decision records, implementation slices, or review artifacts. 31 + 32 + If the project has not provided a location, ask before creating a durable design tree, but a good default is `./agent_docs`. For throwaway notes, use todo tools or the conversation instead of inventing a docs structure. 33 + {% endif %} 34 + 35 + Work fluidly: 36 + 37 + - investigate code and public docs or other information sources before asking factual questions; 38 + - ask the user for decisions, preferences, constraints, and tradeoffs; 39 + - record important decisions with evidence and links; 40 + - revise or pivot when new information changes the design; 41 + - keep durable documents focused on current state, linking to history instead of carrying stale content inline. 42 + 43 + Use lightweight goal trees only when useful. Stable node IDs and links are enough; do not invent a new issue tracker. If a real tracker is available through project instructions or MCP, use it as instructed. 44 + 45 + When a goal becomes an executable slice, make sure it has goal/non-goals, relevant files/contracts, verified facts, steps or constraints, validation, risks/open decisions, and review expectations. 46 + 47 + For small, immediate implementation handoffs, you may use `write_plan` and `handoff_plan` directly, but run the handoff review gate first: at least one `code-reviewer`; for larger plans, the three-reviewer panel with pinned `model_override` values `codex/gpt-5.5(medium)`, `anthropic/claude-opus-4-8(medium)`, and `zai/glm-5.2(max)`. Fix or rebut every Critical/High finding, re-run until clean, and stop for operator input if a pinned model does not resolve. 48 + 49 + For larger implementation planning, switch to `plan` so the dedicated planning facet can produce and review the execution handoff.
+31
.polytoken/facets/plan.md
··· 1 + --- 2 + name: plan 3 + polytoken: 4 + model: default_model:full 5 + tools: [ask_user_question, write_plan, edit_plan, handoff_plan, subagent, job_status, job_result, job_cancel, job_block, web_search, web_fetch, file_read, glob, grep, todo_create, todo_update, todo_complete, todo_delete, todo_list, flag_important, skill] 6 + auto_facet_hint: "This facet is read-only; the agent is in a planning phase and should not be performing destructive shell operations. Deny anything that mutates filesystem state, modifies the working tree, or runs deploy commands." 7 + color_light: "#005f91" 8 + color_dark: "#64beff" 9 + undeferred_tools: [subagent, job_status, job_result, job_cancel, job_block, web_search, web_fetch] 10 + --- 11 + {{ transclude("polytoken://system_prompts/facet.md") }} 12 + {{ transclude("polytoken://facets/plan.md") }} 13 + 14 + {% if project_vars.plan_handoff_instructions %} 15 + ## Project handoff planning instructions 16 + 17 + {{ project_vars.plan_handoff_instructions }} 18 + {% endif %} 19 + 20 + ## Handoff review gate 21 + 22 + After writing a handoff plan, do not immediately call `handoff_plan`. Present the plan's tradeoffs, risks, validation strategy, and open questions, then ask whether to revise, research further, split scope, or proceed. 23 + 24 + Before `handoff_plan`, run an independent review gate: 25 + 26 + - For small/simple handoffs, run at least one `plan-reviewer` subagent against the handoff plan. 27 + - For larger plans, run three reviewers in parallel using `code-reviewer` with `model_override` values `codex/gpt-5.5(medium)`, `anthropic/claude-opus-4-8(medium)`, and `zai/glm-5.2(max)`. 28 + - If a pinned `model_override` does not resolve at runtime, stop and ask the operator; do not silently substitute a weaker model. 29 + - Fix or rebut every Critical/High finding with evidence. If `edit_plan` is available, edit the plan; otherwise write a revised handoff plan with `write_plan`. 30 + - Re-run the same reviewer set while any reviewer returns any Critical or High finding. 31 + - Only call `handoff_plan` when all reviewers report zero Critical and zero High findings, or when the operator explicitly accepts the risk.
+17
.polytoken/hooks.json
··· 1 + [ 2 + { 3 + "name": "workflow-session-start", 4 + "event": "session_start", 5 + "handler": { "bash": ".polytoken/hooks/workflow-context.sh" } 6 + }, 7 + { 8 + "name": "workflow-pre-model-context", 9 + "event": "pre_model_turn", 10 + "handler": { "bash": ".polytoken/hooks/workflow-context.sh" } 11 + }, 12 + { 13 + "name": "workflow-post-compaction-context", 14 + "event": "post_compaction", 15 + "handler": { "bash": ".polytoken/hooks/workflow-context.sh" } 16 + } 17 + ]
+119
.polytoken/hooks/workflow-context.sh
··· 1 + #!/usr/bin/env bash 2 + set -euo pipefail 3 + 4 + # Conservative workflow context hook for Polytoken. 5 + # Handles session_start, pre_model_turn, and post_compaction. 6 + # It injects compact framing only; it does not enforce gates yet. 7 + 8 + EVENT="${POLYTOKEN_HOOK_EVENT:-}" 9 + PROJECT_DIR="${POLYTOKEN_PROJECT_DIR:-${POLYTOKEN_PROJECT_PATH:-$(pwd)}}" 10 + SESSION_ID="${POLYTOKEN_SESSION_ID:-}" 11 + 12 + read_stdin() { 13 + cat >/tmp/polytoken-workflow-hook-stdin-$$.json || true 14 + } 15 + 16 + json_escape() { 17 + jq -Rs . 18 + } 19 + 20 + find_port() { 21 + if [ -z "$SESSION_ID" ]; then 22 + return 1 23 + fi 24 + local data_home session_dir startup 25 + data_home="${XDG_DATA_HOME:-${HOME:-}/.local/share}" 26 + if [ -z "$data_home" ]; then 27 + return 1 28 + fi 29 + session_dir="$data_home/polytoken/sessions/$SESSION_ID" 30 + startup="$session_dir/startup.json" 31 + if [ ! -f "$startup" ]; then 32 + return 1 33 + fi 34 + jq -r '.port // empty' "$startup" 35 + } 36 + 37 + state_summary() { 38 + local port="$1" 39 + curl -fsS "http://127.0.0.1:${port}/state" 2>/dev/null \ 40 + | jq -r ' 41 + "- Active facet: \(.active_facet // "unknown")\n" + 42 + "- Active model: \(.active_model // "unknown")\n" + 43 + "- Project cwd: \(.project_cwd // "unknown")\n" + 44 + "- Todos: \((.todos // []) | length)\n" + 45 + "- Flags: \((.flags // []) | length)" 46 + ' 2>/dev/null || true 47 + } 48 + 49 + project_vars_summary() { 50 + local vars="$PROJECT_DIR/.polytoken/project_vars.yaml" 51 + if [ ! -f "$vars" ]; then 52 + printf '%s\n' "- Project vars: none found at .polytoken/project_vars.yaml" 53 + return 0 54 + fi 55 + 56 + printf '%s\n' "- Project vars: .polytoken/project_vars.yaml" 57 + if command -v yq >/dev/null 2>&1; then 58 + return 0 59 + fi 60 + # Avoid depending on yq. Report the file exists; facets render the details. 61 + } 62 + 63 + active_gates_summary() { 64 + local gates_dir="$PROJECT_DIR/agent_docs/.workflow/gates" 65 + local alt_gates_dir="$PROJECT_DIR/docs/polytoken-workflows/.workflow/gates" 66 + local found=0 67 + 68 + for dir in "$gates_dir" "$alt_gates_dir"; do 69 + if [ -d "$dir" ]; then 70 + local count 71 + count=$(find "$dir" -maxdepth 1 -type f -name '*.json' 2>/dev/null | wc -l | tr -d ' ') 72 + if [ "${count:-0}" != "0" ]; then 73 + printf '%s\n' "- Active workflow gate files: $count in ${dir#$PROJECT_DIR/}" 74 + found=1 75 + fi 76 + fi 77 + done 78 + 79 + if [ "$found" = 0 ]; then 80 + printf '%s\n' "- Active workflow gates: none detected" 81 + fi 82 + } 83 + 84 + build_context() { 85 + local port="" state="" 86 + port="$(find_port || true)" 87 + if [ -n "$port" ]; then 88 + state="$(state_summary "$port")" 89 + fi 90 + 91 + cat <<EOF 92 + <workflow-context> 93 + Polytoken workflow framing: 94 + $(project_vars_summary) 95 + ${state:-"- Daemon state: unavailable from hook"} 96 + $(active_gates_summary) 97 + 98 + Use project-specific design workflow instructions from project_vars when present. Distinguish human source of truth from agent working truth. In design/plan work, keep durable documents focused on current state and link to history rather than carrying stale content inline. 99 + </workflow-context> 100 + EOF 101 + } 102 + 103 + read_stdin 104 + context="$(build_context)" 105 + 106 + case "$EVENT" in 107 + session_start) 108 + jq -n --arg ctx "$context" '{outcome:"allow", additional_context:$ctx}' 109 + ;; 110 + pre_model_turn) 111 + jq -n --arg ctx "$context" '{outcome:"proceed", additional_context:$ctx}' 112 + ;; 113 + post_compaction) 114 + jq -n --arg ctx "$context" '{outcome:"allow", append_to_output:$ctx}' 115 + ;; 116 + *) 117 + jq -n '{outcome:"allow"}' 118 + ;; 119 + esac
+46
.polytoken/project_vars.yaml
··· 1 + design_workflow_instructions: | 2 + For this repository, Jira project `PM` is both the human source of truth and the agent working truth for implementation tasks when Jira tools are available and permitted. 3 + 4 + Use Jira issue status, descriptions, comments, and linked Confluence pages as durable task state. Use Confluence space `PM` for larger design notes, demo narrative, product decisions, and workplace-facing explanation. Local Markdown is supporting material only unless a task explicitly says otherwise. 5 + 6 + Polymodel is an AT Protocol-native model/project sharing app — roughly Thingiverse on atproto — and a workplace demo of highly integrated agent workflows with Polytoken, Jira, Confluence, and jj workspaces. The tentative product shape is project/profile/like lexicons, profile/recent/hot feeds, and an in-browser STL viewer. `three-d` and `kiss3d` are candidate viewer libraries; prefer a spike before committing. 7 + 8 + plan_handoff_instructions: | 9 + For Jira-backed tasks, cite the Jira issue key, current status, claim state, relevant Confluence links, jj workspace/bookmark name, validation commands, and review-gate requirements. The handoff should name `jira-solo-tasker-execute` when produced by the Jira solo-tasker workflow. 10 + 11 + Implementation plans should preserve both goals: build the atproto model-sharing app and demonstrate what is possible with agents in a highly integrated, well-designed workflow using Polytoken. 12 + 13 + orual_workflow: 14 + source_of_truth: 15 + human: jira 16 + agent: jira 17 + jira: 18 + cloud_id: "eab0a222-1a38-4539-a21d-44fb3466b28b" 19 + project_key: "PM" 20 + statuses: 21 + todo: "To Do" 22 + in_progress: "In Progress" 23 + in_review: "In Review" 24 + done: "Done" 25 + transitions: 26 + todo: "11" 27 + in_progress: "21" 28 + in_review: "31" 29 + done: "41" 30 + eligible_issue_types: [Task, Bug] 31 + automation_block_labels: [no-auto] 32 + confluence: 33 + space_key: "PM" 34 + space_id: "98315" 35 + overview_page_id: "98479" 36 + design_page_parent: null 37 + vcs: 38 + kind: jj 39 + workspace_policy: sibling 40 + workspace_command: "just workspace-create <name> # creates sibling workspace and immediately starts a fresh jj change" 41 + review: 42 + gate_severities: [Critical, High] 43 + reviewer_models: 44 + - codex/gpt-5.5 45 + - codex/gpt-5.4-mini 46 + - zai/glm-5.2
+189
.polytoken/skills/jira-confluence-workflow-setup/SKILL.md
··· 1 + --- 2 + description: Set up or adapt a repository for the Orual Jira/Confluence Polytoken workflow, including project variables, Jira-as-agent-truth conventions, jj workspace policy, and validation. 3 + polytoken: 4 + tags: [jira, confluence, workflow, configuration, jj] 5 + --- 6 + 7 + # Jira/Confluence Workflow Setup 8 + 9 + Use this skill when initializing a repository to use the Orual Jira/Confluence workflow or when adapting the workflow to a new Jira project/space. 10 + 11 + Announce: "using the jira/confluence workflow setup skill to initialize this repo" 12 + 13 + Before changing Polytoken config, facets, hooks, skills, subagents, or permissions, load `polytoken:config_reference`. Treat it as authoritative for schema, config layering, and validation rules. 14 + 15 + ## Goal 16 + 17 + Configure the repo so agents can safely use Jira as both: 18 + 19 + - the human source of truth; and 20 + - the agent working truth when Jira tools are available and permitted. 21 + 22 + Confluence is used for larger design/reference documents when the project has a configured space/page convention. Local Markdown remains useful for repo-owned templates and fallback notes, but it is not the canonical issue state for this workflow. 23 + 24 + ## Required setup facts 25 + 26 + Determine these before editing files. Prefer existing repo config and Jira/Confluence tool discovery before asking the operator. 27 + 28 + - Atlassian cloudId. 29 + - Jira project key. 30 + - Jira issue types eligible for autonomous solo-tasker work. 31 + - Jira status transition IDs for at least: To Do, In Progress, In Review, Done. 32 + - Labels that block automation, such as `no-auto`. 33 + - Whether claims are represented by comments, assignee, status, or a combination. 34 + - Confluence space key, numeric space ID for page APIs, overview/root page ID, and page conventions, if design docs should live in Confluence. 35 + - jj workspace location convention: sibling directory, project wrapper, or current checkout only. 36 + - Review gate roster and model pins. 37 + - Validation commands: format, lint, tests, build, provider/live checks. 38 + - Permission expectations for Jira/Confluence MCP tools in plan and execute facets. 39 + 40 + If any fact is unavailable and materially affects setup, ask the operator with a focused question. 41 + 42 + ## Files to create or update 43 + 44 + Typical project-local files: 45 + 46 + ```text 47 + .polytoken/project_vars.yaml 48 + .polytoken/skills/jira-solo-tasker-plan/SKILL.md 49 + .polytoken/skills/jira-solo-tasker-execute/SKILL.md 50 + .polytoken/skills/jira-confluence-workflow-setup/SKILL.md 51 + .polytoken/permissions.yaml or .polytoken/permissions.local.yaml # only with operator approval 52 + ``` 53 + 54 + Optional docs/templates: 55 + 56 + ```text 57 + docs/polytoken-workflows/ 58 + docs/polytoken-workflows/templates/ 59 + ``` 60 + 61 + Do not store secrets in repo files. Do not write user-specific credentials or Atlassian tokens into project config. 62 + 63 + ## Project vars contract 64 + 65 + Update `.polytoken/project_vars.yaml` with human-readable instructions for facets and skills. A useful shape is: 66 + 67 + ```yaml 68 + design_workflow_instructions: | 69 + Jira is the human source of truth and agent working truth for implementation tasks when Jira tools are available. 70 + Use project <KEY> for task state. Use Confluence space <SPACE> for durable design/reference docs when linked from Jira. 71 + Local Markdown under docs/polytoken-workflows/ is fallback/supporting material, not the canonical ticket state. 72 + 73 + plan_handoff_instructions: | 74 + Handoff plans for Jira tasks must cite the Jira issue key, current status, claim state, relevant Confluence links, jj workspace/bookmark name, validation commands, and review-gate requirements. 75 + 76 + orual_workflow: 77 + source_of_truth: 78 + human: jira 79 + agent: jira 80 + jira: 81 + cloud_id: "<cloud-id>" 82 + project_key: "<KEY>" 83 + statuses: 84 + todo: "To Do" 85 + in_progress: "In Progress" 86 + in_review: "In Review" 87 + done: "Done" 88 + transitions: 89 + todo: "11" 90 + in_progress: "21" 91 + in_review: "31" 92 + done: "41" 93 + eligible_issue_types: [Task, Bug] 94 + automation_block_labels: [no-auto] 95 + confluence: 96 + space_key: "<SPACE>" 97 + space_id: "<numeric space id for page APIs>" 98 + overview_page_id: "<overview/root page id, if used>" 99 + design_page_parent: "<page id or title, if used>" 100 + vcs: 101 + kind: jj 102 + workspace_policy: sibling 103 + review: 104 + gate_severities: [Critical, High] 105 + ``` 106 + 107 + The string fields are for prompt rendering. The structured `orual_workflow` block is for hooks, setup checks, and future tools; scripts must tolerate missing keys. 108 + 109 + ## Rewrite skill constants 110 + 111 + Ensure the Jira solo-tasker skills match the project: 112 + 113 + - cloudId and project key; 114 + - transition IDs and status names; 115 + - eligible issue types; 116 + - automation block labels; 117 + - Confluence space key, numeric space ID, and overview/root page ID if design docs live in Confluence; 118 + - Jira-as-agent-truth statement; 119 + - jj workspace policy; 120 + - review roster. 121 + 122 + Avoid duplicating config in too many places. If Polytoken skill templating is available for the needed fields, prefer rendering from `project_vars`; otherwise keep the constants compact and make the setup skill the checklist for keeping them synchronized. 123 + 124 + ## jj workspace policy 125 + 126 + Default to jj workspaces, not Git worktrees. Every ticket workflow must start a fresh jj change with `jj new -m ...` before edits; do not rely on `jj describe` at setup time because it describes the current change. 127 + 128 + Recommended generic policy: 129 + 130 + ```sh 131 + root="$(jj workspace root)" 132 + jj workspace list 133 + workspace_path="$(dirname "$root")/<ticket-slug>" 134 + jj workspace add "$workspace_path" -r @ 135 + cd "$workspace_path" && jj new -m "<ticket-key>: <summary>" 136 + ``` 137 + 138 + Project wrappers are allowed and preferred when documented. The setup skill should record the wrapper command in project vars or repo instructions. 139 + 140 + Do not add Git worktree, direct `main` merge, or merge-lock instructions unless the target repo actually uses them. 141 + 142 + ## Jira/Confluence tool checks 143 + 144 + When tools are available, verify: 145 + 146 + 1. The Jira project exists and is visible. 147 + 2. A representative issue exposes the expected fields. 148 + 3. `getTransitionsForJiraIssue` returns the configured transition IDs. 149 + 4. Comment and transition tools are permissioned as intended. 150 + 5. Confluence space/page discovery works, if Confluence is part of the workflow. Note that some Confluence page APIs require numeric space IDs even when CQL and URLs use the space key. 151 + 152 + If tools are not available in the current facet/session, write the setup as pending verification and tell the operator exactly what to test. 153 + 154 + ## Permission guidance 155 + 156 + Use permission files only with operator approval. 157 + 158 + For unattended planning, the plan facet may need approval policy for Jira search/read, transition, and comment tools. For execution, it may need Jira read/comment/transition and Confluence read tools, plus filesystem access to the jj workspace path. 159 + 160 + Keep broad write permissions out of shared project config unless the team explicitly wants them. Prefer `.polytoken/permissions.local.yaml` for operator-machine-specific allows. 161 + 162 + ## Validation 163 + 164 + After edits: 165 + 166 + ```sh 167 + polytoken config validate 168 + ``` 169 + 170 + If facets, hooks, skills, or permissions changed in a live session, reload or restart Polytoken before testing behavior. 171 + 172 + Then perform a dry run where possible: 173 + 174 + - invoke the plan skill on a known safe test ticket or ask it to list candidates without claiming; 175 + - verify it would use Jira as agent truth; 176 + - verify it names `jira-solo-tasker-execute` in the handoff; 177 + - verify the execute skill uses jj workspace terminology and does not mention Git worktrees or merge locks. 178 + 179 + ## Final report 180 + 181 + Report: 182 + 183 + - files changed; 184 + - configured Jira project/cloud and Confluence space assumptions; 185 + - transition IDs verified or pending verification; 186 + - jj workspace policy; 187 + - permission changes made or intentionally left for the operator; 188 + - validation command results; 189 + - next manual test to run.
+183
.polytoken/skills/jira-design-tasker/SKILL.md
··· 1 + --- 2 + description: Execute Jira-backed design and research tasks in the design facet using Confluence as the durable artifact space, including interview, review, and document-refinement loops. 3 + polytoken: 4 + tags: [jira, confluence, design, research, documentation, workflow] 5 + --- 6 + 7 + # Jira Design Tasker 8 + 9 + Use this skill in the design facet when the operator asks you to work a Jira-backed design/research task, update durable design documents, or turn a broad design question into reviewed Confluence artifacts and follow-up Jira tasks. 10 + 11 + Announce: "using the jira-design-tasker skill to run a Jira-backed design workflow" 12 + 13 + This is not an implementation workflow. Do not edit product code except for small workflow/documentation-support changes the operator explicitly requests. When design work becomes executable implementation, create or propose separate Jira implementation tasks and, if needed, hand off through the plan/execute workflow. 14 + 15 + ## Source of truth 16 + 17 + For this repository, Jira project `PM` is both the human source of truth and the agent working truth when Jira tools are available and permitted. 18 + 19 + Confluence space `PM` is the durable home for design artifacts, product decisions, research summaries, and demo narrative. 20 + 21 + Local Markdown is supporting material only unless a task explicitly says otherwise. 22 + 23 + ## Project configuration 24 + 25 + Default project settings for this repository: 26 + 27 + - Atlassian cloudId: `eab0a222-1a38-4539-a21d-44fb3466b28b` 28 + - Jira project: `PM` 29 + - Confluence space key: `PM`; numeric space ID for page APIs: `98315`; overview/root page ID: `98479` 30 + - Overall design plan: `Polymodel Overall Design Plan`, page ID `131306`; parent epic for design tasks: `PM-4` (`Initial development`, Epic) 31 + - Jira transitions: To Do `11`, In Progress `21`, In Review `31`, Done `41` 32 + 33 + These are project contracts. If a tool call contradicts them or the board/space appears reconfigured, re-verify and ask the operator before substituting IDs. 34 + 35 + ## Task shape 36 + 37 + A good design task has: 38 + 39 + - a Jira issue describing the question or design slice; 40 + - a linked Confluence page or a planned page location; 41 + - explicit scope and non-goals; 42 + - durable references and evidence sources; 43 + - interview questions for operator/domain knowledge; 44 + - a review/refinement loop; 45 + - a final Jira comment that summarizes what changed and where the artifact lives. 46 + 47 + Design tasks usually produce one of: 48 + 49 + - design brief; 50 + - decision record; 51 + - research synthesis; 52 + - product/UX plan; 53 + - architecture options note; 54 + - implementation-roadmap proposal; 55 + - follow-up Jira task set. 56 + 57 + ## 1. Load Jira and Confluence context 58 + 59 + Start from a Jira issue when available. 60 + 61 + 1. Read the Jira issue with `getJiraIssue`, including comments when possible. 62 + 2. Confirm the issue is design/research work, not implementation work. 63 + 3. Find linked Confluence pages or create a new child page under the relevant parent, normally page `131306` or the PM root `98479`. 64 + 4. Read the current relevant Confluence page(s), including open inline/footer comments. 65 + 5. Identify current decisions, open questions, stale content, and missing references. 66 + 67 + If no Jira issue exists and the operator asks for durable work, ask whether to create one unless the work is too small and immediate. 68 + 69 + ## 2. Claim or coordinate the design task 70 + 71 + Do not silently take over active human work. 72 + 73 + If the task is in To Do and the operator wants you to proceed: 74 + 75 + - transition Jira to In Progress (`21`) if appropriate; 76 + - add a concise comment such as `Design task started by Polytoken session <session-id>. Durable artifact: <Confluence link or TBD>.` 77 + 78 + If the issue is already In Progress, inspect comments and ask before assuming ownership unless the operator explicitly directed you to continue it. 79 + 80 + For exploratory design sessions without a Jira issue, keep state in the Confluence page and create Jira tasks only when useful. 81 + 82 + ## 3. Research before asking, then interview deliberately 83 + 84 + Use existing sources before interrupting the operator: 85 + 86 + - current repo files and project instructions; 87 + - PM Jira issues and comments; 88 + - PM Confluence pages and inline comments; 89 + - durable references such as: 90 + - `https://tangled.org/nonbinary.computer/weaver` 91 + - `https://tangled.org/nonbinary.computer/vodplace` 92 + - `https://tangled.org/microcosm.blue` 93 + - relevant public specs and product references. 94 + 95 + Ask the operator only for domain knowledge, preferences, constraints, or decisions that materially change the design. Use `ask_user_question` with a self-contained context explainer. 96 + 97 + When the operator provides comments inline in Confluence, fold current decisions into page content instead of leaving important state only in comment threads. 98 + 99 + ## 4. Draft the durable artifact 100 + 101 + Write Confluence pages as current-state documents, not chat transcripts. 102 + 103 + Recommended structure: 104 + 105 + - Status and purpose; 106 + - Current decision or current direction; 107 + - Scope and non-goals; 108 + - Evidence and durable references; 109 + - Options considered, if a decision is needed; 110 + - Recommended next step; 111 + - Risks and open questions; 112 + - Follow-up Jira tasks or implementation candidates. 113 + 114 + Keep history short. Link to comments, prior pages, or Jira issues instead of carrying obsolete exploration inline. 115 + 116 + When updating a page that has inline comments, preserve or intentionally replace the relevant anchored text. If a comment has become resolved by the page update, say so in the final report; resolve comments only when the operator asks or the workflow explicitly permits it. 117 + 118 + ## 5. Review and refinement loop 119 + 120 + Before treating a Confluence artifact as ready: 121 + 122 + 1. Run an independent review appropriate to the artifact size. 123 + - Small/local design note: at least one `code-reviewer` or `general-purpose` reviewer focused on clarity, missing assumptions, and actionability. 124 + - Larger design/architecture decision: use a panel if the operator or project guidance requires it. 125 + 2. Ask reviewers for Critical/High/Medium/Low findings with evidence and suggested fixes. 126 + 3. Fix or rebut Critical/High findings before finalizing. For Medium/Low, either fix, record as follow-up, or explain why not. 127 + 4. Use the `refining-human-documents` skill before finalizing human-facing durable documents. If possible, delegate the refinement pass to a subagent so the main thread keeps domain context clean. 128 + 5. Re-read or fetch the final artifact after updating it to verify the durable page reflects the intended state. 129 + 130 + The review goal is shipping-quality design truth: clear, concise, evidence-backed, current, and actionable. 131 + 132 + ## 6. Create follow-up Jira tasks 133 + 134 + Create Jira tasks when the design artifact identifies work that is: 135 + 136 + - specific enough to own; 137 + - valuable independently; 138 + - bounded by scope/non-goals; 139 + - connected to a validation or review expectation. 140 + 141 + Distinguish task types in the summary: 142 + 143 + - `Design:` for design/research tasks; 144 + - `Spike:` for implementation experiments intended to answer a question; 145 + - `Implement:` for build tasks after design is settled. 146 + 147 + For each Jira issue include: 148 + 149 + - link to the relevant Confluence page; 150 + - goal and non-goals; 151 + - evidence/references; 152 + - acceptance criteria or deliverable; 153 + - review expectations; 154 + - dependencies on other Jira tasks or design decisions. 155 + 156 + Avoid creating large ambiguous implementation tickets from unresolved design questions. 157 + 158 + ## 7. Jira updates and final state 159 + 160 + At useful milestones, update Jira with concise comments: 161 + 162 + - design task started / artifact location; 163 + - major decision or pivot; 164 + - artifact ready for review; 165 + - final summary and links. 166 + 167 + When the artifact is ready for operator review, transition to In Review (`31`) if the team wants design tasks to use the same review lane. 168 + 169 + After explicit operator acceptance, transition to Done (`41`). If the operator requests more work, keep or return the issue to In Progress as appropriate. 170 + 171 + ## 8. Final response to the operator 172 + 173 + Report: 174 + 175 + - Jira issue key(s) touched or created; 176 + - Confluence page(s) created or updated; 177 + - decisions captured; 178 + - open questions that remain; 179 + - review/refinement performed; 180 + - follow-up Jira tasks created or recommended; 181 + - any risks or assumptions that still need operator confirmation. 182 + 183 + Keep the report concise. Link durable artifacts instead of restating them in full.
+175
.polytoken/skills/jira-solo-tasker-execute/SKILL.md
··· 1 + --- 2 + description: Execute a Jira solo-tasker handoff plan using Jira as workflow state and jj workspaces for implementation isolation. Use when handed a plan that names this skill. 3 + polytoken: 4 + tags: [jira-solo-tasker, workflow, jira, jj] 5 + --- 6 + 7 + # Jira Solo Tasker Execute 8 + 9 + Use this skill in the execute facet on a plan produced by `jira-solo-tasker-plan`. 10 + 11 + Reinforce this procedure even if the handoff plan repeats it. If the handoff conflicts with this skill, stop and ask the operator unless the difference is clearly project-local configuration. 12 + 13 + ## Source of truth 14 + 15 + Jira is both the human source of truth and the agent working truth for this workflow when Jira tools are available and permitted. 16 + 17 + Use the Jira issue status, description, comments, and linked Confluence pages as durable workflow state. Update Jira at explicit gates. Local notes are optional support material, not the canonical state. 18 + 19 + ## Project configuration 20 + 21 + Default project settings for this repository: 22 + 23 + - Atlassian cloudId: `eab0a222-1a38-4539-a21d-44fb3466b28b` 24 + - Jira project: `PM`; Confluence space key: `PM`, numeric space ID: `98315`, overview/root page ID: `98479` 25 + - Transitions: To Do `11`, In Progress `21`, In Review `31`, Done `41` 26 + 27 + These values are project contracts. If a transition fails or the board appears reconfigured, re-verify with `getTransitionsForJiraIssue` and ask the operator before substituting IDs. 28 + 29 + ## Procedural checklist 30 + 31 + ### 1. Confirm the Jira claim 32 + 33 + The plan skill should already have moved the ticket to In Progress. 34 + 35 + - Verify the issue with `getJiraIssue`. 36 + - Confirm status is In Progress. 37 + - Confirm there is a plausible `Claimed by solo-tasker` comment or other operator-approved claim context. 38 + 39 + If the issue is not In Progress, do not re-claim blindly. Surface it to the operator. 40 + 41 + ### 2. Create or enter a jj workspace 42 + 43 + Use the exact workspace/bookmark name from the handoff plan, normally: 44 + 45 + ```text 46 + pm-<number>-<short-description> 47 + ``` 48 + 49 + This workflow uses jj workspaces, not Git worktrees. Do not use `.worktrees/`, `git -C .worktrees`, `git merge --squash`, or `.merge-lock` unless the project explicitly overrides this skill. 50 + 51 + First inspect project instructions for a workspace wrapper. If one exists, use it. Otherwise use generic jj commands. After creating or entering the workspace, always start a fresh change with `jj new -m ...` before editing; otherwise work may be smushed into the current jj change. 52 + 53 + Suggested generic flow: 54 + 55 + ```sh 56 + root="$(jj workspace root)" 57 + jj workspace list 58 + workspace_path="$(dirname "$root")/<workspace-name>" 59 + jj workspace add "$workspace_path" -r @ 60 + cd "$workspace_path" && jj new -m "<ticket-key>: <summary>" 61 + ``` 62 + 63 + Important shell rule: every shell call starts fresh. Use the absolute workspace path from setup for every workspace command; do not rely on relative paths like `../<workspace-name>`, and do not assume a previous `cd` persisted. 64 + 65 + ```sh 66 + cd "$workspace_path" && <command> 67 + ``` 68 + 69 + For file tools, use paths in the active project checkout unless the harness has permission to access the sibling workspace. If file tools cannot write the sibling workspace safely, stop and ask whether to continue in the current checkout or adjust permissions. 70 + 71 + ### 3. Track todos around the whole workflow 72 + 73 + Make sure the todo list covers: 74 + 75 + - Jira claim verified; 76 + - jj workspace created/entered and fresh ticket change started with `jj new`; 77 + - implementation; 78 + - formatting/build/tests; 79 + - implementation review loop; 80 + - jj describe/squash/bookmark as appropriate after work is already isolated in the ticket change; 81 + - Jira moved to In Review; 82 + - operator acceptance; 83 + - Jira moved to Done or returned for changes. 84 + 85 + ### 4. Implement the plan 86 + 87 + Follow the handoff plan and ticket acceptance criteria. Keep changes minimal and ticket-scoped. 88 + 89 + If new information changes scope or acceptance criteria, update Jira with a concise comment and ask the operator when product intent is involved. 90 + 91 + ### 5. Build and test 92 + 93 + Run the project’s formatting, linting, build, and test commands from inside the jj workspace. 94 + 95 + If the project uses `direnv`, run commands through `direnv exec .` from the workspace unless project instructions say otherwise. 96 + 97 + Use the narrowest sufficient checks first, then broader checks if the change warrants them. Record exact commands and outcomes for the final report and Jira comments if useful. 98 + 99 + ### 6. Implementation review loop 100 + 101 + Run the configured reviewer set. Default panel: 102 + 103 + - `general-purpose` with `model_override` `codex/gpt-5.5(high)` 104 + - `general-purpose` with `model_override` `anthropic/claude-opus-4-8(medium)` 105 + - `general-purpose` with `model_override` `zai/glm-5.2(max)` 106 + 107 + Ask reviewers for Critical/High/Medium/Low findings, with evidence and suggested fixes. 108 + 109 + Fix or rebut every Critical/High finding with concrete evidence: code references, tests, docs, reproduction results, or Jira/Confluence references. Re-run targeted review while any unrebutted Critical or High finding remains. 110 + 111 + If a pinned model does not resolve at runtime, stop and ask the operator. Do not silently substitute a weaker model and weaken the review gate. 112 + 113 + Treat project-specific review guidance as authoritative where it exists. 114 + 115 + ### 7. Finalize the jj change 116 + 117 + Before moving Jira to review: 118 + 119 + 1. Inspect the jj state and diff: 120 + ```sh 121 + jj status 122 + jj diff 123 + jj log --limit 10 124 + ``` 125 + 2. Ensure the change description references the ticket: 126 + ```sh 127 + jj describe -m "<ticket-key>: <concise summary>" 128 + ``` 129 + 3. If work was split into multiple granular changes, ask the operator whether to squash now or leave the stack as-is. For small solo-tasker work, prefer one clean described change unless the project wants a stack. 130 + 4. Create or move a bookmark if the project uses bookmark-based push/review: 131 + ```sh 132 + jj bookmark create <workspace-name> -r @ 133 + # or, if it exists and the operator/project agrees: 134 + jj bookmark set <workspace-name> -r @ 135 + ``` 136 + 5. Push only when the plan or operator asks for it: 137 + ```sh 138 + jj git push --bookmark <workspace-name> 139 + ``` 140 + 141 + Do not merge directly to `main` as part of this generic skill. Moving from In Review to Done happens after operator acceptance or the project’s review/merge process. 142 + 143 + ### 8. Move Jira to In Review 144 + 145 + After implementation, tests, review, and jj finalization are complete: 146 + 147 + - transition Jira to In Review (`31`); 148 + - add a concise comment with implementation summary, validation, review status, workspace/bookmark, and anything the operator should check; 149 + - prompt the operator to review the work. 150 + 151 + ### 9. Acceptance gate 152 + 153 + Only after explicit operator acceptance or project-defined acceptance: 154 + 155 + - perform any project-specific push/PR/merge/finalization steps the operator requests; 156 + - transition Jira to Done (`41`); 157 + - optionally comment with final verification and where the work landed. 158 + 159 + If the operator rejects the work, address feedback, keep or return the ticket to In Progress as appropriate, and repeat from implementation/review. 160 + 161 + ### 10. Report 162 + 163 + Final response to the operator: 164 + 165 + - restate ticket key and summary; 166 + - summarize what changed; 167 + - list validation commands and results; 168 + - list reviewer status and unresolved follow-ups; 169 + - state Jira status; 170 + - state jj workspace/bookmark/change information; 171 + - give concrete advice for testing or reviewing the result. 172 + 173 + ## Cancellation 174 + 175 + If the operator cancels mid-execute, ask whether to leave the ticket In Progress or transition it back to To Do (`11`). Do not abandon jj changes or delete a workspace without explicit confirmation.
+143
.polytoken/skills/jira-solo-tasker-plan/SKILL.md
··· 1 + --- 2 + description: Find, claim, research, and plan a small Jira task using Jira as the workflow source of truth. Use when the operator asks you to pull a ticket, find something small to work on, or prepare an execute handoff from Jira. 3 + polytoken: 4 + tags: [jira-solo-tasker, workflow, jira] 5 + --- 6 + 7 + # Jira Solo Tasker Plan 8 + 9 + Use this skill in the plan facet. Pick one small, eligible Jira task, claim it in Jira, research it, resolve material ambiguity with the operator, and produce a handoff plan that names the execute skill `jira-solo-tasker-execute`. 10 + 11 + Do not implement anything. 12 + 13 + ## Source of truth 14 + 15 + For this workflow, Jira is both the human source of truth and the agent working truth when Jira MCP/tools are available and permitted. 16 + 17 + The ticket status, claim comment, description, comments, linked Confluence pages, and transition history are durable workflow state. Local Markdown is optional support material only; do not create a separate local issue tracker unless the project explicitly asks for one. 18 + 19 + ## Project configuration 20 + 21 + Default project settings for this repository: 22 + 23 + - Atlassian cloudId: `eab0a222-1a38-4539-a21d-44fb3466b28b` 24 + - Jira project: `PM`; Confluence space key: `PM`, numeric space ID: `98315`, overview/root page ID: `98479` 25 + - Transitions: To Do `11`, In Progress `21`, In Review `31`, Done `41` 26 + - Eligible issue types: Task (`10007`), Bug (`10009`) 27 + 28 + These are project contracts, not universal workflow defaults. If a configured project variable, setup note, or ticket contradicts this section, stop and ask the operator which source is current. Re-verify transitions with `getTransitionsForJiraIssue` if the board was reconfigured or a transition fails. 29 + 30 + ## 1. Scan for candidates 31 + 32 + Run one Jira search first; do not build a clever query before seeing the board shape. 33 + 34 + Use `searchJiraIssuesUsingJql` with: 35 + 36 + ```jql 37 + project = PM AND status = "To Do" ORDER BY priority ASC, created ASC 38 + ``` 39 + 40 + Request fields: 41 + 42 + ```json 43 + ["summary", "description", "issuetype", "priority", "labels", "status", "parent", "issuelinks", "comment"] 44 + ``` 45 + 46 + Then filter in context. A candidate is eligible only if all hold: 47 + 48 + - issue type is Task or Bug; 49 + - no `no-auto` label; 50 + - no Epic parent and not a Subtask; 51 + - not blocked by unresolved work: no `issuelinks` entry with `type.name == "Blocks"` that has an `inwardIssue` whose status is not Done; 52 + - moderate-to-small scope; 53 + - the summary/description plus codebase research are enough to form an implementation plan. 54 + 55 + Prefer higher priority and older issues; the JQL ordering already approximates this. 56 + 57 + If nothing qualifies, say so and stop. Do not claim marginal work just to stay busy. 58 + 59 + ## 2. Claim the chosen issue before deep research 60 + 61 + Pick the best candidate. Read it in full with `getJiraIssue`, fields `["*all"]`, content format Markdown. This is the baseline research read. 62 + 63 + Use a two-layer claim guard: 64 + 65 + 1. If the issue is already In Progress, or a recent comment matching `Claimed by solo-tasker` from another session exists, back off and pick the next candidate. 66 + 2. Otherwise claim it: 67 + - `transitionJiraIssue` with transition `{id: "21"}`; 68 + - `addCommentToJiraIssue` with body `Claimed by solo-tasker plan run <session-id> at <ISO time>.` Use the session identifier and current timestamp available in context. 69 + 70 + The claim happens in planning, not execution. This avoids duplicate parallel work. Because the claim is a side effect, unattended runs require permissions for `transitionJiraIssue` and `addCommentToJiraIssue` in the plan facet; otherwise the operator will be prompted. 71 + 72 + ## 3. Research and clarify 73 + 74 + Investigate the codebase before asking factual questions. Read relevant modules, tests, commands, and project instructions. Confirm: 75 + 76 + - touched files and contracts; 77 + - likely tests/checks; 78 + - build or dev environment requirements; 79 + - any Confluence links or Jira comments that affect scope; 80 + - whether the work is small enough for this workflow. 81 + 82 + Use `ask_user_question` only for product intent or decisions that materially change implementation. Do not guess on behavior, acceptance criteria, or scope. 83 + 84 + If research shows the issue is not viable for this workflow, release the claim: transition back to To Do (`11`) and leave a brief comment explaining why. 85 + 86 + ## 4. Write the handoff plan 87 + 88 + Call `write_plan` with the standard plan-facet shape: Goal, Implementation Summary, Implementation Plan, Acceptance Criteria, Test Strategy, Review Strategy, Documentation Strategy, Risks. 89 + 90 + The plan must: 91 + 92 + - name `jira-solo-tasker-execute` as the required execute skill; 93 + - reference the ticket key throughout, for example `PM-23`; 94 + - state that Jira is the agent working truth for this workflow; 95 + - state that the ticket is already In Progress and execute must verify the claim, not re-claim blindly; 96 + - specify a concrete jj workspace name and bookmark name derived from the ticket, using the form `pm-<number>-<short-description>` with at most three kebab-case summary words; 97 + - direct execute to create or enter a jj workspace for the ticket, not a Git worktree; 98 + - include todos around the implementation: verify Jira state, create/enter jj workspace, implement, run formatting/tests, run the review loop, describe/squash the jj change as appropriate, move Jira to In Review, wait for operator acceptance, then move Jira to Done; 99 + - encode the shared review gate: run the configured reviewer set, fix or rebut every Critical/High finding with evidence, and re-run targeted review until zero unrebutted Critical/High findings remain; 100 + - include final reporting expectations: restate the ticket key and summary, summarize changes, list validation performed, and give concrete operator test advice. 101 + 102 + ### jj workspace guidance for the plan 103 + 104 + Use jj terminology consistently: 105 + 106 + - workspace: isolated checkout created with `jj workspace add` or the project’s configured wrapper; 107 + - change: a fresh jj change created for the ticket work with `jj new -m "<ticket-key>: <summary>"` before any edits; 108 + - bookmark: optional named ref for pushing/sharing, normally the same slug as the workspace. 109 + 110 + Do not mention Git worktrees, `.worktrees/`, `git merge --squash`, or `.merge-lock` unless the current project explicitly uses those. This workflow defaults to jj workspaces. 111 + 112 + If the repo has a project wrapper for workspaces, cite it. Otherwise specify generic jj commands and make execution verify them. The handoff must require a fresh change with `jj new -m ...` before any edits; `jj describe` is only for updating an already-isolated change later. 113 + 114 + ```sh 115 + root="$(jj workspace root)" 116 + workspace_path="$(dirname "$root")/<workspace-name>" 117 + jj workspace add "$workspace_path" -r @ 118 + cd "$workspace_path" && jj new -m "<ticket-key>: <summary>" # optional after this: jj bookmark create <workspace-name> -r @ 119 + ``` 120 + 121 + The exact parent directory for sibling workspaces is project policy. If not obvious, require execute to ask before creating one. 122 + 123 + ## 5. Heavy plan approval loop 124 + 125 + Before `handoff_plan`, run three `plan-reviewer` subagents in parallel with the configured/pinned models: 126 + 127 + - `codex/gpt-5.5(medium)` 128 + - `anthropic/claude-opus-4-8(medium)` 129 + - `zai/glm-5.2(max)` 130 + 131 + Fix or rebut every plan finding with evidence. Re-run the same reviewer set while any reviewer returns any Critical or High finding. 132 + 133 + If a pinned `model_override` does not resolve at runtime, stop and ask the operator. Do not silently substitute a weaker model and weaken the approval gate. 134 + 135 + Only call `handoff_plan` when all reviewers report zero Critical and zero High findings, or when the operator explicitly accepts the risk. 136 + 137 + ## 6. If the operator cancels 138 + 139 + If the operator rejects the handoff, cancels the work, or you judge the issue unviable, release the claim unless the operator says to keep it In Progress: 140 + 141 + - transition Jira back to To Do (`11`); 142 + - leave a concise comment if useful; 143 + - do not leave issues stranded In Progress.
+161
.polytoken/skills/orual-workflow-config-reference/SKILL.md
··· 1 + --- 2 + description: Use when configuring, installing, or reasoning about the Orual Polytoken workflow pack; includes workflow-specific project_vars, global/project install paths, and requires the Polytoken config reference for schema details. 3 + polytoken: 4 + tags: [configuration] 5 + --- 6 + # Orual Workflow Config Reference 7 + 8 + Use this skill when configuring or debugging the Orual Polytoken workflow pack: facets, hooks, skills, subagents, `project_vars`, and global-vs-project installation. 9 + 10 + Before changing Polytoken config, facets, hooks, subagents, or permission behavior, load `polytoken:config_reference` and treat it as authoritative for current Polytoken schema and validation rules. This skill only documents the workflow pack's conventions. 11 + 12 + ## Validate after changes 13 + 14 + Run: 15 + 16 + ```sh 17 + polytoken config validate 18 + ``` 19 + 20 + If templates, hooks, skills, or facets were changed in a live session, reload or restart Polytoken as needed before testing behavior. 21 + 22 + ## Project variables contract 23 + 24 + Project-specific workflow instructions live in: 25 + 26 + ```text 27 + .polytoken/project_vars.yaml 28 + ``` 29 + 30 + `project_vars.yaml` is raw project data, not config. It is not merged with global config. Do not put secrets in it. 31 + 32 + Recommended minimal fields: 33 + 34 + ```yaml 35 + design_workflow_instructions: | 36 + Where durable design artifacts should be written. 37 + Where the human source of truth lives. 38 + How to use project trackers, docs, or vaults. 39 + 40 + plan_handoff_instructions: | 41 + What implementation handoff plans must cite or preserve. 42 + How to refer to design artifacts, tracker issues, and validation expectations. 43 + ``` 44 + 45 + Optional structured fields for hooks or future plugins: 46 + 47 + ```yaml 48 + orual_workflow: 49 + agent_truth: 50 + kind: markdown 51 + root: agent_docs 52 + human_truth: 53 + kind: conversation 54 + reference: null 55 + review: 56 + gate_severities: [Critical, High] 57 + panel_required_for_large_handoffs: true 58 + allow_operator_risk_acceptance: true 59 + ``` 60 + 61 + Facets should prefer the string instruction fields for prompt rendering. Hook scripts may use structured fields later, but should tolerate missing keys. 62 + 63 + ## Global install layout 64 + 65 + Until plugin packaging exists, install reusable workflow components in the normal Polytoken global locations. 66 + 67 + Facets and hooks: 68 + 69 + ```text 70 + ${XDG_CONFIG_HOME:-~/.config}/polytoken/ 71 + facets/ 72 + design.md 73 + plan.md # optional thin wrapper around shipped plan 74 + hooks.json 75 + hooks/ 76 + workflow-context.sh 77 + ``` 78 + 79 + Skills: 80 + 81 + ```text 82 + ${XDG_DATA_HOME:-~/.local/share}/polytoken/skills/ 83 + refining-human-documents/SKILL.md 84 + reviewing-code-for-shipping-quality/SKILL.md 85 + orual-workflow-config-reference/SKILL.md 86 + ``` 87 + 88 + Project-local overrides live under: 89 + 90 + ```text 91 + <project>/.polytoken/ 92 + config.yaml 93 + project_vars.yaml 94 + facets/ 95 + hooks.json 96 + hooks/ 97 + skills/ 98 + subagents/ 99 + ``` 100 + 101 + Project files override global files with the same facet/subagent names. Hooks append after global hooks unless disabled with `!hook-name`. 102 + 103 + ## Facet conventions 104 + 105 + ### `design` 106 + 107 + Writable durable design mode. It should: 108 + 109 + - use `project_vars.design_workflow_instructions` when present; 110 + - ask before inventing durable storage when absent; 111 + - write only to configured design/documentation spaces unless explicitly approved; 112 + - use `write_plan`/`handoff_plan` for small immediate handoffs; 113 + - switch to `plan` for larger implementation planning. 114 + 115 + ### `plan` 116 + 117 + Thin wrapper around the shipped `polytoken://facets/plan.md` when globally overridden. It may add: 118 + 119 + - `project_vars.plan_handoff_instructions`; 120 + - a review gate before `handoff_plan`; 121 + - small workflow-specific constraints not already present in shipped plan. 122 + 123 + Keep this wrapper compact. The shipped plan facet should carry the main planning behavior. 124 + 125 + ## Review gate convention 126 + 127 + Before `handoff_plan`, run independent review: 128 + 129 + - small/simple handoff: at least one `code_reviewer` subagent; 130 + - larger handoff: panel using pinned models when available: 131 + - `codex/gpt-5.5(medium)` 132 + - `codex/gpt-5.4-mini(high)` 133 + - `zai/glm-5.2(max)` 134 + 135 + If a pinned model does not resolve, stop and ask the operator. Do not silently substitute a weaker model. 136 + 137 + Fix or rebut every Critical/High finding with evidence. Re-run reviewers until Critical/High are zero, or until the operator explicitly accepts the risk. 138 + 139 + ## Hooks convention 140 + 141 + Start conservative: 142 + 143 + - `session_start`: inject workflow frame. 144 + - `pre_model_turn`: inject active workflow/gate context only when useful. 145 + - `post_compaction`: reattach workflow frame after compaction. 146 + 147 + Use daemon state when needed: 148 + 149 + ```sh 150 + session_dir="${XDG_DATA_HOME:-$HOME/.local/share}/polytoken/sessions/${POLYTOKEN_SESSION_ID}" 151 + port="$(jq -r '.port' "$session_dir/startup.json")" 152 + curl -fsS "http://127.0.0.1:${port}/state" 153 + ``` 154 + 155 + Defer strict hooks until the durable gate file format is explicit. Do not implement universal `post_tool_use` logging by default. 156 + 157 + ## Local file inclusion 158 + 159 + Use local `transclude("path.md")` when a prompt fragment needs template rendering with current context. Paths resolve relative to the calling facet/subagent file and cannot escape that directory subtree. 160 + 161 + Use `@file` only for static text. It is expanded at load time before Jinja runs, so template variables inside the included file are not rendered.
+127
.polytoken/skills/refining-human-documents/SKILL.md
··· 1 + --- 2 + description: Use when reviewing or editing raw LLM-generated notes, plans, reviews, or research artifacts into concise human-oriented durable documents while preserving traceability. 3 + polytoken: 4 + tags: [documentation] 5 + --- 6 + # Refining Human Documents 7 + 8 + Use this skill when an artifact is useful but still sounds like an LLM transcript, scratchpad, process log, or AI-generated commentary. The goal is not to erase provenance; it is to make durable text clear, concise, purposeful, and useful to future humans. Agents often miss their own LLM-speak in the moment, so this pass is especially valuable as a later review by a different agent or model family. 9 + 10 + Announce: "using the refining-human-documents skill to turn this into a durable human-oriented document" 11 + 12 + ## When to use 13 + 14 + Use for: 15 + 16 + - initiative summaries; 17 + - design dossiers; 18 + - decision records; 19 + - research syntheses; 20 + - review/adjudication reports; 21 + - implementation handoff notes intended to survive beyond the current session. 22 + 23 + Do not use for: 24 + 25 + - raw evidence that must remain verbatim; 26 + - logs, transcripts, or reviewer reports where exact wording matters; 27 + - public docs that need focused technical review beyond document prose cleanup. 28 + 29 + ## Editing goals 30 + 31 + Use this rubric as a guide: 32 + 33 + 1. **Does it stay true?** Keep the decisions, evidence, links, constraints, and uncertainty intact. 34 + 2. **Can a future maintainer read it quickly?** Put the point where they will find it. 35 + 3. **Is every sentence earning its keep?** Cut process narration, repeated caveats, and meta-commentary. 36 + 4. **Does it sound like a person taking responsibility?** Prefer plain, direct language over hype, apology, or model voice. 37 + 5. **Can someone act on it?** Make open questions, risks, follow-ups, and next steps explicit. 38 + 39 + ## Remove or rewrite LLM-speak 40 + 41 + Remove or rewrite patterns like: 42 + 43 + - "I investigated..." 44 + - "The user asked..." 45 + - "It seems like..." when evidence is available; 46 + - "This is a comprehensive..." 47 + - "In summary" when the section is already a summary; 48 + - repeated caveats, formulaic contrasts, self-posed rhetorical questions, dramatic fragments, and vague stakes language; 49 + - tool/process narration unless it is evidence. 50 + 51 + Rewrite into durable prose: 52 + 53 + - Bad: "Here’s the thing: this plan isn’t just about adding a facet. It’s about creating a more nuanced workflow landscape that can evolve over time." 54 + - Good: "The plan facet override keeps Polytoken’s default handoff behavior and adds guidance for iterative planning, decision records, and executable-slice readiness." 55 + 56 + - Bad: "The goal tree serves as a powerful foundation for navigating complexity, enabling agents to seamlessly drill down from big-picture goals to actionable next steps." 57 + - Good: "Use the goal tree to track goals, research questions, decisions, pivots, and executable slices with stable Markdown links." 58 + 59 + ## Preserve evidence 60 + 61 + Do not collapse evidence into vague claims. Keep links and references close to the claims they support. 62 + 63 + Prefer: 64 + 65 + ```md 66 + Decision: Override the project `plan` facet compatibly. 67 + 68 + Evidence: 69 + - Polytoken facets can transclude shipped prompt chunks. 70 + - The override uses `{{ transclude("polytoken://system_prompts/plan.md") }}`. 71 + ``` 72 + 73 + Avoid: 74 + 75 + ```md 76 + Decision: We learned some things and made a plan override. 77 + ``` 78 + 79 + ## Separate current state from history 80 + 81 + A durable document should present the current state. Preserve history by linking to decision records, prior documents, or version-control history rather than carrying stale content inline. 82 + 83 + Use sections such as: 84 + 85 + - Current decision 86 + - Rationale 87 + - Evidence 88 + - Alternatives considered 89 + - Consequences 90 + - History references, when needed 91 + 92 + Do not leave obsolete alternatives interleaved with the current recommendation. If history matters, link to the decision ledger, prior document, ticket, or commit that preserves it. 93 + 94 + ## Editing process 95 + 96 + 1. Identify the document's audience and purpose. 97 + 2. Identify which content is durable: decisions, evidence, constraints, risks, open questions, next steps. 98 + 3. Identify which content is process residue or LLM-speak: narration, apologies, repeated uncertainty, tool chatter, false starts, formulaic reversals, filler phrases, and vague declaratives. 99 + 4. Rewrite for structure and tone. 100 + 5. Verify that every important decision still has evidence or rationale. 101 + 6. Verify that open questions and risks remain visible. 102 + 7. If the rewrite changes meaning, stop and surface the discrepancy instead of silently editing it away. 103 + 104 + ## Output expectations 105 + 106 + When editing a file, report: 107 + 108 + - what audience/purpose you optimized for; 109 + - major structure changes; 110 + - any meaning-preserving compression; 111 + - any claims you could not verify; 112 + - any follow-up edits that would require domain input. 113 + 114 + ## Checklist 115 + 116 + Before finishing, confirm: 117 + 118 + - [ ] Removed model/process-centric narration and formulaic AI prose unless needed as evidence. 119 + - [ ] Preserved decisions, evidence, links, constraints, and uncertainty. 120 + - [ ] Made current decisions easier to find than historical exploration. 121 + - [ ] Made open questions and follow-ups explicit. 122 + - [ ] Improved concision without deleting important rationale. 123 + - [ ] Avoided inventing facts or strengthening claims beyond the evidence. 124 + 125 + 126 + 127 +
+164
.polytoken/skills/reviewing-code-for-shipping-quality/SKILL.md
··· 1 + --- 2 + description: Use when reviewing implementation code before it ships to remove AI-ish comments, process residue, unnecessary complexity, and overbuilt code while preserving behavior and important context. 3 + polytoken: 4 + tags: [code-review] 5 + --- 6 + # Reviewing Code for Shipping Quality 7 + 8 + Use this skill when code is functionally close but needs a final shipping-quality pass. The goal is not style nitpicking. The goal is to make the shipped code smaller, clearer, and less agent-shaped without deleting context that future maintainers need. 9 + 10 + Announce: "using the reviewing-code-for-shipping-quality skill to strip code/comment slop before shipping" 11 + 12 + ## What this review catches 13 + 14 + Look for: 15 + 16 + - comments that narrate the implementation instead of explaining why it exists; 17 + - comments that sound like an agent talking to itself or to the user; 18 + - leftover planning, TODO, debug, or migration narration that does not belong in shipped code; 19 + - code structured around the prompt rather than the domain; 20 + - over-general abstractions created before there is a second use; 21 + - defensive layers that do not protect a real boundary; 22 + - verbose helper names or comments that restate the code; 23 + - avoidable branching, wrapping, mapping, or type churn; 24 + - tests that assert implementation trivia instead of behavior. 25 + 26 + ## Comment policy 27 + 28 + Keep comments that explain: 29 + 30 + - non-obvious invariants; 31 + - protocol, API, or platform quirks; 32 + - security-sensitive assumptions; 33 + - concurrency or lifecycle constraints; 34 + - performance tradeoffs that are not obvious from the code; 35 + - why a tempting simpler approach is wrong. 36 + 37 + Remove or rewrite comments that: 38 + 39 + - narrate obvious code: `// increment counter`, `// return the result`; 40 + - describe the edit process: `// added for the new workflow`, `// updated to handle...`; 41 + - mention the agent/user/session: `// the user wanted`, `// Claude generated`, `// as requested`; 42 + - use promotional or vague language: `robust`, `seamless`, `comprehensive`, `powerful`, `nuanced`; 43 + - preserve uncertainty without action: `// maybe`, `// probably`, `// should be fine`; 44 + - duplicate names: `// UserConfig stores user config`. 45 + 46 + If a comment is necessary but bloated, rewrite it as the shortest precise statement of why the code is surprising. 47 + 48 + ## Code compactness policy 49 + 50 + Prefer the least code that clearly does the job. 51 + 52 + Do not compact by making code clever. Compact by removing unnecessary structure: 53 + 54 + - inline one-use helpers when the helper name adds no meaning; 55 + - remove configuration knobs that no caller uses; 56 + - collapse wrappers that only forward arguments; 57 + - replace generic abstractions with direct code until there is a real second use; 58 + - delete dead branches and unused parameters; 59 + - simplify names when types or context already carry the meaning; 60 + - keep explicit error handling at real trust boundaries. 61 + 62 + ## Review process 63 + 64 + 1. Identify the changed or reviewed scope. 65 + 2. Read enough surrounding code to understand local conventions. 66 + 3. Separate behavior fixes from shipping-quality cleanup. Do not hide behavior changes inside cleanup. 67 + 4. Inspect comments first. Remove, shorten, or rewrite them according to the comment policy. 68 + 5. Inspect structure. Remove prompt-shaped scaffolding, one-use abstractions, and defensive code without a real boundary. 69 + 6. Inspect tests. Prefer behavior assertions over tests that encode incidental implementation structure. 70 + 7. Run or recommend focused validation for any changed code. 71 + 72 + ## Findings format 73 + 74 + When reviewing, report findings like this: 75 + 76 + ```md 77 + ## Shipping-quality findings 78 + 79 + ### SQ1 — Remove process comment 80 + Location: `path/to/file.ts:42` 81 + Severity: cleanup 82 + Issue: Comment describes why the agent added the branch, not why the branch exists. 83 + Fix: Delete it, or replace with a short invariant if one exists. 84 + 85 + ### SQ2 — Collapse one-use abstraction 86 + Location: `path/to/file.ts:80-110` 87 + Severity: cleanup 88 + Issue: Helper only forwards arguments and is not reused. 89 + Fix: Inline it unless the name captures domain meaning not visible at call site. 90 + ``` 91 + 92 + Use severities: 93 + 94 + - `must-fix`: misleading comments, dead code, debug leftovers, behavior-risking complexity; 95 + - `cleanup`: unnecessary comments, one-use wrappers, verbose scaffolding; 96 + - `consider`: subjective simplifications that need maintainer judgment. 97 + 98 + ## Fix policy 99 + 100 + Fix directly when: 101 + 102 + - the change is behavior-preserving; 103 + - the local convention is clear; 104 + - validation is available or the edit is obviously mechanical. 105 + 106 + Ask or defer when: 107 + 108 + - a comment may encode domain knowledge; 109 + - simplification could change behavior; 110 + - an abstraction may exist for future planned use; 111 + - local style conflicts with this skill's preference. 112 + 113 + ## Anti-pattern examples 114 + 115 + Bad comment: 116 + 117 + ```ts 118 + // Added comprehensive handling for the new edge case requested by the user. 119 + if (value == null) return defaultValue; 120 + ``` 121 + 122 + Better: 123 + 124 + ```ts 125 + // The upstream API sends null when the field is omitted. 126 + if (value == null) return defaultValue; 127 + ``` 128 + 129 + Bad abstraction: 130 + 131 + ```ts 132 + function processUserConfigurationInput(config: UserConfig): UserConfig { 133 + return normalizeUserConfig(config); 134 + } 135 + ``` 136 + 137 + Better: 138 + 139 + ```ts 140 + const normalized = normalizeUserConfig(config); 141 + ``` 142 + 143 + Bad test smell: 144 + 145 + ```ts 146 + it("calls normalizeUserConfig before validateUserConfig", () => { ... }) 147 + ``` 148 + 149 + Better: 150 + 151 + ```ts 152 + it("rejects configs with missing required fields after defaults are applied", () => { ... }) 153 + ``` 154 + 155 + ## Checklist 156 + 157 + Before finishing, confirm: 158 + 159 + - [ ] Comments explain why, not what or how the edit happened. 160 + - [ ] No agent/user/session/process narration remains in shipped code. 161 + - [ ] No debug leftovers, stale TODOs, or migration scaffolding remain unless intentionally tracked. 162 + - [ ] One-use abstractions and wrappers are justified by domain meaning, not prompt structure. 163 + - [ ] Cleanup did not hide behavior changes. 164 + - [ ] Validation was run or the remaining validation gap is stated.
+127
.polytoken/subagents/code-reviewer.md
··· 1 + --- 2 + name: code-reviewer 3 + description: Adversarial reviewer for implementation plans, code changes, tests, and shipping quality. Use before handoff, after implementation, or when review gates require independent scrutiny. 4 + polytoken: 5 + model: default_model:full 6 + tools: [file_read, grep, glob, shell_exec, skill] 7 + undeferred_tools: [file_read, grep, glob] 8 + skills_allow: ["reviewing-code-for-shipping-quality", "polytoken:investigating-a-codebase"] 9 + --- 10 + You are an adversarial reviewer. Your job is to find the problems that would cause failed implementation, bad handoff, production bugs, weak tests, or agent-shaped shipped code. 11 + 12 + Review the scope the caller gives you. Do not rubber-stamp. Do not broaden beyond the requested scope unless you need local context to verify a claim. 13 + 14 + ## Review targets 15 + 16 + You may be asked to review: 17 + 18 + - a handoff plan before `handoff_plan`; 19 + - durable design or executable-slice notes; 20 + - code changes after implementation; 21 + - tests and validation evidence; 22 + - code/comment shipping quality. 23 + 24 + ## Required checks 25 + 26 + ### 1. Verify the artifact against its source of truth 27 + 28 + For plans/designs: 29 + 30 + - Does the plan follow the current design decisions? 31 + - Are goal, non-goals, files/contracts, steps, validation, risks, and open decisions explicit? 32 + - Could an execution agent implement this without guessing? 33 + - Are assumptions backed by codebase facts or external sources? 34 + - Did the plan silently narrow scope, skip a required evaluation, substitute an algorithm/library, or defer hard work without saying so? 35 + 36 + For code: 37 + 38 + - Does the implementation match the plan/requirements? 39 + - Did it introduce unnecessary abstractions, phantom compatibility, dead additions, or prompt-shaped scaffolding? 40 + - Are external calls, trust boundaries, errors, and edge cases handled appropriately? 41 + 42 + ### 2. Check test and validation integrity 43 + 44 + - Were relevant tests/build/lint/validation run or specified? 45 + - Could the tests pass while the feature is broken? 46 + - Are tests asserting behavior rather than mocks or implementation trivia? 47 + - Are important error paths and edge cases covered? 48 + 49 + ### 3. Check shipping quality 50 + 51 + If reviewing code, apply the `reviewing-code-for-shipping-quality` skill if available. 52 + 53 + Look for: 54 + 55 + - comments that narrate the edit instead of explaining why code exists; 56 + - agent/user/session/process residue; 57 + - overbuilt abstractions with no current second use; 58 + - avoidable wrappers, knobs, branches, and type churn; 59 + - comments that restate obvious code rather than preserving non-obvious invariants. 60 + 61 + ## Severity definitions 62 + 63 + Use these exact severities: 64 + 65 + - **Critical**: plan cannot safely be handed off; build/tests fail; security/data-loss risk; missing core requirement; implementation integrity failure; unverified or false assumption that would likely break execution. 66 + - **High**: likely implementation failure, serious ambiguity, missing validation for important behavior, significant scope drift, important test gap, or risky overengineering. 67 + - **Medium**: should fix soon; clarity, maintainability, edge-case, or follow-up issue that does not block immediate handoff if acknowledged. 68 + - **Low**: minor cleanup or style issue. 69 + 70 + For handoff gates, Critical and High findings block approval unless fixed or rebutted with evidence. 71 + 72 + ## Rebuttals 73 + 74 + Accept a rebuttal only when it cites concrete evidence: code references, tests, docs, command output, or an explicit user decision. Do not accept vibes, intent, or "should be fine." 75 + 76 + ## Output format 77 + 78 + Return exactly this structure: 79 + 80 + ```md 81 + # Review: <scope> 82 + 83 + ## Verdict 84 + 85 + APPROVED | BLOCKED 86 + 87 + ## Summary 88 + 89 + Critical: N | High: N | Medium: N | Low: N 90 + 91 + ## Evidence checked 92 + 93 + - <files, commands, docs, or notes reviewed> 94 + 95 + ## Critical findings 96 + 97 + ### C1 — <title> 98 + Location: <file/section/line or n/a> 99 + Issue: <specific issue> 100 + Impact: <why it matters> 101 + Fix: <specific fix or rebuttal evidence required> 102 + 103 + ## High findings 104 + 105 + ### H1 — <title> 106 + Location: <file/section/line or n/a> 107 + Issue: <specific issue> 108 + Impact: <why it matters> 109 + Fix: <specific fix or rebuttal evidence required> 110 + 111 + ## Medium findings 112 + 113 + - M1 — <issue, impact, suggested fix> 114 + 115 + ## Low findings 116 + 117 + - L1 — <issue, suggested fix> 118 + 119 + ## Approval gate 120 + 121 + - Critical/High clean: yes | no 122 + - If no, list the blocking finding IDs. 123 + ``` 124 + 125 + If there are no findings in a section, write `None`. 126 + 127 + Approve only when Critical and High are both zero. Medium/Low may be tracked as follow-ups unless the caller's policy says otherwise.
+63
AGENTS.md
··· 1 + # Polymodel 2 + 3 + Polymodel is an AT Protocol-native model/project sharing app — roughly Thingiverse on atproto — and a demo of a highly integrated Polytoken/Jira/Confluence agent workflow. 4 + 5 + ## Product direction 6 + 7 + Initial product shape: 8 + 9 + - model/project publishing on ATProto; 10 + - a small lexicon set, tentatively project, profile, and likes/saves; 11 + - feeds by profile, recent projects, and hot projects; 12 + - browser STL viewing as a core interaction; 13 + - Dioxus web UI backed by Rust and Jacquard 0.12. 14 + 15 + STL viewer candidates: 16 + 17 + - `three-d` is a viable web/WASM candidate with a browser/WebGL-oriented API. 18 + - `kiss3d` also works on WASM and should be evaluated alongside `three-d`; choose based on STL loading, orbit controls, rendering quality, bundle/runtime costs, and Dioxus integration friction. 19 + 20 + ## Source of truth 21 + 22 + - Jira project key: `PM`. 23 + - Confluence space key: `PM`; numeric space ID for page APIs: `98315`; overview/root page ID: `98479`. 24 + - Jira is both the human source of truth and the agent working truth for implementation tasks when Jira tools are available. 25 + - Confluence is the durable design and demo-narrative space. 26 + - Local Markdown is supporting material unless a task explicitly says otherwise. 27 + 28 + ## VCS 29 + 30 + Use jj, not raw git, for normal development. 31 + 32 + - Create isolated work with jj workspaces, and immediately start a fresh change before editing: `jj new -m "PM-12: concise summary"`. 33 + - Use ticket-derived names like `pm-12-short-summary`. 34 + - Check your own changes with `jj diff` before reporting completion. 35 + - Use `jj describe` only to update the description of an already-isolated change; do not use it as a substitute for `jj new` at task start. 36 + 37 + ## Commands 38 + 39 + Use the justfile command surface: 40 + 41 + ```sh 42 + just fix 43 + just check 44 + just test 45 + just test-server 46 + just test-all 47 + just serve 48 + ``` 49 + 50 + Before review or handoff, run at least `just fix` and the narrowest relevant tests. Use `just test-all` for substantial changes. 51 + 52 + ## Stack notes 53 + 54 + - Dioxus 0.7 is the UI framework. 55 + - Jacquard 0.12 is the AT Protocol client stack. 56 + - The project uses Rust 2024 on nightly with `wasm32-unknown-unknown` available. 57 + 58 + ## Agent behavior 59 + 60 + - Investigate code and docs before asking factual questions. 61 + - Ask the operator for product/demo intent and workflow tradeoffs. 62 + - Keep Jira updated at workflow gates. 63 + - Do not put secrets in repo files.
+8305
Cargo.lock
··· 1 + # This file is automatically @generated by Cargo. 2 + # It is not intended for manual editing. 3 + version = 4 4 + 5 + [[package]] 6 + name = "adler2" 7 + version = "2.0.1" 8 + source = "registry+https://github.com/rust-lang/crates.io-index" 9 + checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" 10 + 11 + [[package]] 12 + name = "aho-corasick" 13 + version = "1.1.4" 14 + source = "registry+https://github.com/rust-lang/crates.io-index" 15 + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" 16 + dependencies = [ 17 + "memchr", 18 + ] 19 + 20 + [[package]] 21 + name = "aligned" 22 + version = "0.4.3" 23 + source = "registry+https://github.com/rust-lang/crates.io-index" 24 + checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" 25 + dependencies = [ 26 + "as-slice", 27 + ] 28 + 29 + [[package]] 30 + name = "aligned-vec" 31 + version = "0.6.4" 32 + source = "registry+https://github.com/rust-lang/crates.io-index" 33 + checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" 34 + dependencies = [ 35 + "equator", 36 + ] 37 + 38 + [[package]] 39 + name = "alloc-no-stdlib" 40 + version = "2.0.4" 41 + source = "registry+https://github.com/rust-lang/crates.io-index" 42 + checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 43 + 44 + [[package]] 45 + name = "alloc-stdlib" 46 + version = "0.2.4" 47 + source = "registry+https://github.com/rust-lang/crates.io-index" 48 + checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" 49 + dependencies = [ 50 + "alloc-no-stdlib", 51 + ] 52 + 53 + [[package]] 54 + name = "allocator-api2" 55 + version = "0.2.21" 56 + source = "registry+https://github.com/rust-lang/crates.io-index" 57 + checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 58 + 59 + [[package]] 60 + name = "android_system_properties" 61 + version = "0.1.5" 62 + source = "registry+https://github.com/rust-lang/crates.io-index" 63 + checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 64 + dependencies = [ 65 + "libc", 66 + ] 67 + 68 + [[package]] 69 + name = "anyhow" 70 + version = "1.0.102" 71 + source = "registry+https://github.com/rust-lang/crates.io-index" 72 + checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" 73 + 74 + [[package]] 75 + name = "arbitrary" 76 + version = "1.4.2" 77 + source = "registry+https://github.com/rust-lang/crates.io-index" 78 + checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" 79 + 80 + [[package]] 81 + name = "arg_enum_proc_macro" 82 + version = "0.3.4" 83 + source = "registry+https://github.com/rust-lang/crates.io-index" 84 + checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" 85 + dependencies = [ 86 + "proc-macro2", 87 + "quote", 88 + "syn 2.0.118", 89 + ] 90 + 91 + [[package]] 92 + name = "arrayvec" 93 + version = "0.7.6" 94 + source = "registry+https://github.com/rust-lang/crates.io-index" 95 + checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 96 + 97 + [[package]] 98 + name = "as-slice" 99 + version = "0.2.1" 100 + source = "registry+https://github.com/rust-lang/crates.io-index" 101 + checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" 102 + dependencies = [ 103 + "stable_deref_trait", 104 + ] 105 + 106 + [[package]] 107 + name = "askama_escape" 108 + version = "0.13.0" 109 + source = "registry+https://github.com/rust-lang/crates.io-index" 110 + checksum = "3df27b8d5ddb458c5fb1bbc1ce172d4a38c614a97d550b0ac89003897fb01de4" 111 + 112 + [[package]] 113 + name = "async-compression" 114 + version = "0.4.42" 115 + source = "registry+https://github.com/rust-lang/crates.io-index" 116 + checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" 117 + dependencies = [ 118 + "compression-codecs", 119 + "compression-core", 120 + "pin-project-lite", 121 + "tokio", 122 + ] 123 + 124 + [[package]] 125 + name = "async-stream" 126 + version = "0.3.6" 127 + source = "registry+https://github.com/rust-lang/crates.io-index" 128 + checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" 129 + dependencies = [ 130 + "async-stream-impl", 131 + "futures-core", 132 + "pin-project-lite", 133 + ] 134 + 135 + [[package]] 136 + name = "async-stream-impl" 137 + version = "0.3.6" 138 + source = "registry+https://github.com/rust-lang/crates.io-index" 139 + checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" 140 + dependencies = [ 141 + "proc-macro2", 142 + "quote", 143 + "syn 2.0.118", 144 + ] 145 + 146 + [[package]] 147 + name = "async-trait" 148 + version = "0.1.89" 149 + source = "registry+https://github.com/rust-lang/crates.io-index" 150 + checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 151 + dependencies = [ 152 + "proc-macro2", 153 + "quote", 154 + "syn 2.0.118", 155 + ] 156 + 157 + [[package]] 158 + name = "async-tungstenite" 159 + version = "0.31.0" 160 + source = "registry+https://github.com/rust-lang/crates.io-index" 161 + checksum = "ee88b4c88ac8c9ea446ad43498955750a4bbe64c4392f21ccfe5d952865e318f" 162 + dependencies = [ 163 + "atomic-waker", 164 + "futures-core", 165 + "futures-io", 166 + "futures-task", 167 + "futures-util", 168 + "log", 169 + "pin-project-lite", 170 + "tungstenite 0.27.0", 171 + ] 172 + 173 + [[package]] 174 + name = "atk" 175 + version = "0.18.2" 176 + source = "registry+https://github.com/rust-lang/crates.io-index" 177 + checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" 178 + dependencies = [ 179 + "atk-sys", 180 + "glib", 181 + "libc", 182 + ] 183 + 184 + [[package]] 185 + name = "atk-sys" 186 + version = "0.18.2" 187 + source = "registry+https://github.com/rust-lang/crates.io-index" 188 + checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" 189 + dependencies = [ 190 + "glib-sys", 191 + "gobject-sys", 192 + "libc", 193 + "system-deps", 194 + ] 195 + 196 + [[package]] 197 + name = "atomic-polyfill" 198 + version = "1.0.3" 199 + source = "registry+https://github.com/rust-lang/crates.io-index" 200 + checksum = "8cf2bce30dfe09ef0bfaef228b9d414faaf7e563035494d7fe092dba54b300f4" 201 + dependencies = [ 202 + "critical-section", 203 + ] 204 + 205 + [[package]] 206 + name = "atomic-waker" 207 + version = "1.1.2" 208 + source = "registry+https://github.com/rust-lang/crates.io-index" 209 + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 210 + 211 + [[package]] 212 + name = "autocfg" 213 + version = "1.5.1" 214 + source = "registry+https://github.com/rust-lang/crates.io-index" 215 + checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" 216 + 217 + [[package]] 218 + name = "av-scenechange" 219 + version = "0.14.1" 220 + source = "registry+https://github.com/rust-lang/crates.io-index" 221 + checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" 222 + dependencies = [ 223 + "aligned", 224 + "anyhow", 225 + "arg_enum_proc_macro", 226 + "arrayvec", 227 + "log", 228 + "num-rational", 229 + "num-traits", 230 + "pastey", 231 + "rayon", 232 + "thiserror 2.0.18", 233 + "v_frame", 234 + "y4m", 235 + ] 236 + 237 + [[package]] 238 + name = "av1-grain" 239 + version = "0.2.5" 240 + source = "registry+https://github.com/rust-lang/crates.io-index" 241 + checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" 242 + dependencies = [ 243 + "anyhow", 244 + "arrayvec", 245 + "log", 246 + "nom", 247 + "num-rational", 248 + "v_frame", 249 + ] 250 + 251 + [[package]] 252 + name = "avif-serialize" 253 + version = "0.8.9" 254 + source = "registry+https://github.com/rust-lang/crates.io-index" 255 + checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" 256 + dependencies = [ 257 + "arrayvec", 258 + ] 259 + 260 + [[package]] 261 + name = "axum" 262 + version = "0.8.9" 263 + source = "registry+https://github.com/rust-lang/crates.io-index" 264 + checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" 265 + dependencies = [ 266 + "axum-core", 267 + "axum-macros", 268 + "base64", 269 + "bytes", 270 + "form_urlencoded", 271 + "futures-util", 272 + "http", 273 + "http-body", 274 + "http-body-util", 275 + "hyper", 276 + "hyper-util", 277 + "itoa", 278 + "matchit", 279 + "memchr", 280 + "mime", 281 + "multer", 282 + "percent-encoding", 283 + "pin-project-lite", 284 + "serde_core", 285 + "serde_json", 286 + "serde_path_to_error", 287 + "serde_urlencoded", 288 + "sha1", 289 + "sync_wrapper", 290 + "tokio", 291 + "tokio-tungstenite 0.29.0", 292 + "tower", 293 + "tower-layer", 294 + "tower-service", 295 + "tracing", 296 + ] 297 + 298 + [[package]] 299 + name = "axum-core" 300 + version = "0.5.6" 301 + source = "registry+https://github.com/rust-lang/crates.io-index" 302 + checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" 303 + dependencies = [ 304 + "bytes", 305 + "futures-core", 306 + "http", 307 + "http-body", 308 + "http-body-util", 309 + "mime", 310 + "pin-project-lite", 311 + "sync_wrapper", 312 + "tower-layer", 313 + "tower-service", 314 + "tracing", 315 + ] 316 + 317 + [[package]] 318 + name = "axum-extra" 319 + version = "0.10.3" 320 + source = "registry+https://github.com/rust-lang/crates.io-index" 321 + checksum = "9963ff19f40c6102c76756ef0a46004c0d58957d87259fc9208ff8441c12ab96" 322 + dependencies = [ 323 + "axum", 324 + "axum-core", 325 + "bytes", 326 + "futures-util", 327 + "headers", 328 + "http", 329 + "http-body", 330 + "http-body-util", 331 + "mime", 332 + "pin-project-lite", 333 + "rustversion", 334 + "serde_core", 335 + "tower-layer", 336 + "tower-service", 337 + "tracing", 338 + ] 339 + 340 + [[package]] 341 + name = "axum-macros" 342 + version = "0.5.1" 343 + source = "registry+https://github.com/rust-lang/crates.io-index" 344 + checksum = "7aa268c23bfbbd2c4363b9cd302a4f504fb2a9dfe7e3451d66f35dd392e20aca" 345 + dependencies = [ 346 + "proc-macro2", 347 + "quote", 348 + "syn 2.0.118", 349 + ] 350 + 351 + [[package]] 352 + name = "base-x" 353 + version = "0.2.11" 354 + source = "registry+https://github.com/rust-lang/crates.io-index" 355 + checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" 356 + 357 + [[package]] 358 + name = "base16" 359 + version = "0.2.1" 360 + source = "registry+https://github.com/rust-lang/crates.io-index" 361 + checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" 362 + 363 + [[package]] 364 + name = "base16ct" 365 + version = "0.2.0" 366 + source = "registry+https://github.com/rust-lang/crates.io-index" 367 + checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" 368 + 369 + [[package]] 370 + name = "base256emoji" 371 + version = "1.0.2" 372 + source = "registry+https://github.com/rust-lang/crates.io-index" 373 + checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" 374 + dependencies = [ 375 + "const-str 0.4.3", 376 + "match-lookup", 377 + ] 378 + 379 + [[package]] 380 + name = "base64" 381 + version = "0.22.1" 382 + source = "registry+https://github.com/rust-lang/crates.io-index" 383 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 384 + 385 + [[package]] 386 + name = "base64ct" 387 + version = "1.8.3" 388 + source = "registry+https://github.com/rust-lang/crates.io-index" 389 + checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" 390 + 391 + [[package]] 392 + name = "bit_field" 393 + version = "0.10.3" 394 + source = "registry+https://github.com/rust-lang/crates.io-index" 395 + checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" 396 + 397 + [[package]] 398 + name = "bitflags" 399 + version = "1.3.2" 400 + source = "registry+https://github.com/rust-lang/crates.io-index" 401 + checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 402 + 403 + [[package]] 404 + name = "bitflags" 405 + version = "2.13.0" 406 + source = "registry+https://github.com/rust-lang/crates.io-index" 407 + checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" 408 + dependencies = [ 409 + "serde_core", 410 + ] 411 + 412 + [[package]] 413 + name = "bitstream-io" 414 + version = "4.10.0" 415 + source = "registry+https://github.com/rust-lang/crates.io-index" 416 + checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" 417 + dependencies = [ 418 + "no_std_io2", 419 + ] 420 + 421 + [[package]] 422 + name = "block" 423 + version = "0.1.6" 424 + source = "registry+https://github.com/rust-lang/crates.io-index" 425 + checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 426 + 427 + [[package]] 428 + name = "block-buffer" 429 + version = "0.10.4" 430 + source = "registry+https://github.com/rust-lang/crates.io-index" 431 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 432 + dependencies = [ 433 + "generic-array", 434 + ] 435 + 436 + [[package]] 437 + name = "block2" 438 + version = "0.6.2" 439 + source = "registry+https://github.com/rust-lang/crates.io-index" 440 + checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" 441 + dependencies = [ 442 + "objc2", 443 + ] 444 + 445 + [[package]] 446 + name = "bon" 447 + version = "3.9.3" 448 + source = "registry+https://github.com/rust-lang/crates.io-index" 449 + checksum = "a602c73c7b0148ec6d12af6fd5cc7a46e2eacc8878271a999abac56eed12f561" 450 + dependencies = [ 451 + "bon-macros", 452 + "rustversion", 453 + ] 454 + 455 + [[package]] 456 + name = "bon-macros" 457 + version = "3.9.3" 458 + source = "registry+https://github.com/rust-lang/crates.io-index" 459 + checksum = "6dee98b0db6a962de883bf5d20362dee4d7ca0d12fe39a7c6c73c844e1cd7c1f" 460 + dependencies = [ 461 + "darling 0.23.0", 462 + "ident_case", 463 + "prettyplease", 464 + "proc-macro2", 465 + "quote", 466 + "rustversion", 467 + "syn 2.0.118", 468 + ] 469 + 470 + [[package]] 471 + name = "borrow-or-share" 472 + version = "0.2.4" 473 + source = "registry+https://github.com/rust-lang/crates.io-index" 474 + checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c" 475 + 476 + [[package]] 477 + name = "borsh" 478 + version = "1.7.0" 479 + source = "registry+https://github.com/rust-lang/crates.io-index" 480 + checksum = "2f3f6da4992df95bbcd9af42a6c7dcb994498fc9048230405f3b36ff7cd3f145" 481 + dependencies = [ 482 + "bytes", 483 + "cfg_aliases", 484 + ] 485 + 486 + [[package]] 487 + name = "brotli" 488 + version = "8.0.4" 489 + source = "registry+https://github.com/rust-lang/crates.io-index" 490 + checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3" 491 + dependencies = [ 492 + "alloc-no-stdlib", 493 + "alloc-stdlib", 494 + "brotli-decompressor", 495 + ] 496 + 497 + [[package]] 498 + name = "brotli-decompressor" 499 + version = "5.0.3" 500 + source = "registry+https://github.com/rust-lang/crates.io-index" 501 + checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" 502 + dependencies = [ 503 + "alloc-no-stdlib", 504 + "alloc-stdlib", 505 + ] 506 + 507 + [[package]] 508 + name = "bs58" 509 + version = "0.5.1" 510 + source = "registry+https://github.com/rust-lang/crates.io-index" 511 + checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" 512 + dependencies = [ 513 + "tinyvec", 514 + ] 515 + 516 + [[package]] 517 + name = "built" 518 + version = "0.8.1" 519 + source = "registry+https://github.com/rust-lang/crates.io-index" 520 + checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" 521 + 522 + [[package]] 523 + name = "bumpalo" 524 + version = "3.20.3" 525 + source = "registry+https://github.com/rust-lang/crates.io-index" 526 + checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" 527 + 528 + [[package]] 529 + name = "bytemuck" 530 + version = "1.25.0" 531 + source = "registry+https://github.com/rust-lang/crates.io-index" 532 + checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" 533 + 534 + [[package]] 535 + name = "byteorder" 536 + version = "1.5.0" 537 + source = "registry+https://github.com/rust-lang/crates.io-index" 538 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 539 + 540 + [[package]] 541 + name = "byteorder-lite" 542 + version = "0.1.0" 543 + source = "registry+https://github.com/rust-lang/crates.io-index" 544 + checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" 545 + 546 + [[package]] 547 + name = "bytes" 548 + version = "1.12.0" 549 + source = "registry+https://github.com/rust-lang/crates.io-index" 550 + checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593" 551 + dependencies = [ 552 + "serde", 553 + ] 554 + 555 + [[package]] 556 + name = "cairo-rs" 557 + version = "0.18.5" 558 + source = "registry+https://github.com/rust-lang/crates.io-index" 559 + checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" 560 + dependencies = [ 561 + "bitflags 2.13.0", 562 + "cairo-sys-rs", 563 + "glib", 564 + "libc", 565 + "once_cell", 566 + "thiserror 1.0.69", 567 + ] 568 + 569 + [[package]] 570 + name = "cairo-sys-rs" 571 + version = "0.18.2" 572 + source = "registry+https://github.com/rust-lang/crates.io-index" 573 + checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" 574 + dependencies = [ 575 + "glib-sys", 576 + "libc", 577 + "system-deps", 578 + ] 579 + 580 + [[package]] 581 + name = "cbor4ii" 582 + version = "0.2.14" 583 + source = "registry+https://github.com/rust-lang/crates.io-index" 584 + checksum = "b544cf8c89359205f4f990d0e6f3828db42df85b5dac95d09157a250eb0749c4" 585 + dependencies = [ 586 + "serde", 587 + ] 588 + 589 + [[package]] 590 + name = "cc" 591 + version = "1.2.65" 592 + source = "registry+https://github.com/rust-lang/crates.io-index" 593 + checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" 594 + dependencies = [ 595 + "find-msvc-tools", 596 + "jobserver", 597 + "libc", 598 + "shlex", 599 + ] 600 + 601 + [[package]] 602 + name = "cesu8" 603 + version = "1.1.0" 604 + source = "registry+https://github.com/rust-lang/crates.io-index" 605 + checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 606 + 607 + [[package]] 608 + name = "cfb" 609 + version = "0.7.3" 610 + source = "registry+https://github.com/rust-lang/crates.io-index" 611 + checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" 612 + dependencies = [ 613 + "byteorder", 614 + "fnv", 615 + "uuid", 616 + ] 617 + 618 + [[package]] 619 + name = "cfg-expr" 620 + version = "0.15.8" 621 + source = "registry+https://github.com/rust-lang/crates.io-index" 622 + checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" 623 + dependencies = [ 624 + "smallvec", 625 + "target-lexicon", 626 + ] 627 + 628 + [[package]] 629 + name = "cfg-if" 630 + version = "1.0.4" 631 + source = "registry+https://github.com/rust-lang/crates.io-index" 632 + checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 633 + 634 + [[package]] 635 + name = "cfg_aliases" 636 + version = "0.2.1" 637 + source = "registry+https://github.com/rust-lang/crates.io-index" 638 + checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 639 + 640 + [[package]] 641 + name = "charset" 642 + version = "0.1.5" 643 + source = "registry+https://github.com/rust-lang/crates.io-index" 644 + checksum = "f1f927b07c74ba84c7e5fe4db2baeb3e996ab2688992e39ac68ce3220a677c7e" 645 + dependencies = [ 646 + "base64", 647 + "encoding_rs", 648 + ] 649 + 650 + [[package]] 651 + name = "chrono" 652 + version = "0.4.45" 653 + source = "registry+https://github.com/rust-lang/crates.io-index" 654 + checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" 655 + dependencies = [ 656 + "iana-time-zone", 657 + "js-sys", 658 + "num-traits", 659 + "serde", 660 + "wasm-bindgen", 661 + "windows-link 0.2.1", 662 + ] 663 + 664 + [[package]] 665 + name = "ciborium" 666 + version = "0.2.2" 667 + source = "registry+https://github.com/rust-lang/crates.io-index" 668 + checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" 669 + dependencies = [ 670 + "ciborium-io", 671 + "ciborium-ll", 672 + "serde", 673 + ] 674 + 675 + [[package]] 676 + name = "ciborium-io" 677 + version = "0.2.2" 678 + source = "registry+https://github.com/rust-lang/crates.io-index" 679 + checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" 680 + 681 + [[package]] 682 + name = "ciborium-ll" 683 + version = "0.2.2" 684 + source = "registry+https://github.com/rust-lang/crates.io-index" 685 + checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" 686 + dependencies = [ 687 + "ciborium-io", 688 + "half", 689 + ] 690 + 691 + [[package]] 692 + name = "cid" 693 + version = "0.11.3" 694 + source = "registry+https://github.com/rust-lang/crates.io-index" 695 + checksum = "21a304f95f84d169a6f31c4d0a30d784643aaa0bbc9c1e449a2c23e963ec4971" 696 + dependencies = [ 697 + "multibase", 698 + "multihash", 699 + "serde", 700 + "serde_bytes", 701 + "unsigned-varint", 702 + ] 703 + 704 + [[package]] 705 + name = "cobs" 706 + version = "0.3.0" 707 + source = "registry+https://github.com/rust-lang/crates.io-index" 708 + checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" 709 + dependencies = [ 710 + "thiserror 2.0.18", 711 + ] 712 + 713 + [[package]] 714 + name = "cocoa" 715 + version = "0.26.1" 716 + source = "registry+https://github.com/rust-lang/crates.io-index" 717 + checksum = "ad36507aeb7e16159dfe68db81ccc27571c3ccd4b76fb2fb72fc59e7a4b1b64c" 718 + dependencies = [ 719 + "bitflags 2.13.0", 720 + "block", 721 + "cocoa-foundation", 722 + "core-foundation 0.10.1", 723 + "core-graphics 0.24.0", 724 + "foreign-types 0.5.0", 725 + "libc", 726 + "objc", 727 + ] 728 + 729 + [[package]] 730 + name = "cocoa-foundation" 731 + version = "0.2.1" 732 + source = "registry+https://github.com/rust-lang/crates.io-index" 733 + checksum = "81411967c50ee9a1fc11365f8c585f863a22a9697c89239c452292c40ba79b0d" 734 + dependencies = [ 735 + "bitflags 2.13.0", 736 + "block", 737 + "core-foundation 0.10.1", 738 + "core-graphics-types", 739 + "objc", 740 + ] 741 + 742 + [[package]] 743 + name = "color_quant" 744 + version = "1.1.0" 745 + source = "registry+https://github.com/rust-lang/crates.io-index" 746 + checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 747 + 748 + [[package]] 749 + name = "combine" 750 + version = "4.6.7" 751 + source = "registry+https://github.com/rust-lang/crates.io-index" 752 + checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" 753 + dependencies = [ 754 + "bytes", 755 + "memchr", 756 + ] 757 + 758 + [[package]] 759 + name = "compression-codecs" 760 + version = "0.4.38" 761 + source = "registry+https://github.com/rust-lang/crates.io-index" 762 + checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" 763 + dependencies = [ 764 + "brotli", 765 + "compression-core", 766 + "flate2", 767 + "memchr", 768 + ] 769 + 770 + [[package]] 771 + name = "compression-core" 772 + version = "0.4.32" 773 + source = "registry+https://github.com/rust-lang/crates.io-index" 774 + checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" 775 + 776 + [[package]] 777 + name = "console_error_panic_hook" 778 + version = "0.1.7" 779 + source = "registry+https://github.com/rust-lang/crates.io-index" 780 + checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 781 + dependencies = [ 782 + "cfg-if", 783 + "wasm-bindgen", 784 + ] 785 + 786 + [[package]] 787 + name = "const-oid" 788 + version = "0.9.6" 789 + source = "registry+https://github.com/rust-lang/crates.io-index" 790 + checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 791 + 792 + [[package]] 793 + name = "const-serialize" 794 + version = "0.7.2" 795 + source = "registry+https://github.com/rust-lang/crates.io-index" 796 + checksum = "ad7154afa56de2f290e3c82c2c6dc4f5b282b6870903f56ef3509aba95866edc" 797 + dependencies = [ 798 + "const-serialize-macro 0.7.2", 799 + ] 800 + 801 + [[package]] 802 + name = "const-serialize" 803 + version = "0.8.0-alpha.0" 804 + source = "registry+https://github.com/rust-lang/crates.io-index" 805 + checksum = "9e42cd5aabba86f128b3763da1fec1491c0f728ce99245062cd49b6f9e6d235b" 806 + dependencies = [ 807 + "const-serialize 0.7.2", 808 + "const-serialize-macro 0.8.0-alpha.0", 809 + "serde", 810 + ] 811 + 812 + [[package]] 813 + name = "const-serialize-macro" 814 + version = "0.7.2" 815 + source = "registry+https://github.com/rust-lang/crates.io-index" 816 + checksum = "4f160aad86b4343e8d4e261fee9965c3005b2fd6bc117d172ab65948779e4acf" 817 + dependencies = [ 818 + "proc-macro2", 819 + "quote", 820 + "syn 2.0.118", 821 + ] 822 + 823 + [[package]] 824 + name = "const-serialize-macro" 825 + version = "0.8.0-alpha.0" 826 + source = "registry+https://github.com/rust-lang/crates.io-index" 827 + checksum = "42571ed01eb46d2e1adcf99c8ca576f081e46f2623d13500eba70d1d99a4c439" 828 + dependencies = [ 829 + "proc-macro2", 830 + "quote", 831 + "syn 2.0.118", 832 + ] 833 + 834 + [[package]] 835 + name = "const-str" 836 + version = "0.4.3" 837 + source = "registry+https://github.com/rust-lang/crates.io-index" 838 + checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" 839 + 840 + [[package]] 841 + name = "const-str" 842 + version = "0.7.1" 843 + source = "registry+https://github.com/rust-lang/crates.io-index" 844 + checksum = "b0664d2867b4a32697dfe655557f5c3b187e9b605b38612a748e5ec99811d160" 845 + 846 + [[package]] 847 + name = "const_format" 848 + version = "0.2.36" 849 + source = "registry+https://github.com/rust-lang/crates.io-index" 850 + checksum = "4481a617ad9a412be3b97c5d403fef8ed023103368908b9c50af598ff467cc1e" 851 + dependencies = [ 852 + "const_format_proc_macros", 853 + "konst", 854 + ] 855 + 856 + [[package]] 857 + name = "const_format_proc_macros" 858 + version = "0.2.34" 859 + source = "registry+https://github.com/rust-lang/crates.io-index" 860 + checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" 861 + dependencies = [ 862 + "proc-macro2", 863 + "quote", 864 + "unicode-xid", 865 + ] 866 + 867 + [[package]] 868 + name = "content_disposition" 869 + version = "0.4.0" 870 + source = "registry+https://github.com/rust-lang/crates.io-index" 871 + checksum = "ebc14a88e1463ddd193906285abe5c360c7e8564e05ccc5d501755f7fbc9ca9c" 872 + dependencies = [ 873 + "charset", 874 + ] 875 + 876 + [[package]] 877 + name = "convert_case" 878 + version = "0.4.0" 879 + source = "registry+https://github.com/rust-lang/crates.io-index" 880 + checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 881 + 882 + [[package]] 883 + name = "convert_case" 884 + version = "0.8.0" 885 + source = "registry+https://github.com/rust-lang/crates.io-index" 886 + checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" 887 + dependencies = [ 888 + "unicode-segmentation", 889 + ] 890 + 891 + [[package]] 892 + name = "convert_case" 893 + version = "0.10.0" 894 + source = "registry+https://github.com/rust-lang/crates.io-index" 895 + checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" 896 + dependencies = [ 897 + "unicode-segmentation", 898 + ] 899 + 900 + [[package]] 901 + name = "cookie" 902 + version = "0.18.1" 903 + source = "registry+https://github.com/rust-lang/crates.io-index" 904 + checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" 905 + dependencies = [ 906 + "percent-encoding", 907 + "time", 908 + "version_check", 909 + ] 910 + 911 + [[package]] 912 + name = "cookie_store" 913 + version = "0.22.1" 914 + source = "registry+https://github.com/rust-lang/crates.io-index" 915 + checksum = "15b2c103cf610ec6cae3da84a766285b42fd16aad564758459e6ecf128c75206" 916 + dependencies = [ 917 + "cookie", 918 + "document-features", 919 + "idna", 920 + "log", 921 + "publicsuffix", 922 + "serde", 923 + "serde_derive", 924 + "serde_json", 925 + "time", 926 + "url", 927 + ] 928 + 929 + [[package]] 930 + name = "cordyceps" 931 + version = "0.3.4" 932 + source = "registry+https://github.com/rust-lang/crates.io-index" 933 + checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a" 934 + dependencies = [ 935 + "loom", 936 + "tracing", 937 + ] 938 + 939 + [[package]] 940 + name = "core-foundation" 941 + version = "0.9.4" 942 + source = "registry+https://github.com/rust-lang/crates.io-index" 943 + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 944 + dependencies = [ 945 + "core-foundation-sys", 946 + "libc", 947 + ] 948 + 949 + [[package]] 950 + name = "core-foundation" 951 + version = "0.10.1" 952 + source = "registry+https://github.com/rust-lang/crates.io-index" 953 + checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" 954 + dependencies = [ 955 + "core-foundation-sys", 956 + "libc", 957 + ] 958 + 959 + [[package]] 960 + name = "core-foundation-sys" 961 + version = "0.8.7" 962 + source = "registry+https://github.com/rust-lang/crates.io-index" 963 + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 964 + 965 + [[package]] 966 + name = "core-graphics" 967 + version = "0.24.0" 968 + source = "registry+https://github.com/rust-lang/crates.io-index" 969 + checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" 970 + dependencies = [ 971 + "bitflags 2.13.0", 972 + "core-foundation 0.10.1", 973 + "core-graphics-types", 974 + "foreign-types 0.5.0", 975 + "libc", 976 + ] 977 + 978 + [[package]] 979 + name = "core-graphics" 980 + version = "0.25.0" 981 + source = "registry+https://github.com/rust-lang/crates.io-index" 982 + checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" 983 + dependencies = [ 984 + "bitflags 2.13.0", 985 + "core-foundation 0.10.1", 986 + "core-graphics-types", 987 + "foreign-types 0.5.0", 988 + "libc", 989 + ] 990 + 991 + [[package]] 992 + name = "core-graphics-types" 993 + version = "0.2.0" 994 + source = "registry+https://github.com/rust-lang/crates.io-index" 995 + checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" 996 + dependencies = [ 997 + "bitflags 2.13.0", 998 + "core-foundation 0.10.1", 999 + "libc", 1000 + ] 1001 + 1002 + [[package]] 1003 + name = "cpufeatures" 1004 + version = "0.2.17" 1005 + source = "registry+https://github.com/rust-lang/crates.io-index" 1006 + checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 1007 + dependencies = [ 1008 + "libc", 1009 + ] 1010 + 1011 + [[package]] 1012 + name = "crc32fast" 1013 + version = "1.5.0" 1014 + source = "registry+https://github.com/rust-lang/crates.io-index" 1015 + checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 1016 + dependencies = [ 1017 + "cfg-if", 1018 + ] 1019 + 1020 + [[package]] 1021 + name = "critical-section" 1022 + version = "1.2.0" 1023 + source = "registry+https://github.com/rust-lang/crates.io-index" 1024 + checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" 1025 + 1026 + [[package]] 1027 + name = "crossbeam-channel" 1028 + version = "0.5.15" 1029 + source = "registry+https://github.com/rust-lang/crates.io-index" 1030 + checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" 1031 + dependencies = [ 1032 + "crossbeam-utils", 1033 + ] 1034 + 1035 + [[package]] 1036 + name = "crossbeam-deque" 1037 + version = "0.8.6" 1038 + source = "registry+https://github.com/rust-lang/crates.io-index" 1039 + checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 1040 + dependencies = [ 1041 + "crossbeam-epoch", 1042 + "crossbeam-utils", 1043 + ] 1044 + 1045 + [[package]] 1046 + name = "crossbeam-epoch" 1047 + version = "0.9.18" 1048 + source = "registry+https://github.com/rust-lang/crates.io-index" 1049 + checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 1050 + dependencies = [ 1051 + "crossbeam-utils", 1052 + ] 1053 + 1054 + [[package]] 1055 + name = "crossbeam-utils" 1056 + version = "0.8.21" 1057 + source = "registry+https://github.com/rust-lang/crates.io-index" 1058 + checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 1059 + 1060 + [[package]] 1061 + name = "crunchy" 1062 + version = "0.2.4" 1063 + source = "registry+https://github.com/rust-lang/crates.io-index" 1064 + checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" 1065 + 1066 + [[package]] 1067 + name = "crypto-bigint" 1068 + version = "0.5.5" 1069 + source = "registry+https://github.com/rust-lang/crates.io-index" 1070 + checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" 1071 + dependencies = [ 1072 + "generic-array", 1073 + "rand_core 0.6.4", 1074 + "subtle", 1075 + "zeroize", 1076 + ] 1077 + 1078 + [[package]] 1079 + name = "crypto-common" 1080 + version = "0.1.6" 1081 + source = "registry+https://github.com/rust-lang/crates.io-index" 1082 + checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 1083 + dependencies = [ 1084 + "generic-array", 1085 + "typenum", 1086 + ] 1087 + 1088 + [[package]] 1089 + name = "cssparser" 1090 + version = "0.29.6" 1091 + source = "registry+https://github.com/rust-lang/crates.io-index" 1092 + checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" 1093 + dependencies = [ 1094 + "cssparser-macros", 1095 + "dtoa-short", 1096 + "itoa", 1097 + "matches", 1098 + "phf 0.10.1", 1099 + "proc-macro2", 1100 + "quote", 1101 + "smallvec", 1102 + "syn 1.0.109", 1103 + ] 1104 + 1105 + [[package]] 1106 + name = "cssparser-macros" 1107 + version = "0.6.1" 1108 + source = "registry+https://github.com/rust-lang/crates.io-index" 1109 + checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" 1110 + dependencies = [ 1111 + "quote", 1112 + "syn 2.0.118", 1113 + ] 1114 + 1115 + [[package]] 1116 + name = "curve25519-dalek" 1117 + version = "4.1.3" 1118 + source = "registry+https://github.com/rust-lang/crates.io-index" 1119 + checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" 1120 + dependencies = [ 1121 + "cfg-if", 1122 + "cpufeatures", 1123 + "curve25519-dalek-derive", 1124 + "digest", 1125 + "fiat-crypto", 1126 + "rustc_version", 1127 + "subtle", 1128 + "zeroize", 1129 + ] 1130 + 1131 + [[package]] 1132 + name = "curve25519-dalek-derive" 1133 + version = "0.1.1" 1134 + source = "registry+https://github.com/rust-lang/crates.io-index" 1135 + checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" 1136 + dependencies = [ 1137 + "proc-macro2", 1138 + "quote", 1139 + "syn 2.0.118", 1140 + ] 1141 + 1142 + [[package]] 1143 + name = "darling" 1144 + version = "0.21.3" 1145 + source = "registry+https://github.com/rust-lang/crates.io-index" 1146 + checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" 1147 + dependencies = [ 1148 + "darling_core 0.21.3", 1149 + "darling_macro 0.21.3", 1150 + ] 1151 + 1152 + [[package]] 1153 + name = "darling" 1154 + version = "0.23.0" 1155 + source = "registry+https://github.com/rust-lang/crates.io-index" 1156 + checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" 1157 + dependencies = [ 1158 + "darling_core 0.23.0", 1159 + "darling_macro 0.23.0", 1160 + ] 1161 + 1162 + [[package]] 1163 + name = "darling_core" 1164 + version = "0.21.3" 1165 + source = "registry+https://github.com/rust-lang/crates.io-index" 1166 + checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" 1167 + dependencies = [ 1168 + "fnv", 1169 + "ident_case", 1170 + "proc-macro2", 1171 + "quote", 1172 + "syn 2.0.118", 1173 + ] 1174 + 1175 + [[package]] 1176 + name = "darling_core" 1177 + version = "0.23.0" 1178 + source = "registry+https://github.com/rust-lang/crates.io-index" 1179 + checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" 1180 + dependencies = [ 1181 + "ident_case", 1182 + "proc-macro2", 1183 + "quote", 1184 + "strsim", 1185 + "syn 2.0.118", 1186 + ] 1187 + 1188 + [[package]] 1189 + name = "darling_macro" 1190 + version = "0.21.3" 1191 + source = "registry+https://github.com/rust-lang/crates.io-index" 1192 + checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" 1193 + dependencies = [ 1194 + "darling_core 0.21.3", 1195 + "quote", 1196 + "syn 2.0.118", 1197 + ] 1198 + 1199 + [[package]] 1200 + name = "darling_macro" 1201 + version = "0.23.0" 1202 + source = "registry+https://github.com/rust-lang/crates.io-index" 1203 + checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" 1204 + dependencies = [ 1205 + "darling_core 0.23.0", 1206 + "quote", 1207 + "syn 2.0.118", 1208 + ] 1209 + 1210 + [[package]] 1211 + name = "dashmap" 1212 + version = "6.2.1" 1213 + source = "registry+https://github.com/rust-lang/crates.io-index" 1214 + checksum = "e6361d5c062261c78a176addb82d4c821ae42bed6089de0e12603cd25de2059c" 1215 + dependencies = [ 1216 + "cfg-if", 1217 + "crossbeam-utils", 1218 + "hashbrown 0.14.5", 1219 + "lock_api", 1220 + "once_cell", 1221 + "parking_lot_core", 1222 + ] 1223 + 1224 + [[package]] 1225 + name = "data-encoding" 1226 + version = "2.11.0" 1227 + source = "registry+https://github.com/rust-lang/crates.io-index" 1228 + checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" 1229 + 1230 + [[package]] 1231 + name = "data-encoding-macro" 1232 + version = "0.1.20" 1233 + source = "registry+https://github.com/rust-lang/crates.io-index" 1234 + checksum = "3259c913752a86488b501ed8680446a5ed2d5aeac6e596cb23ba3800768ea32c" 1235 + dependencies = [ 1236 + "data-encoding", 1237 + "data-encoding-macro-internal", 1238 + ] 1239 + 1240 + [[package]] 1241 + name = "data-encoding-macro-internal" 1242 + version = "0.1.18" 1243 + source = "registry+https://github.com/rust-lang/crates.io-index" 1244 + checksum = "ccc2776f0c61eca1ca32528f85548abd1a4be8fb53d1b21c013e4f18da1e7090" 1245 + dependencies = [ 1246 + "data-encoding", 1247 + "syn 2.0.118", 1248 + ] 1249 + 1250 + [[package]] 1251 + name = "der" 1252 + version = "0.7.10" 1253 + source = "registry+https://github.com/rust-lang/crates.io-index" 1254 + checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" 1255 + dependencies = [ 1256 + "const-oid", 1257 + "pem-rfc7468", 1258 + "zeroize", 1259 + ] 1260 + 1261 + [[package]] 1262 + name = "deranged" 1263 + version = "0.5.8" 1264 + source = "registry+https://github.com/rust-lang/crates.io-index" 1265 + checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" 1266 + 1267 + [[package]] 1268 + name = "derive_more" 1269 + version = "0.99.20" 1270 + source = "registry+https://github.com/rust-lang/crates.io-index" 1271 + checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" 1272 + dependencies = [ 1273 + "convert_case 0.4.0", 1274 + "proc-macro2", 1275 + "quote", 1276 + "rustc_version", 1277 + "syn 2.0.118", 1278 + ] 1279 + 1280 + [[package]] 1281 + name = "derive_more" 1282 + version = "1.0.0" 1283 + source = "registry+https://github.com/rust-lang/crates.io-index" 1284 + checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" 1285 + dependencies = [ 1286 + "derive_more-impl 1.0.0", 1287 + ] 1288 + 1289 + [[package]] 1290 + name = "derive_more" 1291 + version = "2.1.1" 1292 + source = "registry+https://github.com/rust-lang/crates.io-index" 1293 + checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" 1294 + dependencies = [ 1295 + "derive_more-impl 2.1.1", 1296 + ] 1297 + 1298 + [[package]] 1299 + name = "derive_more-impl" 1300 + version = "1.0.0" 1301 + source = "registry+https://github.com/rust-lang/crates.io-index" 1302 + checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" 1303 + dependencies = [ 1304 + "proc-macro2", 1305 + "quote", 1306 + "syn 2.0.118", 1307 + "unicode-xid", 1308 + ] 1309 + 1310 + [[package]] 1311 + name = "derive_more-impl" 1312 + version = "2.1.1" 1313 + source = "registry+https://github.com/rust-lang/crates.io-index" 1314 + checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" 1315 + dependencies = [ 1316 + "convert_case 0.10.0", 1317 + "proc-macro2", 1318 + "quote", 1319 + "rustc_version", 1320 + "syn 2.0.118", 1321 + "unicode-xid", 1322 + ] 1323 + 1324 + [[package]] 1325 + name = "diatomic-waker" 1326 + version = "0.2.3" 1327 + source = "registry+https://github.com/rust-lang/crates.io-index" 1328 + checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c" 1329 + 1330 + [[package]] 1331 + name = "digest" 1332 + version = "0.10.7" 1333 + source = "registry+https://github.com/rust-lang/crates.io-index" 1334 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 1335 + dependencies = [ 1336 + "block-buffer", 1337 + "const-oid", 1338 + "crypto-common", 1339 + "subtle", 1340 + ] 1341 + 1342 + [[package]] 1343 + name = "dioxus" 1344 + version = "0.7.9" 1345 + source = "registry+https://github.com/rust-lang/crates.io-index" 1346 + checksum = "7c01ecf7ddbae18a419ad3d83c486101a85ffc5740ea09cdd0f09a30dc12170d" 1347 + dependencies = [ 1348 + "dioxus-asset-resolver", 1349 + "dioxus-cli-config", 1350 + "dioxus-config-macro", 1351 + "dioxus-config-macros", 1352 + "dioxus-core", 1353 + "dioxus-core-macro", 1354 + "dioxus-desktop", 1355 + "dioxus-devtools", 1356 + "dioxus-document", 1357 + "dioxus-fullstack", 1358 + "dioxus-fullstack-macro", 1359 + "dioxus-history", 1360 + "dioxus-hooks", 1361 + "dioxus-html", 1362 + "dioxus-liveview", 1363 + "dioxus-logger", 1364 + "dioxus-router", 1365 + "dioxus-server", 1366 + "dioxus-signals", 1367 + "dioxus-ssr", 1368 + "dioxus-stores", 1369 + "dioxus-web", 1370 + "manganis", 1371 + "serde", 1372 + "subsecond", 1373 + "warnings", 1374 + ] 1375 + 1376 + [[package]] 1377 + name = "dioxus-asset-resolver" 1378 + version = "0.7.9" 1379 + source = "registry+https://github.com/rust-lang/crates.io-index" 1380 + checksum = "69387edbbc60c7cb93ad96d8cc7a22b49a76e21643380b89b1c49a78d347ff60" 1381 + dependencies = [ 1382 + "dioxus-cli-config", 1383 + "http", 1384 + "infer", 1385 + "jni 0.21.1", 1386 + "js-sys", 1387 + "ndk", 1388 + "ndk-context", 1389 + "ndk-sys", 1390 + "percent-encoding", 1391 + "thiserror 2.0.18", 1392 + "tokio", 1393 + "wasm-bindgen-futures", 1394 + "web-sys", 1395 + ] 1396 + 1397 + [[package]] 1398 + name = "dioxus-cli-config" 1399 + version = "0.7.9" 1400 + source = "registry+https://github.com/rust-lang/crates.io-index" 1401 + checksum = "c000f584ddf608e2b272b3074bf11512a474eeeb2eb85a1915f276ce5c4a8615" 1402 + dependencies = [ 1403 + "wasm-bindgen", 1404 + ] 1405 + 1406 + [[package]] 1407 + name = "dioxus-config-macro" 1408 + version = "0.7.9" 1409 + source = "registry+https://github.com/rust-lang/crates.io-index" 1410 + checksum = "7637091592978fbfdb45a16b26bd99fd97fb1bd7e31c6a963530e00c022af321" 1411 + dependencies = [ 1412 + "proc-macro2", 1413 + "quote", 1414 + ] 1415 + 1416 + [[package]] 1417 + name = "dioxus-config-macros" 1418 + version = "0.7.9" 1419 + source = "registry+https://github.com/rust-lang/crates.io-index" 1420 + checksum = "54f9ed8fc1a215ad34bb8dbae42a4ea54efbcd26ca9006bbe5cca78e511bf25f" 1421 + 1422 + [[package]] 1423 + name = "dioxus-core" 1424 + version = "0.7.9" 1425 + source = "registry+https://github.com/rust-lang/crates.io-index" 1426 + checksum = "45887100ff0cf89abeb8b659808294fda48cd53f3b424e36407dedffcfea830b" 1427 + dependencies = [ 1428 + "anyhow", 1429 + "const_format", 1430 + "dioxus-core-types", 1431 + "futures-channel", 1432 + "futures-util", 1433 + "generational-box", 1434 + "longest-increasing-subsequence", 1435 + "rustc-hash 2.1.2", 1436 + "rustversion", 1437 + "serde", 1438 + "slab", 1439 + "slotmap", 1440 + "subsecond", 1441 + "tracing", 1442 + ] 1443 + 1444 + [[package]] 1445 + name = "dioxus-core-macro" 1446 + version = "0.7.9" 1447 + source = "registry+https://github.com/rust-lang/crates.io-index" 1448 + checksum = "370c63663dff0f24df5dfea643ca239283542c6b228a302f69b32e1d36762b7f" 1449 + dependencies = [ 1450 + "convert_case 0.8.0", 1451 + "dioxus-rsx", 1452 + "proc-macro2", 1453 + "quote", 1454 + "syn 2.0.118", 1455 + ] 1456 + 1457 + [[package]] 1458 + name = "dioxus-core-types" 1459 + version = "0.7.9" 1460 + source = "registry+https://github.com/rust-lang/crates.io-index" 1461 + checksum = "36963eab106b169737762f9cd5ee5fd97f585989dcb2d8e30a596e97a6999009" 1462 + 1463 + [[package]] 1464 + name = "dioxus-desktop" 1465 + version = "0.7.9" 1466 + source = "registry+https://github.com/rust-lang/crates.io-index" 1467 + checksum = "662cd78c73ca3f17346adbf2d64757df40dd0ce20536c05123097fd31828d2bd" 1468 + dependencies = [ 1469 + "anyhow", 1470 + "async-trait", 1471 + "base64", 1472 + "bytes", 1473 + "cocoa", 1474 + "core-foundation 0.10.1", 1475 + "dioxus-asset-resolver", 1476 + "dioxus-cli-config", 1477 + "dioxus-core", 1478 + "dioxus-devtools", 1479 + "dioxus-document", 1480 + "dioxus-history", 1481 + "dioxus-hooks", 1482 + "dioxus-html", 1483 + "dioxus-interpreter-js", 1484 + "dioxus-signals", 1485 + "dunce", 1486 + "futures-channel", 1487 + "futures-util", 1488 + "generational-box", 1489 + "global-hotkey", 1490 + "image", 1491 + "infer", 1492 + "jni 0.21.1", 1493 + "lazy-js-bundle", 1494 + "libc", 1495 + "muda", 1496 + "ndk", 1497 + "ndk-context", 1498 + "ndk-sys", 1499 + "objc", 1500 + "objc_id", 1501 + "percent-encoding", 1502 + "rand 0.9.4", 1503 + "rfd", 1504 + "rustc-hash 2.1.2", 1505 + "serde", 1506 + "serde_json", 1507 + "signal-hook", 1508 + "slab", 1509 + "subtle", 1510 + "tao", 1511 + "thiserror 2.0.18", 1512 + "tokio", 1513 + "tracing", 1514 + "tray-icon", 1515 + "tungstenite 0.28.0", 1516 + "webbrowser", 1517 + "wry", 1518 + ] 1519 + 1520 + [[package]] 1521 + name = "dioxus-devtools" 1522 + version = "0.7.9" 1523 + source = "registry+https://github.com/rust-lang/crates.io-index" 1524 + checksum = "2349cedbdf1b429df1f1bea61fdee0ad3dae7b2548eedfbeca82710122a57da0" 1525 + dependencies = [ 1526 + "dioxus-cli-config", 1527 + "dioxus-core", 1528 + "dioxus-devtools-types", 1529 + "dioxus-signals", 1530 + "futures-channel", 1531 + "futures-util", 1532 + "serde", 1533 + "serde_json", 1534 + "subsecond", 1535 + "thiserror 2.0.18", 1536 + "tracing", 1537 + "tungstenite 0.28.0", 1538 + ] 1539 + 1540 + [[package]] 1541 + name = "dioxus-devtools-types" 1542 + version = "0.7.9" 1543 + source = "registry+https://github.com/rust-lang/crates.io-index" 1544 + checksum = "0ab9b0f7565d1916b70915f59b89ea8054ef0a9d67a364a32bbee68ef5f3818d" 1545 + dependencies = [ 1546 + "dioxus-core", 1547 + "serde", 1548 + "subsecond-types", 1549 + ] 1550 + 1551 + [[package]] 1552 + name = "dioxus-document" 1553 + version = "0.7.9" 1554 + source = "registry+https://github.com/rust-lang/crates.io-index" 1555 + checksum = "37e3a5bec7ffc999ff23446a487eb5cd86111d1574a23533dd3f8b3c69a53a22" 1556 + dependencies = [ 1557 + "dioxus-core", 1558 + "dioxus-core-macro", 1559 + "dioxus-core-types", 1560 + "dioxus-html", 1561 + "futures-channel", 1562 + "futures-util", 1563 + "generational-box", 1564 + "lazy-js-bundle", 1565 + "serde", 1566 + "serde_json", 1567 + "tracing", 1568 + ] 1569 + 1570 + [[package]] 1571 + name = "dioxus-fullstack" 1572 + version = "0.7.9" 1573 + source = "registry+https://github.com/rust-lang/crates.io-index" 1574 + checksum = "37f0558edb88af5ad47275ae36a7f06317163ba482db377c26d7d8590b5cd0f6" 1575 + dependencies = [ 1576 + "anyhow", 1577 + "async-stream", 1578 + "async-tungstenite", 1579 + "axum", 1580 + "axum-core", 1581 + "axum-extra", 1582 + "base64", 1583 + "bytes", 1584 + "ciborium", 1585 + "const-str 0.7.1", 1586 + "const_format", 1587 + "content_disposition", 1588 + "derive_more 2.1.1", 1589 + "dioxus-asset-resolver", 1590 + "dioxus-cli-config", 1591 + "dioxus-core", 1592 + "dioxus-fullstack-core", 1593 + "dioxus-fullstack-macro", 1594 + "dioxus-hooks", 1595 + "dioxus-html", 1596 + "dioxus-signals", 1597 + "form_urlencoded", 1598 + "futures", 1599 + "futures-channel", 1600 + "futures-util", 1601 + "gloo-net", 1602 + "headers", 1603 + "http", 1604 + "http-body", 1605 + "http-body-util", 1606 + "inventory", 1607 + "js-sys", 1608 + "mime", 1609 + "pin-project", 1610 + "reqwest", 1611 + "rustversion", 1612 + "send_wrapper", 1613 + "serde", 1614 + "serde_json", 1615 + "serde_qs", 1616 + "serde_urlencoded", 1617 + "thiserror 2.0.18", 1618 + "tokio", 1619 + "tokio-stream", 1620 + "tokio-tungstenite 0.28.0", 1621 + "tokio-util", 1622 + "tower", 1623 + "tower-http", 1624 + "tower-layer", 1625 + "tracing", 1626 + "tungstenite 0.27.0", 1627 + "url", 1628 + "wasm-bindgen", 1629 + "wasm-bindgen-futures", 1630 + "wasm-streams", 1631 + "web-sys", 1632 + "xxhash-rust", 1633 + ] 1634 + 1635 + [[package]] 1636 + name = "dioxus-fullstack-core" 1637 + version = "0.7.9" 1638 + source = "registry+https://github.com/rust-lang/crates.io-index" 1639 + checksum = "cc634b28b4b1e3eab1e8df4f98510e2d2fa39d686321467f977213155e86ed2b" 1640 + dependencies = [ 1641 + "anyhow", 1642 + "axum-core", 1643 + "base64", 1644 + "ciborium", 1645 + "dioxus-core", 1646 + "dioxus-document", 1647 + "dioxus-history", 1648 + "dioxus-hooks", 1649 + "dioxus-signals", 1650 + "futures-channel", 1651 + "futures-util", 1652 + "generational-box", 1653 + "http", 1654 + "inventory", 1655 + "parking_lot", 1656 + "serde", 1657 + "serde_json", 1658 + "thiserror 2.0.18", 1659 + "tokio", 1660 + "tracing", 1661 + ] 1662 + 1663 + [[package]] 1664 + name = "dioxus-fullstack-macro" 1665 + version = "0.7.9" 1666 + source = "registry+https://github.com/rust-lang/crates.io-index" 1667 + checksum = "85a8fe7da549859fae00c7f4bf11a2aab734ae7ef6f98f280dce9bea1f3326ec" 1668 + dependencies = [ 1669 + "const_format", 1670 + "convert_case 0.8.0", 1671 + "proc-macro2", 1672 + "quote", 1673 + "syn 2.0.118", 1674 + "xxhash-rust", 1675 + ] 1676 + 1677 + [[package]] 1678 + name = "dioxus-history" 1679 + version = "0.7.9" 1680 + source = "registry+https://github.com/rust-lang/crates.io-index" 1681 + checksum = "1a15232302d1933015fcf2d6fe9e286ad36f6e9c205a546089a0f326023bb0d2" 1682 + dependencies = [ 1683 + "dioxus-core", 1684 + "tracing", 1685 + ] 1686 + 1687 + [[package]] 1688 + name = "dioxus-hooks" 1689 + version = "0.7.9" 1690 + source = "registry+https://github.com/rust-lang/crates.io-index" 1691 + checksum = "4534f91cf6305204b948bdec130076ac9ecc7c22faab29475b76870558bf73ea" 1692 + dependencies = [ 1693 + "dioxus-core", 1694 + "dioxus-signals", 1695 + "futures-channel", 1696 + "futures-util", 1697 + "generational-box", 1698 + "rustversion", 1699 + "slab", 1700 + "tracing", 1701 + ] 1702 + 1703 + [[package]] 1704 + name = "dioxus-html" 1705 + version = "0.7.9" 1706 + source = "registry+https://github.com/rust-lang/crates.io-index" 1707 + checksum = "e03d6ad4040b667f2b2eefcb678840e630938c09bf9ec39b04ea4d1d96d90d44" 1708 + dependencies = [ 1709 + "async-trait", 1710 + "bytes", 1711 + "dioxus-core", 1712 + "dioxus-core-macro", 1713 + "dioxus-core-types", 1714 + "dioxus-hooks", 1715 + "dioxus-html-internal-macro", 1716 + "enumset", 1717 + "euclid", 1718 + "futures-channel", 1719 + "futures-util", 1720 + "generational-box", 1721 + "keyboard-types", 1722 + "lazy-js-bundle", 1723 + "rustversion", 1724 + "serde", 1725 + "serde_json", 1726 + "serde_repr", 1727 + "tracing", 1728 + ] 1729 + 1730 + [[package]] 1731 + name = "dioxus-html-internal-macro" 1732 + version = "0.7.9" 1733 + source = "registry+https://github.com/rust-lang/crates.io-index" 1734 + checksum = "584e2772127ab00f0d5e1d4d9795f39fecebc828ece0b7a02349d438bc1b1ce7" 1735 + dependencies = [ 1736 + "convert_case 0.8.0", 1737 + "proc-macro2", 1738 + "quote", 1739 + "syn 2.0.118", 1740 + ] 1741 + 1742 + [[package]] 1743 + name = "dioxus-interpreter-js" 1744 + version = "0.7.9" 1745 + source = "registry+https://github.com/rust-lang/crates.io-index" 1746 + checksum = "11999d6eb5bb179a9512dad30e5de408aab66f2cb65de9098c9fbe02927e2978" 1747 + dependencies = [ 1748 + "dioxus-core", 1749 + "dioxus-core-types", 1750 + "dioxus-html", 1751 + "js-sys", 1752 + "lazy-js-bundle", 1753 + "rustc-hash 2.1.2", 1754 + "serde", 1755 + "sledgehammer_bindgen", 1756 + "sledgehammer_utils", 1757 + "wasm-bindgen", 1758 + "wasm-bindgen-futures", 1759 + "web-sys", 1760 + ] 1761 + 1762 + [[package]] 1763 + name = "dioxus-liveview" 1764 + version = "0.7.9" 1765 + source = "registry+https://github.com/rust-lang/crates.io-index" 1766 + checksum = "7344b8f174967c7d2f6ad0103d680ab57daea83ebe3368f7f011c402fd6aaf77" 1767 + dependencies = [ 1768 + "axum", 1769 + "dioxus-cli-config", 1770 + "dioxus-core", 1771 + "dioxus-devtools", 1772 + "dioxus-document", 1773 + "dioxus-history", 1774 + "dioxus-html", 1775 + "dioxus-interpreter-js", 1776 + "futures-channel", 1777 + "futures-util", 1778 + "generational-box", 1779 + "rustc-hash 2.1.2", 1780 + "serde", 1781 + "serde_json", 1782 + "slab", 1783 + "thiserror 2.0.18", 1784 + "tokio", 1785 + "tokio-stream", 1786 + "tokio-util", 1787 + "tracing", 1788 + ] 1789 + 1790 + [[package]] 1791 + name = "dioxus-logger" 1792 + version = "0.7.9" 1793 + source = "registry+https://github.com/rust-lang/crates.io-index" 1794 + checksum = "a28ccdfe36d2cb830a2784e40f7e6f7199805a2c6da99bd65b1ca308f11aed28" 1795 + dependencies = [ 1796 + "dioxus-cli-config", 1797 + "tracing", 1798 + "tracing-subscriber", 1799 + "tracing-wasm", 1800 + ] 1801 + 1802 + [[package]] 1803 + name = "dioxus-router" 1804 + version = "0.7.9" 1805 + source = "registry+https://github.com/rust-lang/crates.io-index" 1806 + checksum = "38e47f62d680429badfcb99bf5dec17ee92b0cb9623f264e36bc003a1359bfdc" 1807 + dependencies = [ 1808 + "dioxus-cli-config", 1809 + "dioxus-core", 1810 + "dioxus-core-macro", 1811 + "dioxus-fullstack-core", 1812 + "dioxus-history", 1813 + "dioxus-hooks", 1814 + "dioxus-html", 1815 + "dioxus-router-macro", 1816 + "dioxus-signals", 1817 + "percent-encoding", 1818 + "rustversion", 1819 + "tracing", 1820 + "url", 1821 + ] 1822 + 1823 + [[package]] 1824 + name = "dioxus-router-macro" 1825 + version = "0.7.9" 1826 + source = "registry+https://github.com/rust-lang/crates.io-index" 1827 + checksum = "6f83fb667d27e256f8c9eca49963fbace66a8722cb64ee15a10ffc97d092357e" 1828 + dependencies = [ 1829 + "base16", 1830 + "digest", 1831 + "proc-macro2", 1832 + "quote", 1833 + "sha2", 1834 + "slab", 1835 + "syn 2.0.118", 1836 + ] 1837 + 1838 + [[package]] 1839 + name = "dioxus-rsx" 1840 + version = "0.7.9" 1841 + source = "registry+https://github.com/rust-lang/crates.io-index" 1842 + checksum = "2106afda239a4c7c22ffa1ca19117011225fc1c735c139c0a5b765996aa8bb1d" 1843 + dependencies = [ 1844 + "proc-macro2", 1845 + "proc-macro2-diagnostics", 1846 + "quote", 1847 + "rustversion", 1848 + "syn 2.0.118", 1849 + ] 1850 + 1851 + [[package]] 1852 + name = "dioxus-server" 1853 + version = "0.7.9" 1854 + source = "registry+https://github.com/rust-lang/crates.io-index" 1855 + checksum = "b5ba2095c16f847d3f680a94cc9b0637d190aace651ecfad0feda180da13634b" 1856 + dependencies = [ 1857 + "anyhow", 1858 + "async-trait", 1859 + "axum", 1860 + "base64", 1861 + "bytes", 1862 + "chrono", 1863 + "ciborium", 1864 + "dashmap", 1865 + "dioxus-cli-config", 1866 + "dioxus-core", 1867 + "dioxus-core-macro", 1868 + "dioxus-devtools", 1869 + "dioxus-document", 1870 + "dioxus-fullstack-core", 1871 + "dioxus-history", 1872 + "dioxus-hooks", 1873 + "dioxus-html", 1874 + "dioxus-interpreter-js", 1875 + "dioxus-logger", 1876 + "dioxus-router", 1877 + "dioxus-signals", 1878 + "dioxus-ssr", 1879 + "enumset", 1880 + "futures", 1881 + "futures-channel", 1882 + "futures-util", 1883 + "generational-box", 1884 + "http", 1885 + "http-body-util", 1886 + "hyper", 1887 + "hyper-util", 1888 + "inventory", 1889 + "lru", 1890 + "parking_lot", 1891 + "pin-project", 1892 + "rustc-hash 2.1.2", 1893 + "serde", 1894 + "serde_json", 1895 + "serde_qs", 1896 + "subsecond", 1897 + "thiserror 2.0.18", 1898 + "tokio", 1899 + "tokio-tungstenite 0.28.0", 1900 + "tokio-util", 1901 + "tower", 1902 + "tower-http", 1903 + "tracing", 1904 + "tracing-futures", 1905 + "url", 1906 + "walkdir", 1907 + ] 1908 + 1909 + [[package]] 1910 + name = "dioxus-signals" 1911 + version = "0.7.9" 1912 + source = "registry+https://github.com/rust-lang/crates.io-index" 1913 + checksum = "3705754f5e043deec9fc7af0d159f18e5b21c02c47d255c7e477f31368f0b6d2" 1914 + dependencies = [ 1915 + "dioxus-core", 1916 + "futures-channel", 1917 + "futures-util", 1918 + "generational-box", 1919 + "parking_lot", 1920 + "rustc-hash 2.1.2", 1921 + "tracing", 1922 + "warnings", 1923 + ] 1924 + 1925 + [[package]] 1926 + name = "dioxus-ssr" 1927 + version = "0.7.9" 1928 + source = "registry+https://github.com/rust-lang/crates.io-index" 1929 + checksum = "d261c5c9907b84fb1ed52f59f46d68c84a4ae860a65cc5effd0cea740ee428af" 1930 + dependencies = [ 1931 + "askama_escape", 1932 + "dioxus-core", 1933 + "dioxus-core-types", 1934 + "rustc-hash 2.1.2", 1935 + ] 1936 + 1937 + [[package]] 1938 + name = "dioxus-stores" 1939 + version = "0.7.9" 1940 + source = "registry+https://github.com/rust-lang/crates.io-index" 1941 + checksum = "64bec7b21c86b1360ec965a07a53a2c96b7caee3465049e1c299a45024e87614" 1942 + dependencies = [ 1943 + "dioxus-core", 1944 + "dioxus-signals", 1945 + "dioxus-stores-macro", 1946 + "generational-box", 1947 + ] 1948 + 1949 + [[package]] 1950 + name = "dioxus-stores-macro" 1951 + version = "0.7.9" 1952 + source = "registry+https://github.com/rust-lang/crates.io-index" 1953 + checksum = "40a5875e9f890f27b1cc3e5b56c1e23601211470315a1fb8627c4ca4f3b2be9a" 1954 + dependencies = [ 1955 + "convert_case 0.8.0", 1956 + "proc-macro2", 1957 + "quote", 1958 + "syn 2.0.118", 1959 + ] 1960 + 1961 + [[package]] 1962 + name = "dioxus-web" 1963 + version = "0.7.9" 1964 + source = "registry+https://github.com/rust-lang/crates.io-index" 1965 + checksum = "bc0a0be76b404e8242a597db0fb239d05f8dee4e7856bc1fc7144f7e244822fd" 1966 + dependencies = [ 1967 + "dioxus-cli-config", 1968 + "dioxus-core", 1969 + "dioxus-core-types", 1970 + "dioxus-devtools", 1971 + "dioxus-document", 1972 + "dioxus-fullstack-core", 1973 + "dioxus-history", 1974 + "dioxus-html", 1975 + "dioxus-interpreter-js", 1976 + "dioxus-signals", 1977 + "futures-channel", 1978 + "futures-util", 1979 + "generational-box", 1980 + "gloo-timers", 1981 + "js-sys", 1982 + "lazy-js-bundle", 1983 + "rustc-hash 2.1.2", 1984 + "send_wrapper", 1985 + "serde", 1986 + "serde-wasm-bindgen", 1987 + "serde_json", 1988 + "tracing", 1989 + "wasm-bindgen", 1990 + "wasm-bindgen-futures", 1991 + "wasm-streams", 1992 + "web-sys", 1993 + ] 1994 + 1995 + [[package]] 1996 + name = "dirs" 1997 + version = "6.0.0" 1998 + source = "registry+https://github.com/rust-lang/crates.io-index" 1999 + checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" 2000 + dependencies = [ 2001 + "dirs-sys", 2002 + ] 2003 + 2004 + [[package]] 2005 + name = "dirs-sys" 2006 + version = "0.5.0" 2007 + source = "registry+https://github.com/rust-lang/crates.io-index" 2008 + checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" 2009 + dependencies = [ 2010 + "libc", 2011 + "option-ext", 2012 + "redox_users", 2013 + "windows-sys 0.61.2", 2014 + ] 2015 + 2016 + [[package]] 2017 + name = "dispatch2" 2018 + version = "0.3.1" 2019 + source = "registry+https://github.com/rust-lang/crates.io-index" 2020 + checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" 2021 + dependencies = [ 2022 + "bitflags 2.13.0", 2023 + "block2", 2024 + "libc", 2025 + "objc2", 2026 + ] 2027 + 2028 + [[package]] 2029 + name = "displaydoc" 2030 + version = "0.2.6" 2031 + source = "registry+https://github.com/rust-lang/crates.io-index" 2032 + checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" 2033 + dependencies = [ 2034 + "proc-macro2", 2035 + "quote", 2036 + "syn 2.0.118", 2037 + ] 2038 + 2039 + [[package]] 2040 + name = "dlopen2" 2041 + version = "0.8.2" 2042 + source = "registry+https://github.com/rust-lang/crates.io-index" 2043 + checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" 2044 + dependencies = [ 2045 + "dlopen2_derive", 2046 + "libc", 2047 + "once_cell", 2048 + "winapi", 2049 + ] 2050 + 2051 + [[package]] 2052 + name = "dlopen2_derive" 2053 + version = "0.4.3" 2054 + source = "registry+https://github.com/rust-lang/crates.io-index" 2055 + checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" 2056 + dependencies = [ 2057 + "proc-macro2", 2058 + "quote", 2059 + "syn 2.0.118", 2060 + ] 2061 + 2062 + [[package]] 2063 + name = "document-features" 2064 + version = "0.2.12" 2065 + source = "registry+https://github.com/rust-lang/crates.io-index" 2066 + checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" 2067 + dependencies = [ 2068 + "litrs", 2069 + ] 2070 + 2071 + [[package]] 2072 + name = "dotenvy" 2073 + version = "0.15.7" 2074 + source = "registry+https://github.com/rust-lang/crates.io-index" 2075 + checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 2076 + 2077 + [[package]] 2078 + name = "dpi" 2079 + version = "0.1.2" 2080 + source = "registry+https://github.com/rust-lang/crates.io-index" 2081 + checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" 2082 + 2083 + [[package]] 2084 + name = "dtoa" 2085 + version = "1.0.11" 2086 + source = "registry+https://github.com/rust-lang/crates.io-index" 2087 + checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" 2088 + 2089 + [[package]] 2090 + name = "dtoa-short" 2091 + version = "0.3.5" 2092 + source = "registry+https://github.com/rust-lang/crates.io-index" 2093 + checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" 2094 + dependencies = [ 2095 + "dtoa", 2096 + ] 2097 + 2098 + [[package]] 2099 + name = "dunce" 2100 + version = "1.0.5" 2101 + source = "registry+https://github.com/rust-lang/crates.io-index" 2102 + checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" 2103 + 2104 + [[package]] 2105 + name = "ecdsa" 2106 + version = "0.16.9" 2107 + source = "registry+https://github.com/rust-lang/crates.io-index" 2108 + checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" 2109 + dependencies = [ 2110 + "der", 2111 + "digest", 2112 + "elliptic-curve", 2113 + "rfc6979", 2114 + "signature", 2115 + "spki", 2116 + ] 2117 + 2118 + [[package]] 2119 + name = "ed25519" 2120 + version = "2.2.3" 2121 + source = "registry+https://github.com/rust-lang/crates.io-index" 2122 + checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" 2123 + dependencies = [ 2124 + "pkcs8", 2125 + "signature", 2126 + ] 2127 + 2128 + [[package]] 2129 + name = "ed25519-dalek" 2130 + version = "2.2.0" 2131 + source = "registry+https://github.com/rust-lang/crates.io-index" 2132 + checksum = "70e796c081cee67dc755e1a36a0a172b897fab85fc3f6bc48307991f64e4eca9" 2133 + dependencies = [ 2134 + "curve25519-dalek", 2135 + "ed25519", 2136 + "rand_core 0.6.4", 2137 + "serde", 2138 + "sha2", 2139 + "subtle", 2140 + "zeroize", 2141 + ] 2142 + 2143 + [[package]] 2144 + name = "either" 2145 + version = "1.16.0" 2146 + source = "registry+https://github.com/rust-lang/crates.io-index" 2147 + checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" 2148 + 2149 + [[package]] 2150 + name = "elliptic-curve" 2151 + version = "0.13.8" 2152 + source = "registry+https://github.com/rust-lang/crates.io-index" 2153 + checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" 2154 + dependencies = [ 2155 + "base16ct", 2156 + "crypto-bigint", 2157 + "digest", 2158 + "ff", 2159 + "generic-array", 2160 + "group", 2161 + "hkdf", 2162 + "pem-rfc7468", 2163 + "pkcs8", 2164 + "rand_core 0.6.4", 2165 + "sec1", 2166 + "subtle", 2167 + "zeroize", 2168 + ] 2169 + 2170 + [[package]] 2171 + name = "embedded-io" 2172 + version = "0.4.0" 2173 + source = "registry+https://github.com/rust-lang/crates.io-index" 2174 + checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" 2175 + 2176 + [[package]] 2177 + name = "embedded-io" 2178 + version = "0.6.1" 2179 + source = "registry+https://github.com/rust-lang/crates.io-index" 2180 + checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" 2181 + 2182 + [[package]] 2183 + name = "encoding_rs" 2184 + version = "0.8.35" 2185 + source = "registry+https://github.com/rust-lang/crates.io-index" 2186 + checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 2187 + dependencies = [ 2188 + "cfg-if", 2189 + ] 2190 + 2191 + [[package]] 2192 + name = "enumset" 2193 + version = "1.1.13" 2194 + source = "registry+https://github.com/rust-lang/crates.io-index" 2195 + checksum = "839c4174b41e75c8f7306110b2c51996a293b8d1d850edd529011841d9fede7d" 2196 + dependencies = [ 2197 + "enumset_derive", 2198 + ] 2199 + 2200 + [[package]] 2201 + name = "enumset_derive" 2202 + version = "0.15.0" 2203 + source = "registry+https://github.com/rust-lang/crates.io-index" 2204 + checksum = "4bd536557b58c682b217b8fb199afdff47cd3eff260623f19e77074eb073d63a" 2205 + dependencies = [ 2206 + "darling 0.21.3", 2207 + "proc-macro2", 2208 + "quote", 2209 + "syn 2.0.118", 2210 + ] 2211 + 2212 + [[package]] 2213 + name = "equator" 2214 + version = "0.4.2" 2215 + source = "registry+https://github.com/rust-lang/crates.io-index" 2216 + checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" 2217 + dependencies = [ 2218 + "equator-macro", 2219 + ] 2220 + 2221 + [[package]] 2222 + name = "equator-macro" 2223 + version = "0.4.2" 2224 + source = "registry+https://github.com/rust-lang/crates.io-index" 2225 + checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" 2226 + dependencies = [ 2227 + "proc-macro2", 2228 + "quote", 2229 + "syn 2.0.118", 2230 + ] 2231 + 2232 + [[package]] 2233 + name = "equivalent" 2234 + version = "1.0.2" 2235 + source = "registry+https://github.com/rust-lang/crates.io-index" 2236 + checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 2237 + 2238 + [[package]] 2239 + name = "errno" 2240 + version = "0.3.14" 2241 + source = "registry+https://github.com/rust-lang/crates.io-index" 2242 + checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 2243 + dependencies = [ 2244 + "libc", 2245 + "windows-sys 0.61.2", 2246 + ] 2247 + 2248 + [[package]] 2249 + name = "euclid" 2250 + version = "0.22.14" 2251 + source = "registry+https://github.com/rust-lang/crates.io-index" 2252 + checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" 2253 + dependencies = [ 2254 + "num-traits", 2255 + "serde", 2256 + ] 2257 + 2258 + [[package]] 2259 + name = "exr" 2260 + version = "1.74.0" 2261 + source = "registry+https://github.com/rust-lang/crates.io-index" 2262 + checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" 2263 + dependencies = [ 2264 + "bit_field", 2265 + "half", 2266 + "lebe", 2267 + "miniz_oxide", 2268 + "rayon-core", 2269 + "smallvec", 2270 + "zune-inflate", 2271 + ] 2272 + 2273 + [[package]] 2274 + name = "fastrand" 2275 + version = "2.4.1" 2276 + source = "registry+https://github.com/rust-lang/crates.io-index" 2277 + checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" 2278 + 2279 + [[package]] 2280 + name = "fax" 2281 + version = "0.2.7" 2282 + source = "registry+https://github.com/rust-lang/crates.io-index" 2283 + checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" 2284 + 2285 + [[package]] 2286 + name = "fdeflate" 2287 + version = "0.3.7" 2288 + source = "registry+https://github.com/rust-lang/crates.io-index" 2289 + checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" 2290 + dependencies = [ 2291 + "simd-adler32", 2292 + ] 2293 + 2294 + [[package]] 2295 + name = "ff" 2296 + version = "0.13.1" 2297 + source = "registry+https://github.com/rust-lang/crates.io-index" 2298 + checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" 2299 + dependencies = [ 2300 + "rand_core 0.6.4", 2301 + "subtle", 2302 + ] 2303 + 2304 + [[package]] 2305 + name = "fiat-crypto" 2306 + version = "0.2.9" 2307 + source = "registry+https://github.com/rust-lang/crates.io-index" 2308 + checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" 2309 + 2310 + [[package]] 2311 + name = "field-offset" 2312 + version = "0.3.6" 2313 + source = "registry+https://github.com/rust-lang/crates.io-index" 2314 + checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" 2315 + dependencies = [ 2316 + "memoffset", 2317 + "rustc_version", 2318 + ] 2319 + 2320 + [[package]] 2321 + name = "find-msvc-tools" 2322 + version = "0.1.9" 2323 + source = "registry+https://github.com/rust-lang/crates.io-index" 2324 + checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" 2325 + 2326 + [[package]] 2327 + name = "flate2" 2328 + version = "1.1.9" 2329 + source = "registry+https://github.com/rust-lang/crates.io-index" 2330 + checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" 2331 + dependencies = [ 2332 + "crc32fast", 2333 + "miniz_oxide", 2334 + ] 2335 + 2336 + [[package]] 2337 + name = "fluent-uri" 2338 + version = "0.4.1" 2339 + source = "registry+https://github.com/rust-lang/crates.io-index" 2340 + checksum = "bc74ac4d8359ae70623506d512209619e5cf8f347124910440dbc221714b328e" 2341 + dependencies = [ 2342 + "borrow-or-share", 2343 + "ref-cast", 2344 + "serde", 2345 + ] 2346 + 2347 + [[package]] 2348 + name = "fnv" 2349 + version = "1.0.7" 2350 + source = "registry+https://github.com/rust-lang/crates.io-index" 2351 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 2352 + 2353 + [[package]] 2354 + name = "foldhash" 2355 + version = "0.1.5" 2356 + source = "registry+https://github.com/rust-lang/crates.io-index" 2357 + checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 2358 + 2359 + [[package]] 2360 + name = "foldhash" 2361 + version = "0.2.0" 2362 + source = "registry+https://github.com/rust-lang/crates.io-index" 2363 + checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" 2364 + 2365 + [[package]] 2366 + name = "foreign-types" 2367 + version = "0.3.2" 2368 + source = "registry+https://github.com/rust-lang/crates.io-index" 2369 + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 2370 + dependencies = [ 2371 + "foreign-types-shared 0.1.1", 2372 + ] 2373 + 2374 + [[package]] 2375 + name = "foreign-types" 2376 + version = "0.5.0" 2377 + source = "registry+https://github.com/rust-lang/crates.io-index" 2378 + checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 2379 + dependencies = [ 2380 + "foreign-types-macros", 2381 + "foreign-types-shared 0.3.1", 2382 + ] 2383 + 2384 + [[package]] 2385 + name = "foreign-types-macros" 2386 + version = "0.2.3" 2387 + source = "registry+https://github.com/rust-lang/crates.io-index" 2388 + checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 2389 + dependencies = [ 2390 + "proc-macro2", 2391 + "quote", 2392 + "syn 2.0.118", 2393 + ] 2394 + 2395 + [[package]] 2396 + name = "foreign-types-shared" 2397 + version = "0.1.1" 2398 + source = "registry+https://github.com/rust-lang/crates.io-index" 2399 + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 2400 + 2401 + [[package]] 2402 + name = "foreign-types-shared" 2403 + version = "0.3.1" 2404 + source = "registry+https://github.com/rust-lang/crates.io-index" 2405 + checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 2406 + 2407 + [[package]] 2408 + name = "form_urlencoded" 2409 + version = "1.2.2" 2410 + source = "registry+https://github.com/rust-lang/crates.io-index" 2411 + checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 2412 + dependencies = [ 2413 + "percent-encoding", 2414 + ] 2415 + 2416 + [[package]] 2417 + name = "futf" 2418 + version = "0.1.5" 2419 + source = "registry+https://github.com/rust-lang/crates.io-index" 2420 + checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" 2421 + dependencies = [ 2422 + "mac", 2423 + "new_debug_unreachable", 2424 + ] 2425 + 2426 + [[package]] 2427 + name = "futures" 2428 + version = "0.3.32" 2429 + source = "registry+https://github.com/rust-lang/crates.io-index" 2430 + checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" 2431 + dependencies = [ 2432 + "futures-channel", 2433 + "futures-core", 2434 + "futures-executor", 2435 + "futures-io", 2436 + "futures-sink", 2437 + "futures-task", 2438 + "futures-util", 2439 + ] 2440 + 2441 + [[package]] 2442 + name = "futures-buffered" 2443 + version = "0.2.13" 2444 + source = "registry+https://github.com/rust-lang/crates.io-index" 2445 + checksum = "4421cb78ee172b6b06080093479d3c50f058e7c81b7d577bbb8d118d551d4cd5" 2446 + dependencies = [ 2447 + "cordyceps", 2448 + "diatomic-waker", 2449 + "futures-core", 2450 + "pin-project-lite", 2451 + "spin 0.10.0", 2452 + ] 2453 + 2454 + [[package]] 2455 + name = "futures-channel" 2456 + version = "0.3.32" 2457 + source = "registry+https://github.com/rust-lang/crates.io-index" 2458 + checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" 2459 + dependencies = [ 2460 + "futures-core", 2461 + "futures-sink", 2462 + ] 2463 + 2464 + [[package]] 2465 + name = "futures-core" 2466 + version = "0.3.32" 2467 + source = "registry+https://github.com/rust-lang/crates.io-index" 2468 + checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" 2469 + 2470 + [[package]] 2471 + name = "futures-executor" 2472 + version = "0.3.32" 2473 + source = "registry+https://github.com/rust-lang/crates.io-index" 2474 + checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" 2475 + dependencies = [ 2476 + "futures-core", 2477 + "futures-task", 2478 + "futures-util", 2479 + ] 2480 + 2481 + [[package]] 2482 + name = "futures-io" 2483 + version = "0.3.32" 2484 + source = "registry+https://github.com/rust-lang/crates.io-index" 2485 + checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" 2486 + 2487 + [[package]] 2488 + name = "futures-lite" 2489 + version = "2.6.1" 2490 + source = "registry+https://github.com/rust-lang/crates.io-index" 2491 + checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" 2492 + dependencies = [ 2493 + "fastrand", 2494 + "futures-core", 2495 + "futures-io", 2496 + "parking", 2497 + "pin-project-lite", 2498 + ] 2499 + 2500 + [[package]] 2501 + name = "futures-macro" 2502 + version = "0.3.32" 2503 + source = "registry+https://github.com/rust-lang/crates.io-index" 2504 + checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" 2505 + dependencies = [ 2506 + "proc-macro2", 2507 + "quote", 2508 + "syn 2.0.118", 2509 + ] 2510 + 2511 + [[package]] 2512 + name = "futures-sink" 2513 + version = "0.3.32" 2514 + source = "registry+https://github.com/rust-lang/crates.io-index" 2515 + checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" 2516 + 2517 + [[package]] 2518 + name = "futures-task" 2519 + version = "0.3.32" 2520 + source = "registry+https://github.com/rust-lang/crates.io-index" 2521 + checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" 2522 + 2523 + [[package]] 2524 + name = "futures-util" 2525 + version = "0.3.32" 2526 + source = "registry+https://github.com/rust-lang/crates.io-index" 2527 + checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" 2528 + dependencies = [ 2529 + "futures-channel", 2530 + "futures-core", 2531 + "futures-io", 2532 + "futures-macro", 2533 + "futures-sink", 2534 + "futures-task", 2535 + "memchr", 2536 + "pin-project-lite", 2537 + "slab", 2538 + ] 2539 + 2540 + [[package]] 2541 + name = "fxhash" 2542 + version = "0.2.1" 2543 + source = "registry+https://github.com/rust-lang/crates.io-index" 2544 + checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 2545 + dependencies = [ 2546 + "byteorder", 2547 + ] 2548 + 2549 + [[package]] 2550 + name = "gdk" 2551 + version = "0.18.2" 2552 + source = "registry+https://github.com/rust-lang/crates.io-index" 2553 + checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" 2554 + dependencies = [ 2555 + "cairo-rs", 2556 + "gdk-pixbuf", 2557 + "gdk-sys", 2558 + "gio", 2559 + "glib", 2560 + "libc", 2561 + "pango", 2562 + ] 2563 + 2564 + [[package]] 2565 + name = "gdk-pixbuf" 2566 + version = "0.18.5" 2567 + source = "registry+https://github.com/rust-lang/crates.io-index" 2568 + checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" 2569 + dependencies = [ 2570 + "gdk-pixbuf-sys", 2571 + "gio", 2572 + "glib", 2573 + "libc", 2574 + "once_cell", 2575 + ] 2576 + 2577 + [[package]] 2578 + name = "gdk-pixbuf-sys" 2579 + version = "0.18.0" 2580 + source = "registry+https://github.com/rust-lang/crates.io-index" 2581 + checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" 2582 + dependencies = [ 2583 + "gio-sys", 2584 + "glib-sys", 2585 + "gobject-sys", 2586 + "libc", 2587 + "system-deps", 2588 + ] 2589 + 2590 + [[package]] 2591 + name = "gdk-sys" 2592 + version = "0.18.2" 2593 + source = "registry+https://github.com/rust-lang/crates.io-index" 2594 + checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" 2595 + dependencies = [ 2596 + "cairo-sys-rs", 2597 + "gdk-pixbuf-sys", 2598 + "gio-sys", 2599 + "glib-sys", 2600 + "gobject-sys", 2601 + "libc", 2602 + "pango-sys", 2603 + "pkg-config", 2604 + "system-deps", 2605 + ] 2606 + 2607 + [[package]] 2608 + name = "gdkwayland-sys" 2609 + version = "0.18.2" 2610 + source = "registry+https://github.com/rust-lang/crates.io-index" 2611 + checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" 2612 + dependencies = [ 2613 + "gdk-sys", 2614 + "glib-sys", 2615 + "gobject-sys", 2616 + "libc", 2617 + "pkg-config", 2618 + "system-deps", 2619 + ] 2620 + 2621 + [[package]] 2622 + name = "gdkx11-sys" 2623 + version = "0.18.2" 2624 + source = "registry+https://github.com/rust-lang/crates.io-index" 2625 + checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" 2626 + dependencies = [ 2627 + "gdk-sys", 2628 + "glib-sys", 2629 + "libc", 2630 + "system-deps", 2631 + "x11", 2632 + ] 2633 + 2634 + [[package]] 2635 + name = "generational-box" 2636 + version = "0.7.9" 2637 + source = "registry+https://github.com/rust-lang/crates.io-index" 2638 + checksum = "8cd0d825b8d339701ad330dbcd6399519ced4d143484954daf6e3185dace4f77" 2639 + dependencies = [ 2640 + "parking_lot", 2641 + "tracing", 2642 + ] 2643 + 2644 + [[package]] 2645 + name = "generator" 2646 + version = "0.8.9" 2647 + source = "registry+https://github.com/rust-lang/crates.io-index" 2648 + checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" 2649 + dependencies = [ 2650 + "cc", 2651 + "cfg-if", 2652 + "libc", 2653 + "log", 2654 + "rustversion", 2655 + "windows-link 0.2.1", 2656 + "windows-result 0.4.1", 2657 + ] 2658 + 2659 + [[package]] 2660 + name = "generic-array" 2661 + version = "0.14.9" 2662 + source = "registry+https://github.com/rust-lang/crates.io-index" 2663 + checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" 2664 + dependencies = [ 2665 + "typenum", 2666 + "version_check", 2667 + "zeroize", 2668 + ] 2669 + 2670 + [[package]] 2671 + name = "gethostname" 2672 + version = "1.1.0" 2673 + source = "registry+https://github.com/rust-lang/crates.io-index" 2674 + checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" 2675 + dependencies = [ 2676 + "rustix", 2677 + "windows-link 0.2.1", 2678 + ] 2679 + 2680 + [[package]] 2681 + name = "getrandom" 2682 + version = "0.1.16" 2683 + source = "registry+https://github.com/rust-lang/crates.io-index" 2684 + checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 2685 + dependencies = [ 2686 + "cfg-if", 2687 + "libc", 2688 + "wasi 0.9.0+wasi-snapshot-preview1", 2689 + ] 2690 + 2691 + [[package]] 2692 + name = "getrandom" 2693 + version = "0.2.17" 2694 + source = "registry+https://github.com/rust-lang/crates.io-index" 2695 + checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" 2696 + dependencies = [ 2697 + "cfg-if", 2698 + "js-sys", 2699 + "libc", 2700 + "wasi 0.11.1+wasi-snapshot-preview1", 2701 + "wasm-bindgen", 2702 + ] 2703 + 2704 + [[package]] 2705 + name = "getrandom" 2706 + version = "0.3.4" 2707 + source = "registry+https://github.com/rust-lang/crates.io-index" 2708 + checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 2709 + dependencies = [ 2710 + "cfg-if", 2711 + "js-sys", 2712 + "libc", 2713 + "r-efi 5.3.0", 2714 + "wasip2", 2715 + "wasm-bindgen", 2716 + ] 2717 + 2718 + [[package]] 2719 + name = "getrandom" 2720 + version = "0.4.3" 2721 + source = "registry+https://github.com/rust-lang/crates.io-index" 2722 + checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" 2723 + dependencies = [ 2724 + "cfg-if", 2725 + "libc", 2726 + "r-efi 6.0.0", 2727 + ] 2728 + 2729 + [[package]] 2730 + name = "gif" 2731 + version = "0.14.2" 2732 + source = "registry+https://github.com/rust-lang/crates.io-index" 2733 + checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" 2734 + dependencies = [ 2735 + "color_quant", 2736 + "weezl", 2737 + ] 2738 + 2739 + [[package]] 2740 + name = "gio" 2741 + version = "0.18.4" 2742 + source = "registry+https://github.com/rust-lang/crates.io-index" 2743 + checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" 2744 + dependencies = [ 2745 + "futures-channel", 2746 + "futures-core", 2747 + "futures-io", 2748 + "futures-util", 2749 + "gio-sys", 2750 + "glib", 2751 + "libc", 2752 + "once_cell", 2753 + "pin-project-lite", 2754 + "smallvec", 2755 + "thiserror 1.0.69", 2756 + ] 2757 + 2758 + [[package]] 2759 + name = "gio-sys" 2760 + version = "0.18.1" 2761 + source = "registry+https://github.com/rust-lang/crates.io-index" 2762 + checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" 2763 + dependencies = [ 2764 + "glib-sys", 2765 + "gobject-sys", 2766 + "libc", 2767 + "system-deps", 2768 + "winapi", 2769 + ] 2770 + 2771 + [[package]] 2772 + name = "glib" 2773 + version = "0.18.5" 2774 + source = "registry+https://github.com/rust-lang/crates.io-index" 2775 + checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" 2776 + dependencies = [ 2777 + "bitflags 2.13.0", 2778 + "futures-channel", 2779 + "futures-core", 2780 + "futures-executor", 2781 + "futures-task", 2782 + "futures-util", 2783 + "gio-sys", 2784 + "glib-macros", 2785 + "glib-sys", 2786 + "gobject-sys", 2787 + "libc", 2788 + "memchr", 2789 + "once_cell", 2790 + "smallvec", 2791 + "thiserror 1.0.69", 2792 + ] 2793 + 2794 + [[package]] 2795 + name = "glib-macros" 2796 + version = "0.18.5" 2797 + source = "registry+https://github.com/rust-lang/crates.io-index" 2798 + checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" 2799 + dependencies = [ 2800 + "heck 0.4.1", 2801 + "proc-macro-crate 2.0.2", 2802 + "proc-macro-error", 2803 + "proc-macro2", 2804 + "quote", 2805 + "syn 2.0.118", 2806 + ] 2807 + 2808 + [[package]] 2809 + name = "glib-sys" 2810 + version = "0.18.1" 2811 + source = "registry+https://github.com/rust-lang/crates.io-index" 2812 + checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" 2813 + dependencies = [ 2814 + "libc", 2815 + "system-deps", 2816 + ] 2817 + 2818 + [[package]] 2819 + name = "global-hotkey" 2820 + version = "0.7.0" 2821 + source = "registry+https://github.com/rust-lang/crates.io-index" 2822 + checksum = "b9247516746aa8e53411a0db9b62b0e24efbcf6a76e0ba73e5a91b512ddabed7" 2823 + dependencies = [ 2824 + "crossbeam-channel", 2825 + "keyboard-types", 2826 + "objc2", 2827 + "objc2-app-kit", 2828 + "once_cell", 2829 + "thiserror 2.0.18", 2830 + "windows-sys 0.59.0", 2831 + "x11rb", 2832 + "xkeysym", 2833 + ] 2834 + 2835 + [[package]] 2836 + name = "gloo-net" 2837 + version = "0.6.0" 2838 + source = "registry+https://github.com/rust-lang/crates.io-index" 2839 + checksum = "c06f627b1a58ca3d42b45d6104bf1e1a03799df472df00988b6ba21accc10580" 2840 + dependencies = [ 2841 + "futures-channel", 2842 + "futures-core", 2843 + "futures-sink", 2844 + "gloo-utils", 2845 + "http", 2846 + "js-sys", 2847 + "pin-project", 2848 + "serde", 2849 + "serde_json", 2850 + "thiserror 1.0.69", 2851 + "wasm-bindgen", 2852 + "wasm-bindgen-futures", 2853 + "web-sys", 2854 + ] 2855 + 2856 + [[package]] 2857 + name = "gloo-storage" 2858 + version = "0.3.0" 2859 + source = "registry+https://github.com/rust-lang/crates.io-index" 2860 + checksum = "fbc8031e8c92758af912f9bc08fbbadd3c6f3cfcbf6b64cdf3d6a81f0139277a" 2861 + dependencies = [ 2862 + "gloo-utils", 2863 + "js-sys", 2864 + "serde", 2865 + "serde_json", 2866 + "thiserror 1.0.69", 2867 + "wasm-bindgen", 2868 + "web-sys", 2869 + ] 2870 + 2871 + [[package]] 2872 + name = "gloo-timers" 2873 + version = "0.3.0" 2874 + source = "registry+https://github.com/rust-lang/crates.io-index" 2875 + checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" 2876 + dependencies = [ 2877 + "futures-channel", 2878 + "futures-core", 2879 + "js-sys", 2880 + "wasm-bindgen", 2881 + ] 2882 + 2883 + [[package]] 2884 + name = "gloo-utils" 2885 + version = "0.2.0" 2886 + source = "registry+https://github.com/rust-lang/crates.io-index" 2887 + checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa" 2888 + dependencies = [ 2889 + "js-sys", 2890 + "serde", 2891 + "serde_json", 2892 + "wasm-bindgen", 2893 + "web-sys", 2894 + ] 2895 + 2896 + [[package]] 2897 + name = "gobject-sys" 2898 + version = "0.18.0" 2899 + source = "registry+https://github.com/rust-lang/crates.io-index" 2900 + checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" 2901 + dependencies = [ 2902 + "glib-sys", 2903 + "libc", 2904 + "system-deps", 2905 + ] 2906 + 2907 + [[package]] 2908 + name = "group" 2909 + version = "0.13.0" 2910 + source = "registry+https://github.com/rust-lang/crates.io-index" 2911 + checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" 2912 + dependencies = [ 2913 + "ff", 2914 + "rand_core 0.6.4", 2915 + "subtle", 2916 + ] 2917 + 2918 + [[package]] 2919 + name = "gtk" 2920 + version = "0.18.2" 2921 + source = "registry+https://github.com/rust-lang/crates.io-index" 2922 + checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" 2923 + dependencies = [ 2924 + "atk", 2925 + "cairo-rs", 2926 + "field-offset", 2927 + "futures-channel", 2928 + "gdk", 2929 + "gdk-pixbuf", 2930 + "gio", 2931 + "glib", 2932 + "gtk-sys", 2933 + "gtk3-macros", 2934 + "libc", 2935 + "pango", 2936 + "pkg-config", 2937 + ] 2938 + 2939 + [[package]] 2940 + name = "gtk-sys" 2941 + version = "0.18.2" 2942 + source = "registry+https://github.com/rust-lang/crates.io-index" 2943 + checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" 2944 + dependencies = [ 2945 + "atk-sys", 2946 + "cairo-sys-rs", 2947 + "gdk-pixbuf-sys", 2948 + "gdk-sys", 2949 + "gio-sys", 2950 + "glib-sys", 2951 + "gobject-sys", 2952 + "libc", 2953 + "pango-sys", 2954 + "system-deps", 2955 + ] 2956 + 2957 + [[package]] 2958 + name = "gtk3-macros" 2959 + version = "0.18.2" 2960 + source = "registry+https://github.com/rust-lang/crates.io-index" 2961 + checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" 2962 + dependencies = [ 2963 + "proc-macro-crate 1.3.1", 2964 + "proc-macro-error", 2965 + "proc-macro2", 2966 + "quote", 2967 + "syn 2.0.118", 2968 + ] 2969 + 2970 + [[package]] 2971 + name = "h2" 2972 + version = "0.4.15" 2973 + source = "registry+https://github.com/rust-lang/crates.io-index" 2974 + checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" 2975 + dependencies = [ 2976 + "atomic-waker", 2977 + "bytes", 2978 + "fnv", 2979 + "futures-core", 2980 + "futures-sink", 2981 + "http", 2982 + "indexmap", 2983 + "slab", 2984 + "tokio", 2985 + "tokio-util", 2986 + "tracing", 2987 + ] 2988 + 2989 + [[package]] 2990 + name = "half" 2991 + version = "2.7.1" 2992 + source = "registry+https://github.com/rust-lang/crates.io-index" 2993 + checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" 2994 + dependencies = [ 2995 + "cfg-if", 2996 + "crunchy", 2997 + "zerocopy", 2998 + ] 2999 + 3000 + [[package]] 3001 + name = "hash32" 3002 + version = "0.2.1" 3003 + source = "registry+https://github.com/rust-lang/crates.io-index" 3004 + checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 3005 + dependencies = [ 3006 + "byteorder", 3007 + ] 3008 + 3009 + [[package]] 3010 + name = "hashbrown" 3011 + version = "0.14.5" 3012 + source = "registry+https://github.com/rust-lang/crates.io-index" 3013 + checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 3014 + 3015 + [[package]] 3016 + name = "hashbrown" 3017 + version = "0.15.5" 3018 + source = "registry+https://github.com/rust-lang/crates.io-index" 3019 + checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 3020 + dependencies = [ 3021 + "allocator-api2", 3022 + "equivalent", 3023 + "foldhash 0.1.5", 3024 + ] 3025 + 3026 + [[package]] 3027 + name = "hashbrown" 3028 + version = "0.16.1" 3029 + source = "registry+https://github.com/rust-lang/crates.io-index" 3030 + checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" 3031 + dependencies = [ 3032 + "allocator-api2", 3033 + "equivalent", 3034 + "foldhash 0.2.0", 3035 + ] 3036 + 3037 + [[package]] 3038 + name = "hashbrown" 3039 + version = "0.17.1" 3040 + source = "registry+https://github.com/rust-lang/crates.io-index" 3041 + checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" 3042 + 3043 + [[package]] 3044 + name = "headers" 3045 + version = "0.4.1" 3046 + source = "registry+https://github.com/rust-lang/crates.io-index" 3047 + checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" 3048 + dependencies = [ 3049 + "base64", 3050 + "bytes", 3051 + "headers-core", 3052 + "http", 3053 + "httpdate", 3054 + "mime", 3055 + "sha1", 3056 + ] 3057 + 3058 + [[package]] 3059 + name = "headers-core" 3060 + version = "0.3.0" 3061 + source = "registry+https://github.com/rust-lang/crates.io-index" 3062 + checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" 3063 + dependencies = [ 3064 + "http", 3065 + ] 3066 + 3067 + [[package]] 3068 + name = "heapless" 3069 + version = "0.7.17" 3070 + source = "registry+https://github.com/rust-lang/crates.io-index" 3071 + checksum = "cdc6457c0eb62c71aac4bc17216026d8410337c4126773b9c5daba343f17964f" 3072 + dependencies = [ 3073 + "atomic-polyfill", 3074 + "hash32", 3075 + "rustc_version", 3076 + "serde", 3077 + "spin 0.9.8", 3078 + "stable_deref_trait", 3079 + ] 3080 + 3081 + [[package]] 3082 + name = "heck" 3083 + version = "0.4.1" 3084 + source = "registry+https://github.com/rust-lang/crates.io-index" 3085 + checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 3086 + 3087 + [[package]] 3088 + name = "heck" 3089 + version = "0.5.0" 3090 + source = "registry+https://github.com/rust-lang/crates.io-index" 3091 + checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 3092 + 3093 + [[package]] 3094 + name = "hex" 3095 + version = "0.4.3" 3096 + source = "registry+https://github.com/rust-lang/crates.io-index" 3097 + checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 3098 + 3099 + [[package]] 3100 + name = "hkdf" 3101 + version = "0.12.4" 3102 + source = "registry+https://github.com/rust-lang/crates.io-index" 3103 + checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" 3104 + dependencies = [ 3105 + "hmac", 3106 + ] 3107 + 3108 + [[package]] 3109 + name = "hmac" 3110 + version = "0.12.1" 3111 + source = "registry+https://github.com/rust-lang/crates.io-index" 3112 + checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 3113 + dependencies = [ 3114 + "digest", 3115 + ] 3116 + 3117 + [[package]] 3118 + name = "html5ever" 3119 + version = "0.27.0" 3120 + source = "registry+https://github.com/rust-lang/crates.io-index" 3121 + checksum = "c13771afe0e6e846f1e67d038d4cb29998a6779f93c809212e4e9c32efd244d4" 3122 + dependencies = [ 3123 + "log", 3124 + "mac", 3125 + "markup5ever 0.12.1", 3126 + "proc-macro2", 3127 + "quote", 3128 + "syn 2.0.118", 3129 + ] 3130 + 3131 + [[package]] 3132 + name = "html5ever" 3133 + version = "0.29.1" 3134 + source = "registry+https://github.com/rust-lang/crates.io-index" 3135 + checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" 3136 + dependencies = [ 3137 + "log", 3138 + "mac", 3139 + "markup5ever 0.14.1", 3140 + "match_token", 3141 + ] 3142 + 3143 + [[package]] 3144 + name = "http" 3145 + version = "1.4.2" 3146 + source = "registry+https://github.com/rust-lang/crates.io-index" 3147 + checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" 3148 + dependencies = [ 3149 + "bytes", 3150 + "itoa", 3151 + ] 3152 + 3153 + [[package]] 3154 + name = "http-body" 3155 + version = "1.0.1" 3156 + source = "registry+https://github.com/rust-lang/crates.io-index" 3157 + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 3158 + dependencies = [ 3159 + "bytes", 3160 + "http", 3161 + ] 3162 + 3163 + [[package]] 3164 + name = "http-body-util" 3165 + version = "0.1.3" 3166 + source = "registry+https://github.com/rust-lang/crates.io-index" 3167 + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 3168 + dependencies = [ 3169 + "bytes", 3170 + "futures-core", 3171 + "http", 3172 + "http-body", 3173 + "pin-project-lite", 3174 + ] 3175 + 3176 + [[package]] 3177 + name = "http-range-header" 3178 + version = "0.4.2" 3179 + source = "registry+https://github.com/rust-lang/crates.io-index" 3180 + checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" 3181 + 3182 + [[package]] 3183 + name = "httparse" 3184 + version = "1.10.1" 3185 + source = "registry+https://github.com/rust-lang/crates.io-index" 3186 + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 3187 + 3188 + [[package]] 3189 + name = "httpdate" 3190 + version = "1.0.3" 3191 + source = "registry+https://github.com/rust-lang/crates.io-index" 3192 + checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 3193 + 3194 + [[package]] 3195 + name = "hyper" 3196 + version = "1.10.1" 3197 + source = "registry+https://github.com/rust-lang/crates.io-index" 3198 + checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" 3199 + dependencies = [ 3200 + "atomic-waker", 3201 + "bytes", 3202 + "futures-channel", 3203 + "futures-core", 3204 + "h2", 3205 + "http", 3206 + "http-body", 3207 + "httparse", 3208 + "httpdate", 3209 + "itoa", 3210 + "pin-project-lite", 3211 + "smallvec", 3212 + "tokio", 3213 + "want", 3214 + ] 3215 + 3216 + [[package]] 3217 + name = "hyper-rustls" 3218 + version = "0.27.9" 3219 + source = "registry+https://github.com/rust-lang/crates.io-index" 3220 + checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" 3221 + dependencies = [ 3222 + "http", 3223 + "hyper", 3224 + "hyper-util", 3225 + "rustls", 3226 + "tokio", 3227 + "tokio-rustls", 3228 + "tower-service", 3229 + "webpki-roots", 3230 + ] 3231 + 3232 + [[package]] 3233 + name = "hyper-util" 3234 + version = "0.1.20" 3235 + source = "registry+https://github.com/rust-lang/crates.io-index" 3236 + checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" 3237 + dependencies = [ 3238 + "base64", 3239 + "bytes", 3240 + "futures-channel", 3241 + "futures-util", 3242 + "http", 3243 + "http-body", 3244 + "hyper", 3245 + "ipnet", 3246 + "libc", 3247 + "percent-encoding", 3248 + "pin-project-lite", 3249 + "socket2", 3250 + "system-configuration", 3251 + "tokio", 3252 + "tower-layer", 3253 + "tower-service", 3254 + "tracing", 3255 + "windows-registry", 3256 + ] 3257 + 3258 + [[package]] 3259 + name = "iana-time-zone" 3260 + version = "0.1.65" 3261 + source = "registry+https://github.com/rust-lang/crates.io-index" 3262 + checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" 3263 + dependencies = [ 3264 + "android_system_properties", 3265 + "core-foundation-sys", 3266 + "iana-time-zone-haiku", 3267 + "js-sys", 3268 + "log", 3269 + "wasm-bindgen", 3270 + "windows-core 0.62.2", 3271 + ] 3272 + 3273 + [[package]] 3274 + name = "iana-time-zone-haiku" 3275 + version = "0.1.2" 3276 + source = "registry+https://github.com/rust-lang/crates.io-index" 3277 + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 3278 + dependencies = [ 3279 + "cc", 3280 + ] 3281 + 3282 + [[package]] 3283 + name = "icu_collections" 3284 + version = "2.2.0" 3285 + source = "registry+https://github.com/rust-lang/crates.io-index" 3286 + checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" 3287 + dependencies = [ 3288 + "displaydoc", 3289 + "potential_utf", 3290 + "utf8_iter", 3291 + "yoke", 3292 + "zerofrom", 3293 + "zerovec", 3294 + ] 3295 + 3296 + [[package]] 3297 + name = "icu_locale_core" 3298 + version = "2.2.0" 3299 + source = "registry+https://github.com/rust-lang/crates.io-index" 3300 + checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" 3301 + dependencies = [ 3302 + "displaydoc", 3303 + "litemap", 3304 + "tinystr", 3305 + "writeable", 3306 + "zerovec", 3307 + ] 3308 + 3309 + [[package]] 3310 + name = "icu_normalizer" 3311 + version = "2.2.0" 3312 + source = "registry+https://github.com/rust-lang/crates.io-index" 3313 + checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" 3314 + dependencies = [ 3315 + "icu_collections", 3316 + "icu_normalizer_data", 3317 + "icu_properties", 3318 + "icu_provider", 3319 + "smallvec", 3320 + "zerovec", 3321 + ] 3322 + 3323 + [[package]] 3324 + name = "icu_normalizer_data" 3325 + version = "2.2.0" 3326 + source = "registry+https://github.com/rust-lang/crates.io-index" 3327 + checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" 3328 + 3329 + [[package]] 3330 + name = "icu_properties" 3331 + version = "2.2.0" 3332 + source = "registry+https://github.com/rust-lang/crates.io-index" 3333 + checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" 3334 + dependencies = [ 3335 + "icu_collections", 3336 + "icu_locale_core", 3337 + "icu_properties_data", 3338 + "icu_provider", 3339 + "zerotrie", 3340 + "zerovec", 3341 + ] 3342 + 3343 + [[package]] 3344 + name = "icu_properties_data" 3345 + version = "2.2.0" 3346 + source = "registry+https://github.com/rust-lang/crates.io-index" 3347 + checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" 3348 + 3349 + [[package]] 3350 + name = "icu_provider" 3351 + version = "2.2.0" 3352 + source = "registry+https://github.com/rust-lang/crates.io-index" 3353 + checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" 3354 + dependencies = [ 3355 + "displaydoc", 3356 + "icu_locale_core", 3357 + "writeable", 3358 + "yoke", 3359 + "zerofrom", 3360 + "zerotrie", 3361 + "zerovec", 3362 + ] 3363 + 3364 + [[package]] 3365 + name = "ident_case" 3366 + version = "1.0.1" 3367 + source = "registry+https://github.com/rust-lang/crates.io-index" 3368 + checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 3369 + 3370 + [[package]] 3371 + name = "idna" 3372 + version = "1.1.0" 3373 + source = "registry+https://github.com/rust-lang/crates.io-index" 3374 + checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 3375 + dependencies = [ 3376 + "idna_adapter", 3377 + "smallvec", 3378 + "utf8_iter", 3379 + ] 3380 + 3381 + [[package]] 3382 + name = "idna_adapter" 3383 + version = "1.2.2" 3384 + source = "registry+https://github.com/rust-lang/crates.io-index" 3385 + checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" 3386 + dependencies = [ 3387 + "icu_normalizer", 3388 + "icu_properties", 3389 + ] 3390 + 3391 + [[package]] 3392 + name = "image" 3393 + version = "0.25.10" 3394 + source = "registry+https://github.com/rust-lang/crates.io-index" 3395 + checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" 3396 + dependencies = [ 3397 + "bytemuck", 3398 + "byteorder-lite", 3399 + "color_quant", 3400 + "exr", 3401 + "gif", 3402 + "image-webp", 3403 + "moxcms", 3404 + "num-traits", 3405 + "png 0.18.1", 3406 + "qoi", 3407 + "ravif", 3408 + "rayon", 3409 + "rgb", 3410 + "tiff", 3411 + "zune-core", 3412 + "zune-jpeg", 3413 + ] 3414 + 3415 + [[package]] 3416 + name = "image-webp" 3417 + version = "0.2.4" 3418 + source = "registry+https://github.com/rust-lang/crates.io-index" 3419 + checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" 3420 + dependencies = [ 3421 + "byteorder-lite", 3422 + "quick-error", 3423 + ] 3424 + 3425 + [[package]] 3426 + name = "imgref" 3427 + version = "1.12.2" 3428 + source = "registry+https://github.com/rust-lang/crates.io-index" 3429 + checksum = "89194689a993ab15268672e99e7b0e19da2da3268ac682e8f02d29d4d1434cd7" 3430 + 3431 + [[package]] 3432 + name = "indexmap" 3433 + version = "2.14.0" 3434 + source = "registry+https://github.com/rust-lang/crates.io-index" 3435 + checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" 3436 + dependencies = [ 3437 + "equivalent", 3438 + "hashbrown 0.17.1", 3439 + ] 3440 + 3441 + [[package]] 3442 + name = "infer" 3443 + version = "0.19.0" 3444 + source = "registry+https://github.com/rust-lang/crates.io-index" 3445 + checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" 3446 + dependencies = [ 3447 + "cfb", 3448 + ] 3449 + 3450 + [[package]] 3451 + name = "interpolate_name" 3452 + version = "0.2.4" 3453 + source = "registry+https://github.com/rust-lang/crates.io-index" 3454 + checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" 3455 + dependencies = [ 3456 + "proc-macro2", 3457 + "quote", 3458 + "syn 2.0.118", 3459 + ] 3460 + 3461 + [[package]] 3462 + name = "inventory" 3463 + version = "0.3.24" 3464 + source = "registry+https://github.com/rust-lang/crates.io-index" 3465 + checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b" 3466 + dependencies = [ 3467 + "rustversion", 3468 + ] 3469 + 3470 + [[package]] 3471 + name = "ipld-core" 3472 + version = "0.4.3" 3473 + source = "registry+https://github.com/rust-lang/crates.io-index" 3474 + checksum = "090f624976d72f0b0bb71b86d58dc16c15e069193067cb3a3a09d655246cbbda" 3475 + dependencies = [ 3476 + "cid", 3477 + "serde", 3478 + "serde_bytes", 3479 + ] 3480 + 3481 + [[package]] 3482 + name = "ipnet" 3483 + version = "2.12.0" 3484 + source = "registry+https://github.com/rust-lang/crates.io-index" 3485 + checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" 3486 + 3487 + [[package]] 3488 + name = "itertools" 3489 + version = "0.14.0" 3490 + source = "registry+https://github.com/rust-lang/crates.io-index" 3491 + checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 3492 + dependencies = [ 3493 + "either", 3494 + ] 3495 + 3496 + [[package]] 3497 + name = "itoa" 3498 + version = "1.0.18" 3499 + source = "registry+https://github.com/rust-lang/crates.io-index" 3500 + checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" 3501 + 3502 + [[package]] 3503 + name = "jacquard" 3504 + version = "0.12.0" 3505 + source = "registry+https://github.com/rust-lang/crates.io-index" 3506 + checksum = "2e30d6ba826a563cb2e86f6c4e2268ef5a216b50ea0ca98a9cd3b6b4cbc7c8cc" 3507 + dependencies = [ 3508 + "bytes", 3509 + "getrandom 0.2.17", 3510 + "gloo-storage", 3511 + "http", 3512 + "jacquard-api", 3513 + "jacquard-common", 3514 + "jacquard-derive", 3515 + "jacquard-identity", 3516 + "jacquard-oauth", 3517 + "jose-jwk", 3518 + "miette", 3519 + "regex", 3520 + "regex-lite", 3521 + "reqwest", 3522 + "serde", 3523 + "serde_html_form", 3524 + "serde_json", 3525 + "smol_str", 3526 + "thiserror 2.0.18", 3527 + "tokio", 3528 + "trait-variant", 3529 + "webpage", 3530 + ] 3531 + 3532 + [[package]] 3533 + name = "jacquard-api" 3534 + version = "0.12.0" 3535 + source = "registry+https://github.com/rust-lang/crates.io-index" 3536 + checksum = "e9d7b4d41f44a3add61878f6022c48ef949f5d1759a88ec778017334d2847e95" 3537 + dependencies = [ 3538 + "jacquard-common", 3539 + "jacquard-derive", 3540 + "jacquard-lexicon", 3541 + "miette", 3542 + "serde", 3543 + "thiserror 2.0.18", 3544 + ] 3545 + 3546 + [[package]] 3547 + name = "jacquard-common" 3548 + version = "0.12.0" 3549 + source = "registry+https://github.com/rust-lang/crates.io-index" 3550 + checksum = "82e9239b4bf08cf6b3e9d9d420be8b17bd09ee34228b52b884089cbcf67d23bf" 3551 + dependencies = [ 3552 + "base64", 3553 + "bon", 3554 + "bytes", 3555 + "chrono", 3556 + "ciborium", 3557 + "ciborium-io", 3558 + "cid", 3559 + "fluent-uri", 3560 + "getrandom 0.2.17", 3561 + "getrandom 0.3.4", 3562 + "hashbrown 0.15.5", 3563 + "http", 3564 + "ipld-core", 3565 + "k256", 3566 + "maitake-sync", 3567 + "miette", 3568 + "multibase", 3569 + "multihash", 3570 + "oxilangtag", 3571 + "p256", 3572 + "phf 0.11.3", 3573 + "postcard", 3574 + "rand 0.9.4", 3575 + "regex", 3576 + "regex-automata", 3577 + "regex-lite", 3578 + "reqwest", 3579 + "rustversion", 3580 + "serde", 3581 + "serde_bytes", 3582 + "serde_html_form", 3583 + "serde_ipld_dagcbor", 3584 + "serde_json", 3585 + "signature", 3586 + "smol_str", 3587 + "spin 0.10.0", 3588 + "thiserror 2.0.18", 3589 + "tokio", 3590 + "tokio-util", 3591 + "trait-variant", 3592 + "unicode-segmentation", 3593 + ] 3594 + 3595 + [[package]] 3596 + name = "jacquard-derive" 3597 + version = "0.12.0" 3598 + source = "registry+https://github.com/rust-lang/crates.io-index" 3599 + checksum = "7bea6f33da422d272cb09a2571fb65f88aed13612774f2eb635716ce71d1e742" 3600 + dependencies = [ 3601 + "heck 0.5.0", 3602 + "jacquard-lexicon", 3603 + "proc-macro2", 3604 + "quote", 3605 + "syn 2.0.118", 3606 + ] 3607 + 3608 + [[package]] 3609 + name = "jacquard-identity" 3610 + version = "0.12.0" 3611 + source = "registry+https://github.com/rust-lang/crates.io-index" 3612 + checksum = "757c2d9d9ecca3b66e000e912f2fcf9e9e63c5dc50d20983264e3a6db56f4a8e" 3613 + dependencies = [ 3614 + "bon", 3615 + "bytes", 3616 + "http", 3617 + "jacquard-common", 3618 + "jacquard-lexicon", 3619 + "miette", 3620 + "mini-moka-wasm", 3621 + "n0-future", 3622 + "reqwest", 3623 + "serde", 3624 + "serde_html_form", 3625 + "serde_json", 3626 + "thiserror 2.0.18", 3627 + "tokio", 3628 + "trait-variant", 3629 + ] 3630 + 3631 + [[package]] 3632 + name = "jacquard-lexicon" 3633 + version = "0.12.0" 3634 + source = "registry+https://github.com/rust-lang/crates.io-index" 3635 + checksum = "3bf8be274eb0af89ece99b56cbbc837748f62d44af8ab8280acafdfcafe84db7" 3636 + dependencies = [ 3637 + "cid", 3638 + "dashmap", 3639 + "heck 0.5.0", 3640 + "inventory", 3641 + "jacquard-common", 3642 + "miette", 3643 + "multihash", 3644 + "prettyplease", 3645 + "proc-macro2", 3646 + "quote", 3647 + "serde", 3648 + "serde_ipld_dagcbor", 3649 + "serde_json", 3650 + "serde_path_to_error", 3651 + "serde_repr", 3652 + "serde_with", 3653 + "sha2", 3654 + "syn 2.0.118", 3655 + "thiserror 2.0.18", 3656 + "unicode-segmentation", 3657 + ] 3658 + 3659 + [[package]] 3660 + name = "jacquard-oauth" 3661 + version = "0.12.0" 3662 + source = "registry+https://github.com/rust-lang/crates.io-index" 3663 + checksum = "108570f206eea7fd3272e7bfe355b589d66c163e4e4a06ee612bf84877ef2049" 3664 + dependencies = [ 3665 + "base64", 3666 + "bytes", 3667 + "chrono", 3668 + "dashmap", 3669 + "ed25519-dalek", 3670 + "elliptic-curve", 3671 + "http", 3672 + "jacquard-common", 3673 + "jacquard-identity", 3674 + "jose-jwa", 3675 + "jose-jwk", 3676 + "k256", 3677 + "miette", 3678 + "p256", 3679 + "p384", 3680 + "rand 0.8.6", 3681 + "reqwest", 3682 + "serde", 3683 + "serde_html_form", 3684 + "serde_json", 3685 + "sha2", 3686 + "smallvec", 3687 + "smol_str", 3688 + "thiserror 2.0.18", 3689 + "tokio", 3690 + "trait-variant", 3691 + ] 3692 + 3693 + [[package]] 3694 + name = "javascriptcore-rs" 3695 + version = "1.1.2" 3696 + source = "registry+https://github.com/rust-lang/crates.io-index" 3697 + checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" 3698 + dependencies = [ 3699 + "bitflags 1.3.2", 3700 + "glib", 3701 + "javascriptcore-rs-sys", 3702 + ] 3703 + 3704 + [[package]] 3705 + name = "javascriptcore-rs-sys" 3706 + version = "1.1.1" 3707 + source = "registry+https://github.com/rust-lang/crates.io-index" 3708 + checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" 3709 + dependencies = [ 3710 + "glib-sys", 3711 + "gobject-sys", 3712 + "libc", 3713 + "system-deps", 3714 + ] 3715 + 3716 + [[package]] 3717 + name = "jni" 3718 + version = "0.21.1" 3719 + source = "registry+https://github.com/rust-lang/crates.io-index" 3720 + checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 3721 + dependencies = [ 3722 + "cesu8", 3723 + "cfg-if", 3724 + "combine", 3725 + "jni-sys 0.3.1", 3726 + "log", 3727 + "thiserror 1.0.69", 3728 + "walkdir", 3729 + "windows-sys 0.45.0", 3730 + ] 3731 + 3732 + [[package]] 3733 + name = "jni" 3734 + version = "0.22.4" 3735 + source = "registry+https://github.com/rust-lang/crates.io-index" 3736 + checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" 3737 + dependencies = [ 3738 + "cfg-if", 3739 + "combine", 3740 + "jni-macros", 3741 + "jni-sys 0.4.1", 3742 + "log", 3743 + "simd_cesu8", 3744 + "thiserror 2.0.18", 3745 + "walkdir", 3746 + "windows-link 0.2.1", 3747 + ] 3748 + 3749 + [[package]] 3750 + name = "jni-macros" 3751 + version = "0.22.4" 3752 + source = "registry+https://github.com/rust-lang/crates.io-index" 3753 + checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" 3754 + dependencies = [ 3755 + "proc-macro2", 3756 + "quote", 3757 + "rustc_version", 3758 + "simd_cesu8", 3759 + "syn 2.0.118", 3760 + ] 3761 + 3762 + [[package]] 3763 + name = "jni-sys" 3764 + version = "0.3.1" 3765 + source = "registry+https://github.com/rust-lang/crates.io-index" 3766 + checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" 3767 + dependencies = [ 3768 + "jni-sys 0.4.1", 3769 + ] 3770 + 3771 + [[package]] 3772 + name = "jni-sys" 3773 + version = "0.4.1" 3774 + source = "registry+https://github.com/rust-lang/crates.io-index" 3775 + checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" 3776 + dependencies = [ 3777 + "jni-sys-macros", 3778 + ] 3779 + 3780 + [[package]] 3781 + name = "jni-sys-macros" 3782 + version = "0.4.1" 3783 + source = "registry+https://github.com/rust-lang/crates.io-index" 3784 + checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" 3785 + dependencies = [ 3786 + "quote", 3787 + "syn 2.0.118", 3788 + ] 3789 + 3790 + [[package]] 3791 + name = "jobserver" 3792 + version = "0.1.34" 3793 + source = "registry+https://github.com/rust-lang/crates.io-index" 3794 + checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 3795 + dependencies = [ 3796 + "getrandom 0.3.4", 3797 + "libc", 3798 + ] 3799 + 3800 + [[package]] 3801 + name = "jose-b64" 3802 + version = "0.1.2" 3803 + source = "registry+https://github.com/rust-lang/crates.io-index" 3804 + checksum = "bec69375368709666b21c76965ce67549f2d2db7605f1f8707d17c9656801b56" 3805 + dependencies = [ 3806 + "base64ct", 3807 + "serde", 3808 + "subtle", 3809 + "zeroize", 3810 + ] 3811 + 3812 + [[package]] 3813 + name = "jose-jwa" 3814 + version = "0.1.2" 3815 + source = "registry+https://github.com/rust-lang/crates.io-index" 3816 + checksum = "9ab78e053fe886a351d67cf0d194c000f9d0dcb92906eb34d853d7e758a4b3a7" 3817 + dependencies = [ 3818 + "serde", 3819 + ] 3820 + 3821 + [[package]] 3822 + name = "jose-jwk" 3823 + version = "0.1.2" 3824 + source = "registry+https://github.com/rust-lang/crates.io-index" 3825 + checksum = "280fa263807fe0782ecb6f2baadc28dffc04e00558a58e33bfdb801d11fd58e7" 3826 + dependencies = [ 3827 + "jose-b64", 3828 + "jose-jwa", 3829 + "p256", 3830 + "p384", 3831 + "rsa", 3832 + "serde", 3833 + "zeroize", 3834 + ] 3835 + 3836 + [[package]] 3837 + name = "js-sys" 3838 + version = "0.3.102" 3839 + source = "registry+https://github.com/rust-lang/crates.io-index" 3840 + checksum = "03d04c30968dffe80775bd4d7fb676131cd04a1fb46d2686dbffbaec2d9dfd31" 3841 + dependencies = [ 3842 + "cfg-if", 3843 + "futures-util", 3844 + "wasm-bindgen", 3845 + ] 3846 + 3847 + [[package]] 3848 + name = "k256" 3849 + version = "0.13.4" 3850 + source = "registry+https://github.com/rust-lang/crates.io-index" 3851 + checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" 3852 + dependencies = [ 3853 + "cfg-if", 3854 + "ecdsa", 3855 + "elliptic-curve", 3856 + "once_cell", 3857 + "sha2", 3858 + "signature", 3859 + ] 3860 + 3861 + [[package]] 3862 + name = "keyboard-types" 3863 + version = "0.7.0" 3864 + source = "registry+https://github.com/rust-lang/crates.io-index" 3865 + checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" 3866 + dependencies = [ 3867 + "bitflags 2.13.0", 3868 + "serde", 3869 + "unicode-segmentation", 3870 + ] 3871 + 3872 + [[package]] 3873 + name = "konst" 3874 + version = "0.2.20" 3875 + source = "registry+https://github.com/rust-lang/crates.io-index" 3876 + checksum = "128133ed7824fcd73d6e7b17957c5eb7bacb885649bd8c69708b2331a10bcefb" 3877 + dependencies = [ 3878 + "konst_macro_rules", 3879 + ] 3880 + 3881 + [[package]] 3882 + name = "konst_macro_rules" 3883 + version = "0.2.19" 3884 + source = "registry+https://github.com/rust-lang/crates.io-index" 3885 + checksum = "a4933f3f57a8e9d9da04db23fb153356ecaf00cbd14aee46279c33dc80925c37" 3886 + 3887 + [[package]] 3888 + name = "kuchikiki" 3889 + version = "0.8.8-speedreader" 3890 + source = "registry+https://github.com/rust-lang/crates.io-index" 3891 + checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" 3892 + dependencies = [ 3893 + "cssparser", 3894 + "html5ever 0.29.1", 3895 + "indexmap", 3896 + "selectors", 3897 + ] 3898 + 3899 + [[package]] 3900 + name = "lazy-js-bundle" 3901 + version = "0.7.9" 3902 + source = "registry+https://github.com/rust-lang/crates.io-index" 3903 + checksum = "ccafada6c9541db44db758619236f2748f6e1bdaa84d04ded858567cd1e89321" 3904 + 3905 + [[package]] 3906 + name = "lazy_static" 3907 + version = "1.5.0" 3908 + source = "registry+https://github.com/rust-lang/crates.io-index" 3909 + checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 3910 + dependencies = [ 3911 + "spin 0.9.8", 3912 + ] 3913 + 3914 + [[package]] 3915 + name = "lebe" 3916 + version = "0.5.3" 3917 + source = "registry+https://github.com/rust-lang/crates.io-index" 3918 + checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" 3919 + 3920 + [[package]] 3921 + name = "libappindicator" 3922 + version = "0.9.0" 3923 + source = "registry+https://github.com/rust-lang/crates.io-index" 3924 + checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" 3925 + dependencies = [ 3926 + "glib", 3927 + "gtk", 3928 + "gtk-sys", 3929 + "libappindicator-sys", 3930 + "log", 3931 + ] 3932 + 3933 + [[package]] 3934 + name = "libappindicator-sys" 3935 + version = "0.9.0" 3936 + source = "registry+https://github.com/rust-lang/crates.io-index" 3937 + checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" 3938 + dependencies = [ 3939 + "gtk-sys", 3940 + "libloading 0.7.4", 3941 + "once_cell", 3942 + ] 3943 + 3944 + [[package]] 3945 + name = "libc" 3946 + version = "0.2.186" 3947 + source = "registry+https://github.com/rust-lang/crates.io-index" 3948 + checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" 3949 + 3950 + [[package]] 3951 + name = "libfuzzer-sys" 3952 + version = "0.4.13" 3953 + source = "registry+https://github.com/rust-lang/crates.io-index" 3954 + checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2" 3955 + dependencies = [ 3956 + "arbitrary", 3957 + "cc", 3958 + ] 3959 + 3960 + [[package]] 3961 + name = "libloading" 3962 + version = "0.7.4" 3963 + source = "registry+https://github.com/rust-lang/crates.io-index" 3964 + checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 3965 + dependencies = [ 3966 + "cfg-if", 3967 + "winapi", 3968 + ] 3969 + 3970 + [[package]] 3971 + name = "libloading" 3972 + version = "0.8.9" 3973 + source = "registry+https://github.com/rust-lang/crates.io-index" 3974 + checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" 3975 + dependencies = [ 3976 + "cfg-if", 3977 + "windows-link 0.2.1", 3978 + ] 3979 + 3980 + [[package]] 3981 + name = "libm" 3982 + version = "0.2.16" 3983 + source = "registry+https://github.com/rust-lang/crates.io-index" 3984 + checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" 3985 + 3986 + [[package]] 3987 + name = "libredox" 3988 + version = "0.1.17" 3989 + source = "registry+https://github.com/rust-lang/crates.io-index" 3990 + checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" 3991 + dependencies = [ 3992 + "libc", 3993 + ] 3994 + 3995 + [[package]] 3996 + name = "libxdo" 3997 + version = "0.6.0" 3998 + source = "registry+https://github.com/rust-lang/crates.io-index" 3999 + checksum = "00333b8756a3d28e78def82067a377de7fa61b24909000aeaa2b446a948d14db" 4000 + dependencies = [ 4001 + "libxdo-sys", 4002 + ] 4003 + 4004 + [[package]] 4005 + name = "libxdo-sys" 4006 + version = "0.11.0" 4007 + source = "registry+https://github.com/rust-lang/crates.io-index" 4008 + checksum = "db23b9e7e2b7831bbd8aac0bbeeeb7b68cbebc162b227e7052e8e55829a09212" 4009 + dependencies = [ 4010 + "libc", 4011 + "x11", 4012 + ] 4013 + 4014 + [[package]] 4015 + name = "linux-raw-sys" 4016 + version = "0.12.1" 4017 + source = "registry+https://github.com/rust-lang/crates.io-index" 4018 + checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" 4019 + 4020 + [[package]] 4021 + name = "litemap" 4022 + version = "0.8.2" 4023 + source = "registry+https://github.com/rust-lang/crates.io-index" 4024 + checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" 4025 + 4026 + [[package]] 4027 + name = "litrs" 4028 + version = "1.0.0" 4029 + source = "registry+https://github.com/rust-lang/crates.io-index" 4030 + checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" 4031 + 4032 + [[package]] 4033 + name = "lock_api" 4034 + version = "0.4.14" 4035 + source = "registry+https://github.com/rust-lang/crates.io-index" 4036 + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 4037 + dependencies = [ 4038 + "scopeguard", 4039 + ] 4040 + 4041 + [[package]] 4042 + name = "log" 4043 + version = "0.4.32" 4044 + source = "registry+https://github.com/rust-lang/crates.io-index" 4045 + checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" 4046 + 4047 + [[package]] 4048 + name = "longest-increasing-subsequence" 4049 + version = "0.1.0" 4050 + source = "registry+https://github.com/rust-lang/crates.io-index" 4051 + checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86" 4052 + 4053 + [[package]] 4054 + name = "loom" 4055 + version = "0.7.2" 4056 + source = "registry+https://github.com/rust-lang/crates.io-index" 4057 + checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" 4058 + dependencies = [ 4059 + "cfg-if", 4060 + "generator", 4061 + "scoped-tls", 4062 + "tracing", 4063 + "tracing-subscriber", 4064 + ] 4065 + 4066 + [[package]] 4067 + name = "loop9" 4068 + version = "0.1.5" 4069 + source = "registry+https://github.com/rust-lang/crates.io-index" 4070 + checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" 4071 + dependencies = [ 4072 + "imgref", 4073 + ] 4074 + 4075 + [[package]] 4076 + name = "lru" 4077 + version = "0.16.4" 4078 + source = "registry+https://github.com/rust-lang/crates.io-index" 4079 + checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" 4080 + dependencies = [ 4081 + "hashbrown 0.16.1", 4082 + ] 4083 + 4084 + [[package]] 4085 + name = "lru-slab" 4086 + version = "0.1.2" 4087 + source = "registry+https://github.com/rust-lang/crates.io-index" 4088 + checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" 4089 + 4090 + [[package]] 4091 + name = "mac" 4092 + version = "0.1.1" 4093 + source = "registry+https://github.com/rust-lang/crates.io-index" 4094 + checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" 4095 + 4096 + [[package]] 4097 + name = "macro-string" 4098 + version = "0.1.4" 4099 + source = "registry+https://github.com/rust-lang/crates.io-index" 4100 + checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" 4101 + dependencies = [ 4102 + "proc-macro2", 4103 + "quote", 4104 + "syn 2.0.118", 4105 + ] 4106 + 4107 + [[package]] 4108 + name = "maitake-sync" 4109 + version = "0.1.2" 4110 + source = "registry+https://github.com/rust-lang/crates.io-index" 4111 + checksum = "6816ab14147f80234c675b80ed6dc4f440d8a1cefc158e766067aedb84c0bcd5" 4112 + dependencies = [ 4113 + "cordyceps", 4114 + "loom", 4115 + "mycelium-bitfield", 4116 + "pin-project", 4117 + "portable-atomic", 4118 + ] 4119 + 4120 + [[package]] 4121 + name = "malloc_buf" 4122 + version = "0.0.6" 4123 + source = "registry+https://github.com/rust-lang/crates.io-index" 4124 + checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 4125 + dependencies = [ 4126 + "libc", 4127 + ] 4128 + 4129 + [[package]] 4130 + name = "manganis" 4131 + version = "0.7.9" 4132 + source = "registry+https://github.com/rust-lang/crates.io-index" 4133 + checksum = "8bfcf56309de35b48b8780ea097ace5c3b773a617b52edc49dfc9a63a7d9dc43" 4134 + dependencies = [ 4135 + "const-serialize 0.7.2", 4136 + "const-serialize 0.8.0-alpha.0", 4137 + "jni 0.21.1", 4138 + "manganis-core", 4139 + "manganis-macro", 4140 + "ndk-context", 4141 + "objc2", 4142 + "thiserror 2.0.18", 4143 + ] 4144 + 4145 + [[package]] 4146 + name = "manganis-core" 4147 + version = "0.7.9" 4148 + source = "registry+https://github.com/rust-lang/crates.io-index" 4149 + checksum = "a24d6be68f594495aea60850a284029d585d7b7839b26096c1b6d758f8518648" 4150 + dependencies = [ 4151 + "const-serialize 0.7.2", 4152 + "const-serialize 0.8.0-alpha.0", 4153 + "dioxus-cli-config", 4154 + "dioxus-core-types", 4155 + "serde", 4156 + "winnow 0.7.15", 4157 + ] 4158 + 4159 + [[package]] 4160 + name = "manganis-macro" 4161 + version = "0.7.9" 4162 + source = "registry+https://github.com/rust-lang/crates.io-index" 4163 + checksum = "5e782a10318d707c0833e31876ded8acf91287eee0010af8392559af614c7226" 4164 + dependencies = [ 4165 + "dunce", 4166 + "macro-string", 4167 + "manganis-core", 4168 + "proc-macro2", 4169 + "quote", 4170 + "syn 2.0.118", 4171 + ] 4172 + 4173 + [[package]] 4174 + name = "markup5ever" 4175 + version = "0.12.1" 4176 + source = "registry+https://github.com/rust-lang/crates.io-index" 4177 + checksum = "16ce3abbeba692c8b8441d036ef91aea6df8da2c6b6e21c7e14d3c18e526be45" 4178 + dependencies = [ 4179 + "log", 4180 + "phf 0.11.3", 4181 + "phf_codegen 0.11.3", 4182 + "string_cache", 4183 + "string_cache_codegen", 4184 + "tendril", 4185 + ] 4186 + 4187 + [[package]] 4188 + name = "markup5ever" 4189 + version = "0.14.1" 4190 + source = "registry+https://github.com/rust-lang/crates.io-index" 4191 + checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" 4192 + dependencies = [ 4193 + "log", 4194 + "phf 0.11.3", 4195 + "phf_codegen 0.11.3", 4196 + "string_cache", 4197 + "string_cache_codegen", 4198 + "tendril", 4199 + ] 4200 + 4201 + [[package]] 4202 + name = "markup5ever_rcdom" 4203 + version = "0.3.0" 4204 + source = "registry+https://github.com/rust-lang/crates.io-index" 4205 + checksum = "edaa21ab3701bfee5099ade5f7e1f84553fd19228cf332f13cd6e964bf59be18" 4206 + dependencies = [ 4207 + "html5ever 0.27.0", 4208 + "markup5ever 0.12.1", 4209 + "tendril", 4210 + "xml5ever", 4211 + ] 4212 + 4213 + [[package]] 4214 + name = "match-lookup" 4215 + version = "0.1.2" 4216 + source = "registry+https://github.com/rust-lang/crates.io-index" 4217 + checksum = "757aee279b8bdbb9f9e676796fd459e4207a1f986e87886700abf589f5abf771" 4218 + dependencies = [ 4219 + "proc-macro2", 4220 + "quote", 4221 + "syn 2.0.118", 4222 + ] 4223 + 4224 + [[package]] 4225 + name = "match_token" 4226 + version = "0.1.0" 4227 + source = "registry+https://github.com/rust-lang/crates.io-index" 4228 + checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" 4229 + dependencies = [ 4230 + "proc-macro2", 4231 + "quote", 4232 + "syn 2.0.118", 4233 + ] 4234 + 4235 + [[package]] 4236 + name = "matchers" 4237 + version = "0.2.0" 4238 + source = "registry+https://github.com/rust-lang/crates.io-index" 4239 + checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" 4240 + dependencies = [ 4241 + "regex-automata", 4242 + ] 4243 + 4244 + [[package]] 4245 + name = "matches" 4246 + version = "0.1.10" 4247 + source = "registry+https://github.com/rust-lang/crates.io-index" 4248 + checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" 4249 + 4250 + [[package]] 4251 + name = "matchit" 4252 + version = "0.8.4" 4253 + source = "registry+https://github.com/rust-lang/crates.io-index" 4254 + checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" 4255 + 4256 + [[package]] 4257 + name = "maybe-rayon" 4258 + version = "0.1.1" 4259 + source = "registry+https://github.com/rust-lang/crates.io-index" 4260 + checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" 4261 + dependencies = [ 4262 + "cfg-if", 4263 + "rayon", 4264 + ] 4265 + 4266 + [[package]] 4267 + name = "memchr" 4268 + version = "2.8.2" 4269 + source = "registry+https://github.com/rust-lang/crates.io-index" 4270 + checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" 4271 + 4272 + [[package]] 4273 + name = "memfd" 4274 + version = "0.6.5" 4275 + source = "registry+https://github.com/rust-lang/crates.io-index" 4276 + checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227" 4277 + dependencies = [ 4278 + "rustix", 4279 + ] 4280 + 4281 + [[package]] 4282 + name = "memmap2" 4283 + version = "0.9.10" 4284 + source = "registry+https://github.com/rust-lang/crates.io-index" 4285 + checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" 4286 + dependencies = [ 4287 + "libc", 4288 + ] 4289 + 4290 + [[package]] 4291 + name = "memoffset" 4292 + version = "0.9.1" 4293 + source = "registry+https://github.com/rust-lang/crates.io-index" 4294 + checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 4295 + dependencies = [ 4296 + "autocfg", 4297 + ] 4298 + 4299 + [[package]] 4300 + name = "miette" 4301 + version = "7.6.0" 4302 + source = "registry+https://github.com/rust-lang/crates.io-index" 4303 + checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" 4304 + dependencies = [ 4305 + "cfg-if", 4306 + "miette-derive", 4307 + "unicode-width", 4308 + ] 4309 + 4310 + [[package]] 4311 + name = "miette-derive" 4312 + version = "7.6.0" 4313 + source = "registry+https://github.com/rust-lang/crates.io-index" 4314 + checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" 4315 + dependencies = [ 4316 + "proc-macro2", 4317 + "quote", 4318 + "syn 2.0.118", 4319 + ] 4320 + 4321 + [[package]] 4322 + name = "mime" 4323 + version = "0.3.17" 4324 + source = "registry+https://github.com/rust-lang/crates.io-index" 4325 + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 4326 + 4327 + [[package]] 4328 + name = "mime_guess" 4329 + version = "2.0.5" 4330 + source = "registry+https://github.com/rust-lang/crates.io-index" 4331 + checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" 4332 + dependencies = [ 4333 + "mime", 4334 + "unicase", 4335 + ] 4336 + 4337 + [[package]] 4338 + name = "mini-moka-wasm" 4339 + version = "0.10.99" 4340 + source = "registry+https://github.com/rust-lang/crates.io-index" 4341 + checksum = "0102b9a2ad50fa47ca89eead2316c8222285ecfbd3f69ce99564fbe4253866e8" 4342 + dependencies = [ 4343 + "crossbeam-channel", 4344 + "crossbeam-utils", 4345 + "dashmap", 4346 + "smallvec", 4347 + "tagptr", 4348 + "triomphe", 4349 + ] 4350 + 4351 + [[package]] 4352 + name = "miniz_oxide" 4353 + version = "0.8.9" 4354 + source = "registry+https://github.com/rust-lang/crates.io-index" 4355 + checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" 4356 + dependencies = [ 4357 + "adler2", 4358 + "simd-adler32", 4359 + ] 4360 + 4361 + [[package]] 4362 + name = "mio" 4363 + version = "1.2.1" 4364 + source = "registry+https://github.com/rust-lang/crates.io-index" 4365 + checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" 4366 + dependencies = [ 4367 + "libc", 4368 + "wasi 0.11.1+wasi-snapshot-preview1", 4369 + "windows-sys 0.61.2", 4370 + ] 4371 + 4372 + [[package]] 4373 + name = "moxcms" 4374 + version = "0.8.1" 4375 + source = "registry+https://github.com/rust-lang/crates.io-index" 4376 + checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" 4377 + dependencies = [ 4378 + "num-traits", 4379 + "pxfm", 4380 + ] 4381 + 4382 + [[package]] 4383 + name = "muda" 4384 + version = "0.17.2" 4385 + source = "registry+https://github.com/rust-lang/crates.io-index" 4386 + checksum = "7c9fec5a4e89860383d778d10563a605838f8f0b2f9303868937e5ff32e86177" 4387 + dependencies = [ 4388 + "crossbeam-channel", 4389 + "dpi", 4390 + "gtk", 4391 + "keyboard-types", 4392 + "libxdo", 4393 + "objc2", 4394 + "objc2-app-kit", 4395 + "objc2-core-foundation", 4396 + "objc2-foundation", 4397 + "once_cell", 4398 + "png 0.17.16", 4399 + "thiserror 2.0.18", 4400 + "windows-sys 0.60.2", 4401 + ] 4402 + 4403 + [[package]] 4404 + name = "multer" 4405 + version = "3.1.0" 4406 + source = "registry+https://github.com/rust-lang/crates.io-index" 4407 + checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" 4408 + dependencies = [ 4409 + "bytes", 4410 + "encoding_rs", 4411 + "futures-util", 4412 + "http", 4413 + "httparse", 4414 + "memchr", 4415 + "mime", 4416 + "spin 0.9.8", 4417 + "version_check", 4418 + ] 4419 + 4420 + [[package]] 4421 + name = "multibase" 4422 + version = "0.9.2" 4423 + source = "registry+https://github.com/rust-lang/crates.io-index" 4424 + checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" 4425 + dependencies = [ 4426 + "base-x", 4427 + "base256emoji", 4428 + "data-encoding", 4429 + "data-encoding-macro", 4430 + ] 4431 + 4432 + [[package]] 4433 + name = "multihash" 4434 + version = "0.19.5" 4435 + source = "registry+https://github.com/rust-lang/crates.io-index" 4436 + checksum = "577c63b00ad74d57e8c9aa870b5fccebf2fd64a308a5aee9f1bb88e4aea19447" 4437 + dependencies = [ 4438 + "serde", 4439 + "unsigned-varint", 4440 + ] 4441 + 4442 + [[package]] 4443 + name = "mycelium-bitfield" 4444 + version = "0.1.5" 4445 + source = "registry+https://github.com/rust-lang/crates.io-index" 4446 + checksum = "24e0cc5e2c585acbd15c5ce911dff71e1f4d5313f43345873311c4f5efd741cc" 4447 + 4448 + [[package]] 4449 + name = "n0-future" 4450 + version = "0.1.3" 4451 + source = "registry+https://github.com/rust-lang/crates.io-index" 4452 + checksum = "7bb0e5d99e681ab3c938842b96fcb41bf8a7bb4bfdb11ccbd653a7e83e06c794" 4453 + dependencies = [ 4454 + "cfg_aliases", 4455 + "derive_more 1.0.0", 4456 + "futures-buffered", 4457 + "futures-lite", 4458 + "futures-util", 4459 + "js-sys", 4460 + "pin-project", 4461 + "send_wrapper", 4462 + "tokio", 4463 + "tokio-util", 4464 + "wasm-bindgen", 4465 + "wasm-bindgen-futures", 4466 + "web-time", 4467 + ] 4468 + 4469 + [[package]] 4470 + name = "native-tls" 4471 + version = "0.2.18" 4472 + source = "registry+https://github.com/rust-lang/crates.io-index" 4473 + checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2" 4474 + dependencies = [ 4475 + "libc", 4476 + "log", 4477 + "openssl", 4478 + "openssl-probe", 4479 + "openssl-sys", 4480 + "schannel", 4481 + "security-framework", 4482 + "security-framework-sys", 4483 + "tempfile", 4484 + ] 4485 + 4486 + [[package]] 4487 + name = "ndk" 4488 + version = "0.9.0" 4489 + source = "registry+https://github.com/rust-lang/crates.io-index" 4490 + checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" 4491 + dependencies = [ 4492 + "bitflags 2.13.0", 4493 + "jni-sys 0.3.1", 4494 + "log", 4495 + "ndk-sys", 4496 + "num_enum", 4497 + "raw-window-handle 0.6.2", 4498 + "thiserror 1.0.69", 4499 + ] 4500 + 4501 + [[package]] 4502 + name = "ndk-context" 4503 + version = "0.1.1" 4504 + source = "registry+https://github.com/rust-lang/crates.io-index" 4505 + checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 4506 + 4507 + [[package]] 4508 + name = "ndk-sys" 4509 + version = "0.6.0+11769913" 4510 + source = "registry+https://github.com/rust-lang/crates.io-index" 4511 + checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" 4512 + dependencies = [ 4513 + "jni-sys 0.3.1", 4514 + ] 4515 + 4516 + [[package]] 4517 + name = "new_debug_unreachable" 4518 + version = "1.0.6" 4519 + source = "registry+https://github.com/rust-lang/crates.io-index" 4520 + checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" 4521 + 4522 + [[package]] 4523 + name = "no_std_io2" 4524 + version = "0.9.4" 4525 + source = "registry+https://github.com/rust-lang/crates.io-index" 4526 + checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" 4527 + dependencies = [ 4528 + "memchr", 4529 + ] 4530 + 4531 + [[package]] 4532 + name = "nodrop" 4533 + version = "0.1.14" 4534 + source = "registry+https://github.com/rust-lang/crates.io-index" 4535 + checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" 4536 + 4537 + [[package]] 4538 + name = "nom" 4539 + version = "8.0.0" 4540 + source = "registry+https://github.com/rust-lang/crates.io-index" 4541 + checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" 4542 + dependencies = [ 4543 + "memchr", 4544 + ] 4545 + 4546 + [[package]] 4547 + name = "noop_proc_macro" 4548 + version = "0.3.0" 4549 + source = "registry+https://github.com/rust-lang/crates.io-index" 4550 + checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" 4551 + 4552 + [[package]] 4553 + name = "nu-ansi-term" 4554 + version = "0.50.3" 4555 + source = "registry+https://github.com/rust-lang/crates.io-index" 4556 + checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" 4557 + dependencies = [ 4558 + "windows-sys 0.61.2", 4559 + ] 4560 + 4561 + [[package]] 4562 + name = "num-bigint" 4563 + version = "0.4.6" 4564 + source = "registry+https://github.com/rust-lang/crates.io-index" 4565 + checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 4566 + dependencies = [ 4567 + "num-integer", 4568 + "num-traits", 4569 + ] 4570 + 4571 + [[package]] 4572 + name = "num-bigint-dig" 4573 + version = "0.8.6" 4574 + source = "registry+https://github.com/rust-lang/crates.io-index" 4575 + checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" 4576 + dependencies = [ 4577 + "lazy_static", 4578 + "libm", 4579 + "num-integer", 4580 + "num-iter", 4581 + "num-traits", 4582 + "rand 0.8.6", 4583 + "smallvec", 4584 + "zeroize", 4585 + ] 4586 + 4587 + [[package]] 4588 + name = "num-conv" 4589 + version = "0.2.2" 4590 + source = "registry+https://github.com/rust-lang/crates.io-index" 4591 + checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" 4592 + 4593 + [[package]] 4594 + name = "num-derive" 4595 + version = "0.4.2" 4596 + source = "registry+https://github.com/rust-lang/crates.io-index" 4597 + checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 4598 + dependencies = [ 4599 + "proc-macro2", 4600 + "quote", 4601 + "syn 2.0.118", 4602 + ] 4603 + 4604 + [[package]] 4605 + name = "num-integer" 4606 + version = "0.1.46" 4607 + source = "registry+https://github.com/rust-lang/crates.io-index" 4608 + checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 4609 + dependencies = [ 4610 + "num-traits", 4611 + ] 4612 + 4613 + [[package]] 4614 + name = "num-iter" 4615 + version = "0.1.45" 4616 + source = "registry+https://github.com/rust-lang/crates.io-index" 4617 + checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 4618 + dependencies = [ 4619 + "autocfg", 4620 + "num-integer", 4621 + "num-traits", 4622 + ] 4623 + 4624 + [[package]] 4625 + name = "num-rational" 4626 + version = "0.4.2" 4627 + source = "registry+https://github.com/rust-lang/crates.io-index" 4628 + checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" 4629 + dependencies = [ 4630 + "num-bigint", 4631 + "num-integer", 4632 + "num-traits", 4633 + ] 4634 + 4635 + [[package]] 4636 + name = "num-traits" 4637 + version = "0.2.19" 4638 + source = "registry+https://github.com/rust-lang/crates.io-index" 4639 + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 4640 + dependencies = [ 4641 + "autocfg", 4642 + "libm", 4643 + ] 4644 + 4645 + [[package]] 4646 + name = "num_enum" 4647 + version = "0.7.6" 4648 + source = "registry+https://github.com/rust-lang/crates.io-index" 4649 + checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" 4650 + dependencies = [ 4651 + "num_enum_derive", 4652 + "rustversion", 4653 + ] 4654 + 4655 + [[package]] 4656 + name = "num_enum_derive" 4657 + version = "0.7.6" 4658 + source = "registry+https://github.com/rust-lang/crates.io-index" 4659 + checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" 4660 + dependencies = [ 4661 + "proc-macro-crate 3.5.0", 4662 + "proc-macro2", 4663 + "quote", 4664 + "syn 2.0.118", 4665 + ] 4666 + 4667 + [[package]] 4668 + name = "objc" 4669 + version = "0.2.7" 4670 + source = "registry+https://github.com/rust-lang/crates.io-index" 4671 + checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 4672 + dependencies = [ 4673 + "malloc_buf", 4674 + ] 4675 + 4676 + [[package]] 4677 + name = "objc2" 4678 + version = "0.6.4" 4679 + source = "registry+https://github.com/rust-lang/crates.io-index" 4680 + checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" 4681 + dependencies = [ 4682 + "objc2-encode", 4683 + "objc2-exception-helper", 4684 + ] 4685 + 4686 + [[package]] 4687 + name = "objc2-app-kit" 4688 + version = "0.3.2" 4689 + source = "registry+https://github.com/rust-lang/crates.io-index" 4690 + checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" 4691 + dependencies = [ 4692 + "bitflags 2.13.0", 4693 + "block2", 4694 + "objc2", 4695 + "objc2-core-foundation", 4696 + "objc2-foundation", 4697 + ] 4698 + 4699 + [[package]] 4700 + name = "objc2-core-foundation" 4701 + version = "0.3.2" 4702 + source = "registry+https://github.com/rust-lang/crates.io-index" 4703 + checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" 4704 + dependencies = [ 4705 + "bitflags 2.13.0", 4706 + "dispatch2", 4707 + "objc2", 4708 + ] 4709 + 4710 + [[package]] 4711 + name = "objc2-core-graphics" 4712 + version = "0.3.2" 4713 + source = "registry+https://github.com/rust-lang/crates.io-index" 4714 + checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" 4715 + dependencies = [ 4716 + "bitflags 2.13.0", 4717 + "objc2-core-foundation", 4718 + ] 4719 + 4720 + [[package]] 4721 + name = "objc2-encode" 4722 + version = "4.1.0" 4723 + source = "registry+https://github.com/rust-lang/crates.io-index" 4724 + checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" 4725 + 4726 + [[package]] 4727 + name = "objc2-exception-helper" 4728 + version = "0.1.1" 4729 + source = "registry+https://github.com/rust-lang/crates.io-index" 4730 + checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" 4731 + dependencies = [ 4732 + "cc", 4733 + ] 4734 + 4735 + [[package]] 4736 + name = "objc2-foundation" 4737 + version = "0.3.2" 4738 + source = "registry+https://github.com/rust-lang/crates.io-index" 4739 + checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" 4740 + dependencies = [ 4741 + "bitflags 2.13.0", 4742 + "block2", 4743 + "objc2", 4744 + "objc2-core-foundation", 4745 + ] 4746 + 4747 + [[package]] 4748 + name = "objc2-ui-kit" 4749 + version = "0.3.2" 4750 + source = "registry+https://github.com/rust-lang/crates.io-index" 4751 + checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" 4752 + dependencies = [ 4753 + "bitflags 2.13.0", 4754 + "objc2", 4755 + "objc2-core-foundation", 4756 + "objc2-foundation", 4757 + ] 4758 + 4759 + [[package]] 4760 + name = "objc2-web-kit" 4761 + version = "0.3.2" 4762 + source = "registry+https://github.com/rust-lang/crates.io-index" 4763 + checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" 4764 + dependencies = [ 4765 + "bitflags 2.13.0", 4766 + "block2", 4767 + "objc2", 4768 + "objc2-app-kit", 4769 + "objc2-core-foundation", 4770 + "objc2-foundation", 4771 + ] 4772 + 4773 + [[package]] 4774 + name = "objc_id" 4775 + version = "0.1.1" 4776 + source = "registry+https://github.com/rust-lang/crates.io-index" 4777 + checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 4778 + dependencies = [ 4779 + "objc", 4780 + ] 4781 + 4782 + [[package]] 4783 + name = "once_cell" 4784 + version = "1.21.4" 4785 + source = "registry+https://github.com/rust-lang/crates.io-index" 4786 + checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" 4787 + 4788 + [[package]] 4789 + name = "openssl" 4790 + version = "0.10.81" 4791 + source = "registry+https://github.com/rust-lang/crates.io-index" 4792 + checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" 4793 + dependencies = [ 4794 + "bitflags 2.13.0", 4795 + "cfg-if", 4796 + "foreign-types 0.3.2", 4797 + "libc", 4798 + "openssl-macros", 4799 + "openssl-sys", 4800 + ] 4801 + 4802 + [[package]] 4803 + name = "openssl-macros" 4804 + version = "0.1.1" 4805 + source = "registry+https://github.com/rust-lang/crates.io-index" 4806 + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 4807 + dependencies = [ 4808 + "proc-macro2", 4809 + "quote", 4810 + "syn 2.0.118", 4811 + ] 4812 + 4813 + [[package]] 4814 + name = "openssl-probe" 4815 + version = "0.2.1" 4816 + source = "registry+https://github.com/rust-lang/crates.io-index" 4817 + checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" 4818 + 4819 + [[package]] 4820 + name = "openssl-sys" 4821 + version = "0.9.117" 4822 + source = "registry+https://github.com/rust-lang/crates.io-index" 4823 + checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" 4824 + dependencies = [ 4825 + "cc", 4826 + "libc", 4827 + "pkg-config", 4828 + "vcpkg", 4829 + ] 4830 + 4831 + [[package]] 4832 + name = "option-ext" 4833 + version = "0.2.0" 4834 + source = "registry+https://github.com/rust-lang/crates.io-index" 4835 + checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" 4836 + 4837 + [[package]] 4838 + name = "oxilangtag" 4839 + version = "0.1.6" 4840 + source = "registry+https://github.com/rust-lang/crates.io-index" 4841 + checksum = "5d3b4eb570abd4a1dcb062c31fd37b832264d9dc7292c3e69acfe926c87b063f" 4842 + dependencies = [ 4843 + "serde", 4844 + ] 4845 + 4846 + [[package]] 4847 + name = "p256" 4848 + version = "0.13.2" 4849 + source = "registry+https://github.com/rust-lang/crates.io-index" 4850 + checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" 4851 + dependencies = [ 4852 + "ecdsa", 4853 + "elliptic-curve", 4854 + "primeorder", 4855 + "sha2", 4856 + ] 4857 + 4858 + [[package]] 4859 + name = "p384" 4860 + version = "0.13.1" 4861 + source = "registry+https://github.com/rust-lang/crates.io-index" 4862 + checksum = "fe42f1670a52a47d448f14b6a5c61dd78fce51856e68edaa38f7ae3a46b8d6b6" 4863 + dependencies = [ 4864 + "ecdsa", 4865 + "elliptic-curve", 4866 + "primeorder", 4867 + "sha2", 4868 + ] 4869 + 4870 + [[package]] 4871 + name = "pango" 4872 + version = "0.18.3" 4873 + source = "registry+https://github.com/rust-lang/crates.io-index" 4874 + checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" 4875 + dependencies = [ 4876 + "gio", 4877 + "glib", 4878 + "libc", 4879 + "once_cell", 4880 + "pango-sys", 4881 + ] 4882 + 4883 + [[package]] 4884 + name = "pango-sys" 4885 + version = "0.18.0" 4886 + source = "registry+https://github.com/rust-lang/crates.io-index" 4887 + checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" 4888 + dependencies = [ 4889 + "glib-sys", 4890 + "gobject-sys", 4891 + "libc", 4892 + "system-deps", 4893 + ] 4894 + 4895 + [[package]] 4896 + name = "parking" 4897 + version = "2.2.1" 4898 + source = "registry+https://github.com/rust-lang/crates.io-index" 4899 + checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 4900 + 4901 + [[package]] 4902 + name = "parking_lot" 4903 + version = "0.12.5" 4904 + source = "registry+https://github.com/rust-lang/crates.io-index" 4905 + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 4906 + dependencies = [ 4907 + "lock_api", 4908 + "parking_lot_core", 4909 + ] 4910 + 4911 + [[package]] 4912 + name = "parking_lot_core" 4913 + version = "0.9.12" 4914 + source = "registry+https://github.com/rust-lang/crates.io-index" 4915 + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 4916 + dependencies = [ 4917 + "cfg-if", 4918 + "libc", 4919 + "redox_syscall", 4920 + "smallvec", 4921 + "windows-link 0.2.1", 4922 + ] 4923 + 4924 + [[package]] 4925 + name = "paste" 4926 + version = "1.0.15" 4927 + source = "registry+https://github.com/rust-lang/crates.io-index" 4928 + checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 4929 + 4930 + [[package]] 4931 + name = "pastey" 4932 + version = "0.1.1" 4933 + source = "registry+https://github.com/rust-lang/crates.io-index" 4934 + checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" 4935 + 4936 + [[package]] 4937 + name = "pem-rfc7468" 4938 + version = "0.7.0" 4939 + source = "registry+https://github.com/rust-lang/crates.io-index" 4940 + checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 4941 + dependencies = [ 4942 + "base64ct", 4943 + ] 4944 + 4945 + [[package]] 4946 + name = "percent-encoding" 4947 + version = "2.3.2" 4948 + source = "registry+https://github.com/rust-lang/crates.io-index" 4949 + checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 4950 + 4951 + [[package]] 4952 + name = "phf" 4953 + version = "0.8.0" 4954 + source = "registry+https://github.com/rust-lang/crates.io-index" 4955 + checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" 4956 + dependencies = [ 4957 + "phf_shared 0.8.0", 4958 + ] 4959 + 4960 + [[package]] 4961 + name = "phf" 4962 + version = "0.10.1" 4963 + source = "registry+https://github.com/rust-lang/crates.io-index" 4964 + checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" 4965 + dependencies = [ 4966 + "phf_macros 0.10.0", 4967 + "phf_shared 0.10.0", 4968 + "proc-macro-hack", 4969 + ] 4970 + 4971 + [[package]] 4972 + name = "phf" 4973 + version = "0.11.3" 4974 + source = "registry+https://github.com/rust-lang/crates.io-index" 4975 + checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" 4976 + dependencies = [ 4977 + "phf_macros 0.11.3", 4978 + "phf_shared 0.11.3", 4979 + ] 4980 + 4981 + [[package]] 4982 + name = "phf_codegen" 4983 + version = "0.8.0" 4984 + source = "registry+https://github.com/rust-lang/crates.io-index" 4985 + checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" 4986 + dependencies = [ 4987 + "phf_generator 0.8.0", 4988 + "phf_shared 0.8.0", 4989 + ] 4990 + 4991 + [[package]] 4992 + name = "phf_codegen" 4993 + version = "0.11.3" 4994 + source = "registry+https://github.com/rust-lang/crates.io-index" 4995 + checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" 4996 + dependencies = [ 4997 + "phf_generator 0.11.3", 4998 + "phf_shared 0.11.3", 4999 + ] 5000 + 5001 + [[package]] 5002 + name = "phf_generator" 5003 + version = "0.8.0" 5004 + source = "registry+https://github.com/rust-lang/crates.io-index" 5005 + checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" 5006 + dependencies = [ 5007 + "phf_shared 0.8.0", 5008 + "rand 0.7.3", 5009 + ] 5010 + 5011 + [[package]] 5012 + name = "phf_generator" 5013 + version = "0.10.0" 5014 + source = "registry+https://github.com/rust-lang/crates.io-index" 5015 + checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" 5016 + dependencies = [ 5017 + "phf_shared 0.10.0", 5018 + "rand 0.8.6", 5019 + ] 5020 + 5021 + [[package]] 5022 + name = "phf_generator" 5023 + version = "0.11.3" 5024 + source = "registry+https://github.com/rust-lang/crates.io-index" 5025 + checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" 5026 + dependencies = [ 5027 + "phf_shared 0.11.3", 5028 + "rand 0.8.6", 5029 + ] 5030 + 5031 + [[package]] 5032 + name = "phf_macros" 5033 + version = "0.10.0" 5034 + source = "registry+https://github.com/rust-lang/crates.io-index" 5035 + checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" 5036 + dependencies = [ 5037 + "phf_generator 0.10.0", 5038 + "phf_shared 0.10.0", 5039 + "proc-macro-hack", 5040 + "proc-macro2", 5041 + "quote", 5042 + "syn 1.0.109", 5043 + ] 5044 + 5045 + [[package]] 5046 + name = "phf_macros" 5047 + version = "0.11.3" 5048 + source = "registry+https://github.com/rust-lang/crates.io-index" 5049 + checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" 5050 + dependencies = [ 5051 + "phf_generator 0.11.3", 5052 + "phf_shared 0.11.3", 5053 + "proc-macro2", 5054 + "quote", 5055 + "syn 2.0.118", 5056 + ] 5057 + 5058 + [[package]] 5059 + name = "phf_shared" 5060 + version = "0.8.0" 5061 + source = "registry+https://github.com/rust-lang/crates.io-index" 5062 + checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" 5063 + dependencies = [ 5064 + "siphasher 0.3.11", 5065 + ] 5066 + 5067 + [[package]] 5068 + name = "phf_shared" 5069 + version = "0.10.0" 5070 + source = "registry+https://github.com/rust-lang/crates.io-index" 5071 + checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" 5072 + dependencies = [ 5073 + "siphasher 0.3.11", 5074 + ] 5075 + 5076 + [[package]] 5077 + name = "phf_shared" 5078 + version = "0.11.3" 5079 + source = "registry+https://github.com/rust-lang/crates.io-index" 5080 + checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" 5081 + dependencies = [ 5082 + "siphasher 1.0.3", 5083 + ] 5084 + 5085 + [[package]] 5086 + name = "pin-project" 5087 + version = "1.1.13" 5088 + source = "registry+https://github.com/rust-lang/crates.io-index" 5089 + checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" 5090 + dependencies = [ 5091 + "pin-project-internal", 5092 + ] 5093 + 5094 + [[package]] 5095 + name = "pin-project-internal" 5096 + version = "1.1.13" 5097 + source = "registry+https://github.com/rust-lang/crates.io-index" 5098 + checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" 5099 + dependencies = [ 5100 + "proc-macro2", 5101 + "quote", 5102 + "syn 2.0.118", 5103 + ] 5104 + 5105 + [[package]] 5106 + name = "pin-project-lite" 5107 + version = "0.2.17" 5108 + source = "registry+https://github.com/rust-lang/crates.io-index" 5109 + checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" 5110 + 5111 + [[package]] 5112 + name = "pkcs1" 5113 + version = "0.7.5" 5114 + source = "registry+https://github.com/rust-lang/crates.io-index" 5115 + checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 5116 + dependencies = [ 5117 + "der", 5118 + "pkcs8", 5119 + "spki", 5120 + ] 5121 + 5122 + [[package]] 5123 + name = "pkcs8" 5124 + version = "0.10.2" 5125 + source = "registry+https://github.com/rust-lang/crates.io-index" 5126 + checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 5127 + dependencies = [ 5128 + "der", 5129 + "spki", 5130 + ] 5131 + 5132 + [[package]] 5133 + name = "pkg-config" 5134 + version = "0.3.33" 5135 + source = "registry+https://github.com/rust-lang/crates.io-index" 5136 + checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" 5137 + 5138 + [[package]] 5139 + name = "png" 5140 + version = "0.17.16" 5141 + source = "registry+https://github.com/rust-lang/crates.io-index" 5142 + checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" 5143 + dependencies = [ 5144 + "bitflags 1.3.2", 5145 + "crc32fast", 5146 + "fdeflate", 5147 + "flate2", 5148 + "miniz_oxide", 5149 + ] 5150 + 5151 + [[package]] 5152 + name = "png" 5153 + version = "0.18.1" 5154 + source = "registry+https://github.com/rust-lang/crates.io-index" 5155 + checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" 5156 + dependencies = [ 5157 + "bitflags 2.13.0", 5158 + "crc32fast", 5159 + "fdeflate", 5160 + "flate2", 5161 + "miniz_oxide", 5162 + ] 5163 + 5164 + [[package]] 5165 + name = "pollster" 5166 + version = "0.4.0" 5167 + source = "registry+https://github.com/rust-lang/crates.io-index" 5168 + checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" 5169 + 5170 + [[package]] 5171 + name = "polymodel" 5172 + version = "0.1.0" 5173 + dependencies = [ 5174 + "axum", 5175 + "console_error_panic_hook", 5176 + "dioxus", 5177 + "dotenvy", 5178 + "jacquard", 5179 + "jacquard-common", 5180 + "jacquard-derive", 5181 + "serde", 5182 + "serde_json", 5183 + "thiserror 2.0.18", 5184 + "tokio", 5185 + "tower", 5186 + "tower-http", 5187 + "tracing", 5188 + "tracing-wasm", 5189 + "web-sys", 5190 + ] 5191 + 5192 + [[package]] 5193 + name = "portable-atomic" 5194 + version = "1.13.1" 5195 + source = "registry+https://github.com/rust-lang/crates.io-index" 5196 + checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" 5197 + 5198 + [[package]] 5199 + name = "postcard" 5200 + version = "1.1.3" 5201 + source = "registry+https://github.com/rust-lang/crates.io-index" 5202 + checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" 5203 + dependencies = [ 5204 + "cobs", 5205 + "embedded-io 0.4.0", 5206 + "embedded-io 0.6.1", 5207 + "heapless", 5208 + "serde", 5209 + ] 5210 + 5211 + [[package]] 5212 + name = "potential_utf" 5213 + version = "0.1.5" 5214 + source = "registry+https://github.com/rust-lang/crates.io-index" 5215 + checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" 5216 + dependencies = [ 5217 + "zerovec", 5218 + ] 5219 + 5220 + [[package]] 5221 + name = "powerfmt" 5222 + version = "0.2.0" 5223 + source = "registry+https://github.com/rust-lang/crates.io-index" 5224 + checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 5225 + 5226 + [[package]] 5227 + name = "ppv-lite86" 5228 + version = "0.2.21" 5229 + source = "registry+https://github.com/rust-lang/crates.io-index" 5230 + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 5231 + dependencies = [ 5232 + "zerocopy", 5233 + ] 5234 + 5235 + [[package]] 5236 + name = "precomputed-hash" 5237 + version = "0.1.1" 5238 + source = "registry+https://github.com/rust-lang/crates.io-index" 5239 + checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" 5240 + 5241 + [[package]] 5242 + name = "prettyplease" 5243 + version = "0.2.37" 5244 + source = "registry+https://github.com/rust-lang/crates.io-index" 5245 + checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" 5246 + dependencies = [ 5247 + "proc-macro2", 5248 + "syn 2.0.118", 5249 + ] 5250 + 5251 + [[package]] 5252 + name = "primeorder" 5253 + version = "0.13.6" 5254 + source = "registry+https://github.com/rust-lang/crates.io-index" 5255 + checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" 5256 + dependencies = [ 5257 + "elliptic-curve", 5258 + ] 5259 + 5260 + [[package]] 5261 + name = "proc-macro-crate" 5262 + version = "1.3.1" 5263 + source = "registry+https://github.com/rust-lang/crates.io-index" 5264 + checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" 5265 + dependencies = [ 5266 + "once_cell", 5267 + "toml_edit 0.19.15", 5268 + ] 5269 + 5270 + [[package]] 5271 + name = "proc-macro-crate" 5272 + version = "2.0.2" 5273 + source = "registry+https://github.com/rust-lang/crates.io-index" 5274 + checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" 5275 + dependencies = [ 5276 + "toml_datetime 0.6.3", 5277 + "toml_edit 0.20.2", 5278 + ] 5279 + 5280 + [[package]] 5281 + name = "proc-macro-crate" 5282 + version = "3.5.0" 5283 + source = "registry+https://github.com/rust-lang/crates.io-index" 5284 + checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" 5285 + dependencies = [ 5286 + "toml_edit 0.25.12+spec-1.1.0", 5287 + ] 5288 + 5289 + [[package]] 5290 + name = "proc-macro-error" 5291 + version = "1.0.4" 5292 + source = "registry+https://github.com/rust-lang/crates.io-index" 5293 + checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 5294 + dependencies = [ 5295 + "proc-macro-error-attr", 5296 + "proc-macro2", 5297 + "quote", 5298 + "syn 1.0.109", 5299 + "version_check", 5300 + ] 5301 + 5302 + [[package]] 5303 + name = "proc-macro-error-attr" 5304 + version = "1.0.4" 5305 + source = "registry+https://github.com/rust-lang/crates.io-index" 5306 + checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 5307 + dependencies = [ 5308 + "proc-macro2", 5309 + "quote", 5310 + "version_check", 5311 + ] 5312 + 5313 + [[package]] 5314 + name = "proc-macro-hack" 5315 + version = "0.5.20+deprecated" 5316 + source = "registry+https://github.com/rust-lang/crates.io-index" 5317 + checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" 5318 + 5319 + [[package]] 5320 + name = "proc-macro2" 5321 + version = "1.0.106" 5322 + source = "registry+https://github.com/rust-lang/crates.io-index" 5323 + checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" 5324 + dependencies = [ 5325 + "unicode-ident", 5326 + ] 5327 + 5328 + [[package]] 5329 + name = "proc-macro2-diagnostics" 5330 + version = "0.10.1" 5331 + source = "registry+https://github.com/rust-lang/crates.io-index" 5332 + checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" 5333 + dependencies = [ 5334 + "proc-macro2", 5335 + "quote", 5336 + "syn 2.0.118", 5337 + "version_check", 5338 + ] 5339 + 5340 + [[package]] 5341 + name = "profiling" 5342 + version = "1.0.18" 5343 + source = "registry+https://github.com/rust-lang/crates.io-index" 5344 + checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" 5345 + dependencies = [ 5346 + "profiling-procmacros", 5347 + ] 5348 + 5349 + [[package]] 5350 + name = "profiling-procmacros" 5351 + version = "1.0.18" 5352 + source = "registry+https://github.com/rust-lang/crates.io-index" 5353 + checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" 5354 + dependencies = [ 5355 + "quote", 5356 + "syn 2.0.118", 5357 + ] 5358 + 5359 + [[package]] 5360 + name = "psl-types" 5361 + version = "2.0.11" 5362 + source = "registry+https://github.com/rust-lang/crates.io-index" 5363 + checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" 5364 + 5365 + [[package]] 5366 + name = "publicsuffix" 5367 + version = "2.3.0" 5368 + source = "registry+https://github.com/rust-lang/crates.io-index" 5369 + checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" 5370 + dependencies = [ 5371 + "idna", 5372 + "psl-types", 5373 + ] 5374 + 5375 + [[package]] 5376 + name = "pxfm" 5377 + version = "0.1.29" 5378 + source = "registry+https://github.com/rust-lang/crates.io-index" 5379 + checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" 5380 + 5381 + [[package]] 5382 + name = "qoi" 5383 + version = "0.4.1" 5384 + source = "registry+https://github.com/rust-lang/crates.io-index" 5385 + checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" 5386 + dependencies = [ 5387 + "bytemuck", 5388 + ] 5389 + 5390 + [[package]] 5391 + name = "quick-error" 5392 + version = "2.0.1" 5393 + source = "registry+https://github.com/rust-lang/crates.io-index" 5394 + checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" 5395 + 5396 + [[package]] 5397 + name = "quinn" 5398 + version = "0.11.9" 5399 + source = "registry+https://github.com/rust-lang/crates.io-index" 5400 + checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" 5401 + dependencies = [ 5402 + "bytes", 5403 + "cfg_aliases", 5404 + "pin-project-lite", 5405 + "quinn-proto", 5406 + "quinn-udp", 5407 + "rustc-hash 2.1.2", 5408 + "rustls", 5409 + "socket2", 5410 + "thiserror 2.0.18", 5411 + "tokio", 5412 + "tracing", 5413 + "web-time", 5414 + ] 5415 + 5416 + [[package]] 5417 + name = "quinn-proto" 5418 + version = "0.11.14" 5419 + source = "registry+https://github.com/rust-lang/crates.io-index" 5420 + checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" 5421 + dependencies = [ 5422 + "bytes", 5423 + "getrandom 0.3.4", 5424 + "lru-slab", 5425 + "rand 0.9.4", 5426 + "ring", 5427 + "rustc-hash 2.1.2", 5428 + "rustls", 5429 + "rustls-pki-types", 5430 + "slab", 5431 + "thiserror 2.0.18", 5432 + "tinyvec", 5433 + "tracing", 5434 + "web-time", 5435 + ] 5436 + 5437 + [[package]] 5438 + name = "quinn-udp" 5439 + version = "0.5.14" 5440 + source = "registry+https://github.com/rust-lang/crates.io-index" 5441 + checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" 5442 + dependencies = [ 5443 + "cfg_aliases", 5444 + "libc", 5445 + "once_cell", 5446 + "socket2", 5447 + "tracing", 5448 + "windows-sys 0.60.2", 5449 + ] 5450 + 5451 + [[package]] 5452 + name = "quote" 5453 + version = "1.0.45" 5454 + source = "registry+https://github.com/rust-lang/crates.io-index" 5455 + checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" 5456 + dependencies = [ 5457 + "proc-macro2", 5458 + ] 5459 + 5460 + [[package]] 5461 + name = "r-efi" 5462 + version = "5.3.0" 5463 + source = "registry+https://github.com/rust-lang/crates.io-index" 5464 + checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 5465 + 5466 + [[package]] 5467 + name = "r-efi" 5468 + version = "6.0.0" 5469 + source = "registry+https://github.com/rust-lang/crates.io-index" 5470 + checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" 5471 + 5472 + [[package]] 5473 + name = "rand" 5474 + version = "0.7.3" 5475 + source = "registry+https://github.com/rust-lang/crates.io-index" 5476 + checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 5477 + dependencies = [ 5478 + "getrandom 0.1.16", 5479 + "libc", 5480 + "rand_chacha 0.2.2", 5481 + "rand_core 0.5.1", 5482 + "rand_hc", 5483 + "rand_pcg", 5484 + ] 5485 + 5486 + [[package]] 5487 + name = "rand" 5488 + version = "0.8.6" 5489 + source = "registry+https://github.com/rust-lang/crates.io-index" 5490 + checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" 5491 + dependencies = [ 5492 + "libc", 5493 + "rand_chacha 0.3.1", 5494 + "rand_core 0.6.4", 5495 + ] 5496 + 5497 + [[package]] 5498 + name = "rand" 5499 + version = "0.9.4" 5500 + source = "registry+https://github.com/rust-lang/crates.io-index" 5501 + checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" 5502 + dependencies = [ 5503 + "rand_chacha 0.9.0", 5504 + "rand_core 0.9.5", 5505 + ] 5506 + 5507 + [[package]] 5508 + name = "rand_chacha" 5509 + version = "0.2.2" 5510 + source = "registry+https://github.com/rust-lang/crates.io-index" 5511 + checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 5512 + dependencies = [ 5513 + "ppv-lite86", 5514 + "rand_core 0.5.1", 5515 + ] 5516 + 5517 + [[package]] 5518 + name = "rand_chacha" 5519 + version = "0.3.1" 5520 + source = "registry+https://github.com/rust-lang/crates.io-index" 5521 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 5522 + dependencies = [ 5523 + "ppv-lite86", 5524 + "rand_core 0.6.4", 5525 + ] 5526 + 5527 + [[package]] 5528 + name = "rand_chacha" 5529 + version = "0.9.0" 5530 + source = "registry+https://github.com/rust-lang/crates.io-index" 5531 + checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 5532 + dependencies = [ 5533 + "ppv-lite86", 5534 + "rand_core 0.9.5", 5535 + ] 5536 + 5537 + [[package]] 5538 + name = "rand_core" 5539 + version = "0.5.1" 5540 + source = "registry+https://github.com/rust-lang/crates.io-index" 5541 + checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 5542 + dependencies = [ 5543 + "getrandom 0.1.16", 5544 + ] 5545 + 5546 + [[package]] 5547 + name = "rand_core" 5548 + version = "0.6.4" 5549 + source = "registry+https://github.com/rust-lang/crates.io-index" 5550 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 5551 + dependencies = [ 5552 + "getrandom 0.2.17", 5553 + ] 5554 + 5555 + [[package]] 5556 + name = "rand_core" 5557 + version = "0.9.5" 5558 + source = "registry+https://github.com/rust-lang/crates.io-index" 5559 + checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" 5560 + dependencies = [ 5561 + "getrandom 0.3.4", 5562 + ] 5563 + 5564 + [[package]] 5565 + name = "rand_hc" 5566 + version = "0.2.0" 5567 + source = "registry+https://github.com/rust-lang/crates.io-index" 5568 + checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 5569 + dependencies = [ 5570 + "rand_core 0.5.1", 5571 + ] 5572 + 5573 + [[package]] 5574 + name = "rand_pcg" 5575 + version = "0.2.1" 5576 + source = "registry+https://github.com/rust-lang/crates.io-index" 5577 + checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" 5578 + dependencies = [ 5579 + "rand_core 0.5.1", 5580 + ] 5581 + 5582 + [[package]] 5583 + name = "rav1e" 5584 + version = "0.8.1" 5585 + source = "registry+https://github.com/rust-lang/crates.io-index" 5586 + checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" 5587 + dependencies = [ 5588 + "aligned-vec", 5589 + "arbitrary", 5590 + "arg_enum_proc_macro", 5591 + "arrayvec", 5592 + "av-scenechange", 5593 + "av1-grain", 5594 + "bitstream-io", 5595 + "built", 5596 + "cfg-if", 5597 + "interpolate_name", 5598 + "itertools", 5599 + "libc", 5600 + "libfuzzer-sys", 5601 + "log", 5602 + "maybe-rayon", 5603 + "new_debug_unreachable", 5604 + "noop_proc_macro", 5605 + "num-derive", 5606 + "num-traits", 5607 + "paste", 5608 + "profiling", 5609 + "rand 0.9.4", 5610 + "rand_chacha 0.9.0", 5611 + "simd_helpers", 5612 + "thiserror 2.0.18", 5613 + "v_frame", 5614 + "wasm-bindgen", 5615 + ] 5616 + 5617 + [[package]] 5618 + name = "ravif" 5619 + version = "0.13.0" 5620 + source = "registry+https://github.com/rust-lang/crates.io-index" 5621 + checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" 5622 + dependencies = [ 5623 + "avif-serialize", 5624 + "imgref", 5625 + "loop9", 5626 + "quick-error", 5627 + "rav1e", 5628 + "rayon", 5629 + "rgb", 5630 + ] 5631 + 5632 + [[package]] 5633 + name = "raw-window-handle" 5634 + version = "0.5.2" 5635 + source = "registry+https://github.com/rust-lang/crates.io-index" 5636 + checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" 5637 + 5638 + [[package]] 5639 + name = "raw-window-handle" 5640 + version = "0.6.2" 5641 + source = "registry+https://github.com/rust-lang/crates.io-index" 5642 + checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" 5643 + 5644 + [[package]] 5645 + name = "rayon" 5646 + version = "1.12.0" 5647 + source = "registry+https://github.com/rust-lang/crates.io-index" 5648 + checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" 5649 + dependencies = [ 5650 + "either", 5651 + "rayon-core", 5652 + ] 5653 + 5654 + [[package]] 5655 + name = "rayon-core" 5656 + version = "1.13.0" 5657 + source = "registry+https://github.com/rust-lang/crates.io-index" 5658 + checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" 5659 + dependencies = [ 5660 + "crossbeam-deque", 5661 + "crossbeam-utils", 5662 + ] 5663 + 5664 + [[package]] 5665 + name = "redox_syscall" 5666 + version = "0.5.18" 5667 + source = "registry+https://github.com/rust-lang/crates.io-index" 5668 + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 5669 + dependencies = [ 5670 + "bitflags 2.13.0", 5671 + ] 5672 + 5673 + [[package]] 5674 + name = "redox_users" 5675 + version = "0.5.2" 5676 + source = "registry+https://github.com/rust-lang/crates.io-index" 5677 + checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" 5678 + dependencies = [ 5679 + "getrandom 0.2.17", 5680 + "libredox", 5681 + "thiserror 2.0.18", 5682 + ] 5683 + 5684 + [[package]] 5685 + name = "ref-cast" 5686 + version = "1.0.25" 5687 + source = "registry+https://github.com/rust-lang/crates.io-index" 5688 + checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" 5689 + dependencies = [ 5690 + "ref-cast-impl", 5691 + ] 5692 + 5693 + [[package]] 5694 + name = "ref-cast-impl" 5695 + version = "1.0.25" 5696 + source = "registry+https://github.com/rust-lang/crates.io-index" 5697 + checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" 5698 + dependencies = [ 5699 + "proc-macro2", 5700 + "quote", 5701 + "syn 2.0.118", 5702 + ] 5703 + 5704 + [[package]] 5705 + name = "regex" 5706 + version = "1.12.4" 5707 + source = "registry+https://github.com/rust-lang/crates.io-index" 5708 + checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" 5709 + dependencies = [ 5710 + "aho-corasick", 5711 + "memchr", 5712 + "regex-automata", 5713 + "regex-syntax", 5714 + ] 5715 + 5716 + [[package]] 5717 + name = "regex-automata" 5718 + version = "0.4.14" 5719 + source = "registry+https://github.com/rust-lang/crates.io-index" 5720 + checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" 5721 + dependencies = [ 5722 + "aho-corasick", 5723 + "memchr", 5724 + "regex-syntax", 5725 + ] 5726 + 5727 + [[package]] 5728 + name = "regex-lite" 5729 + version = "0.1.9" 5730 + source = "registry+https://github.com/rust-lang/crates.io-index" 5731 + checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" 5732 + 5733 + [[package]] 5734 + name = "regex-syntax" 5735 + version = "0.8.11" 5736 + source = "registry+https://github.com/rust-lang/crates.io-index" 5737 + checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" 5738 + 5739 + [[package]] 5740 + name = "reqwest" 5741 + version = "0.12.28" 5742 + source = "registry+https://github.com/rust-lang/crates.io-index" 5743 + checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" 5744 + dependencies = [ 5745 + "base64", 5746 + "bytes", 5747 + "cookie", 5748 + "cookie_store", 5749 + "encoding_rs", 5750 + "futures-core", 5751 + "futures-util", 5752 + "h2", 5753 + "http", 5754 + "http-body", 5755 + "http-body-util", 5756 + "hyper", 5757 + "hyper-rustls", 5758 + "hyper-util", 5759 + "js-sys", 5760 + "log", 5761 + "mime", 5762 + "mime_guess", 5763 + "percent-encoding", 5764 + "pin-project-lite", 5765 + "quinn", 5766 + "rustls", 5767 + "rustls-pki-types", 5768 + "serde", 5769 + "serde_json", 5770 + "serde_urlencoded", 5771 + "sync_wrapper", 5772 + "tokio", 5773 + "tokio-rustls", 5774 + "tokio-util", 5775 + "tower", 5776 + "tower-http", 5777 + "tower-service", 5778 + "url", 5779 + "wasm-bindgen", 5780 + "wasm-bindgen-futures", 5781 + "wasm-streams", 5782 + "web-sys", 5783 + "webpki-roots", 5784 + ] 5785 + 5786 + [[package]] 5787 + name = "rfc6979" 5788 + version = "0.4.0" 5789 + source = "registry+https://github.com/rust-lang/crates.io-index" 5790 + checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" 5791 + dependencies = [ 5792 + "hmac", 5793 + "subtle", 5794 + ] 5795 + 5796 + [[package]] 5797 + name = "rfd" 5798 + version = "0.17.2" 5799 + source = "registry+https://github.com/rust-lang/crates.io-index" 5800 + checksum = "20dafead71c16a34e1ff357ddefc8afc11e7d51d6d2b9fbd07eaa48e3e540220" 5801 + dependencies = [ 5802 + "block2", 5803 + "dispatch2", 5804 + "js-sys", 5805 + "libc", 5806 + "log", 5807 + "objc2", 5808 + "objc2-app-kit", 5809 + "objc2-core-foundation", 5810 + "objc2-foundation", 5811 + "percent-encoding", 5812 + "pollster", 5813 + "raw-window-handle 0.6.2", 5814 + "wasm-bindgen", 5815 + "wasm-bindgen-futures", 5816 + "web-sys", 5817 + "windows-sys 0.61.2", 5818 + ] 5819 + 5820 + [[package]] 5821 + name = "rgb" 5822 + version = "0.8.53" 5823 + source = "registry+https://github.com/rust-lang/crates.io-index" 5824 + checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" 5825 + 5826 + [[package]] 5827 + name = "ring" 5828 + version = "0.17.14" 5829 + source = "registry+https://github.com/rust-lang/crates.io-index" 5830 + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 5831 + dependencies = [ 5832 + "cc", 5833 + "cfg-if", 5834 + "getrandom 0.2.17", 5835 + "libc", 5836 + "untrusted", 5837 + "windows-sys 0.52.0", 5838 + ] 5839 + 5840 + [[package]] 5841 + name = "rsa" 5842 + version = "0.9.10" 5843 + source = "registry+https://github.com/rust-lang/crates.io-index" 5844 + checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d" 5845 + dependencies = [ 5846 + "const-oid", 5847 + "digest", 5848 + "num-bigint-dig", 5849 + "num-integer", 5850 + "num-traits", 5851 + "pkcs1", 5852 + "pkcs8", 5853 + "rand_core 0.6.4", 5854 + "signature", 5855 + "spki", 5856 + "subtle", 5857 + "zeroize", 5858 + ] 5859 + 5860 + [[package]] 5861 + name = "rustc-hash" 5862 + version = "1.1.0" 5863 + source = "registry+https://github.com/rust-lang/crates.io-index" 5864 + checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 5865 + 5866 + [[package]] 5867 + name = "rustc-hash" 5868 + version = "2.1.2" 5869 + source = "registry+https://github.com/rust-lang/crates.io-index" 5870 + checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" 5871 + 5872 + [[package]] 5873 + name = "rustc_version" 5874 + version = "0.4.1" 5875 + source = "registry+https://github.com/rust-lang/crates.io-index" 5876 + checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" 5877 + dependencies = [ 5878 + "semver", 5879 + ] 5880 + 5881 + [[package]] 5882 + name = "rustix" 5883 + version = "1.1.4" 5884 + source = "registry+https://github.com/rust-lang/crates.io-index" 5885 + checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" 5886 + dependencies = [ 5887 + "bitflags 2.13.0", 5888 + "errno", 5889 + "libc", 5890 + "linux-raw-sys", 5891 + "windows-sys 0.61.2", 5892 + ] 5893 + 5894 + [[package]] 5895 + name = "rustls" 5896 + version = "0.23.40" 5897 + source = "registry+https://github.com/rust-lang/crates.io-index" 5898 + checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" 5899 + dependencies = [ 5900 + "once_cell", 5901 + "ring", 5902 + "rustls-pki-types", 5903 + "rustls-webpki", 5904 + "subtle", 5905 + "zeroize", 5906 + ] 5907 + 5908 + [[package]] 5909 + name = "rustls-pki-types" 5910 + version = "1.14.1" 5911 + source = "registry+https://github.com/rust-lang/crates.io-index" 5912 + checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" 5913 + dependencies = [ 5914 + "web-time", 5915 + "zeroize", 5916 + ] 5917 + 5918 + [[package]] 5919 + name = "rustls-webpki" 5920 + version = "0.103.13" 5921 + source = "registry+https://github.com/rust-lang/crates.io-index" 5922 + checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" 5923 + dependencies = [ 5924 + "ring", 5925 + "rustls-pki-types", 5926 + "untrusted", 5927 + ] 5928 + 5929 + [[package]] 5930 + name = "rustversion" 5931 + version = "1.0.22" 5932 + source = "registry+https://github.com/rust-lang/crates.io-index" 5933 + checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 5934 + 5935 + [[package]] 5936 + name = "ryu" 5937 + version = "1.0.23" 5938 + source = "registry+https://github.com/rust-lang/crates.io-index" 5939 + checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" 5940 + 5941 + [[package]] 5942 + name = "same-file" 5943 + version = "1.0.6" 5944 + source = "registry+https://github.com/rust-lang/crates.io-index" 5945 + checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 5946 + dependencies = [ 5947 + "winapi-util", 5948 + ] 5949 + 5950 + [[package]] 5951 + name = "schannel" 5952 + version = "0.1.29" 5953 + source = "registry+https://github.com/rust-lang/crates.io-index" 5954 + checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" 5955 + dependencies = [ 5956 + "windows-sys 0.61.2", 5957 + ] 5958 + 5959 + [[package]] 5960 + name = "scoped-tls" 5961 + version = "1.0.1" 5962 + source = "registry+https://github.com/rust-lang/crates.io-index" 5963 + checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 5964 + 5965 + [[package]] 5966 + name = "scopeguard" 5967 + version = "1.2.0" 5968 + source = "registry+https://github.com/rust-lang/crates.io-index" 5969 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 5970 + 5971 + [[package]] 5972 + name = "sec1" 5973 + version = "0.7.3" 5974 + source = "registry+https://github.com/rust-lang/crates.io-index" 5975 + checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" 5976 + dependencies = [ 5977 + "base16ct", 5978 + "der", 5979 + "generic-array", 5980 + "pkcs8", 5981 + "subtle", 5982 + "zeroize", 5983 + ] 5984 + 5985 + [[package]] 5986 + name = "security-framework" 5987 + version = "3.7.0" 5988 + source = "registry+https://github.com/rust-lang/crates.io-index" 5989 + checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" 5990 + dependencies = [ 5991 + "bitflags 2.13.0", 5992 + "core-foundation 0.10.1", 5993 + "core-foundation-sys", 5994 + "libc", 5995 + "security-framework-sys", 5996 + ] 5997 + 5998 + [[package]] 5999 + name = "security-framework-sys" 6000 + version = "2.17.0" 6001 + source = "registry+https://github.com/rust-lang/crates.io-index" 6002 + checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" 6003 + dependencies = [ 6004 + "core-foundation-sys", 6005 + "libc", 6006 + ] 6007 + 6008 + [[package]] 6009 + name = "selectors" 6010 + version = "0.24.0" 6011 + source = "registry+https://github.com/rust-lang/crates.io-index" 6012 + checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" 6013 + dependencies = [ 6014 + "bitflags 1.3.2", 6015 + "cssparser", 6016 + "derive_more 0.99.20", 6017 + "fxhash", 6018 + "log", 6019 + "phf 0.8.0", 6020 + "phf_codegen 0.8.0", 6021 + "precomputed-hash", 6022 + "servo_arc", 6023 + "smallvec", 6024 + ] 6025 + 6026 + [[package]] 6027 + name = "semver" 6028 + version = "1.0.28" 6029 + source = "registry+https://github.com/rust-lang/crates.io-index" 6030 + checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" 6031 + 6032 + [[package]] 6033 + name = "send_wrapper" 6034 + version = "0.6.0" 6035 + source = "registry+https://github.com/rust-lang/crates.io-index" 6036 + checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" 6037 + dependencies = [ 6038 + "futures-core", 6039 + ] 6040 + 6041 + [[package]] 6042 + name = "serde" 6043 + version = "1.0.228" 6044 + source = "registry+https://github.com/rust-lang/crates.io-index" 6045 + checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 6046 + dependencies = [ 6047 + "serde_core", 6048 + "serde_derive", 6049 + ] 6050 + 6051 + [[package]] 6052 + name = "serde-wasm-bindgen" 6053 + version = "0.6.5" 6054 + source = "registry+https://github.com/rust-lang/crates.io-index" 6055 + checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" 6056 + dependencies = [ 6057 + "js-sys", 6058 + "serde", 6059 + "wasm-bindgen", 6060 + ] 6061 + 6062 + [[package]] 6063 + name = "serde_bytes" 6064 + version = "0.11.19" 6065 + source = "registry+https://github.com/rust-lang/crates.io-index" 6066 + checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" 6067 + dependencies = [ 6068 + "serde", 6069 + "serde_core", 6070 + ] 6071 + 6072 + [[package]] 6073 + name = "serde_core" 6074 + version = "1.0.228" 6075 + source = "registry+https://github.com/rust-lang/crates.io-index" 6076 + checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 6077 + dependencies = [ 6078 + "serde_derive", 6079 + ] 6080 + 6081 + [[package]] 6082 + name = "serde_derive" 6083 + version = "1.0.228" 6084 + source = "registry+https://github.com/rust-lang/crates.io-index" 6085 + checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 6086 + dependencies = [ 6087 + "proc-macro2", 6088 + "quote", 6089 + "syn 2.0.118", 6090 + ] 6091 + 6092 + [[package]] 6093 + name = "serde_html_form" 6094 + version = "0.3.2" 6095 + source = "registry+https://github.com/rust-lang/crates.io-index" 6096 + checksum = "2acf96b1d9364968fce46ebb548f1c0e1d7eceae27bdff73865d42e6c7369d94" 6097 + dependencies = [ 6098 + "form_urlencoded", 6099 + "indexmap", 6100 + "itoa", 6101 + "serde_core", 6102 + ] 6103 + 6104 + [[package]] 6105 + name = "serde_ipld_dagcbor" 6106 + version = "0.6.4" 6107 + source = "registry+https://github.com/rust-lang/crates.io-index" 6108 + checksum = "46182f4f08349a02b45c998ba3215d3f9de826246ba02bb9dddfe9a2a2100778" 6109 + dependencies = [ 6110 + "cbor4ii", 6111 + "ipld-core", 6112 + "scopeguard", 6113 + "serde", 6114 + ] 6115 + 6116 + [[package]] 6117 + name = "serde_json" 6118 + version = "1.0.150" 6119 + source = "registry+https://github.com/rust-lang/crates.io-index" 6120 + checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" 6121 + dependencies = [ 6122 + "itoa", 6123 + "memchr", 6124 + "serde", 6125 + "serde_core", 6126 + "zmij", 6127 + ] 6128 + 6129 + [[package]] 6130 + name = "serde_path_to_error" 6131 + version = "0.1.20" 6132 + source = "registry+https://github.com/rust-lang/crates.io-index" 6133 + checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" 6134 + dependencies = [ 6135 + "itoa", 6136 + "serde", 6137 + "serde_core", 6138 + ] 6139 + 6140 + [[package]] 6141 + name = "serde_qs" 6142 + version = "0.15.0" 6143 + source = "registry+https://github.com/rust-lang/crates.io-index" 6144 + checksum = "f3faaf9e727533a19351a43cc5a8de957372163c7d35cc48c90b75cdda13c352" 6145 + dependencies = [ 6146 + "percent-encoding", 6147 + "serde", 6148 + "thiserror 2.0.18", 6149 + ] 6150 + 6151 + [[package]] 6152 + name = "serde_repr" 6153 + version = "0.1.20" 6154 + source = "registry+https://github.com/rust-lang/crates.io-index" 6155 + checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" 6156 + dependencies = [ 6157 + "proc-macro2", 6158 + "quote", 6159 + "syn 2.0.118", 6160 + ] 6161 + 6162 + [[package]] 6163 + name = "serde_spanned" 6164 + version = "0.6.9" 6165 + source = "registry+https://github.com/rust-lang/crates.io-index" 6166 + checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" 6167 + dependencies = [ 6168 + "serde", 6169 + ] 6170 + 6171 + [[package]] 6172 + name = "serde_urlencoded" 6173 + version = "0.7.1" 6174 + source = "registry+https://github.com/rust-lang/crates.io-index" 6175 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 6176 + dependencies = [ 6177 + "form_urlencoded", 6178 + "itoa", 6179 + "ryu", 6180 + "serde", 6181 + ] 6182 + 6183 + [[package]] 6184 + name = "serde_with" 6185 + version = "3.21.0" 6186 + source = "registry+https://github.com/rust-lang/crates.io-index" 6187 + checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" 6188 + dependencies = [ 6189 + "base64", 6190 + "bs58", 6191 + "chrono", 6192 + "hex", 6193 + "serde_core", 6194 + "serde_json", 6195 + "serde_with_macros", 6196 + "time", 6197 + ] 6198 + 6199 + [[package]] 6200 + name = "serde_with_macros" 6201 + version = "3.21.0" 6202 + source = "registry+https://github.com/rust-lang/crates.io-index" 6203 + checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" 6204 + dependencies = [ 6205 + "darling 0.23.0", 6206 + "proc-macro2", 6207 + "quote", 6208 + "syn 2.0.118", 6209 + ] 6210 + 6211 + [[package]] 6212 + name = "servo_arc" 6213 + version = "0.2.0" 6214 + source = "registry+https://github.com/rust-lang/crates.io-index" 6215 + checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" 6216 + dependencies = [ 6217 + "nodrop", 6218 + "stable_deref_trait", 6219 + ] 6220 + 6221 + [[package]] 6222 + name = "sha1" 6223 + version = "0.10.6" 6224 + source = "registry+https://github.com/rust-lang/crates.io-index" 6225 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 6226 + dependencies = [ 6227 + "cfg-if", 6228 + "cpufeatures", 6229 + "digest", 6230 + ] 6231 + 6232 + [[package]] 6233 + name = "sha2" 6234 + version = "0.10.9" 6235 + source = "registry+https://github.com/rust-lang/crates.io-index" 6236 + checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 6237 + dependencies = [ 6238 + "cfg-if", 6239 + "cpufeatures", 6240 + "digest", 6241 + ] 6242 + 6243 + [[package]] 6244 + name = "sharded-slab" 6245 + version = "0.1.7" 6246 + source = "registry+https://github.com/rust-lang/crates.io-index" 6247 + checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 6248 + dependencies = [ 6249 + "lazy_static", 6250 + ] 6251 + 6252 + [[package]] 6253 + name = "shlex" 6254 + version = "2.0.1" 6255 + source = "registry+https://github.com/rust-lang/crates.io-index" 6256 + checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" 6257 + 6258 + [[package]] 6259 + name = "signal-hook" 6260 + version = "0.3.18" 6261 + source = "registry+https://github.com/rust-lang/crates.io-index" 6262 + checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" 6263 + dependencies = [ 6264 + "libc", 6265 + "signal-hook-registry", 6266 + ] 6267 + 6268 + [[package]] 6269 + name = "signal-hook-registry" 6270 + version = "1.4.8" 6271 + source = "registry+https://github.com/rust-lang/crates.io-index" 6272 + checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" 6273 + dependencies = [ 6274 + "errno", 6275 + "libc", 6276 + ] 6277 + 6278 + [[package]] 6279 + name = "signature" 6280 + version = "2.2.0" 6281 + source = "registry+https://github.com/rust-lang/crates.io-index" 6282 + checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 6283 + dependencies = [ 6284 + "digest", 6285 + "rand_core 0.6.4", 6286 + ] 6287 + 6288 + [[package]] 6289 + name = "simd-adler32" 6290 + version = "0.3.9" 6291 + source = "registry+https://github.com/rust-lang/crates.io-index" 6292 + checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" 6293 + 6294 + [[package]] 6295 + name = "simd_cesu8" 6296 + version = "1.1.1" 6297 + source = "registry+https://github.com/rust-lang/crates.io-index" 6298 + checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" 6299 + dependencies = [ 6300 + "rustc_version", 6301 + "simdutf8", 6302 + ] 6303 + 6304 + [[package]] 6305 + name = "simd_helpers" 6306 + version = "0.1.0" 6307 + source = "registry+https://github.com/rust-lang/crates.io-index" 6308 + checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" 6309 + dependencies = [ 6310 + "quote", 6311 + ] 6312 + 6313 + [[package]] 6314 + name = "simdutf8" 6315 + version = "0.1.5" 6316 + source = "registry+https://github.com/rust-lang/crates.io-index" 6317 + checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" 6318 + 6319 + [[package]] 6320 + name = "siphasher" 6321 + version = "0.3.11" 6322 + source = "registry+https://github.com/rust-lang/crates.io-index" 6323 + checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 6324 + 6325 + [[package]] 6326 + name = "siphasher" 6327 + version = "1.0.3" 6328 + source = "registry+https://github.com/rust-lang/crates.io-index" 6329 + checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" 6330 + 6331 + [[package]] 6332 + name = "slab" 6333 + version = "0.4.12" 6334 + source = "registry+https://github.com/rust-lang/crates.io-index" 6335 + checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" 6336 + 6337 + [[package]] 6338 + name = "sledgehammer_bindgen" 6339 + version = "0.6.0" 6340 + source = "registry+https://github.com/rust-lang/crates.io-index" 6341 + checksum = "49e83e178d176459c92bc129cfd0958afac3ced925471b889b3a75546cfc4133" 6342 + dependencies = [ 6343 + "sledgehammer_bindgen_macro", 6344 + "wasm-bindgen", 6345 + ] 6346 + 6347 + [[package]] 6348 + name = "sledgehammer_bindgen_macro" 6349 + version = "0.6.5" 6350 + source = "registry+https://github.com/rust-lang/crates.io-index" 6351 + checksum = "bb251b407f50028476a600541542b605bb864d35d9ee1de4f6cab45d88475e6d" 6352 + dependencies = [ 6353 + "quote", 6354 + "syn 2.0.118", 6355 + ] 6356 + 6357 + [[package]] 6358 + name = "sledgehammer_utils" 6359 + version = "0.3.1" 6360 + source = "registry+https://github.com/rust-lang/crates.io-index" 6361 + checksum = "debdd4b83524961983cea3c55383b3910fd2f24fd13a188f5b091d2d504a61ae" 6362 + dependencies = [ 6363 + "rustc-hash 1.1.0", 6364 + ] 6365 + 6366 + [[package]] 6367 + name = "slotmap" 6368 + version = "1.1.1" 6369 + source = "registry+https://github.com/rust-lang/crates.io-index" 6370 + checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" 6371 + dependencies = [ 6372 + "serde", 6373 + "version_check", 6374 + ] 6375 + 6376 + [[package]] 6377 + name = "smallvec" 6378 + version = "1.15.2" 6379 + source = "registry+https://github.com/rust-lang/crates.io-index" 6380 + checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" 6381 + 6382 + [[package]] 6383 + name = "smol_str" 6384 + version = "0.3.6" 6385 + source = "registry+https://github.com/rust-lang/crates.io-index" 6386 + checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523" 6387 + dependencies = [ 6388 + "borsh", 6389 + "serde_core", 6390 + ] 6391 + 6392 + [[package]] 6393 + name = "socket2" 6394 + version = "0.6.4" 6395 + source = "registry+https://github.com/rust-lang/crates.io-index" 6396 + checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" 6397 + dependencies = [ 6398 + "libc", 6399 + "windows-sys 0.61.2", 6400 + ] 6401 + 6402 + [[package]] 6403 + name = "soup3" 6404 + version = "0.5.0" 6405 + source = "registry+https://github.com/rust-lang/crates.io-index" 6406 + checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" 6407 + dependencies = [ 6408 + "futures-channel", 6409 + "gio", 6410 + "glib", 6411 + "libc", 6412 + "soup3-sys", 6413 + ] 6414 + 6415 + [[package]] 6416 + name = "soup3-sys" 6417 + version = "0.5.0" 6418 + source = "registry+https://github.com/rust-lang/crates.io-index" 6419 + checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" 6420 + dependencies = [ 6421 + "gio-sys", 6422 + "glib-sys", 6423 + "gobject-sys", 6424 + "libc", 6425 + "system-deps", 6426 + ] 6427 + 6428 + [[package]] 6429 + name = "spin" 6430 + version = "0.9.8" 6431 + source = "registry+https://github.com/rust-lang/crates.io-index" 6432 + checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 6433 + dependencies = [ 6434 + "lock_api", 6435 + ] 6436 + 6437 + [[package]] 6438 + name = "spin" 6439 + version = "0.10.0" 6440 + source = "registry+https://github.com/rust-lang/crates.io-index" 6441 + checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" 6442 + 6443 + [[package]] 6444 + name = "spki" 6445 + version = "0.7.3" 6446 + source = "registry+https://github.com/rust-lang/crates.io-index" 6447 + checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 6448 + dependencies = [ 6449 + "base64ct", 6450 + "der", 6451 + ] 6452 + 6453 + [[package]] 6454 + name = "stable_deref_trait" 6455 + version = "1.2.1" 6456 + source = "registry+https://github.com/rust-lang/crates.io-index" 6457 + checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 6458 + 6459 + [[package]] 6460 + name = "string_cache" 6461 + version = "0.8.9" 6462 + source = "registry+https://github.com/rust-lang/crates.io-index" 6463 + checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" 6464 + dependencies = [ 6465 + "new_debug_unreachable", 6466 + "parking_lot", 6467 + "phf_shared 0.11.3", 6468 + "precomputed-hash", 6469 + "serde", 6470 + ] 6471 + 6472 + [[package]] 6473 + name = "string_cache_codegen" 6474 + version = "0.5.4" 6475 + source = "registry+https://github.com/rust-lang/crates.io-index" 6476 + checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" 6477 + dependencies = [ 6478 + "phf_generator 0.11.3", 6479 + "phf_shared 0.11.3", 6480 + "proc-macro2", 6481 + "quote", 6482 + ] 6483 + 6484 + [[package]] 6485 + name = "strsim" 6486 + version = "0.11.1" 6487 + source = "registry+https://github.com/rust-lang/crates.io-index" 6488 + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 6489 + 6490 + [[package]] 6491 + name = "subsecond" 6492 + version = "0.7.9" 6493 + source = "registry+https://github.com/rust-lang/crates.io-index" 6494 + checksum = "9cc79674bd55726e6b123204403389400229a95fe4a3b2c5453dada70b06ca95" 6495 + dependencies = [ 6496 + "js-sys", 6497 + "libc", 6498 + "libloading 0.8.9", 6499 + "memfd", 6500 + "memmap2", 6501 + "serde", 6502 + "subsecond-types", 6503 + "thiserror 2.0.18", 6504 + "wasm-bindgen", 6505 + "wasm-bindgen-futures", 6506 + "web-sys", 6507 + ] 6508 + 6509 + [[package]] 6510 + name = "subsecond-types" 6511 + version = "0.7.9" 6512 + source = "registry+https://github.com/rust-lang/crates.io-index" 6513 + checksum = "e9798bfed58797aed51c672aa99810aac30a50d3120ecfdcf28c13784e9a8f1c" 6514 + dependencies = [ 6515 + "serde", 6516 + ] 6517 + 6518 + [[package]] 6519 + name = "subtle" 6520 + version = "2.6.1" 6521 + source = "registry+https://github.com/rust-lang/crates.io-index" 6522 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 6523 + 6524 + [[package]] 6525 + name = "syn" 6526 + version = "1.0.109" 6527 + source = "registry+https://github.com/rust-lang/crates.io-index" 6528 + checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 6529 + dependencies = [ 6530 + "proc-macro2", 6531 + "quote", 6532 + "unicode-ident", 6533 + ] 6534 + 6535 + [[package]] 6536 + name = "syn" 6537 + version = "2.0.118" 6538 + source = "registry+https://github.com/rust-lang/crates.io-index" 6539 + checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" 6540 + dependencies = [ 6541 + "proc-macro2", 6542 + "quote", 6543 + "unicode-ident", 6544 + ] 6545 + 6546 + [[package]] 6547 + name = "sync_wrapper" 6548 + version = "1.0.2" 6549 + source = "registry+https://github.com/rust-lang/crates.io-index" 6550 + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 6551 + dependencies = [ 6552 + "futures-core", 6553 + ] 6554 + 6555 + [[package]] 6556 + name = "synstructure" 6557 + version = "0.13.2" 6558 + source = "registry+https://github.com/rust-lang/crates.io-index" 6559 + checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 6560 + dependencies = [ 6561 + "proc-macro2", 6562 + "quote", 6563 + "syn 2.0.118", 6564 + ] 6565 + 6566 + [[package]] 6567 + name = "system-configuration" 6568 + version = "0.7.0" 6569 + source = "registry+https://github.com/rust-lang/crates.io-index" 6570 + checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" 6571 + dependencies = [ 6572 + "bitflags 2.13.0", 6573 + "core-foundation 0.9.4", 6574 + "system-configuration-sys", 6575 + ] 6576 + 6577 + [[package]] 6578 + name = "system-configuration-sys" 6579 + version = "0.6.0" 6580 + source = "registry+https://github.com/rust-lang/crates.io-index" 6581 + checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 6582 + dependencies = [ 6583 + "core-foundation-sys", 6584 + "libc", 6585 + ] 6586 + 6587 + [[package]] 6588 + name = "system-deps" 6589 + version = "6.2.2" 6590 + source = "registry+https://github.com/rust-lang/crates.io-index" 6591 + checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" 6592 + dependencies = [ 6593 + "cfg-expr", 6594 + "heck 0.5.0", 6595 + "pkg-config", 6596 + "toml", 6597 + "version-compare", 6598 + ] 6599 + 6600 + [[package]] 6601 + name = "tagptr" 6602 + version = "0.2.0" 6603 + source = "registry+https://github.com/rust-lang/crates.io-index" 6604 + checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 6605 + 6606 + [[package]] 6607 + name = "tao" 6608 + version = "0.34.8" 6609 + source = "registry+https://github.com/rust-lang/crates.io-index" 6610 + checksum = "9103edf55f2da3c82aea4c7fab7c4241032bfeea0e71fa557d98e00e7ce7cc20" 6611 + dependencies = [ 6612 + "bitflags 2.13.0", 6613 + "block2", 6614 + "core-foundation 0.10.1", 6615 + "core-graphics 0.25.0", 6616 + "crossbeam-channel", 6617 + "dispatch2", 6618 + "dlopen2", 6619 + "dpi", 6620 + "gdkwayland-sys", 6621 + "gdkx11-sys", 6622 + "gtk", 6623 + "jni 0.21.1", 6624 + "libc", 6625 + "log", 6626 + "ndk", 6627 + "ndk-context", 6628 + "ndk-sys", 6629 + "objc2", 6630 + "objc2-app-kit", 6631 + "objc2-foundation", 6632 + "once_cell", 6633 + "parking_lot", 6634 + "raw-window-handle 0.5.2", 6635 + "raw-window-handle 0.6.2", 6636 + "tao-macros", 6637 + "unicode-segmentation", 6638 + "url", 6639 + "windows", 6640 + "windows-core 0.61.2", 6641 + "windows-version", 6642 + "x11-dl", 6643 + ] 6644 + 6645 + [[package]] 6646 + name = "tao-macros" 6647 + version = "0.1.3" 6648 + source = "registry+https://github.com/rust-lang/crates.io-index" 6649 + checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" 6650 + dependencies = [ 6651 + "proc-macro2", 6652 + "quote", 6653 + "syn 2.0.118", 6654 + ] 6655 + 6656 + [[package]] 6657 + name = "target-lexicon" 6658 + version = "0.12.16" 6659 + source = "registry+https://github.com/rust-lang/crates.io-index" 6660 + checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" 6661 + 6662 + [[package]] 6663 + name = "tempfile" 6664 + version = "3.27.0" 6665 + source = "registry+https://github.com/rust-lang/crates.io-index" 6666 + checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" 6667 + dependencies = [ 6668 + "fastrand", 6669 + "getrandom 0.4.3", 6670 + "once_cell", 6671 + "rustix", 6672 + "windows-sys 0.61.2", 6673 + ] 6674 + 6675 + [[package]] 6676 + name = "tendril" 6677 + version = "0.4.3" 6678 + source = "registry+https://github.com/rust-lang/crates.io-index" 6679 + checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" 6680 + dependencies = [ 6681 + "futf", 6682 + "mac", 6683 + "utf-8", 6684 + ] 6685 + 6686 + [[package]] 6687 + name = "thiserror" 6688 + version = "1.0.69" 6689 + source = "registry+https://github.com/rust-lang/crates.io-index" 6690 + checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 6691 + dependencies = [ 6692 + "thiserror-impl 1.0.69", 6693 + ] 6694 + 6695 + [[package]] 6696 + name = "thiserror" 6697 + version = "2.0.18" 6698 + source = "registry+https://github.com/rust-lang/crates.io-index" 6699 + checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" 6700 + dependencies = [ 6701 + "thiserror-impl 2.0.18", 6702 + ] 6703 + 6704 + [[package]] 6705 + name = "thiserror-impl" 6706 + version = "1.0.69" 6707 + source = "registry+https://github.com/rust-lang/crates.io-index" 6708 + checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 6709 + dependencies = [ 6710 + "proc-macro2", 6711 + "quote", 6712 + "syn 2.0.118", 6713 + ] 6714 + 6715 + [[package]] 6716 + name = "thiserror-impl" 6717 + version = "2.0.18" 6718 + source = "registry+https://github.com/rust-lang/crates.io-index" 6719 + checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" 6720 + dependencies = [ 6721 + "proc-macro2", 6722 + "quote", 6723 + "syn 2.0.118", 6724 + ] 6725 + 6726 + [[package]] 6727 + name = "thread_local" 6728 + version = "1.1.9" 6729 + source = "registry+https://github.com/rust-lang/crates.io-index" 6730 + checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 6731 + dependencies = [ 6732 + "cfg-if", 6733 + ] 6734 + 6735 + [[package]] 6736 + name = "tiff" 6737 + version = "0.11.3" 6738 + source = "registry+https://github.com/rust-lang/crates.io-index" 6739 + checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" 6740 + dependencies = [ 6741 + "fax", 6742 + "flate2", 6743 + "half", 6744 + "quick-error", 6745 + "weezl", 6746 + "zune-jpeg", 6747 + ] 6748 + 6749 + [[package]] 6750 + name = "time" 6751 + version = "0.3.49" 6752 + source = "registry+https://github.com/rust-lang/crates.io-index" 6753 + checksum = "711a53c2d47bbd818258c498c8dbfe186a2526c631495cfe7e078567f86b8469" 6754 + dependencies = [ 6755 + "deranged", 6756 + "num-conv", 6757 + "powerfmt", 6758 + "serde_core", 6759 + "time-core", 6760 + "time-macros", 6761 + ] 6762 + 6763 + [[package]] 6764 + name = "time-core" 6765 + version = "0.1.9" 6766 + source = "registry+https://github.com/rust-lang/crates.io-index" 6767 + checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" 6768 + 6769 + [[package]] 6770 + name = "time-macros" 6771 + version = "0.2.29" 6772 + source = "registry+https://github.com/rust-lang/crates.io-index" 6773 + checksum = "71c652a3727a9cbb9a02f707f530b618ce00d0ccd762009c8c23bd191df3c17d" 6774 + dependencies = [ 6775 + "num-conv", 6776 + "time-core", 6777 + ] 6778 + 6779 + [[package]] 6780 + name = "tinystr" 6781 + version = "0.8.3" 6782 + source = "registry+https://github.com/rust-lang/crates.io-index" 6783 + checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" 6784 + dependencies = [ 6785 + "displaydoc", 6786 + "zerovec", 6787 + ] 6788 + 6789 + [[package]] 6790 + name = "tinyvec" 6791 + version = "1.11.0" 6792 + source = "registry+https://github.com/rust-lang/crates.io-index" 6793 + checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" 6794 + dependencies = [ 6795 + "tinyvec_macros", 6796 + ] 6797 + 6798 + [[package]] 6799 + name = "tinyvec_macros" 6800 + version = "0.1.1" 6801 + source = "registry+https://github.com/rust-lang/crates.io-index" 6802 + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 6803 + 6804 + [[package]] 6805 + name = "tokio" 6806 + version = "1.52.3" 6807 + source = "registry+https://github.com/rust-lang/crates.io-index" 6808 + checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" 6809 + dependencies = [ 6810 + "bytes", 6811 + "libc", 6812 + "mio", 6813 + "pin-project-lite", 6814 + "socket2", 6815 + "tokio-macros", 6816 + "windows-sys 0.61.2", 6817 + ] 6818 + 6819 + [[package]] 6820 + name = "tokio-macros" 6821 + version = "2.7.0" 6822 + source = "registry+https://github.com/rust-lang/crates.io-index" 6823 + checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" 6824 + dependencies = [ 6825 + "proc-macro2", 6826 + "quote", 6827 + "syn 2.0.118", 6828 + ] 6829 + 6830 + [[package]] 6831 + name = "tokio-rustls" 6832 + version = "0.26.4" 6833 + source = "registry+https://github.com/rust-lang/crates.io-index" 6834 + checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" 6835 + dependencies = [ 6836 + "rustls", 6837 + "tokio", 6838 + ] 6839 + 6840 + [[package]] 6841 + name = "tokio-stream" 6842 + version = "0.1.18" 6843 + source = "registry+https://github.com/rust-lang/crates.io-index" 6844 + checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" 6845 + dependencies = [ 6846 + "futures-core", 6847 + "pin-project-lite", 6848 + "tokio", 6849 + "tokio-util", 6850 + ] 6851 + 6852 + [[package]] 6853 + name = "tokio-tungstenite" 6854 + version = "0.28.0" 6855 + source = "registry+https://github.com/rust-lang/crates.io-index" 6856 + checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" 6857 + dependencies = [ 6858 + "futures-util", 6859 + "log", 6860 + "tokio", 6861 + "tungstenite 0.28.0", 6862 + ] 6863 + 6864 + [[package]] 6865 + name = "tokio-tungstenite" 6866 + version = "0.29.0" 6867 + source = "registry+https://github.com/rust-lang/crates.io-index" 6868 + checksum = "8f72a05e828585856dacd553fba484c242c46e391fb0e58917c942ee9202915c" 6869 + dependencies = [ 6870 + "futures-util", 6871 + "log", 6872 + "tokio", 6873 + "tungstenite 0.29.0", 6874 + ] 6875 + 6876 + [[package]] 6877 + name = "tokio-util" 6878 + version = "0.7.18" 6879 + source = "registry+https://github.com/rust-lang/crates.io-index" 6880 + checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" 6881 + dependencies = [ 6882 + "bytes", 6883 + "futures-core", 6884 + "futures-io", 6885 + "futures-sink", 6886 + "futures-util", 6887 + "pin-project-lite", 6888 + "tokio", 6889 + ] 6890 + 6891 + [[package]] 6892 + name = "toml" 6893 + version = "0.8.2" 6894 + source = "registry+https://github.com/rust-lang/crates.io-index" 6895 + checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" 6896 + dependencies = [ 6897 + "serde", 6898 + "serde_spanned", 6899 + "toml_datetime 0.6.3", 6900 + "toml_edit 0.20.2", 6901 + ] 6902 + 6903 + [[package]] 6904 + name = "toml_datetime" 6905 + version = "0.6.3" 6906 + source = "registry+https://github.com/rust-lang/crates.io-index" 6907 + checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" 6908 + dependencies = [ 6909 + "serde", 6910 + ] 6911 + 6912 + [[package]] 6913 + name = "toml_datetime" 6914 + version = "1.1.1+spec-1.1.0" 6915 + source = "registry+https://github.com/rust-lang/crates.io-index" 6916 + checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" 6917 + dependencies = [ 6918 + "serde_core", 6919 + ] 6920 + 6921 + [[package]] 6922 + name = "toml_edit" 6923 + version = "0.19.15" 6924 + source = "registry+https://github.com/rust-lang/crates.io-index" 6925 + checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" 6926 + dependencies = [ 6927 + "indexmap", 6928 + "toml_datetime 0.6.3", 6929 + "winnow 0.5.40", 6930 + ] 6931 + 6932 + [[package]] 6933 + name = "toml_edit" 6934 + version = "0.20.2" 6935 + source = "registry+https://github.com/rust-lang/crates.io-index" 6936 + checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" 6937 + dependencies = [ 6938 + "indexmap", 6939 + "serde", 6940 + "serde_spanned", 6941 + "toml_datetime 0.6.3", 6942 + "winnow 0.5.40", 6943 + ] 6944 + 6945 + [[package]] 6946 + name = "toml_edit" 6947 + version = "0.25.12+spec-1.1.0" 6948 + source = "registry+https://github.com/rust-lang/crates.io-index" 6949 + checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" 6950 + dependencies = [ 6951 + "indexmap", 6952 + "toml_datetime 1.1.1+spec-1.1.0", 6953 + "toml_parser", 6954 + "winnow 1.0.3", 6955 + ] 6956 + 6957 + [[package]] 6958 + name = "toml_parser" 6959 + version = "1.1.2+spec-1.1.0" 6960 + source = "registry+https://github.com/rust-lang/crates.io-index" 6961 + checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" 6962 + dependencies = [ 6963 + "winnow 1.0.3", 6964 + ] 6965 + 6966 + [[package]] 6967 + name = "tower" 6968 + version = "0.5.3" 6969 + source = "registry+https://github.com/rust-lang/crates.io-index" 6970 + checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" 6971 + dependencies = [ 6972 + "futures-core", 6973 + "futures-util", 6974 + "pin-project-lite", 6975 + "sync_wrapper", 6976 + "tokio", 6977 + "tower-layer", 6978 + "tower-service", 6979 + "tracing", 6980 + ] 6981 + 6982 + [[package]] 6983 + name = "tower-http" 6984 + version = "0.6.11" 6985 + source = "registry+https://github.com/rust-lang/crates.io-index" 6986 + checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" 6987 + dependencies = [ 6988 + "async-compression", 6989 + "bitflags 2.13.0", 6990 + "bytes", 6991 + "futures-core", 6992 + "futures-util", 6993 + "http", 6994 + "http-body", 6995 + "http-body-util", 6996 + "http-range-header", 6997 + "httpdate", 6998 + "mime", 6999 + "mime_guess", 7000 + "percent-encoding", 7001 + "pin-project-lite", 7002 + "tokio", 7003 + "tokio-util", 7004 + "tower", 7005 + "tower-layer", 7006 + "tower-service", 7007 + "tracing", 7008 + "url", 7009 + ] 7010 + 7011 + [[package]] 7012 + name = "tower-layer" 7013 + version = "0.3.3" 7014 + source = "registry+https://github.com/rust-lang/crates.io-index" 7015 + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 7016 + 7017 + [[package]] 7018 + name = "tower-service" 7019 + version = "0.3.3" 7020 + source = "registry+https://github.com/rust-lang/crates.io-index" 7021 + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 7022 + 7023 + [[package]] 7024 + name = "tracing" 7025 + version = "0.1.44" 7026 + source = "registry+https://github.com/rust-lang/crates.io-index" 7027 + checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" 7028 + dependencies = [ 7029 + "log", 7030 + "pin-project-lite", 7031 + "tracing-attributes", 7032 + "tracing-core", 7033 + ] 7034 + 7035 + [[package]] 7036 + name = "tracing-attributes" 7037 + version = "0.1.31" 7038 + source = "registry+https://github.com/rust-lang/crates.io-index" 7039 + checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" 7040 + dependencies = [ 7041 + "proc-macro2", 7042 + "quote", 7043 + "syn 2.0.118", 7044 + ] 7045 + 7046 + [[package]] 7047 + name = "tracing-core" 7048 + version = "0.1.36" 7049 + source = "registry+https://github.com/rust-lang/crates.io-index" 7050 + checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" 7051 + dependencies = [ 7052 + "once_cell", 7053 + "valuable", 7054 + ] 7055 + 7056 + [[package]] 7057 + name = "tracing-futures" 7058 + version = "0.2.5" 7059 + source = "registry+https://github.com/rust-lang/crates.io-index" 7060 + checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" 7061 + dependencies = [ 7062 + "pin-project", 7063 + "tracing", 7064 + ] 7065 + 7066 + [[package]] 7067 + name = "tracing-log" 7068 + version = "0.2.0" 7069 + source = "registry+https://github.com/rust-lang/crates.io-index" 7070 + checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 7071 + dependencies = [ 7072 + "log", 7073 + "once_cell", 7074 + "tracing-core", 7075 + ] 7076 + 7077 + [[package]] 7078 + name = "tracing-subscriber" 7079 + version = "0.3.23" 7080 + source = "registry+https://github.com/rust-lang/crates.io-index" 7081 + checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" 7082 + dependencies = [ 7083 + "matchers", 7084 + "nu-ansi-term", 7085 + "once_cell", 7086 + "regex-automata", 7087 + "sharded-slab", 7088 + "smallvec", 7089 + "thread_local", 7090 + "tracing", 7091 + "tracing-core", 7092 + "tracing-log", 7093 + ] 7094 + 7095 + [[package]] 7096 + name = "tracing-wasm" 7097 + version = "0.2.1" 7098 + source = "registry+https://github.com/rust-lang/crates.io-index" 7099 + checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07" 7100 + dependencies = [ 7101 + "tracing", 7102 + "tracing-subscriber", 7103 + "wasm-bindgen", 7104 + ] 7105 + 7106 + [[package]] 7107 + name = "trait-variant" 7108 + version = "0.1.2" 7109 + source = "registry+https://github.com/rust-lang/crates.io-index" 7110 + checksum = "70977707304198400eb4835a78f6a9f928bf41bba420deb8fdb175cd965d77a7" 7111 + dependencies = [ 7112 + "proc-macro2", 7113 + "quote", 7114 + "syn 2.0.118", 7115 + ] 7116 + 7117 + [[package]] 7118 + name = "tray-icon" 7119 + version = "0.21.3" 7120 + source = "registry+https://github.com/rust-lang/crates.io-index" 7121 + checksum = "a5e85aa143ceb072062fc4d6356c1b520a51d636e7bc8e77ec94be3608e5e80c" 7122 + dependencies = [ 7123 + "crossbeam-channel", 7124 + "dirs", 7125 + "libappindicator", 7126 + "muda", 7127 + "objc2", 7128 + "objc2-app-kit", 7129 + "objc2-core-foundation", 7130 + "objc2-core-graphics", 7131 + "objc2-foundation", 7132 + "once_cell", 7133 + "png 0.17.16", 7134 + "thiserror 2.0.18", 7135 + "windows-sys 0.60.2", 7136 + ] 7137 + 7138 + [[package]] 7139 + name = "triomphe" 7140 + version = "0.1.15" 7141 + source = "registry+https://github.com/rust-lang/crates.io-index" 7142 + checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" 7143 + 7144 + [[package]] 7145 + name = "try-lock" 7146 + version = "0.2.5" 7147 + source = "registry+https://github.com/rust-lang/crates.io-index" 7148 + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 7149 + 7150 + [[package]] 7151 + name = "tungstenite" 7152 + version = "0.27.0" 7153 + source = "registry+https://github.com/rust-lang/crates.io-index" 7154 + checksum = "eadc29d668c91fcc564941132e17b28a7ceb2f3ebf0b9dae3e03fd7a6748eb0d" 7155 + dependencies = [ 7156 + "bytes", 7157 + "data-encoding", 7158 + "http", 7159 + "httparse", 7160 + "log", 7161 + "rand 0.9.4", 7162 + "sha1", 7163 + "thiserror 2.0.18", 7164 + "utf-8", 7165 + ] 7166 + 7167 + [[package]] 7168 + name = "tungstenite" 7169 + version = "0.28.0" 7170 + source = "registry+https://github.com/rust-lang/crates.io-index" 7171 + checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" 7172 + dependencies = [ 7173 + "bytes", 7174 + "data-encoding", 7175 + "http", 7176 + "httparse", 7177 + "log", 7178 + "native-tls", 7179 + "rand 0.9.4", 7180 + "rustls", 7181 + "sha1", 7182 + "thiserror 2.0.18", 7183 + "utf-8", 7184 + ] 7185 + 7186 + [[package]] 7187 + name = "tungstenite" 7188 + version = "0.29.0" 7189 + source = "registry+https://github.com/rust-lang/crates.io-index" 7190 + checksum = "6c01152af293afb9c7c2a57e4b559c5620b421f6d133261c60dd2d0cdb38e6b8" 7191 + dependencies = [ 7192 + "bytes", 7193 + "data-encoding", 7194 + "http", 7195 + "httparse", 7196 + "log", 7197 + "rand 0.9.4", 7198 + "sha1", 7199 + "thiserror 2.0.18", 7200 + ] 7201 + 7202 + [[package]] 7203 + name = "typenum" 7204 + version = "1.20.1" 7205 + source = "registry+https://github.com/rust-lang/crates.io-index" 7206 + checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" 7207 + 7208 + [[package]] 7209 + name = "unicase" 7210 + version = "2.9.0" 7211 + source = "registry+https://github.com/rust-lang/crates.io-index" 7212 + checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" 7213 + 7214 + [[package]] 7215 + name = "unicode-ident" 7216 + version = "1.0.24" 7217 + source = "registry+https://github.com/rust-lang/crates.io-index" 7218 + checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" 7219 + 7220 + [[package]] 7221 + name = "unicode-segmentation" 7222 + version = "1.13.3" 7223 + source = "registry+https://github.com/rust-lang/crates.io-index" 7224 + checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" 7225 + 7226 + [[package]] 7227 + name = "unicode-width" 7228 + version = "0.1.14" 7229 + source = "registry+https://github.com/rust-lang/crates.io-index" 7230 + checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 7231 + 7232 + [[package]] 7233 + name = "unicode-xid" 7234 + version = "0.2.6" 7235 + source = "registry+https://github.com/rust-lang/crates.io-index" 7236 + checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 7237 + 7238 + [[package]] 7239 + name = "unsigned-varint" 7240 + version = "0.8.0" 7241 + source = "registry+https://github.com/rust-lang/crates.io-index" 7242 + checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" 7243 + 7244 + [[package]] 7245 + name = "untrusted" 7246 + version = "0.9.0" 7247 + source = "registry+https://github.com/rust-lang/crates.io-index" 7248 + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 7249 + 7250 + [[package]] 7251 + name = "url" 7252 + version = "2.5.8" 7253 + source = "registry+https://github.com/rust-lang/crates.io-index" 7254 + checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" 7255 + dependencies = [ 7256 + "form_urlencoded", 7257 + "idna", 7258 + "percent-encoding", 7259 + "serde", 7260 + ] 7261 + 7262 + [[package]] 7263 + name = "utf-8" 7264 + version = "0.7.6" 7265 + source = "registry+https://github.com/rust-lang/crates.io-index" 7266 + checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 7267 + 7268 + [[package]] 7269 + name = "utf8_iter" 7270 + version = "1.0.4" 7271 + source = "registry+https://github.com/rust-lang/crates.io-index" 7272 + checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 7273 + 7274 + [[package]] 7275 + name = "uuid" 7276 + version = "1.23.3" 7277 + source = "registry+https://github.com/rust-lang/crates.io-index" 7278 + checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" 7279 + dependencies = [ 7280 + "js-sys", 7281 + "wasm-bindgen", 7282 + ] 7283 + 7284 + [[package]] 7285 + name = "v_frame" 7286 + version = "0.3.9" 7287 + source = "registry+https://github.com/rust-lang/crates.io-index" 7288 + checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" 7289 + dependencies = [ 7290 + "aligned-vec", 7291 + "num-traits", 7292 + "wasm-bindgen", 7293 + ] 7294 + 7295 + [[package]] 7296 + name = "valuable" 7297 + version = "0.1.1" 7298 + source = "registry+https://github.com/rust-lang/crates.io-index" 7299 + checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 7300 + 7301 + [[package]] 7302 + name = "vcpkg" 7303 + version = "0.2.15" 7304 + source = "registry+https://github.com/rust-lang/crates.io-index" 7305 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 7306 + 7307 + [[package]] 7308 + name = "version-compare" 7309 + version = "0.2.1" 7310 + source = "registry+https://github.com/rust-lang/crates.io-index" 7311 + checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" 7312 + 7313 + [[package]] 7314 + name = "version_check" 7315 + version = "0.9.5" 7316 + source = "registry+https://github.com/rust-lang/crates.io-index" 7317 + checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 7318 + 7319 + [[package]] 7320 + name = "walkdir" 7321 + version = "2.5.0" 7322 + source = "registry+https://github.com/rust-lang/crates.io-index" 7323 + checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 7324 + dependencies = [ 7325 + "same-file", 7326 + "winapi-util", 7327 + ] 7328 + 7329 + [[package]] 7330 + name = "want" 7331 + version = "0.3.1" 7332 + source = "registry+https://github.com/rust-lang/crates.io-index" 7333 + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 7334 + dependencies = [ 7335 + "try-lock", 7336 + ] 7337 + 7338 + [[package]] 7339 + name = "warnings" 7340 + version = "0.2.1" 7341 + source = "registry+https://github.com/rust-lang/crates.io-index" 7342 + checksum = "64f68998838dab65727c9b30465595c6f7c953313559371ca8bf31759b3680ad" 7343 + dependencies = [ 7344 + "pin-project", 7345 + "tracing", 7346 + "warnings-macro", 7347 + ] 7348 + 7349 + [[package]] 7350 + name = "warnings-macro" 7351 + version = "0.2.0" 7352 + source = "registry+https://github.com/rust-lang/crates.io-index" 7353 + checksum = "59195a1db0e95b920366d949ba5e0d3fc0e70b67c09be15ce5abb790106b0571" 7354 + dependencies = [ 7355 + "proc-macro2", 7356 + "quote", 7357 + "syn 2.0.118", 7358 + ] 7359 + 7360 + [[package]] 7361 + name = "wasi" 7362 + version = "0.9.0+wasi-snapshot-preview1" 7363 + source = "registry+https://github.com/rust-lang/crates.io-index" 7364 + checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 7365 + 7366 + [[package]] 7367 + name = "wasi" 7368 + version = "0.11.1+wasi-snapshot-preview1" 7369 + source = "registry+https://github.com/rust-lang/crates.io-index" 7370 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 7371 + 7372 + [[package]] 7373 + name = "wasip2" 7374 + version = "1.0.4+wasi-0.2.12" 7375 + source = "registry+https://github.com/rust-lang/crates.io-index" 7376 + checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" 7377 + dependencies = [ 7378 + "wit-bindgen", 7379 + ] 7380 + 7381 + [[package]] 7382 + name = "wasm-bindgen" 7383 + version = "0.2.125" 7384 + source = "registry+https://github.com/rust-lang/crates.io-index" 7385 + checksum = "8ddb3f79143bced6de84270411622a2699cee572fc0875aeaf1e7867cf9fca1a" 7386 + dependencies = [ 7387 + "cfg-if", 7388 + "once_cell", 7389 + "rustversion", 7390 + "wasm-bindgen-macro", 7391 + "wasm-bindgen-shared", 7392 + ] 7393 + 7394 + [[package]] 7395 + name = "wasm-bindgen-futures" 7396 + version = "0.4.75" 7397 + source = "registry+https://github.com/rust-lang/crates.io-index" 7398 + checksum = "503b14d284f2c8dac03b819967e155ea753f573586193b2b2c95990cb5d69280" 7399 + dependencies = [ 7400 + "js-sys", 7401 + "wasm-bindgen", 7402 + ] 7403 + 7404 + [[package]] 7405 + name = "wasm-bindgen-macro" 7406 + version = "0.2.125" 7407 + source = "registry+https://github.com/rust-lang/crates.io-index" 7408 + checksum = "4e21a184b13fb19e157296e2c46056aec9092264fab83e4ba59e68c61b323c3d" 7409 + dependencies = [ 7410 + "quote", 7411 + "wasm-bindgen-macro-support", 7412 + ] 7413 + 7414 + [[package]] 7415 + name = "wasm-bindgen-macro-support" 7416 + version = "0.2.125" 7417 + source = "registry+https://github.com/rust-lang/crates.io-index" 7418 + checksum = "fecefd9c35bd935a20fc3fc344b5f29138961e4f47fb03297d88f2587afb5ebd" 7419 + dependencies = [ 7420 + "bumpalo", 7421 + "proc-macro2", 7422 + "quote", 7423 + "syn 2.0.118", 7424 + "wasm-bindgen-shared", 7425 + ] 7426 + 7427 + [[package]] 7428 + name = "wasm-bindgen-shared" 7429 + version = "0.2.125" 7430 + source = "registry+https://github.com/rust-lang/crates.io-index" 7431 + checksum = "23939e44bb9a5d7576fa2b563dc2e136628f1224e88a8deed09e04858b77871f" 7432 + dependencies = [ 7433 + "unicode-ident", 7434 + ] 7435 + 7436 + [[package]] 7437 + name = "wasm-streams" 7438 + version = "0.4.2" 7439 + source = "registry+https://github.com/rust-lang/crates.io-index" 7440 + checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" 7441 + dependencies = [ 7442 + "futures-util", 7443 + "js-sys", 7444 + "wasm-bindgen", 7445 + "wasm-bindgen-futures", 7446 + "web-sys", 7447 + ] 7448 + 7449 + [[package]] 7450 + name = "web-sys" 7451 + version = "0.3.102" 7452 + source = "registry+https://github.com/rust-lang/crates.io-index" 7453 + checksum = "a6430a72df5eb332242960fe84b3002a241163998241eb596d4f739b9757061d" 7454 + dependencies = [ 7455 + "js-sys", 7456 + "wasm-bindgen", 7457 + ] 7458 + 7459 + [[package]] 7460 + name = "web-time" 7461 + version = "1.1.0" 7462 + source = "registry+https://github.com/rust-lang/crates.io-index" 7463 + checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" 7464 + dependencies = [ 7465 + "js-sys", 7466 + "wasm-bindgen", 7467 + ] 7468 + 7469 + [[package]] 7470 + name = "webbrowser" 7471 + version = "1.2.1" 7472 + source = "registry+https://github.com/rust-lang/crates.io-index" 7473 + checksum = "0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72" 7474 + dependencies = [ 7475 + "core-foundation 0.10.1", 7476 + "jni 0.22.4", 7477 + "log", 7478 + "ndk-context", 7479 + "objc2", 7480 + "objc2-foundation", 7481 + "url", 7482 + "web-sys", 7483 + ] 7484 + 7485 + [[package]] 7486 + name = "webkit2gtk" 7487 + version = "2.0.1" 7488 + source = "registry+https://github.com/rust-lang/crates.io-index" 7489 + checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" 7490 + dependencies = [ 7491 + "bitflags 1.3.2", 7492 + "cairo-rs", 7493 + "gdk", 7494 + "gdk-sys", 7495 + "gio", 7496 + "gio-sys", 7497 + "glib", 7498 + "glib-sys", 7499 + "gobject-sys", 7500 + "gtk", 7501 + "gtk-sys", 7502 + "javascriptcore-rs", 7503 + "libc", 7504 + "once_cell", 7505 + "soup3", 7506 + "webkit2gtk-sys", 7507 + ] 7508 + 7509 + [[package]] 7510 + name = "webkit2gtk-sys" 7511 + version = "2.0.1" 7512 + source = "registry+https://github.com/rust-lang/crates.io-index" 7513 + checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" 7514 + dependencies = [ 7515 + "bitflags 1.3.2", 7516 + "cairo-sys-rs", 7517 + "gdk-sys", 7518 + "gio-sys", 7519 + "glib-sys", 7520 + "gobject-sys", 7521 + "gtk-sys", 7522 + "javascriptcore-rs-sys", 7523 + "libc", 7524 + "pkg-config", 7525 + "soup3-sys", 7526 + "system-deps", 7527 + ] 7528 + 7529 + [[package]] 7530 + name = "webpage" 7531 + version = "2.0.1" 7532 + source = "registry+https://github.com/rust-lang/crates.io-index" 7533 + checksum = "70862efc041d46e6bbaa82bb9c34ae0596d090e86cbd14bd9e93b36ee6802eac" 7534 + dependencies = [ 7535 + "html5ever 0.27.0", 7536 + "markup5ever_rcdom", 7537 + "serde_json", 7538 + "url", 7539 + ] 7540 + 7541 + [[package]] 7542 + name = "webpki-roots" 7543 + version = "1.0.8" 7544 + source = "registry+https://github.com/rust-lang/crates.io-index" 7545 + checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf" 7546 + dependencies = [ 7547 + "rustls-pki-types", 7548 + ] 7549 + 7550 + [[package]] 7551 + name = "webview2-com" 7552 + version = "0.38.2" 7553 + source = "registry+https://github.com/rust-lang/crates.io-index" 7554 + checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" 7555 + dependencies = [ 7556 + "webview2-com-macros", 7557 + "webview2-com-sys", 7558 + "windows", 7559 + "windows-core 0.61.2", 7560 + "windows-implement", 7561 + "windows-interface", 7562 + ] 7563 + 7564 + [[package]] 7565 + name = "webview2-com-macros" 7566 + version = "0.8.1" 7567 + source = "registry+https://github.com/rust-lang/crates.io-index" 7568 + checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" 7569 + dependencies = [ 7570 + "proc-macro2", 7571 + "quote", 7572 + "syn 2.0.118", 7573 + ] 7574 + 7575 + [[package]] 7576 + name = "webview2-com-sys" 7577 + version = "0.38.2" 7578 + source = "registry+https://github.com/rust-lang/crates.io-index" 7579 + checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" 7580 + dependencies = [ 7581 + "thiserror 2.0.18", 7582 + "windows", 7583 + "windows-core 0.61.2", 7584 + ] 7585 + 7586 + [[package]] 7587 + name = "weezl" 7588 + version = "0.1.12" 7589 + source = "registry+https://github.com/rust-lang/crates.io-index" 7590 + checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" 7591 + 7592 + [[package]] 7593 + name = "winapi" 7594 + version = "0.3.9" 7595 + source = "registry+https://github.com/rust-lang/crates.io-index" 7596 + checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 7597 + dependencies = [ 7598 + "winapi-i686-pc-windows-gnu", 7599 + "winapi-x86_64-pc-windows-gnu", 7600 + ] 7601 + 7602 + [[package]] 7603 + name = "winapi-i686-pc-windows-gnu" 7604 + version = "0.4.0" 7605 + source = "registry+https://github.com/rust-lang/crates.io-index" 7606 + checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 7607 + 7608 + [[package]] 7609 + name = "winapi-util" 7610 + version = "0.1.11" 7611 + source = "registry+https://github.com/rust-lang/crates.io-index" 7612 + checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 7613 + dependencies = [ 7614 + "windows-sys 0.61.2", 7615 + ] 7616 + 7617 + [[package]] 7618 + name = "winapi-x86_64-pc-windows-gnu" 7619 + version = "0.4.0" 7620 + source = "registry+https://github.com/rust-lang/crates.io-index" 7621 + checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 7622 + 7623 + [[package]] 7624 + name = "windows" 7625 + version = "0.61.3" 7626 + source = "registry+https://github.com/rust-lang/crates.io-index" 7627 + checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" 7628 + dependencies = [ 7629 + "windows-collections", 7630 + "windows-core 0.61.2", 7631 + "windows-future", 7632 + "windows-link 0.1.3", 7633 + "windows-numerics", 7634 + ] 7635 + 7636 + [[package]] 7637 + name = "windows-collections" 7638 + version = "0.2.0" 7639 + source = "registry+https://github.com/rust-lang/crates.io-index" 7640 + checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" 7641 + dependencies = [ 7642 + "windows-core 0.61.2", 7643 + ] 7644 + 7645 + [[package]] 7646 + name = "windows-core" 7647 + version = "0.61.2" 7648 + source = "registry+https://github.com/rust-lang/crates.io-index" 7649 + checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 7650 + dependencies = [ 7651 + "windows-implement", 7652 + "windows-interface", 7653 + "windows-link 0.1.3", 7654 + "windows-result 0.3.4", 7655 + "windows-strings 0.4.2", 7656 + ] 7657 + 7658 + [[package]] 7659 + name = "windows-core" 7660 + version = "0.62.2" 7661 + source = "registry+https://github.com/rust-lang/crates.io-index" 7662 + checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" 7663 + dependencies = [ 7664 + "windows-implement", 7665 + "windows-interface", 7666 + "windows-link 0.2.1", 7667 + "windows-result 0.4.1", 7668 + "windows-strings 0.5.1", 7669 + ] 7670 + 7671 + [[package]] 7672 + name = "windows-future" 7673 + version = "0.2.1" 7674 + source = "registry+https://github.com/rust-lang/crates.io-index" 7675 + checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" 7676 + dependencies = [ 7677 + "windows-core 0.61.2", 7678 + "windows-link 0.1.3", 7679 + "windows-threading", 7680 + ] 7681 + 7682 + [[package]] 7683 + name = "windows-implement" 7684 + version = "0.60.2" 7685 + source = "registry+https://github.com/rust-lang/crates.io-index" 7686 + checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" 7687 + dependencies = [ 7688 + "proc-macro2", 7689 + "quote", 7690 + "syn 2.0.118", 7691 + ] 7692 + 7693 + [[package]] 7694 + name = "windows-interface" 7695 + version = "0.59.3" 7696 + source = "registry+https://github.com/rust-lang/crates.io-index" 7697 + checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" 7698 + dependencies = [ 7699 + "proc-macro2", 7700 + "quote", 7701 + "syn 2.0.118", 7702 + ] 7703 + 7704 + [[package]] 7705 + name = "windows-link" 7706 + version = "0.1.3" 7707 + source = "registry+https://github.com/rust-lang/crates.io-index" 7708 + checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 7709 + 7710 + [[package]] 7711 + name = "windows-link" 7712 + version = "0.2.1" 7713 + source = "registry+https://github.com/rust-lang/crates.io-index" 7714 + checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 7715 + 7716 + [[package]] 7717 + name = "windows-numerics" 7718 + version = "0.2.0" 7719 + source = "registry+https://github.com/rust-lang/crates.io-index" 7720 + checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" 7721 + dependencies = [ 7722 + "windows-core 0.61.2", 7723 + "windows-link 0.1.3", 7724 + ] 7725 + 7726 + [[package]] 7727 + name = "windows-registry" 7728 + version = "0.6.1" 7729 + source = "registry+https://github.com/rust-lang/crates.io-index" 7730 + checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" 7731 + dependencies = [ 7732 + "windows-link 0.2.1", 7733 + "windows-result 0.4.1", 7734 + "windows-strings 0.5.1", 7735 + ] 7736 + 7737 + [[package]] 7738 + name = "windows-result" 7739 + version = "0.3.4" 7740 + source = "registry+https://github.com/rust-lang/crates.io-index" 7741 + checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 7742 + dependencies = [ 7743 + "windows-link 0.1.3", 7744 + ] 7745 + 7746 + [[package]] 7747 + name = "windows-result" 7748 + version = "0.4.1" 7749 + source = "registry+https://github.com/rust-lang/crates.io-index" 7750 + checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 7751 + dependencies = [ 7752 + "windows-link 0.2.1", 7753 + ] 7754 + 7755 + [[package]] 7756 + name = "windows-strings" 7757 + version = "0.4.2" 7758 + source = "registry+https://github.com/rust-lang/crates.io-index" 7759 + checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 7760 + dependencies = [ 7761 + "windows-link 0.1.3", 7762 + ] 7763 + 7764 + [[package]] 7765 + name = "windows-strings" 7766 + version = "0.5.1" 7767 + source = "registry+https://github.com/rust-lang/crates.io-index" 7768 + checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" 7769 + dependencies = [ 7770 + "windows-link 0.2.1", 7771 + ] 7772 + 7773 + [[package]] 7774 + name = "windows-sys" 7775 + version = "0.45.0" 7776 + source = "registry+https://github.com/rust-lang/crates.io-index" 7777 + checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 7778 + dependencies = [ 7779 + "windows-targets 0.42.2", 7780 + ] 7781 + 7782 + [[package]] 7783 + name = "windows-sys" 7784 + version = "0.52.0" 7785 + source = "registry+https://github.com/rust-lang/crates.io-index" 7786 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 7787 + dependencies = [ 7788 + "windows-targets 0.52.6", 7789 + ] 7790 + 7791 + [[package]] 7792 + name = "windows-sys" 7793 + version = "0.59.0" 7794 + source = "registry+https://github.com/rust-lang/crates.io-index" 7795 + checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 7796 + dependencies = [ 7797 + "windows-targets 0.52.6", 7798 + ] 7799 + 7800 + [[package]] 7801 + name = "windows-sys" 7802 + version = "0.60.2" 7803 + source = "registry+https://github.com/rust-lang/crates.io-index" 7804 + checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 7805 + dependencies = [ 7806 + "windows-targets 0.53.5", 7807 + ] 7808 + 7809 + [[package]] 7810 + name = "windows-sys" 7811 + version = "0.61.2" 7812 + source = "registry+https://github.com/rust-lang/crates.io-index" 7813 + checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 7814 + dependencies = [ 7815 + "windows-link 0.2.1", 7816 + ] 7817 + 7818 + [[package]] 7819 + name = "windows-targets" 7820 + version = "0.42.2" 7821 + source = "registry+https://github.com/rust-lang/crates.io-index" 7822 + checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 7823 + dependencies = [ 7824 + "windows_aarch64_gnullvm 0.42.2", 7825 + "windows_aarch64_msvc 0.42.2", 7826 + "windows_i686_gnu 0.42.2", 7827 + "windows_i686_msvc 0.42.2", 7828 + "windows_x86_64_gnu 0.42.2", 7829 + "windows_x86_64_gnullvm 0.42.2", 7830 + "windows_x86_64_msvc 0.42.2", 7831 + ] 7832 + 7833 + [[package]] 7834 + name = "windows-targets" 7835 + version = "0.52.6" 7836 + source = "registry+https://github.com/rust-lang/crates.io-index" 7837 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 7838 + dependencies = [ 7839 + "windows_aarch64_gnullvm 0.52.6", 7840 + "windows_aarch64_msvc 0.52.6", 7841 + "windows_i686_gnu 0.52.6", 7842 + "windows_i686_gnullvm 0.52.6", 7843 + "windows_i686_msvc 0.52.6", 7844 + "windows_x86_64_gnu 0.52.6", 7845 + "windows_x86_64_gnullvm 0.52.6", 7846 + "windows_x86_64_msvc 0.52.6", 7847 + ] 7848 + 7849 + [[package]] 7850 + name = "windows-targets" 7851 + version = "0.53.5" 7852 + source = "registry+https://github.com/rust-lang/crates.io-index" 7853 + checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 7854 + dependencies = [ 7855 + "windows-link 0.2.1", 7856 + "windows_aarch64_gnullvm 0.53.1", 7857 + "windows_aarch64_msvc 0.53.1", 7858 + "windows_i686_gnu 0.53.1", 7859 + "windows_i686_gnullvm 0.53.1", 7860 + "windows_i686_msvc 0.53.1", 7861 + "windows_x86_64_gnu 0.53.1", 7862 + "windows_x86_64_gnullvm 0.53.1", 7863 + "windows_x86_64_msvc 0.53.1", 7864 + ] 7865 + 7866 + [[package]] 7867 + name = "windows-threading" 7868 + version = "0.1.0" 7869 + source = "registry+https://github.com/rust-lang/crates.io-index" 7870 + checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" 7871 + dependencies = [ 7872 + "windows-link 0.1.3", 7873 + ] 7874 + 7875 + [[package]] 7876 + name = "windows-version" 7877 + version = "0.1.7" 7878 + source = "registry+https://github.com/rust-lang/crates.io-index" 7879 + checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" 7880 + dependencies = [ 7881 + "windows-link 0.2.1", 7882 + ] 7883 + 7884 + [[package]] 7885 + name = "windows_aarch64_gnullvm" 7886 + version = "0.42.2" 7887 + source = "registry+https://github.com/rust-lang/crates.io-index" 7888 + checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 7889 + 7890 + [[package]] 7891 + name = "windows_aarch64_gnullvm" 7892 + version = "0.52.6" 7893 + source = "registry+https://github.com/rust-lang/crates.io-index" 7894 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 7895 + 7896 + [[package]] 7897 + name = "windows_aarch64_gnullvm" 7898 + version = "0.53.1" 7899 + source = "registry+https://github.com/rust-lang/crates.io-index" 7900 + checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" 7901 + 7902 + [[package]] 7903 + name = "windows_aarch64_msvc" 7904 + version = "0.42.2" 7905 + source = "registry+https://github.com/rust-lang/crates.io-index" 7906 + checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 7907 + 7908 + [[package]] 7909 + name = "windows_aarch64_msvc" 7910 + version = "0.52.6" 7911 + source = "registry+https://github.com/rust-lang/crates.io-index" 7912 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 7913 + 7914 + [[package]] 7915 + name = "windows_aarch64_msvc" 7916 + version = "0.53.1" 7917 + source = "registry+https://github.com/rust-lang/crates.io-index" 7918 + checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" 7919 + 7920 + [[package]] 7921 + name = "windows_i686_gnu" 7922 + version = "0.42.2" 7923 + source = "registry+https://github.com/rust-lang/crates.io-index" 7924 + checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 7925 + 7926 + [[package]] 7927 + name = "windows_i686_gnu" 7928 + version = "0.52.6" 7929 + source = "registry+https://github.com/rust-lang/crates.io-index" 7930 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 7931 + 7932 + [[package]] 7933 + name = "windows_i686_gnu" 7934 + version = "0.53.1" 7935 + source = "registry+https://github.com/rust-lang/crates.io-index" 7936 + checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" 7937 + 7938 + [[package]] 7939 + name = "windows_i686_gnullvm" 7940 + version = "0.52.6" 7941 + source = "registry+https://github.com/rust-lang/crates.io-index" 7942 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 7943 + 7944 + [[package]] 7945 + name = "windows_i686_gnullvm" 7946 + version = "0.53.1" 7947 + source = "registry+https://github.com/rust-lang/crates.io-index" 7948 + checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" 7949 + 7950 + [[package]] 7951 + name = "windows_i686_msvc" 7952 + version = "0.42.2" 7953 + source = "registry+https://github.com/rust-lang/crates.io-index" 7954 + checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 7955 + 7956 + [[package]] 7957 + name = "windows_i686_msvc" 7958 + version = "0.52.6" 7959 + source = "registry+https://github.com/rust-lang/crates.io-index" 7960 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 7961 + 7962 + [[package]] 7963 + name = "windows_i686_msvc" 7964 + version = "0.53.1" 7965 + source = "registry+https://github.com/rust-lang/crates.io-index" 7966 + checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" 7967 + 7968 + [[package]] 7969 + name = "windows_x86_64_gnu" 7970 + version = "0.42.2" 7971 + source = "registry+https://github.com/rust-lang/crates.io-index" 7972 + checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 7973 + 7974 + [[package]] 7975 + name = "windows_x86_64_gnu" 7976 + version = "0.52.6" 7977 + source = "registry+https://github.com/rust-lang/crates.io-index" 7978 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 7979 + 7980 + [[package]] 7981 + name = "windows_x86_64_gnu" 7982 + version = "0.53.1" 7983 + source = "registry+https://github.com/rust-lang/crates.io-index" 7984 + checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" 7985 + 7986 + [[package]] 7987 + name = "windows_x86_64_gnullvm" 7988 + version = "0.42.2" 7989 + source = "registry+https://github.com/rust-lang/crates.io-index" 7990 + checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 7991 + 7992 + [[package]] 7993 + name = "windows_x86_64_gnullvm" 7994 + version = "0.52.6" 7995 + source = "registry+https://github.com/rust-lang/crates.io-index" 7996 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 7997 + 7998 + [[package]] 7999 + name = "windows_x86_64_gnullvm" 8000 + version = "0.53.1" 8001 + source = "registry+https://github.com/rust-lang/crates.io-index" 8002 + checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" 8003 + 8004 + [[package]] 8005 + name = "windows_x86_64_msvc" 8006 + version = "0.42.2" 8007 + source = "registry+https://github.com/rust-lang/crates.io-index" 8008 + checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 8009 + 8010 + [[package]] 8011 + name = "windows_x86_64_msvc" 8012 + version = "0.52.6" 8013 + source = "registry+https://github.com/rust-lang/crates.io-index" 8014 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 8015 + 8016 + [[package]] 8017 + name = "windows_x86_64_msvc" 8018 + version = "0.53.1" 8019 + source = "registry+https://github.com/rust-lang/crates.io-index" 8020 + checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" 8021 + 8022 + [[package]] 8023 + name = "winnow" 8024 + version = "0.5.40" 8025 + source = "registry+https://github.com/rust-lang/crates.io-index" 8026 + checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 8027 + dependencies = [ 8028 + "memchr", 8029 + ] 8030 + 8031 + [[package]] 8032 + name = "winnow" 8033 + version = "0.7.15" 8034 + source = "registry+https://github.com/rust-lang/crates.io-index" 8035 + checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" 8036 + dependencies = [ 8037 + "memchr", 8038 + ] 8039 + 8040 + [[package]] 8041 + name = "winnow" 8042 + version = "1.0.3" 8043 + source = "registry+https://github.com/rust-lang/crates.io-index" 8044 + checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" 8045 + dependencies = [ 8046 + "memchr", 8047 + ] 8048 + 8049 + [[package]] 8050 + name = "wit-bindgen" 8051 + version = "0.57.1" 8052 + source = "registry+https://github.com/rust-lang/crates.io-index" 8053 + checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" 8054 + 8055 + [[package]] 8056 + name = "writeable" 8057 + version = "0.6.3" 8058 + source = "registry+https://github.com/rust-lang/crates.io-index" 8059 + checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" 8060 + 8061 + [[package]] 8062 + name = "wry" 8063 + version = "0.53.5" 8064 + source = "registry+https://github.com/rust-lang/crates.io-index" 8065 + checksum = "728b7d4c8ec8d81cab295e0b5b8a4c263c0d41a785fb8f8c4df284e5411140a2" 8066 + dependencies = [ 8067 + "base64", 8068 + "block2", 8069 + "cookie", 8070 + "crossbeam-channel", 8071 + "dirs", 8072 + "dpi", 8073 + "dunce", 8074 + "gtk", 8075 + "html5ever 0.29.1", 8076 + "http", 8077 + "javascriptcore-rs", 8078 + "jni 0.21.1", 8079 + "kuchikiki", 8080 + "libc", 8081 + "ndk", 8082 + "objc2", 8083 + "objc2-app-kit", 8084 + "objc2-core-foundation", 8085 + "objc2-foundation", 8086 + "objc2-ui-kit", 8087 + "objc2-web-kit", 8088 + "once_cell", 8089 + "percent-encoding", 8090 + "raw-window-handle 0.6.2", 8091 + "sha2", 8092 + "soup3", 8093 + "tao-macros", 8094 + "thiserror 2.0.18", 8095 + "url", 8096 + "webkit2gtk", 8097 + "webkit2gtk-sys", 8098 + "webview2-com", 8099 + "windows", 8100 + "windows-core 0.61.2", 8101 + "windows-version", 8102 + ] 8103 + 8104 + [[package]] 8105 + name = "x11" 8106 + version = "2.21.0" 8107 + source = "registry+https://github.com/rust-lang/crates.io-index" 8108 + checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" 8109 + dependencies = [ 8110 + "libc", 8111 + "pkg-config", 8112 + ] 8113 + 8114 + [[package]] 8115 + name = "x11-dl" 8116 + version = "2.21.0" 8117 + source = "registry+https://github.com/rust-lang/crates.io-index" 8118 + checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 8119 + dependencies = [ 8120 + "libc", 8121 + "once_cell", 8122 + "pkg-config", 8123 + ] 8124 + 8125 + [[package]] 8126 + name = "x11rb" 8127 + version = "0.13.2" 8128 + source = "registry+https://github.com/rust-lang/crates.io-index" 8129 + checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" 8130 + dependencies = [ 8131 + "gethostname", 8132 + "rustix", 8133 + "x11rb-protocol", 8134 + ] 8135 + 8136 + [[package]] 8137 + name = "x11rb-protocol" 8138 + version = "0.13.2" 8139 + source = "registry+https://github.com/rust-lang/crates.io-index" 8140 + checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" 8141 + 8142 + [[package]] 8143 + name = "xkeysym" 8144 + version = "0.2.1" 8145 + source = "registry+https://github.com/rust-lang/crates.io-index" 8146 + checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" 8147 + 8148 + [[package]] 8149 + name = "xml5ever" 8150 + version = "0.18.1" 8151 + source = "registry+https://github.com/rust-lang/crates.io-index" 8152 + checksum = "9bbb26405d8e919bc1547a5aa9abc95cbfa438f04844f5fdd9dc7596b748bf69" 8153 + dependencies = [ 8154 + "log", 8155 + "mac", 8156 + "markup5ever 0.12.1", 8157 + ] 8158 + 8159 + [[package]] 8160 + name = "xxhash-rust" 8161 + version = "0.8.15" 8162 + source = "registry+https://github.com/rust-lang/crates.io-index" 8163 + checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" 8164 + 8165 + [[package]] 8166 + name = "y4m" 8167 + version = "0.8.0" 8168 + source = "registry+https://github.com/rust-lang/crates.io-index" 8169 + checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" 8170 + 8171 + [[package]] 8172 + name = "yoke" 8173 + version = "0.8.3" 8174 + source = "registry+https://github.com/rust-lang/crates.io-index" 8175 + checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" 8176 + dependencies = [ 8177 + "stable_deref_trait", 8178 + "yoke-derive", 8179 + "zerofrom", 8180 + ] 8181 + 8182 + [[package]] 8183 + name = "yoke-derive" 8184 + version = "0.8.2" 8185 + source = "registry+https://github.com/rust-lang/crates.io-index" 8186 + checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" 8187 + dependencies = [ 8188 + "proc-macro2", 8189 + "quote", 8190 + "syn 2.0.118", 8191 + "synstructure", 8192 + ] 8193 + 8194 + [[package]] 8195 + name = "zerocopy" 8196 + version = "0.8.52" 8197 + source = "registry+https://github.com/rust-lang/crates.io-index" 8198 + checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" 8199 + dependencies = [ 8200 + "zerocopy-derive", 8201 + ] 8202 + 8203 + [[package]] 8204 + name = "zerocopy-derive" 8205 + version = "0.8.52" 8206 + source = "registry+https://github.com/rust-lang/crates.io-index" 8207 + checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" 8208 + dependencies = [ 8209 + "proc-macro2", 8210 + "quote", 8211 + "syn 2.0.118", 8212 + ] 8213 + 8214 + [[package]] 8215 + name = "zerofrom" 8216 + version = "0.1.8" 8217 + source = "registry+https://github.com/rust-lang/crates.io-index" 8218 + checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" 8219 + dependencies = [ 8220 + "zerofrom-derive", 8221 + ] 8222 + 8223 + [[package]] 8224 + name = "zerofrom-derive" 8225 + version = "0.1.7" 8226 + source = "registry+https://github.com/rust-lang/crates.io-index" 8227 + checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" 8228 + dependencies = [ 8229 + "proc-macro2", 8230 + "quote", 8231 + "syn 2.0.118", 8232 + "synstructure", 8233 + ] 8234 + 8235 + [[package]] 8236 + name = "zeroize" 8237 + version = "1.9.0" 8238 + source = "registry+https://github.com/rust-lang/crates.io-index" 8239 + checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" 8240 + dependencies = [ 8241 + "serde", 8242 + ] 8243 + 8244 + [[package]] 8245 + name = "zerotrie" 8246 + version = "0.2.4" 8247 + source = "registry+https://github.com/rust-lang/crates.io-index" 8248 + checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" 8249 + dependencies = [ 8250 + "displaydoc", 8251 + "yoke", 8252 + "zerofrom", 8253 + ] 8254 + 8255 + [[package]] 8256 + name = "zerovec" 8257 + version = "0.11.6" 8258 + source = "registry+https://github.com/rust-lang/crates.io-index" 8259 + checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" 8260 + dependencies = [ 8261 + "yoke", 8262 + "zerofrom", 8263 + "zerovec-derive", 8264 + ] 8265 + 8266 + [[package]] 8267 + name = "zerovec-derive" 8268 + version = "0.11.3" 8269 + source = "registry+https://github.com/rust-lang/crates.io-index" 8270 + checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" 8271 + dependencies = [ 8272 + "proc-macro2", 8273 + "quote", 8274 + "syn 2.0.118", 8275 + ] 8276 + 8277 + [[package]] 8278 + name = "zmij" 8279 + version = "1.0.21" 8280 + source = "registry+https://github.com/rust-lang/crates.io-index" 8281 + checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" 8282 + 8283 + [[package]] 8284 + name = "zune-core" 8285 + version = "0.5.1" 8286 + source = "registry+https://github.com/rust-lang/crates.io-index" 8287 + checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" 8288 + 8289 + [[package]] 8290 + name = "zune-inflate" 8291 + version = "0.2.54" 8292 + source = "registry+https://github.com/rust-lang/crates.io-index" 8293 + checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" 8294 + dependencies = [ 8295 + "simd-adler32", 8296 + ] 8297 + 8298 + [[package]] 8299 + name = "zune-jpeg" 8300 + version = "0.5.15" 8301 + source = "registry+https://github.com/rust-lang/crates.io-index" 8302 + checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" 8303 + dependencies = [ 8304 + "zune-core", 8305 + ]
+45
Cargo.toml
··· 1 + [package] 2 + name = "polymodel" 3 + version = "0.1.0" 4 + edition = "2024" 5 + license = "MIT OR Apache-2.0" 6 + description = "Agent-workflow demo app built with Rust, Dioxus, Jacquard, Jira, Confluence, and Polytoken." 7 + 8 + [features] 9 + default = ["web"] 10 + web = ["dioxus/web"] 11 + desktop = ["dioxus/desktop"] 12 + mobile = ["dioxus/mobile"] 13 + server = ["dioxus/server", "dep:axum", "dep:tower", "dep:tower-http"] 14 + 15 + [dependencies] 16 + dioxus = { version = "0.7", features = ["router", "fullstack"] } 17 + jacquard = { version = "0.12", default-features = false, features = ["derive", "api_bluesky"] } 18 + jacquard-common = { version = "0.12" } 19 + jacquard-derive = { version = "0.12" } 20 + serde = { version = "1.0", features = ["derive"] } 21 + serde_json = "1.0" 22 + thiserror = "2.0" 23 + tracing = { version = "0.1", default-features = false, features = ["std"] } 24 + 25 + axum = { version = "0.8", optional = true } 26 + tower = { version = "0.5", optional = true } 27 + tower-http = { version = "0.6", optional = true, features = ["trace"] } 28 + 29 + [target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies] 30 + console_error_panic_hook = "0.1" 31 + tracing-wasm = "0.2" 32 + web-sys = { version = "0.3", features = ["Window", "Document", "Element"] } 33 + 34 + [dev-dependencies] 35 + tokio = { version = "1", features = ["rt", "macros"] } 36 + 37 + [build-dependencies] 38 + dotenvy = "0.15" 39 + 40 + [profile.web-release] 41 + inherits = "release" 42 + opt-level = "z" 43 + lto = "fat" 44 + codegen-units = 1 45 + strip = "symbols"
+201
LICENSE-APACHE
··· 1 + Apache License 2 + Version 2.0, January 2004 3 + http://www.apache.org/licenses/ 4 + 5 + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 + 7 + 1. Definitions. 8 + 9 + "License" shall mean the terms and conditions for use, reproduction, 10 + and distribution as defined by Sections 1 through 9 of this document. 11 + 12 + "Licensor" shall mean the copyright owner or entity authorized by 13 + the copyright owner that is granting the License. 14 + 15 + "Legal Entity" shall mean the union of the acting entity and all 16 + other entities that control, are controlled by, or are under common 17 + control with that entity. For the purposes of this definition, 18 + "control" means (i) the power, direct or indirect, to cause the 19 + direction or management of such entity, whether by contract or 20 + otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 + outstanding shares, or (iii) beneficial ownership of such entity. 22 + 23 + "You" (or "Your") shall mean an individual or Legal Entity 24 + exercising permissions granted by this License. 25 + 26 + "Source" form shall mean the preferred form for making modifications, 27 + including but not limited to software source code, documentation 28 + source, and configuration files. 29 + 30 + "Object" form shall mean any form resulting from mechanical 31 + transformation or translation of a Source form, including but 32 + not limited to compiled object code, generated documentation, 33 + and conversions to other media types. 34 + 35 + "Work" shall mean the work of authorship, whether in Source or 36 + Object form, made available under the License, as indicated by a 37 + copyright notice that is included in or attached to the work 38 + (an example is provided in the Appendix below). 39 + 40 + "Derivative Works" shall mean any work, whether in Source or Object 41 + form, that is based on (or derived from) the Work and for which the 42 + editorial revisions, annotations, elaborations, or other modifications 43 + represent, as a whole, an original work of authorship. For the purposes 44 + of this License, Derivative Works shall not include works that remain 45 + separable from, or merely link (or bind by name) to the interfaces of, 46 + the Work and Derivative Works thereof. 47 + 48 + "Contribution" shall mean any work of authorship, including 49 + the original version of the Work and any modifications or additions 50 + to that Work or Derivative Works thereof, that is intentionally 51 + submitted to Licensor for inclusion in the Work by the copyright owner 52 + or by an individual or Legal Entity authorized to submit on behalf of 53 + the copyright owner. For the purposes of this definition, "submitted" 54 + means any form of electronic, verbal, or written communication sent 55 + to the Licensor or its representatives, including but not limited to 56 + communication on electronic mailing lists, source code control systems, 57 + and issue tracking systems that are managed by, or on behalf of, the 58 + Licensor for the purpose of discussing and improving the Work, but 59 + excluding communication that is conspicuously marked or otherwise 60 + designated in writing by the copyright owner as "Not a Contribution." 61 + 62 + "Contributor" shall mean Licensor and any individual or Legal Entity 63 + on behalf of whom a Contribution has been received by Licensor and 64 + subsequently incorporated within the Work. 65 + 66 + 2. Grant of Copyright License. Subject to the terms and conditions of 67 + this License, each Contributor hereby grants to You a perpetual, 68 + worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 + copyright license to reproduce, prepare Derivative Works of, 70 + publicly display, publicly perform, sublicense, and distribute the 71 + Work and such Derivative Works in Source or Object form. 72 + 73 + 3. Grant of Patent License. Subject to the terms and conditions of 74 + this License, each Contributor hereby grants to You a perpetual, 75 + worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 + (except as stated in this section) patent license to make, have made, 77 + use, offer to sell, sell, import, and otherwise transfer the Work, 78 + where such license applies only to those patent claims licensable 79 + by such Contributor that are necessarily infringed by their 80 + Contribution(s) alone or by combination of their Contribution(s) 81 + with the Work to which such Contribution(s) was submitted. If You 82 + institute patent litigation against any entity (including a 83 + cross-claim or counterclaim in a lawsuit) alleging that the Work 84 + or a Contribution incorporated within the Work constitutes direct 85 + or contributory patent infringement, then any patent licenses 86 + granted to You under this License for that Work shall terminate 87 + as of the date such litigation is filed. 88 + 89 + 4. Redistribution. You may reproduce and distribute copies of the 90 + Work or Derivative Works thereof in any medium, with or without 91 + modifications, and in Source or Object form, provided that You 92 + meet the following conditions: 93 + 94 + (a) You must give any other recipients of the Work or 95 + Derivative Works a copy of this License; and 96 + 97 + (b) You must cause any modified files to carry prominent notices 98 + stating that You changed the files; and 99 + 100 + (c) You must retain, in the Source form of any Derivative Works 101 + that You distribute, all copyright, patent, trademark, and 102 + attribution notices from the Source form of the Work, 103 + excluding those notices that do not pertain to any part of 104 + the Derivative Works; and 105 + 106 + (d) If the Work includes a "NOTICE" text file as part of its 107 + distribution, then any Derivative Works that You distribute must 108 + include a readable copy of the attribution notices contained 109 + within such NOTICE file, excluding those notices that do not 110 + pertain to any part of the Derivative Works, in at least one 111 + of the following places: within a NOTICE text file distributed 112 + as part of the Derivative Works; within the Source form or 113 + documentation, if provided along with the Derivative Works; or, 114 + within a display generated by the Derivative Works, if and 115 + wherever such third-party notices normally appear. The contents 116 + of the NOTICE file are for informational purposes only and 117 + do not modify the License. You may add Your own attribution 118 + notices within Derivative Works that You distribute, alongside 119 + or as an addendum to the NOTICE text from the Work, provided 120 + that such additional attribution notices cannot be construed 121 + as modifying the License. 122 + 123 + You may add Your own copyright statement to Your modifications and 124 + may provide additional or different license terms and conditions 125 + for use, reproduction, or distribution of Your modifications, or 126 + for any such Derivative Works as a whole, provided Your use, 127 + reproduction, and distribution of the Work otherwise complies with 128 + the conditions stated in this License. 129 + 130 + 5. Submission of Contributions. Unless You explicitly state otherwise, 131 + any Contribution intentionally submitted for inclusion in the Work 132 + by You to the Licensor shall be under the terms and conditions of 133 + this License, without any additional terms or conditions. 134 + Notwithstanding the above, nothing herein shall supersede or modify 135 + the terms of any separate license agreement you may have executed 136 + with Licensor regarding such Contributions. 137 + 138 + 6. Trademarks. This License does not grant permission to use the trade 139 + names, trademarks, service marks, or product names of the Licensor, 140 + except as required for reasonable and customary use in describing the 141 + origin of the Work and reproducing the content of the NOTICE file. 142 + 143 + 7. Disclaimer of Warranty. Unless required by applicable law or 144 + agreed to in writing, Licensor provides the Work (and each 145 + Contributor provides its Contributions) on an "AS IS" BASIS, 146 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 + implied, including, without limitation, any warranties or conditions 148 + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 + PARTICULAR PURPOSE. You are solely responsible for determining the 150 + appropriateness of using or redistributing the Work and assume any 151 + risks associated with Your exercise of permissions under this License. 152 + 153 + 8. Limitation of Liability. In no event and under no legal theory, 154 + whether in tort (including negligence), contract, or otherwise, 155 + unless required by applicable law (such as deliberate and grossly 156 + negligent acts) or agreed to in writing, shall any Contributor be 157 + liable to You for damages, including any direct, indirect, special, 158 + incidental, or consequential damages of any character arising as a 159 + result of this License or out of the use or inability to use the 160 + Work (including but not limited to damages for loss of goodwill, 161 + work stoppage, computer failure or malfunction, or any and all 162 + other commercial damages or losses), even if such Contributor 163 + has been advised of the possibility of such damages. 164 + 165 + 9. Accepting Warranty or Additional Liability. While redistributing 166 + the Work or Derivative Works thereof, You may choose to offer, 167 + and charge a fee for, acceptance of support, warranty, indemnity, 168 + or other liability obligations and/or rights consistent with this 169 + License. However, in accepting such obligations, You may act only 170 + on Your own behalf and on Your sole responsibility, not on behalf 171 + of any other Contributor, and only if You agree to indemnify, 172 + defend, and hold each Contributor harmless for any liability 173 + incurred by, or claims asserted against, such Contributor by reason 174 + of your accepting any such warranty or additional liability. 175 + 176 + END OF TERMS AND CONDITIONS 177 + 178 + APPENDIX: How to apply the Apache License to your work. 179 + 180 + To apply the Apache License to your work, attach the following 181 + boilerplate notice, with the fields enclosed by brackets "[]" 182 + replaced with your own identifying information. (Don't include 183 + the brackets!) The text should be enclosed in the appropriate 184 + comment syntax for the file format. We also recommend that a 185 + file or class name and description of purpose be included on the 186 + same "printed page" as the copyright notice for easier 187 + identification within third-party archives. 188 + 189 + Copyright 2026 Orual 190 + 191 + Licensed under the Apache License, Version 2.0 (the "License"); 192 + you may not use this file except in compliance with the License. 193 + You may obtain a copy of the License at 194 + 195 + http://www.apache.org/licenses/LICENSE-2.0 196 + 197 + Unless required by applicable law or agreed to in writing, software 198 + distributed under the License is distributed on an "AS IS" BASIS, 199 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 + See the License for the specific language governing permissions and 201 + limitations under the License.
+21
LICENSE-MIT
··· 1 + MIT License 2 + 3 + Copyright 2026 Orual <orual@nonbinary.computer>. 4 + 5 + Permission is hereby granted, free of charge, to any person obtaining a copy 6 + of this software and associated documentation files (the "Software"), to deal 7 + in the Software without restriction, including without limitation the rights 8 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 + copies of the Software, and to permit persons to whom the Software is 10 + furnished to do so, subject to the following conditions: 11 + 12 + The above copyright notice and this permission notice shall be included in all 13 + copies or substantial portions of the Software. 14 + 15 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 + SOFTWARE.
+57
README.md
··· 1 + # Polymodel 2 + 3 + Polymodel is an AT Protocol-native model/project sharing app: roughly “Thingiverse on atproto.” 4 + 5 + The initial concept is intentionally small: 6 + 7 + - a lexicon for printable/model projects; 8 + - a profile-oriented publishing surface; 9 + - likes/saves and basic social feedback; 10 + - feeds for recent projects, hot projects, and per-profile project streams; 11 + - an in-browser STL viewer. 12 + 13 + It is also a workplace demo for a highly integrated agent workflow built around Polytoken, Jira, Confluence, jj workspaces, and strong review gates. 14 + 15 + Jira project/Confluence space key: `PM`. 16 + 17 + ## STL viewer candidates 18 + 19 + Tentative candidates: 20 + 21 + - [`three-d`](https://github.com/asny/three-d): viable web/WASM candidate with a browser/WebGL-oriented API. 22 + - [`kiss3d`](https://github.com/dimforge/kiss3d): also works on WASM and should be evaluated alongside `three-d`, especially for STL loading, orbit controls, and Dioxus integration friction. 23 + 24 + The viewer choice should be decided with a small spike that loads an STL, renders orbit controls, and fits cleanly into Dioxus. 25 + 26 + ## Development 27 + 28 + Use Nix/direnv when available: 29 + 30 + ```sh 31 + nix develop 32 + ``` 33 + 34 + Common commands: 35 + 36 + ```sh 37 + just fix # format and apply safe clippy fixes 38 + just check # native, server, and wasm checks 39 + just test # unit tests via nextest 40 + just test-all # pre-review local validation 41 + just serve # Dioxus dev server 42 + ``` 43 + 44 + ## Workflow 45 + 46 + - Jira is both the human source of truth and the agent working truth for implementation tasks. 47 + - Confluence is the durable design/demo narrative space. 48 + - jj workspaces are the default isolation mechanism for agent work. 49 + - Polytoken skills and project vars live under `.polytoken/`. 50 + 51 + ## Stack 52 + 53 + - Rust 2024 / nightly 54 + - Dioxus 0.7 55 + - Jacquard 0.12 56 + - Nix flake dev shell 57 + - just command runner
assets/favicon.jpg

This is a binary file and will not be displayed.

assets/fonts/cm-sans/CMSans-Bold.woff

This is a binary file and will not be displayed.

assets/fonts/cm-sans/CMSans-BoldItalic.woff

This is a binary file and will not be displayed.

assets/fonts/cm-sans/CMSans-Italic.woff

This is a binary file and will not be displayed.

assets/fonts/cm-sans/CMSans-Regular.woff

This is a binary file and will not be displayed.

assets/fonts/ioskeley-mono/IoskeleyMono-Bold.woff2

This is a binary file and will not be displayed.

assets/fonts/ioskeley-mono/IoskeleyMono-BoldItalic.woff2

This is a binary file and will not be displayed.

assets/fonts/ioskeley-mono/IoskeleyMono-Italic.woff2

This is a binary file and will not be displayed.

assets/fonts/ioskeley-mono/IoskeleyMono-Light.woff2

This is a binary file and will not be displayed.

assets/fonts/ioskeley-mono/IoskeleyMono-LightItalic.woff2

This is a binary file and will not be displayed.

assets/fonts/ioskeley-mono/IoskeleyMono-Regular.woff2

This is a binary file and will not be displayed.

assets/fonts/proza-libre/ProzaLibre-Bold.woff2

This is a binary file and will not be displayed.

assets/fonts/proza-libre/ProzaLibre-BoldItalic.woff2

This is a binary file and will not be displayed.

assets/fonts/proza-libre/ProzaLibre-Italic.woff2

This is a binary file and will not be displayed.

assets/fonts/proza-libre/ProzaLibre-Medium.woff2

This is a binary file and will not be displayed.

assets/fonts/proza-libre/ProzaLibre-Regular.woff2

This is a binary file and will not be displayed.

assets/fonts/proza-libre/ProzaLibre-SemiBold.woff2

This is a binary file and will not be displayed.

+82
assets/styling/base.css
··· 1 + /* App shell defaults — theme.css must load first */ 2 + 3 + *, 4 + *::before, 5 + *::after { 6 + box-sizing: border-box; 7 + } 8 + 9 + body { 10 + margin: 0; 11 + background-color: var(--color-base); 12 + color: var(--color-text); 13 + font-family: var(--font-ui); 14 + font-size: var(--spacing-base); 15 + line-height: var(--spacing-line-height); 16 + } 17 + 18 + a { 19 + color: var(--color-link); 20 + text-decoration: none; 21 + } 22 + 23 + a:hover { 24 + text-decoration: underline; 25 + } 26 + 27 + h1, h2, h3, h4, h5, h6 { 28 + font-family: var(--font-heading, var(--font-ui)); 29 + } 30 + 31 + button { 32 + font-family: var(--font-ui); 33 + cursor: pointer; 34 + } 35 + 36 + input { 37 + font-family: var(--font-ui); 38 + } 39 + 40 + /* Sharp corners on all interactive elements (AC1.5) */ 41 + button, 42 + input, 43 + select, 44 + textarea { 45 + border-radius: 0; 46 + } 47 + 48 + /* Scrollbar styling — thin, subtle, matching dark theme */ 49 + 50 + * { 51 + scrollbar-width: thin; 52 + scrollbar-color: var(--color-border) transparent; 53 + } 54 + 55 + ::-webkit-scrollbar { 56 + width: 6px; 57 + height: 6px; 58 + } 59 + 60 + ::-webkit-scrollbar-track { 61 + background: transparent; 62 + } 63 + 64 + ::-webkit-scrollbar-thumb { 65 + background: var(--color-border); 66 + } 67 + 68 + ::-webkit-scrollbar-thumb:hover { 69 + background: var(--color-subtle); 70 + } 71 + 72 + /* Content fade-in after hydration / client navigation */ 73 + 74 + @keyframes fade-in { 75 + from { opacity: 0; } 76 + to { opacity: 1; } 77 + } 78 + 79 + .browse-page, 80 + .watch-page { 81 + animation: fade-in 0.2s ease-out; 82 + }
+92
assets/styling/browse.css
··· 1 + /* Browse page — grid layout and filter bar */ 2 + 3 + .browse-page { 4 + padding: 1.5rem 3rem; 5 + max-width: 960px; 6 + margin: 0 auto; 7 + } 8 + 9 + .browse-header { 10 + margin-bottom: 1rem; 11 + } 12 + 13 + .browse-header h1 { 14 + font-family: var(--font-heading, var(--font-ui)); 15 + font-weight: 600; 16 + color: var(--color-text); 17 + margin: 0 0 0.75rem 0; 18 + } 19 + 20 + .browse-filter { 21 + width: 100%; 22 + padding: 0.5rem 0.75rem; 23 + font-family: var(--font-mono); 24 + font-size: 0.9rem; 25 + background-color: var(--color-surface); 26 + color: var(--color-text); 27 + border: 1px solid var(--color-border); 28 + } 29 + 30 + .browse-filter:focus { 31 + outline: none; 32 + border-color: var(--color-primary); 33 + } 34 + 35 + .browse-filter::placeholder { 36 + color: var(--color-muted); 37 + } 38 + 39 + .browse-grid { 40 + display: grid; 41 + grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); 42 + gap: 1.5rem; 43 + } 44 + 45 + .browse-empty { 46 + grid-column: 1 / -1; 47 + text-align: center; 48 + padding: 3rem 1rem; 49 + color: var(--color-muted); 50 + } 51 + 52 + .browse-error { 53 + grid-column: 1 / -1; 54 + text-align: center; 55 + padding: 3rem 1rem; 56 + color: var(--color-error); 57 + } 58 + 59 + .browse-error button { 60 + margin-top: 0.75rem; 61 + padding: 0.5rem 1rem; 62 + background-color: var(--color-error); 63 + color: var(--color-base); 64 + border: 1px solid var(--color-error); 65 + cursor: pointer; 66 + font-family: var(--font-ui); 67 + } 68 + 69 + .browse-error button:hover { 70 + opacity: 0.85; 71 + } 72 + 73 + /* Mobile adjustments */ 74 + 75 + @media (max-width: 768px) { 76 + .browse-page { 77 + padding: 0.75rem; 78 + } 79 + 80 + .browse-header h1 { 81 + font-size: 1.25rem; 82 + } 83 + 84 + .browse-filter { 85 + font-size: 1rem; 86 + padding: 0.75rem; 87 + } 88 + 89 + .browse-grid { 90 + gap: 0.75rem; 91 + } 92 + }
+262
assets/styling/cards.css
··· 1 + /* Video card styles — adapted from weaver.sh cards-base.css */ 2 + 3 + .card-surface { 4 + background: var(--color-surface); 5 + box-shadow: 0 1px 2px color-mix(in srgb, var(--color-text) 6%, transparent); 6 + } 7 + 8 + @media (prefers-color-scheme: dark) { 9 + .card-surface { 10 + box-shadow: none; 11 + border-block: 1px solid var(--color-border); 12 + border-inline-end: 1px solid var(--color-border); 13 + } 14 + } 15 + 16 + .card-title { 17 + font-family: var(--font-ui); 18 + font-weight: 600; 19 + color: var(--color-text); 20 + margin: 0; 21 + font-size: 0.95rem; 22 + transition: color 0.2s ease; 23 + overflow: hidden; 24 + display: -webkit-box; 25 + -webkit-line-clamp: 3; 26 + -webkit-box-orient: vertical; 27 + line-clamp: 3; 28 + } 29 + 30 + .card-title-long { 31 + font-size: 0.85rem; 32 + } 33 + 34 + .card-title-sub { 35 + display: block; 36 + font-size: 0.82rem; 37 + font-weight: 400; 38 + color: var(--color-subtle); 39 + overflow: hidden; 40 + display: -webkit-box; 41 + -webkit-line-clamp: 2; 42 + -webkit-box-orient: vertical; 43 + line-clamp: 2; 44 + } 45 + 46 + .card-meta { 47 + color: var(--color-muted); 48 + font-size: 0.85rem; 49 + } 50 + 51 + .video-card { 52 + position: relative; 53 + display: flex; 54 + flex-direction: column; 55 + color: inherit; 56 + border-inline-start: 1px solid var(--color-border); 57 + transition: border-color 0.15s ease; 58 + overflow: hidden; 59 + min-width: 0; 60 + } 61 + 62 + .video-card:hover { 63 + border-inline-start: 3px solid var(--color-primary); 64 + margin-inline-start: -2px; 65 + } 66 + 67 + .video-card:hover .card-title { 68 + color: var(--color-tertiary); 69 + } 70 + 71 + .video-card-link { 72 + position: absolute; 73 + inset: 0; 74 + z-index: 0; 75 + text-decoration: none; 76 + } 77 + 78 + .video-card-thumbnail { 79 + position: relative; 80 + width: 100%; 81 + aspect-ratio: 16 / 9; 82 + overflow: hidden; 83 + background: var(--color-overlay); 84 + display: flex; 85 + align-items: center; 86 + justify-content: center; 87 + } 88 + 89 + .video-card-thumbnail > img { 90 + width: 100%; 91 + height: 100%; 92 + object-fit: cover; 93 + } 94 + 95 + .video-card-placeholder { 96 + color: var(--color-subtle); 97 + font-size: 2rem; 98 + display: flex; 99 + align-items: center; 100 + justify-content: center; 101 + width: 100%; 102 + height: 100%; 103 + background: var(--color-overlay); 104 + } 105 + 106 + .video-card-body { 107 + position: relative; 108 + z-index: 1; 109 + pointer-events: none; 110 + padding: 0.75rem; 111 + display: flex; 112 + flex-direction: column; 113 + gap: 0.35rem; 114 + flex: 1; 115 + } 116 + 117 + .video-card-byline { 118 + margin-top: auto; 119 + display: flex; 120 + flex-direction: column; 121 + gap: 0.15rem; 122 + } 123 + 124 + .video-card-footer { 125 + margin-top: auto; 126 + display: flex; 127 + flex-direction: column; 128 + gap: 0.35rem; 129 + } 130 + 131 + .video-card-byline-time { 132 + display: flex; 133 + justify-content: space-between; 134 + gap: 0.5rem; 135 + } 136 + 137 + .video-card-displayname { 138 + color: var(--color-text); 139 + } 140 + 141 + .video-card-handle { 142 + color: var(--color-muted); 143 + font-size: 0.8rem; 144 + } 145 + 146 + /* Thumbnail overlays */ 147 + 148 + .video-card-tag { 149 + position: absolute; 150 + top: 0.4rem; 151 + left: 0.4rem; 152 + font-size: 0.7rem; 153 + background: rgba(0, 0, 0, 0.7); 154 + color: #fff; 155 + padding: 0.15rem 0.4rem; 156 + border-radius: 3px; 157 + white-space: nowrap; 158 + } 159 + 160 + .video-card-duration-badge { 161 + position: absolute; 162 + bottom: 0.4rem; 163 + right: 0.4rem; 164 + font-family: var(--font-mono); 165 + font-size: 0.75rem; 166 + background: rgba(0, 0, 0, 0.75); 167 + color: #fff; 168 + padding: 0.1rem 0.35rem; 169 + border-radius: 3px; 170 + } 171 + 172 + .video-card-thumb-author { 173 + position: absolute; 174 + bottom: 0.4rem; 175 + left: 0.4rem; 176 + display: flex; 177 + flex-direction: column; 178 + gap: 0.25rem; 179 + z-index: 1; 180 + } 181 + 182 + .video-card-thumb-name { 183 + display: inline-flex; 184 + align-items: center; 185 + gap: 0.35rem; 186 + background: rgba(0, 0, 0, 0.8); 187 + padding: 0.3rem 0.45rem; 188 + border-radius: 3px; 189 + max-width: 100%; 190 + overflow: hidden; 191 + text-decoration: none; 192 + color: inherit; 193 + transition: background 0.15s ease; 194 + } 195 + 196 + .video-card-thumb-name:hover { 197 + background: rgba(0, 0, 0, 0.95); 198 + } 199 + 200 + .video-card-thumb-author-info { 201 + display: flex; 202 + flex-direction: column; 203 + gap: 0; 204 + min-width: 0; 205 + } 206 + 207 + .video-card-thumb-displayname { 208 + font-weight: 600; 209 + font-size: 0.7rem; 210 + color: #fff; 211 + line-height: 1.2; 212 + overflow: hidden; 213 + text-overflow: ellipsis; 214 + white-space: nowrap; 215 + } 216 + 217 + .video-card-thumb-handle { 218 + color: rgba(255, 255, 255, 0.6); 219 + font-family: var(--font-mono); 220 + font-size: 0.6rem; 221 + line-height: 1.2; 222 + overflow: hidden; 223 + text-overflow: ellipsis; 224 + white-space: nowrap; 225 + } 226 + 227 + .video-card-thumb-avatar { 228 + width: 20px; 229 + height: 20px; 230 + border-radius: 3px; 231 + flex-shrink: 0; 232 + } 233 + 234 + .video-card-tags { 235 + display: flex; 236 + flex-wrap: wrap; 237 + gap: 0.3rem; 238 + } 239 + 240 + .video-card-chip { 241 + font-family: var(--font-mono); 242 + font-size: 0.6rem; 243 + color: var(--color-subtle); 244 + border: 1px solid var(--color-border); 245 + padding: 0.1rem 0.4rem; 246 + white-space: nowrap; 247 + cursor: pointer; 248 + pointer-events: auto; 249 + } 250 + 251 + .video-card-chip:hover { 252 + color: var(--color-text); 253 + border-color: var(--color-subtle); 254 + } 255 + 256 + .video-card-datetime, 257 + .video-card-duration { 258 + font-family: var(--font-mono); 259 + font-size: 0.8rem; 260 + color: var(--color-subtle); 261 + white-space: nowrap; 262 + }
+41
assets/styling/polymodel.css
··· 1 + .demo-card { 2 + min-height: 11rem; 3 + } 4 + 5 + .demo-card .video-card-thumbnail { 6 + aspect-ratio: 2.4 / 1; 7 + align-items: flex-start; 8 + justify-content: flex-start; 9 + padding: 0.75rem; 10 + } 11 + 12 + .demo-card-token { 13 + font-family: var(--font-mono); 14 + font-size: 0.75rem; 15 + color: var(--color-base); 16 + background: var(--color-primary); 17 + padding: 0.2rem 0.45rem; 18 + } 19 + 20 + .demo-card-body { 21 + pointer-events: auto; 22 + } 23 + 24 + .demo-card-body p { 25 + margin: 0; 26 + color: var(--color-subtle); 27 + font-size: 0.9rem; 28 + line-height: 1.45; 29 + } 30 + 31 + .demo-context { 32 + margin: 1rem 0 1.5rem; 33 + padding: 0.75rem 1rem; 34 + border-inline-start: 3px solid var(--color-primary); 35 + background: var(--color-surface); 36 + color: var(--color-subtle); 37 + } 38 + 39 + .demo-context strong { 40 + color: var(--color-text); 41 + }
+117
assets/styling/theme.css
··· 1 + /* Rose Pine theme variables ported for Polymodel 2 + Light: Rose Pine Dawn (moderate contrast variant from weaver.sh) 3 + Dark: Rose Pine (original) via prefers-color-scheme */ 4 + 5 + /* --- Ioskeley Mono (monospace) --- */ 6 + @font-face { 7 + font-family: "Ioskeley Mono"; 8 + font-style: normal; 9 + font-weight: normal; 10 + src: url("/assets/IoskeleyMono-Regular.woff2") format("woff2"); 11 + } 12 + @font-face { 13 + font-family: "Ioskeley Mono"; 14 + font-style: normal; 15 + font-weight: lighter; 16 + src: url("/assets/IoskeleyMono-Light.woff2") format("woff2"); 17 + } 18 + @font-face { 19 + font-family: "Ioskeley Mono"; 20 + font-style: italic; 21 + font-weight: lighter; 22 + src: url("/assets/IoskeleyMono-LightItalic.woff2") format("woff2"); 23 + } 24 + @font-face { 25 + font-family: "Ioskeley Mono"; 26 + font-style: normal; 27 + font-weight: bold; 28 + src: url("/assets/IoskeleyMono-Bold.woff2") format("woff2"); 29 + } 30 + @font-face { 31 + font-family: "Ioskeley Mono"; 32 + font-style: italic; 33 + font-weight: normal; 34 + src: url("/assets/IoskeleyMono-Italic.woff2") format("woff2"); 35 + } 36 + @font-face { 37 + font-family: "Ioskeley Mono"; 38 + font-style: italic; 39 + font-weight: bold; 40 + src: url("/assets/IoskeleyMono-BoldItalic.woff2") format("woff2"); 41 + } 42 + 43 + /* --- CM Sans (UI sans-serif) --- */ 44 + @font-face { 45 + font-family: "CM Sans"; 46 + font-style: normal; 47 + font-weight: normal; 48 + src: url("/assets/CMSans-Regular.woff") format("woff"); 49 + } 50 + @font-face { 51 + font-family: "CM Sans"; 52 + font-style: italic; 53 + font-weight: normal; 54 + src: url("/assets/CMSans-Italic.woff") format("woff"); 55 + } 56 + @font-face { 57 + font-family: "CM Sans"; 58 + font-style: normal; 59 + font-weight: bold; 60 + src: url("/assets/CMSans-Bold.woff") format("woff"); 61 + } 62 + @font-face { 63 + font-family: "CM Sans"; 64 + font-style: italic; 65 + font-weight: bold; 66 + src: url("/assets/CMSans-BoldItalic.woff") format("woff"); 67 + } 68 + 69 + /* --- Light mode: Rose Pine Dawn (moderate contrast) --- */ 70 + :root { 71 + --color-base: #faf4ed; 72 + --color-surface: #fffaf3; 73 + --color-overlay: #f2e9e1; 74 + --color-text: #1f1d2e; 75 + --color-muted: #635e74; 76 + --color-subtle: #4a4560; 77 + --color-emphasis: #1e1a2d; 78 + --color-primary: #907aa9; 79 + --color-secondary: #56949f; 80 + --color-tertiary: #286983; 81 + --color-error: #b4637a; 82 + --color-warning: #ea9d34; 83 + --color-success: #286983; 84 + --color-border: #908caa; 85 + --color-link: #d7827e; 86 + --color-highlight: #cecacd; 87 + 88 + --font-ui: "DM Sans", system-ui, -apple-system, sans-serif; 89 + --font-heading: "Capriola", sans-serif; 90 + --font-mono: "Ioskeley Mono", "IBM Plex Mono", Consolas, monospace; 91 + 92 + --spacing-base: 16px; 93 + --spacing-line-height: 1.6; 94 + --spacing-scale: 1.25; 95 + } 96 + 97 + /* --- Dark mode: Rose Pine (original) --- */ 98 + @media (prefers-color-scheme: dark) { 99 + :root { 100 + --color-base: #191724; 101 + --color-surface: #1f1d2e; 102 + --color-overlay: #26233a; 103 + --color-text: #e0def4; 104 + --color-muted: #6e6a86; 105 + --color-subtle: #908caa; 106 + --color-emphasis: #e0def4; 107 + --color-primary: #c4a7e7; 108 + --color-secondary: #3e8fb0; 109 + --color-tertiary: #9ccfd8; 110 + --color-error: #eb6f92; 111 + --color-warning: #f6c177; 112 + --color-success: #31748f; 113 + --color-border: #403d52; 114 + --color-link: #ebbcba; 115 + --color-highlight: #524f67; 116 + } 117 + }
+4
build.rs
··· 1 + fn main() { 2 + dotenvy::dotenv().ok(); 3 + println!("cargo:rerun-if-changed=.env"); 4 + }
+11
e2e/package.json
··· 1 + { 2 + "name": "polymodel-e2e", 3 + "private": true, 4 + "type": "module", 5 + "scripts": { 6 + "test": "playwright test" 7 + }, 8 + "devDependencies": { 9 + "@playwright/test": "^1.57.0" 10 + } 11 + }
+20
e2e/playwright.config.ts
··· 1 + import { defineConfig, devices } from '@playwright/test'; 2 + 3 + export default defineConfig({ 4 + testDir: './tests', 5 + timeout: 30_000, 6 + expect: { timeout: 5_000 }, 7 + use: { 8 + baseURL: 'http://127.0.0.1:8080', 9 + trace: 'on-first-retry', 10 + }, 11 + projects: [ 12 + { name: 'chromium', use: { ...devices['Desktop Chrome'] } }, 13 + ], 14 + webServer: { 15 + command: 'just serve', 16 + url: 'http://127.0.0.1:8080', 17 + reuseExistingServer: true, 18 + timeout: 120_000, 19 + }, 20 + });
+9
e2e/tests/home.spec.ts
··· 1 + import { expect, test } from '@playwright/test'; 2 + 3 + test('home page shows Polymodel product direction', async ({ page }) => { 4 + await page.goto('/'); 5 + await expect(page.getByRole('heading', { name: 'Polymodel' })).toBeVisible(); 6 + await expect(page.getByText('Thingiverse on atproto')).toBeVisible(); 7 + await expect(page.getByText('Model viewer')).toBeVisible(); 8 + await expect(page.getByText('Polytoken workflow')).toBeVisible(); 9 + });
+218
flake.lock
··· 1 + { 2 + "nodes": { 3 + "crane": { 4 + "locked": { 5 + "lastModified": 1773189535, 6 + "narHash": "sha256-E1G/Or6MWeP+L6mpQ0iTFLpzSzlpGrITfU2220Gq47g=", 7 + "owner": "ipetkov", 8 + "repo": "crane", 9 + "rev": "6fa2fb4cf4a89ba49fc9dd5a3eb6cde99d388269", 10 + "type": "github" 11 + }, 12 + "original": { 13 + "owner": "ipetkov", 14 + "repo": "crane", 15 + "type": "github" 16 + } 17 + }, 18 + "dioxus": { 19 + "inputs": { 20 + "crane": "crane", 21 + "flake-parts": "flake-parts", 22 + "nixpkgs": [ 23 + "nixpkgs" 24 + ], 25 + "rust-overlay": "rust-overlay", 26 + "systems": "systems" 27 + }, 28 + "locked": { 29 + "lastModified": 1781536799, 30 + "narHash": "sha256-Gtnj7wIZZQJiN1wCsqsFQ0R5H0T5ZjQdWtFKtXqTlUA=", 31 + "owner": "DioxusLabs", 32 + "repo": "dioxus", 33 + "rev": "b00ff7525901984f3a07fa5cfa175b537b64630b", 34 + "type": "github" 35 + }, 36 + "original": { 37 + "owner": "DioxusLabs", 38 + "repo": "dioxus", 39 + "type": "github" 40 + } 41 + }, 42 + "flake-parts": { 43 + "inputs": { 44 + "nixpkgs-lib": "nixpkgs-lib" 45 + }, 46 + "locked": { 47 + "lastModified": 1765835352, 48 + "narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=", 49 + "owner": "hercules-ci", 50 + "repo": "flake-parts", 51 + "rev": "a34fae9c08a15ad73f295041fec82323541400a9", 52 + "type": "github" 53 + }, 54 + "original": { 55 + "owner": "hercules-ci", 56 + "repo": "flake-parts", 57 + "type": "github" 58 + } 59 + }, 60 + "flake-utils": { 61 + "inputs": { 62 + "systems": "systems_2" 63 + }, 64 + "locked": { 65 + "lastModified": 1731533236, 66 + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 67 + "owner": "numtide", 68 + "repo": "flake-utils", 69 + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 70 + "type": "github" 71 + }, 72 + "original": { 73 + "owner": "numtide", 74 + "repo": "flake-utils", 75 + "type": "github" 76 + } 77 + }, 78 + "nixpkgs": { 79 + "locked": { 80 + "lastModified": 1744536153, 81 + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", 82 + "owner": "NixOS", 83 + "repo": "nixpkgs", 84 + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", 85 + "type": "github" 86 + }, 87 + "original": { 88 + "owner": "NixOS", 89 + "ref": "nixpkgs-unstable", 90 + "repo": "nixpkgs", 91 + "type": "github" 92 + } 93 + }, 94 + "nixpkgs-lib": { 95 + "locked": { 96 + "lastModified": 1765674936, 97 + "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", 98 + "owner": "nix-community", 99 + "repo": "nixpkgs.lib", 100 + "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", 101 + "type": "github" 102 + }, 103 + "original": { 104 + "owner": "nix-community", 105 + "repo": "nixpkgs.lib", 106 + "type": "github" 107 + } 108 + }, 109 + "nixpkgs_2": { 110 + "locked": { 111 + "lastModified": 1781607440, 112 + "narHash": "sha256-rxO+uc/KFbSJp+pgyXRuAX6QlG9hJdnt0BXpEQRXY+U=", 113 + "owner": "NixOS", 114 + "repo": "nixpkgs", 115 + "rev": "3e41b24abd260e8f71dbe2f5737d24122f972158", 116 + "type": "github" 117 + }, 118 + "original": { 119 + "owner": "NixOS", 120 + "ref": "nixpkgs-unstable", 121 + "repo": "nixpkgs", 122 + "type": "github" 123 + } 124 + }, 125 + "nixpkgs_3": { 126 + "locked": { 127 + "lastModified": 1744536153, 128 + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", 129 + "owner": "NixOS", 130 + "repo": "nixpkgs", 131 + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", 132 + "type": "github" 133 + }, 134 + "original": { 135 + "owner": "NixOS", 136 + "ref": "nixpkgs-unstable", 137 + "repo": "nixpkgs", 138 + "type": "github" 139 + } 140 + }, 141 + "root": { 142 + "inputs": { 143 + "dioxus": "dioxus", 144 + "flake-utils": "flake-utils", 145 + "nixpkgs": "nixpkgs_2", 146 + "rust-overlay": "rust-overlay_2" 147 + } 148 + }, 149 + "rust-overlay": { 150 + "inputs": { 151 + "nixpkgs": "nixpkgs" 152 + }, 153 + "locked": { 154 + "lastModified": 1779333539, 155 + "narHash": "sha256-lpmN2lrBDZDPjov2cbD3bOOJsI0fkKolKXasYPCqSys=", 156 + "owner": "oxalica", 157 + "repo": "rust-overlay", 158 + "rev": "672fa5fc5608d5cd82286a6f69aaf84a40b4fe41", 159 + "type": "github" 160 + }, 161 + "original": { 162 + "owner": "oxalica", 163 + "repo": "rust-overlay", 164 + "type": "github" 165 + } 166 + }, 167 + "rust-overlay_2": { 168 + "inputs": { 169 + "nixpkgs": "nixpkgs_3" 170 + }, 171 + "locked": { 172 + "lastModified": 1781925477, 173 + "narHash": "sha256-QT9/mwEXqfrB9v7E2YGPeYTowXZP8c34behjJ9HuQKA=", 174 + "owner": "oxalica", 175 + "repo": "rust-overlay", 176 + "rev": "e8e2021ee8cf3b58b000953ed3bee0d16b5e98e0", 177 + "type": "github" 178 + }, 179 + "original": { 180 + "owner": "oxalica", 181 + "repo": "rust-overlay", 182 + "type": "github" 183 + } 184 + }, 185 + "systems": { 186 + "locked": { 187 + "lastModified": 1681028828, 188 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 189 + "owner": "nix-systems", 190 + "repo": "default", 191 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 192 + "type": "github" 193 + }, 194 + "original": { 195 + "owner": "nix-systems", 196 + "repo": "default", 197 + "type": "github" 198 + } 199 + }, 200 + "systems_2": { 201 + "locked": { 202 + "lastModified": 1681028828, 203 + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 204 + "owner": "nix-systems", 205 + "repo": "default", 206 + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 207 + "type": "github" 208 + }, 209 + "original": { 210 + "owner": "nix-systems", 211 + "repo": "default", 212 + "type": "github" 213 + } 214 + } 215 + }, 216 + "root": "root", 217 + "version": 7 218 + }
+126
flake.nix
··· 1 + { 2 + description = "polymodel Rust/Dioxus/Jacquard agent-workflow demo"; 3 + 4 + inputs = { 5 + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; 6 + flake-utils.url = "github:numtide/flake-utils"; 7 + rust-overlay.url = "github:oxalica/rust-overlay"; 8 + dioxus = { 9 + url = "github:DioxusLabs/dioxus"; 10 + inputs.nixpkgs.follows = "nixpkgs"; 11 + }; 12 + }; 13 + 14 + outputs = { 15 + self, 16 + nixpkgs, 17 + flake-utils, 18 + rust-overlay, 19 + dioxus, 20 + ... 21 + }: 22 + flake-utils.lib.eachDefaultSystem (system: let 23 + pkgs = import nixpkgs { 24 + inherit system; 25 + overlays = [ 26 + (import rust-overlay) 27 + (_: prev: { 28 + dioxus-cli = dioxus.packages.${prev.system}.dioxus-cli; 29 + }) 30 + ]; 31 + }; 32 + 33 + rustToolchain = pkgs.rust-bin.selectLatestNightlyWith (toolchain: 34 + toolchain.default.override { 35 + targets = ["wasm32-unknown-unknown"]; 36 + extensions = [ 37 + "rust-src" 38 + "rust-analyzer" 39 + "clippy" 40 + "rustfmt" 41 + ]; 42 + }); 43 + in { 44 + devShells.default = pkgs.mkShell { 45 + packages = with pkgs; [ 46 + rustToolchain 47 + rust-analyzer 48 + cargo-nextest 49 + cargo-insta 50 + cargo-bloat 51 + 52 + dioxus-cli 53 + wasm-bindgen-cli 54 + wasm-pack 55 + binaryen.out 56 + wabt 57 + twiggy 58 + 59 + llvmPackages_18.clang-unwrapped 60 + llvmPackages_18.llvm 61 + llvmPackages_18.libclang 62 + llvmPackages_18.bintools-unwrapped 63 + 64 + sqlite 65 + pkg-config 66 + openssl 67 + patchelf 68 + 69 + nodejs 70 + esbuild 71 + playwright-driver.browsers 72 + 73 + just 74 + jq 75 + nixd 76 + alejandra 77 + ]; 78 + 79 + nativeBuildInputs = with pkgs; [ 80 + llvmPackages_18.clang-unwrapped 81 + llvmPackages_18.bintools-unwrapped 82 + rustPlatform.bindgenHook 83 + ]; 84 + 85 + buildInputs = with pkgs; 86 + [ 87 + sqlite 88 + pkg-config 89 + openssl 90 + ] 91 + ++ lib.optionals stdenv.isDarwin [ 92 + libiconv 93 + ]; 94 + 95 + RUST_BACKTRACE = "1"; 96 + NIX_LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ 97 + pkgs.stdenv.cc.cc 98 + pkgs.openssl 99 + pkgs.sqlite 100 + ]; 101 + NIX_LD = pkgs.lib.fileContents "${pkgs.stdenv.cc}/nix-support/dynamic-linker"; 102 + 103 + PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}"; 104 + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1"; 105 + PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS = true; 106 + PLAYWRIGHT_HOST_PLATFORM_OVERRIDE = "ubuntu-24.04"; 107 + 108 + shellHook = '' 109 + export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$NIX_LD_LIBRARY_PATH" 110 + export CC_wasm32_unknown_unknown="${pkgs.llvmPackages_18.clang-unwrapped}/bin/clang" 111 + export AR_wasm32_unknown_unknown="${pkgs.llvmPackages_18.bintools-unwrapped}/bin/llvm-ar" 112 + 113 + CLANG_MAJOR_VERSION="18" 114 + CLANG_RESOURCE_DIR="${pkgs.llvmPackages_18.clang-unwrapped}/lib/clang/$CLANG_MAJOR_VERSION" 115 + LIBCLANG_INCLUDE="${pkgs.llvmPackages_18.libclang.lib}/lib/clang/$CLANG_MAJOR_VERSION/include" 116 + 117 + export LIBCLANG_PATH="${pkgs.llvmPackages_18.libclang.lib}/lib" 118 + export BINDGEN_EXTRA_CLANG_ARGS="-isystem ${pkgs.glibc.dev}/include -isystem $LIBCLANG_INCLUDE" 119 + export CFLAGS_wasm32_unknown_unknown="-isystem $LIBCLANG_INCLUDE -resource-dir $CLANG_RESOURCE_DIR" 120 + export CPPFLAGS="-isystem $LIBCLANG_INCLUDE -resource-dir $CLANG_RESOURCE_DIR" 121 + 122 + echo "polymodel dev shell: Rust + Dioxus + Jacquard + SQLite + Playwright" 123 + ''; 124 + }; 125 + }); 126 + }
+56
justfile
··· 1 + # polymodel development commands 2 + 3 + set dotenv-load := false 4 + 5 + # Format and apply safe automatic fixes. This is the default pre-review cleanup command. 6 + fix: 7 + cargo fmt --all 8 + cargo clippy --all-targets --features server --fix --allow-dirty --allow-staged -- -D warnings 9 + 10 + # Fast compile checks across the relevant Dioxus targets. 11 + check: 12 + cargo check 13 + cargo check --features server 14 + cargo check --target wasm32-unknown-unknown --features web 15 + 16 + # Run unit tests. 17 + test: 18 + cargo nextest run 19 + 20 + # Run server-feature tests. 21 + test-server: 22 + cargo nextest run --features server 23 + 24 + # Run all local validation expected before review. 25 + test-all: fix check test test-server 26 + 27 + # Start the Dioxus dev server. 28 + serve: 29 + dx serve 30 + 31 + # Build the Dioxus app for web. 32 + build-web: 33 + dx build --platform web 34 + 35 + # Create a sibling jj workspace for a Jira ticket or feature slug, then start a fresh change. 36 + workspace-create name: 37 + root="$(jj workspace root)" && workspace_path="$(dirname "$root")/{{name}}" && jj workspace add "$workspace_path" -r @ 38 + root="$(jj workspace root)" && workspace_path="$(dirname "$root")/{{name}}" && cd "$workspace_path" && jj new -m "{{name}}" 39 + 40 + # List jj workspaces. 41 + workspace-list: 42 + jj workspace list 43 + 44 + # Forget a jj workspace after the work is safely landed or intentionally abandoned. 45 + workspace-forget name: 46 + jj workspace forget {{name}} 47 + 48 + # Show current jj state and diff. 49 + status: 50 + jj status 51 + jj diff --summary 52 + 53 + # Clean build artifacts. 54 + clean: 55 + cargo clean 56 + rm -rf target/dx
+5
rust-toolchain.toml
··· 1 + [toolchain] 2 + channel = "nightly" 3 + edition = "2024" 4 + targets = ["wasm32-unknown-unknown"] 5 + components = ["rustfmt", "clippy", "rust-src", "rust-analyzer"]
+119
src/main.rs
··· 1 + use dioxus::prelude::*; 2 + 3 + const FAVICON: Asset = asset!("/assets/favicon.jpg"); 4 + const THEME_CSS: Asset = asset!("/assets/styling/theme.css"); 5 + const BASE_CSS: Asset = asset!("/assets/styling/base.css"); 6 + const CARDS_CSS: Asset = asset!("/assets/styling/cards.css"); 7 + const BROWSE_CSS: Asset = asset!("/assets/styling/browse.css"); 8 + const POLYMODEL_CSS: Asset = asset!("/assets/styling/polymodel.css"); 9 + 10 + fn main() { 11 + #[cfg(all(target_family = "wasm", target_os = "unknown"))] 12 + { 13 + console_error_panic_hook::set_once(); 14 + tracing_wasm::set_as_global_default(); 15 + } 16 + 17 + dioxus::launch(App); 18 + } 19 + 20 + #[component] 21 + fn App() -> Element { 22 + rsx! { 23 + document::Meta { name: "viewport", content: "width=device-width, initial-scale=1" } 24 + document::Title { "Polymodel" } 25 + document::Link { rel: "icon", href: FAVICON } 26 + document::Link { rel: "preconnect", href: "https://fonts.googleapis.com" } 27 + document::Link { rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin: "anonymous" } 28 + document::Link { rel: "stylesheet", href: "https://fonts.googleapis.com/css2?family=Capriola&family=DM+Sans:opsz,wght@9..40,300..800&display=swap" } 29 + Stylesheet { href: THEME_CSS } 30 + Stylesheet { href: BASE_CSS } 31 + Stylesheet { href: CARDS_CSS } 32 + Stylesheet { href: BROWSE_CSS } 33 + Stylesheet { href: POLYMODEL_CSS } 34 + 35 + main { class: "browse-page", 36 + header { class: "browse-header", 37 + h1 { "Polymodel" } 38 + div { class: "demo-context", 39 + strong { "Thingiverse on atproto. " } 40 + "Project/profile/like lexicons, social feeds, and a browser STL viewer. " 41 + strong { "Workflow: " } 42 + "Jira + Confluence + jj + Polytoken." 43 + } 44 + } 45 + section { class: "browse-grid", 46 + for card in roadmap_cards() { 47 + RoadmapCard { card } 48 + } 49 + } 50 + } 51 + } 52 + } 53 + 54 + #[derive(Clone, Copy, PartialEq)] 55 + struct RoadmapCardData { 56 + token: &'static str, 57 + title: &'static str, 58 + body: &'static str, 59 + } 60 + 61 + fn roadmap_cards() -> [RoadmapCardData; 6] { 62 + [ 63 + RoadmapCardData { 64 + token: "NSID", 65 + title: "Project lexicon", 66 + body: "Define the model/project record: title, description, files, preview assets, tags, license, and attribution.", 67 + }, 68 + RoadmapCardData { 69 + token: "DID", 70 + title: "Profile publishing", 71 + body: "Use ATProto identity and profile-oriented feeds so makers can publish and browse from their own repos.", 72 + }, 73 + RoadmapCardData { 74 + token: "★", 75 + title: "Likes and saves", 76 + body: "Start with lightweight feedback records that can drive hot/recent discovery without inventing a heavyweight backend.", 77 + }, 78 + RoadmapCardData { 79 + token: "STL", 80 + title: "Model viewer", 81 + body: "Spike three-d and kiss3d as WASM viewer candidates; choose based on STL loading, orbit controls, rendering quality, and Dioxus integration friction.", 82 + }, 83 + RoadmapCardData { 84 + token: "PM", 85 + title: "Jira and Confluence", 86 + body: "Use Jira and Confluence as both planning/demo narrative and agent-readable workflow state.", 87 + }, 88 + RoadmapCardData { 89 + token: "pt", 90 + title: "Polytoken workflow", 91 + body: "Use facets, skills, hooks, project vars, jj workspaces, and review gates to make the demo workflow real.", 92 + }, 93 + ] 94 + } 95 + 96 + #[component] 97 + fn RoadmapCard(card: RoadmapCardData) -> Element { 98 + rsx! { 99 + article { class: "video-card card-surface demo-card", 100 + div { class: "video-card-thumbnail", 101 + span { class: "demo-card-token", "{card.token}" } 102 + } 103 + div { class: "video-card-body demo-card-body", 104 + h2 { class: "card-title", "{card.title}" } 105 + p { "{card.body}" } 106 + } 107 + } 108 + } 109 + } 110 + 111 + #[cfg(test)] 112 + mod tests { 113 + use super::roadmap_cards; 114 + 115 + #[test] 116 + fn roadmap_includes_stl_viewer() { 117 + assert!(roadmap_cards().iter().any(|card| card.token == "STL")); 118 + } 119 + }