JacobLinCool commited on
Commit
4791c0a
·
verified ·
1 Parent(s): 1ec322d

feat: add live project atlas

Browse files

Sync GitHub commit 76e4930 with atlas dashboard, MiniCPM quest LoRA, refresh APIs, and tests.

This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. README.md +49 -10
  3. app.py +251 -3
  4. artifacts/quest-lora/README.md +44 -0
  5. artifacts/quest-lora/adapter_config.json +48 -0
  6. artifacts/quest-lora/adapter_model.safetensors +3 -0
  7. artifacts/quest-lora/chat_template.jinja +179 -0
  8. artifacts/quest-lora/self-eval.json +66 -0
  9. artifacts/quest-lora/special_tokens_map.json +30 -0
  10. artifacts/quest-lora/tokenizer.json +0 -0
  11. artifacts/quest-lora/tokenizer_config.json +4099 -0
  12. artifacts/quest-lora/training-recipe.json +23 -0
  13. data/quest_corpus.json +0 -0
  14. data/quest_dataset_card.md +83 -0
  15. data/quest_label_input.json +0 -0
  16. data/quest_labels/in/AI-Puppet-Theater.json +14 -0
  17. data/quest_labels/in/AI-agent-Evaluation-pipeline.json +17 -0
  18. data/quest_labels/in/Advent_of_a_World_of_Flowering_Trees.json +14 -0
  19. data/quest_labels/in/Backyard-Demo-Builder.json +24 -0
  20. data/quest_labels/in/Case-Lantern.json +16 -0
  21. data/quest_labels/in/CodeFlow.json +14 -0
  22. data/quest_labels/in/ContextForge.json +14 -0
  23. data/quest_labels/in/Council-of-Tiny-Minds.json +14 -0
  24. data/quest_labels/in/Darwin-35B-A3B-Opus.json +15 -0
  25. data/quest_labels/in/Family-Bill-Assistant.json +14 -0
  26. data/quest_labels/in/First-Principle-AI.json +21 -0
  27. data/quest_labels/in/GRM-2.6-Opus.json +14 -0
  28. data/quest_labels/in/GTROX.json +14 -0
  29. data/quest_labels/in/InContext.json +14 -0
  30. data/quest_labels/in/Kasualdad_LFED.json +19 -0
  31. data/quest_labels/in/Kintsugi-Garden.json +14 -0
  32. data/quest_labels/in/LocalDuo.json +14 -0
  33. data/quest_labels/in/Mediassist.json +14 -0
  34. data/quest_labels/in/NEXUS-Visual-Weaver.json +14 -0
  35. data/quest_labels/in/PocketWorld-Studio.json +14 -0
  36. data/quest_labels/in/Retail-Insight-AI.json +14 -0
  37. data/quest_labels/in/SlideAI.json +14 -0
  38. data/quest_labels/in/Sprout-And-Spoon.json +14 -0
  39. data/quest_labels/in/Structured-Data-Rescuer.json +14 -0
  40. data/quest_labels/in/The-Shrine.json +14 -0
  41. data/quest_labels/in/Tone-Bridge.json +25 -0
  42. data/quest_labels/in/Trollsona.json +14 -0
  43. data/quest_labels/in/VoiceGate.json +14 -0
  44. data/quest_labels/in/WitGym.json +14 -0
  45. data/quest_labels/in/Yui-home-assistant.json +14 -0
  46. data/quest_labels/in/ai-study-buddy.json +14 -0
  47. data/quest_labels/in/amnesiac.json +14 -0
  48. data/quest_labels/in/attention-firewall.json +14 -0
  49. data/quest_labels/in/awaaz.json +17 -0
  50. data/quest_labels/in/backyard-raccoon-deterrent.json +17 -0
.gitattributes CHANGED
@@ -1,3 +1,4 @@
1
  # Auto detect text files and perform LF normalization
2
  * text=auto
 
3
  static/assets/parchment.png filter=lfs diff=lfs merge=lfs -text
 
1
  # Auto detect text files and perform LF normalization
2
  * text=auto
3
+ artifacts/quest-lora/adapter_model.safetensors filter=lfs diff=lfs merge=lfs -text
4
  static/assets/parchment.png filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -22,17 +22,18 @@ tags:
22
  # Hackathon Advisor
23
 
24
  **Hackathon Advisor** is a text-first project advisor for the Build Small Hackathon. The user-facing experience is
25
- **The Unwritten Almanac**: a journal-style workspace that compares your idea against real Spaces in the
26
- `build-small-hackathon` organization, finds under-explored territory, scores the idea, and drafts a practical build plan.
 
27
 
28
  The current milestone is a deployed ZeroGPU + MiniCPM5 LoRA advisor:
29
 
30
  - Local snapshot of public `build-small-hackathon` Spaces.
31
  - Modal-built EmbeddingGemma GGUF retrieval index, with runtime query embeddings computed through llama.cpp.
 
32
  - Nemotron Speech Streaming voice input through NVIDIA NeMo ASR on ZeroGPU.
33
  - Jargon correction for hackathon/model terms.
34
- - MiniCPM5 tool-call planning with a published PEFT LoRA adapter, plus deterministic local rules for tests and CPU-only
35
- development.
36
  - One-turn advisor loop with overlap citations, whitespace suggestions, scoring, and plans.
37
  - Custom `gradio.Server` frontend focused on the builder's idea workflow, with submission evidence kept in API exports.
38
 
@@ -44,10 +45,19 @@ See [DESIGN.md](DESIGN.md) for the full product and model plan.
44
  python3.11 -m venv .venv
45
  . .venv/bin/activate
46
  pip install -r requirements.txt
 
 
 
 
 
 
 
47
  python app.py
48
  ```
49
 
50
- Then open <http://127.0.0.1:7860>.
 
 
51
 
52
  ## Refresh The Project Snapshot
53
 
@@ -64,6 +74,25 @@ app file as the highest-signal project evidence for embedding. The canonical ind
64
  `ggml-org/embeddinggemma-300m-qat-q8_0-GGUF` through llama.cpp; runtime search embeds the user query with the same GGUF
65
  model and performs local cosine search over the checked-in vectors.
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  ## Trace Artifact
68
 
69
  The app exposes a `trace_artifact` Gradio API endpoint for submission evidence and debugging. It emits a manifest row
@@ -188,18 +217,28 @@ ADVISOR_MODEL_BACKEND=minicpm-transformers
188
  ADVISOR_MODEL_ID=openbmb/MiniCPM5-1B
189
  ADVISOR_ADAPTER_ID=build-small-hackathon/hackathon-advisor-minicpm5-lora
190
  ADVISOR_ADAPTER_REVISION=25de69bcde397e1bcdd852923b56a42f10222650
 
 
 
191
  ADVISOR_EMBEDDING_MODEL_REPO=ggml-org/embeddinggemma-300m-qat-q8_0-GGUF
192
  ADVISOR_EMBEDDING_MODEL_FILE=embeddinggemma-300m-qat-Q8_0.gguf
193
  ADVISOR_ASR_MODEL_ID=nvidia/nemotron-speech-streaming-en-0.6b
194
  ```
195
 
196
  `agent_turn` wraps the engine call with `spaces.GPU` when `ADVISOR_ZERO_GPU=1`, so model loading and generation run on
197
- the ZeroGPU allocation. The retrieval query embedder downloads the GGUF model through `huggingface_hub` unless
 
 
 
 
 
 
 
 
198
  `ADVISOR_EMBEDDING_MODEL_PATH` points to a local file. `/api/transcribe` uses the same ZeroGPU wrapper for Nemotron ASR.
199
- On macOS local runs with `ADVISOR_MODEL_BACKEND=minicpm-transformers`, the app automatically runs llama.cpp query
200
- embedding in a worker process so the MiniCPM PyTorch runtime and llama.cpp do not load conflicting OpenMP runtimes in
201
- the same Python process.
202
- Local tests and CPU-only development still default to `ADVISOR_MODEL_BACKEND=rules`.
203
 
204
  ## Test
205
 
 
22
  # Hackathon Advisor
23
 
24
  **Hackathon Advisor** is a text-first project advisor for the Build Small Hackathon. The user-facing experience is
25
+ an atlas-first dashboard plus **The Unwritten Almanac**: the first screen maps real Spaces in the
26
+ `build-small-hackathon` organization, while the advisor workspace compares your idea against that map, finds
27
+ under-explored territory, scores the idea, and drafts a practical build plan.
28
 
29
  The current milestone is a deployed ZeroGPU + MiniCPM5 LoRA advisor:
30
 
31
  - Local snapshot of public `build-small-hackathon` Spaces.
32
  - Modal-built EmbeddingGemma GGUF retrieval index, with runtime query embeddings computed through llama.cpp.
33
+ - Full-screen t-SNE project atlas with clusters, nearest-neighbor links, quest coverage, and live refresh state.
34
  - Nemotron Speech Streaming voice input through NVIDIA NeMo ASR on ZeroGPU.
35
  - Jargon correction for hackathon/model terms.
36
+ - MiniCPM5 tool-call planning with a published PEFT LoRA adapter.
 
37
  - One-turn advisor loop with overlap citations, whitespace suggestions, scoring, and plans.
38
  - Custom `gradio.Server` frontend focused on the builder's idea workflow, with submission evidence kept in API exports.
39
 
 
45
  python3.11 -m venv .venv
46
  . .venv/bin/activate
47
  pip install -r requirements.txt
48
+ mkdir -p .cache/advisor-dashboard
49
+ ADVISOR_CACHE_DIR=.cache/advisor-dashboard \
50
+ ADVISOR_MODEL_BACKEND=minicpm-transformers \
51
+ ADVISOR_MODEL_ID=openbmb/MiniCPM5-1B \
52
+ ADVISOR_ADAPTER_ID=build-small-hackathon/hackathon-advisor-minicpm5-lora \
53
+ ADVISOR_ADAPTER_REVISION=25de69bcde397e1bcdd852923b56a42f10222650 \
54
+ ADVISOR_QUEST_ANALYZER_BACKEND=minicpm-transformers \
55
  python app.py
56
  ```
57
 
58
+ Then open <http://127.0.0.1:7860>. The atlas refresh button runs locally with the same artifact swap path used in
59
+ deployment. It writes refreshed runs under `.cache/advisor-dashboard/runs/` and atomically updates
60
+ `.cache/advisor-dashboard/latest.json`.
61
 
62
  ## Refresh The Project Snapshot
63
 
 
74
  `ggml-org/embeddinggemma-300m-qat-q8_0-GGUF` through llama.cpp; runtime search embeds the user query with the same GGUF
75
  model and performs local cosine search over the checked-in vectors.
76
 
77
+ ## Live Project Atlas
78
+
79
+ `/api/dashboard` exposes the first-screen atlas payload: t-SNE coordinates, KMeans clusters, nearest-neighbor links,
80
+ quest coverage, provenance, and refresh status. The browser renders this as the default full-screen view; `#advisor`
81
+ opens the existing idea workflow.
82
+
83
+ `POST /api/dashboard/refresh` starts one background refresh job. The job snapshots public Spaces, rebuilds the GGUF
84
+ embedding index, runs strict JSON MiniCPM quest analysis, creates the atlas, persists the validated artifacts, and only
85
+ then swaps the live app to the new dashboard. `GET /api/dashboard/refresh` polls status.
86
+
87
+ Live refresh requires a writable dashboard cache directory at `ADVISOR_CACHE_DIR`. On Hugging Face Spaces this should be
88
+ a mounted Storage Bucket; locally it can be a normal directory such as `.cache/advisor-dashboard`. The job writes
89
+ `runs/{run_id}/projects.json`, `project_index.json`, `dashboard.json`, and `manifest.json`, then atomically updates
90
+ `latest.json`. If the cache directory is missing, not writable, or quest analysis fails validation, refresh fails and the
91
+ current validated dashboard stays active.
92
+
93
+ Set `ADVISOR_QUEST_ANALYZER_BACKEND=minicpm-transformers` for both local and deployed refresh runs. The local dashboard
94
+ uses the same MiniCPM analyzer as the deployed Space; test doubles are only used inside pytest.
95
+
96
  ## Trace Artifact
97
 
98
  The app exposes a `trace_artifact` Gradio API endpoint for submission evidence and debugging. It emits a manifest row
 
217
  ADVISOR_MODEL_ID=openbmb/MiniCPM5-1B
218
  ADVISOR_ADAPTER_ID=build-small-hackathon/hackathon-advisor-minicpm5-lora
219
  ADVISOR_ADAPTER_REVISION=25de69bcde397e1bcdd852923b56a42f10222650
220
+ ADVISOR_QUEST_ANALYZER_BACKEND=minicpm-transformers
221
+ ADVISOR_QUEST_ADAPTER_ID=artifacts/quest-lora
222
+ ADVISOR_CACHE_DIR=/data/advisor-cache
223
  ADVISOR_EMBEDDING_MODEL_REPO=ggml-org/embeddinggemma-300m-qat-q8_0-GGUF
224
  ADVISOR_EMBEDDING_MODEL_FILE=embeddinggemma-300m-qat-Q8_0.gguf
225
  ADVISOR_ASR_MODEL_ID=nvidia/nemotron-speech-streaming-en-0.6b
226
  ```
227
 
228
  `agent_turn` wraps the engine call with `spaces.GPU` when `ADVISOR_ZERO_GPU=1`, so model loading and generation run on
229
+ the ZeroGPU allocation. MiniCPM loading follows the official demo shape: tokenizer uses
230
+ `AutoTokenizer.from_pretrained(..., trust_remote_code=True)`, CUDA/ZeroGPU model loading uses
231
+ `AutoModelForCausalLM.from_pretrained(..., torch_dtype=torch.bfloat16, trust_remote_code=True).to("cuda")`, and prompts
232
+ are rendered with `apply_chat_template(..., tokenize=False, add_generation_prompt=True, enable_thinking=False)` before
233
+ tokenization. Generation follows the demo policy: temperature `> 0` uses `temperature=0.9`, `top_p=0.95`, and
234
+ `do_sample=True`; temperature `0` uses `do_sample=False`. The advisor tool planner uses temperature `0` for stable XML
235
+ tool calls, and dashboard quest analysis also uses temperature `0` so the MiniCPM LoRA emits strict JSON deterministically.
236
+
237
+ The retrieval query embedder downloads the GGUF model through `huggingface_hub` unless
238
  `ADVISOR_EMBEDDING_MODEL_PATH` points to a local file. `/api/transcribe` uses the same ZeroGPU wrapper for Nemotron ASR.
239
+ On macOS local runs, the app automatically runs llama.cpp query embedding in a worker process so the MiniCPM PyTorch
240
+ runtime and llama.cpp do not load conflicting OpenMP runtimes in the same Python process. Dashboard refresh also builds
241
+ the GGUF embedding index in a subprocess before returning to the app process for MiniCPM quest analysis.
 
242
 
243
  ## Test
244
 
app.py CHANGED
@@ -1,10 +1,15 @@
1
  from __future__ import annotations
2
 
 
3
  import json
4
  import os
5
  from pathlib import Path
 
 
6
  import tempfile
 
7
  from typing import Any, Iterator
 
8
 
9
  from fastapi import Body, File, HTTPException, UploadFile
10
  from fastapi.responses import FileResponse, HTMLResponse, JSONResponse, Response, StreamingResponse
@@ -14,7 +19,15 @@ from hackathon_advisor.agent import AdvisorEngine
14
  from hackathon_advisor.artifact_bundle import BUNDLE_FILENAME, build_demo_bundle_zip
15
  from hackathon_advisor.asr_runtime import create_asr_transcriber
16
  from hackathon_advisor.chapter import build_chapter_markdown
17
- from hackathon_advisor.data import ProjectIndex
 
 
 
 
 
 
 
 
18
  from hackathon_advisor.demo_rehearsal import build_demo_rehearsal
19
  from hackathon_advisor.model_runtime import create_tool_planner
20
  from hackathon_advisor.profiling import (
@@ -27,6 +40,7 @@ from hackathon_advisor.lora_dataset import build_lora_dataset_jsonl
27
  from hackathon_advisor.lora_training_kit import TRAINING_KIT_FILENAME, build_lora_training_kit_zip
28
  from hackathon_advisor.png_export import artifact_png_filename, render_artifact_png
29
  from hackathon_advisor.prize_ledger import prize_ledger
 
30
  from hackathon_advisor.runtime_hooks import install_asyncio_cleanup_hook
31
  from hackathon_advisor.submission_packet import build_submission_packet_markdown
32
  from hackathon_advisor.tool_contracts import resolve_tool_call, tool_schemas
@@ -45,16 +59,49 @@ INDEX_PATH = ROOT / "data" / "project_index.json"
45
  PROFILE_FIELDS = ["skills", "time", "preferences", "constraints"]
46
  MAX_AUDIO_UPLOAD_BYTES = 25 * 1024 * 1024
47
  AUDIO_UPLOAD_SUFFIXES = {".aac", ".aif", ".aiff", ".flac", ".m4a", ".mp3", ".oga", ".ogg", ".opus", ".wav", ".webm"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
- index = ProjectIndex.from_files(DATA_PATH, INDEX_PATH)
50
  # Acceleration is automatic: on a ZeroGPU Space the GPU path uses accelerate device_map inside
51
  # the @spaces.GPU fork; locally the device resolves CUDA -> Apple MPS -> CPU. CPU is only used
52
  # as an explicit override or a quota fallback.
53
- engine = AdvisorEngine(index, create_tool_planner(device="auto" if zero_gpu_enabled() else "local"))
54
  voice_transcriber = create_asr_transcriber()
55
  app = Server()
56
 
57
  _cpu_engine: AdvisorEngine | None = None
 
 
 
 
 
 
 
 
 
 
58
 
59
 
60
  def _json_event(payload: dict) -> str:
@@ -81,6 +128,185 @@ def _transcribe_voice(audio_path: str) -> dict[str, Any]:
81
  return voice_transcriber.transcribe(Path(audio_path)).to_dict()
82
 
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  def _session_from_json(session_json: str = "{}") -> dict[str, Any]:
85
  try:
86
  session = json.loads(session_json or "{}")
@@ -174,6 +400,28 @@ def static_file(path: str) -> FileResponse:
174
  return FileResponse(target)
175
 
176
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
177
  @app.get("/health")
178
  def health() -> dict:
179
  return {
 
1
  from __future__ import annotations
2
 
3
+ from datetime import datetime, timezone
4
  import json
5
  import os
6
  from pathlib import Path
7
+ import subprocess
8
+ import sys
9
  import tempfile
10
+ from threading import Lock, Thread
11
  from typing import Any, Iterator
12
+ from uuid import uuid4
13
 
14
  from fastapi import Body, File, HTTPException, UploadFile
15
  from fastapi.responses import FileResponse, HTMLResponse, JSONResponse, Response, StreamingResponse
 
19
  from hackathon_advisor.artifact_bundle import BUNDLE_FILENAME, build_demo_bundle_zip
20
  from hackathon_advisor.asr_runtime import create_asr_transcriber
21
  from hackathon_advisor.chapter import build_chapter_markdown
22
+ from hackathon_advisor.dashboard import build_dashboard_payload
23
+ from hackathon_advisor.dashboard_storage import (
24
+ DashboardStorageError,
25
+ cache_dir_from_env,
26
+ load_latest_artifacts,
27
+ persist_refresh_artifacts,
28
+ require_writable_cache_dir,
29
+ )
30
+ from hackathon_advisor.data import DEFAULT_EMBEDDING_MODEL_FILE, DEFAULT_EMBEDDING_MODEL_REPO, Project, ProjectIndex
31
  from hackathon_advisor.demo_rehearsal import build_demo_rehearsal
32
  from hackathon_advisor.model_runtime import create_tool_planner
33
  from hackathon_advisor.profiling import (
 
40
  from hackathon_advisor.lora_training_kit import TRAINING_KIT_FILENAME, build_lora_training_kit_zip
41
  from hackathon_advisor.png_export import artifact_png_filename, render_artifact_png
42
  from hackathon_advisor.prize_ledger import prize_ledger
43
+ from hackathon_advisor.quest_analysis import create_quest_analyzer, validate_matches_by_project
44
  from hackathon_advisor.runtime_hooks import install_asyncio_cleanup_hook
45
  from hackathon_advisor.submission_packet import build_submission_packet_markdown
46
  from hackathon_advisor.tool_contracts import resolve_tool_call, tool_schemas
 
59
  PROFILE_FIELDS = ["skills", "time", "preferences", "constraints"]
60
  MAX_AUDIO_UPLOAD_BYTES = 25 * 1024 * 1024
61
  AUDIO_UPLOAD_SUFFIXES = {".aac", ".aif", ".aiff", ".flac", ".m4a", ".mp3", ".oga", ".ogg", ".opus", ".wav", ".webm"}
62
+ DEFAULT_HF_ORG = "build-small-hackathon"
63
+ REFRESH_STAGE_LABELS = {
64
+ "crawling": "Fetching public Spaces",
65
+ "embedding": "Rebuilding the embedding index",
66
+ "quest_analysis": "Classifying quest coverage",
67
+ "atlas": "Projecting the atlas",
68
+ "persisting": "Writing dashboard artifacts",
69
+ "swapping": "Activating the latest dashboard",
70
+ }
71
+
72
+ _runtime_lock = Lock()
73
+ _refresh_lock = Lock()
74
+
75
+
76
+ def _load_initial_runtime() -> tuple[ProjectIndex, dict[str, Any]]:
77
+ artifacts = load_latest_artifacts(cache_dir_from_env())
78
+ if artifacts is not None:
79
+ loaded_index = ProjectIndex.from_files(artifacts.projects_path, artifacts.index_path)
80
+ return loaded_index, artifacts.dashboard
81
+ loaded_index = ProjectIndex.from_files(DATA_PATH, INDEX_PATH)
82
+ return loaded_index, build_dashboard_payload(loaded_index)
83
+
84
+
85
+ index, dashboard_payload = _load_initial_runtime()
86
 
 
87
  # Acceleration is automatic: on a ZeroGPU Space the GPU path uses accelerate device_map inside
88
  # the @spaces.GPU fork; locally the device resolves CUDA -> Apple MPS -> CPU. CPU is only used
89
  # as an explicit override or a quota fallback.
90
+ engine = AdvisorEngine(index, create_tool_planner(device="cuda" if zero_gpu_enabled() else "local"))
91
  voice_transcriber = create_asr_transcriber()
92
  app = Server()
93
 
94
  _cpu_engine: AdvisorEngine | None = None
95
+ _refresh_state: dict[str, Any] = {
96
+ "status": "idle",
97
+ "run_id": "",
98
+ "stage": "",
99
+ "stage_label": "",
100
+ "started_at": "",
101
+ "finished_at": "",
102
+ "error": "",
103
+ "result": None,
104
+ }
105
 
106
 
107
  def _json_event(payload: dict) -> str:
 
128
  return voice_transcriber.transcribe(Path(audio_path)).to_dict()
129
 
130
 
131
+ @gpu_task
132
+ def _analyze_dashboard_quests(project_rows: list[dict[str, Any]]) -> dict[str, Any]:
133
+ missing_evidence_keys = [
134
+ str(item.get("id") or index)
135
+ for index, item in enumerate(project_rows)
136
+ if "readme_body" not in item or "app_file_source" not in item
137
+ ]
138
+ if missing_evidence_keys:
139
+ raise RuntimeError(
140
+ "dashboard quest analysis requires refresh snapshots with readme_body and app_file_source; "
141
+ f"missing evidence keys for {len(missing_evidence_keys)} projects"
142
+ )
143
+ projects = [Project.from_dict(item) for item in project_rows]
144
+ analyzer = create_quest_analyzer(device="cuda" if zero_gpu_enabled() else "local")
145
+ matches = analyzer.analyze(projects)
146
+ source = getattr(analyzer, "source", "quest-analyzer")
147
+ validated = validate_matches_by_project(matches, projects, source=source)
148
+ return {
149
+ "source": validated.source,
150
+ "matches_by_project": validated.matches_by_project,
151
+ }
152
+
153
+
154
+ def _refresh_public_state() -> dict[str, Any]:
155
+ with _refresh_lock:
156
+ return dict(_refresh_state)
157
+
158
+
159
+ def _set_refresh_state(**updates: Any) -> None:
160
+ with _refresh_lock:
161
+ _refresh_state.update(updates)
162
+ stage = str(_refresh_state.get("stage") or "")
163
+ _refresh_state["stage_label"] = REFRESH_STAGE_LABELS.get(stage, "")
164
+
165
+
166
+ def _start_refresh_thread(cache_dir: Path) -> dict[str, Any]:
167
+ with _refresh_lock:
168
+ if _refresh_state.get("status") == "running":
169
+ raise HTTPException(status_code=409, detail="Dashboard refresh is already running.")
170
+ run_id = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ") + "-" + uuid4().hex[:8]
171
+ _refresh_state.update(
172
+ {
173
+ "status": "running",
174
+ "run_id": run_id,
175
+ "stage": "crawling",
176
+ "stage_label": REFRESH_STAGE_LABELS["crawling"],
177
+ "started_at": datetime.now(timezone.utc).isoformat(timespec="seconds"),
178
+ "finished_at": "",
179
+ "error": "",
180
+ "result": None,
181
+ }
182
+ )
183
+ thread = Thread(target=_run_refresh_job, args=(run_id, cache_dir), daemon=True)
184
+ thread.start()
185
+ return _refresh_public_state()
186
+
187
+
188
+ def _run_refresh_job(run_id: str, cache_dir: Path) -> None:
189
+ try:
190
+ projects_payload, index_payload, refreshed_dashboard = _build_refresh_payloads(run_id)
191
+ _set_refresh_state(stage="persisting")
192
+ artifacts = persist_refresh_artifacts(
193
+ cache_dir,
194
+ run_id,
195
+ projects_payload=projects_payload,
196
+ index_payload=index_payload,
197
+ dashboard_payload=refreshed_dashboard,
198
+ )
199
+ _set_refresh_state(stage="swapping")
200
+ _replace_runtime_from_files(artifacts.projects_path, artifacts.index_path, artifacts.dashboard)
201
+ _set_refresh_state(
202
+ status="succeeded",
203
+ stage="",
204
+ finished_at=datetime.now(timezone.utc).isoformat(timespec="seconds"),
205
+ result={
206
+ "run_id": run_id,
207
+ "project_count": refreshed_dashboard["project_count"],
208
+ "snapshot_digest": refreshed_dashboard["provenance"]["snapshot_digest"],
209
+ "dashboard_generated_at": refreshed_dashboard["generated_at"],
210
+ },
211
+ )
212
+ except Exception as error: # noqa: BLE001 - background job must report every failure as state
213
+ _set_refresh_state(
214
+ status="failed",
215
+ stage="",
216
+ finished_at=datetime.now(timezone.utc).isoformat(timespec="seconds"),
217
+ error=str(error),
218
+ result=None,
219
+ )
220
+
221
+
222
+ def _build_refresh_payloads(run_id: str) -> tuple[dict[str, Any], dict[str, Any], dict[str, Any]]:
223
+ from scripts.crawl_hf_spaces import API, crawl_projects
224
+
225
+ org = os.environ.get("ADVISOR_HF_ORG", DEFAULT_HF_ORG).strip() or DEFAULT_HF_ORG
226
+ _set_refresh_state(stage="crawling")
227
+ project_rows = sorted(crawl_projects(org), key=lambda project: project["id"].lower())
228
+ projects_payload = {
229
+ "generated_at": datetime.now(timezone.utc).isoformat(timespec="seconds"),
230
+ "source": f"{API}/spaces?author={org}",
231
+ "projects": project_rows,
232
+ }
233
+
234
+ _set_refresh_state(stage="embedding")
235
+ with tempfile.TemporaryDirectory(prefix="advisor-refresh-") as directory:
236
+ project_path = Path(directory) / "projects.json"
237
+ project_path.write_text(json.dumps(projects_payload, ensure_ascii=False), encoding="utf-8")
238
+ index_payload = _build_refresh_index_payload(project_path, Path(directory) / "project_index.json")
239
+
240
+ projects = [Project.from_dict(item) for item in projects_payload["projects"]]
241
+ refreshed_index = ProjectIndex(
242
+ projects=projects,
243
+ generated_at=str(projects_payload["generated_at"]),
244
+ source=str(projects_payload["source"]),
245
+ index_payload=index_payload,
246
+ )
247
+
248
+ _set_refresh_state(stage="quest_analysis")
249
+ quest_analysis = _analyze_dashboard_quests([project.to_refresh_snapshot_dict() for project in projects])
250
+ _set_refresh_state(stage="atlas")
251
+ refreshed_dashboard = build_dashboard_payload(
252
+ refreshed_index,
253
+ quest_matches=quest_analysis["matches_by_project"],
254
+ quest_source=str(quest_analysis["source"]),
255
+ )
256
+ return projects_payload, index_payload, refreshed_dashboard
257
+
258
+
259
+ def _build_refresh_index_payload(project_path: Path, index_path: Path) -> dict[str, Any]:
260
+ command = [
261
+ sys.executable,
262
+ str(ROOT / "scripts" / "build_project_index.py"),
263
+ "--projects",
264
+ str(project_path),
265
+ "--out",
266
+ str(index_path),
267
+ "--model-repo",
268
+ os.environ.get("ADVISOR_EMBEDDING_MODEL_REPO", DEFAULT_EMBEDDING_MODEL_REPO),
269
+ "--model-file",
270
+ os.environ.get("ADVISOR_EMBEDDING_MODEL_FILE", DEFAULT_EMBEDDING_MODEL_FILE),
271
+ "--build-source",
272
+ "space dashboard refresh",
273
+ "--builder",
274
+ "app.py:/api/dashboard/refresh",
275
+ ]
276
+ model_path = os.environ.get("ADVISOR_EMBEDDING_MODEL_PATH", "").strip()
277
+ if model_path:
278
+ command.extend(["--model-path", model_path])
279
+ n_ctx = os.environ.get("ADVISOR_EMBEDDING_N_CTX", "").strip()
280
+ if n_ctx:
281
+ command.extend(["--n-ctx", n_ctx])
282
+ n_threads = os.environ.get("ADVISOR_EMBEDDING_THREADS", "").strip()
283
+ if n_threads:
284
+ command.extend(["--n-threads", n_threads])
285
+
286
+ completed = subprocess.run(command, cwd=ROOT, capture_output=True, text=True, check=False)
287
+ if completed.returncode != 0:
288
+ detail = "\n".join(part for part in (completed.stdout.strip(), completed.stderr.strip()) if part)
289
+ raise RuntimeError(f"refresh embedding index build failed with exit code {completed.returncode}: {detail}")
290
+ try:
291
+ payload = json.loads(index_path.read_text(encoding="utf-8"))
292
+ except (OSError, json.JSONDecodeError) as error:
293
+ raise RuntimeError(f"refresh embedding index build did not write valid JSON: {index_path}") from error
294
+ if not isinstance(payload, dict):
295
+ raise RuntimeError("refresh embedding index build returned a non-object JSON payload")
296
+ return payload
297
+
298
+
299
+ def _replace_runtime_from_files(projects_path: Path, index_path: Path, refreshed_dashboard: dict[str, Any]) -> None:
300
+ global index, engine, _cpu_engine, dashboard_payload
301
+ new_index = ProjectIndex.from_files(projects_path, index_path)
302
+ with _runtime_lock:
303
+ index = new_index
304
+ engine = AdvisorEngine(new_index, engine.planner)
305
+ if _cpu_engine is not None:
306
+ _cpu_engine = AdvisorEngine(new_index, _cpu_engine.planner)
307
+ dashboard_payload = refreshed_dashboard
308
+
309
+
310
  def _session_from_json(session_json: str = "{}") -> dict[str, Any]:
311
  try:
312
  session = json.loads(session_json or "{}")
 
400
  return FileResponse(target)
401
 
402
 
403
+ @app.get("/api/dashboard")
404
+ def dashboard() -> dict:
405
+ with _runtime_lock:
406
+ payload = dict(dashboard_payload)
407
+ payload["refresh"] = _refresh_public_state()
408
+ return payload
409
+
410
+
411
+ @app.post("/api/dashboard/refresh")
412
+ def dashboard_refresh_start() -> JSONResponse:
413
+ try:
414
+ cache_dir = require_writable_cache_dir()
415
+ except DashboardStorageError as error:
416
+ raise HTTPException(status_code=400, detail=str(error)) from error
417
+ return JSONResponse(_start_refresh_thread(cache_dir), status_code=202)
418
+
419
+
420
+ @app.get("/api/dashboard/refresh")
421
+ def dashboard_refresh_status() -> dict:
422
+ return _refresh_public_state()
423
+
424
+
425
  @app.get("/health")
426
  def health() -> dict:
427
  return {
artifacts/quest-lora/README.md ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ base_model: openbmb/MiniCPM5-1B
3
+ library_name: peft
4
+ datasets:
5
+ - build-small-hackathon/hackathon-advisor-quest-dataset
6
+ tags:
7
+ - lora
8
+ - hackathon-advisor
9
+ - quest-classification
10
+ license: apache-2.0
11
+ ---
12
+
13
+ # Hackathon Advisor — Quest Classification LoRA (MiniCPM5-1B)
14
+
15
+ PEFT LoRA adapter that classifies a Build Small Hackathon project against 13 judging
16
+ dimensions (6 merit badges + 2 tracks + 5 sponsor/special awards) from a two-segment
17
+ README + app-file prompt, emitting strict JSON:
18
+
19
+ ```json
20
+ {"matches":[{"quest":"...","confidence":0.0,"evidence":"...","source":"readme|app_file"}]}
21
+ ```
22
+
23
+ Load it in the deployed Space by setting `ADVISOR_QUEST_ADAPTER_ID` to this repo.
24
+ The backend revalidates every dashboard refresh and will not swap on schema failure.
25
+
26
+ ## Recipe
27
+
28
+ - Base model: `openbmb/MiniCPM5-1B`
29
+ - Task: `hackathon_advisor_quest_classification`
30
+ - Method: LoRA SFT (completion-only loss)
31
+ - Examples: 146
32
+ - Epochs: 6.0
33
+ - LoRA rank/alpha/dropout: 16/32/0.05
34
+ - Max seq length: 2560
35
+ - GPU: A10G
36
+
37
+ ## Dataset
38
+
39
+ [`build-small-hackathon/hackathon-advisor-quest-dataset`](https://huggingface.co/datasets/build-small-hackathon/hackathon-advisor-quest-dataset) — 156 chat-JSONL examples built from real `build-small-hackathon` Spaces: 108 teacher-
40
+ labelled + adversarially-verified projects plus targeted augmentations (app-only,
41
+ readme-only / missing app file, README↔app contradictions, empty matches, noisy
42
+ metadata). All 13 quests covered.
43
+
44
+ ## Self-eval at training time: 10/10 held-out prompts produced schema-valid JSON.
artifacts/quest-lora/adapter_config.json ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "alora_invocation_tokens": null,
3
+ "alpha_pattern": {},
4
+ "arrow_config": null,
5
+ "auto_mapping": null,
6
+ "base_model_name_or_path": "openbmb/MiniCPM5-1B",
7
+ "bias": "none",
8
+ "corda_config": null,
9
+ "ensure_weight_tying": false,
10
+ "eva_config": null,
11
+ "exclude_modules": null,
12
+ "fan_in_fan_out": false,
13
+ "inference_mode": true,
14
+ "init_lora_weights": true,
15
+ "layer_replication": null,
16
+ "layers_pattern": null,
17
+ "layers_to_transform": null,
18
+ "loftq_config": {},
19
+ "lora_alpha": 32,
20
+ "lora_bias": false,
21
+ "lora_dropout": 0.05,
22
+ "lora_ga_config": null,
23
+ "megatron_config": null,
24
+ "megatron_core": "megatron.core",
25
+ "modules_to_save": null,
26
+ "peft_type": "LORA",
27
+ "peft_version": "0.19.1",
28
+ "qalora_group_size": 16,
29
+ "r": 16,
30
+ "rank_pattern": {},
31
+ "revision": null,
32
+ "target_modules": [
33
+ "gate_proj",
34
+ "v_proj",
35
+ "o_proj",
36
+ "k_proj",
37
+ "q_proj",
38
+ "up_proj",
39
+ "down_proj"
40
+ ],
41
+ "target_parameters": null,
42
+ "task_type": "CAUSAL_LM",
43
+ "trainable_token_indices": null,
44
+ "use_bdlora": null,
45
+ "use_dora": false,
46
+ "use_qalora": false,
47
+ "use_rslora": false
48
+ }
artifacts/quest-lora/adapter_model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0480796afd6869ee00b6e35b839b48d99ee9270ef848c7901907d328c0629508
3
+ size 44871152
artifacts/quest-lora/chat_template.jinja ADDED
@@ -0,0 +1,179 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {{- bos_token }}{%- if tools %}
2
+ {%- set tool_definitions %}
3
+ {{- "# Tools\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
4
+ {%- for tool in tools %}
5
+ {{- "\n" }}
6
+ {{- tool | tojson(ensure_ascii=False) }}
7
+ {%- endfor %}
8
+ {{- '\n</tools>\n\nTool usage guidelines:\n- You may call zero or more functions. If no function calls are needed, just answer normally and do not include any <function ... </function>.\n- When calling a function, return an XML object within <function ... </function> using:\n<function name="function-name"><param name="param-name">param-value</param></function>\n- param-value may be multi-line. If it contains <, & or newline characters, wrap it in a CDATA block: <param name="param-name"><![CDATA[...multi-line value...]]></param>' }}
9
+ {%- endset %}
10
+
11
+ {{- '<|im_start|>system\n' }}
12
+ {%- if messages[0].role == 'system' %}
13
+ {%- if '<tool_def_sep>' in messages[0].content %}
14
+ {{- messages[0].content.replace('<tool_def_sep>', tool_definitions) }}
15
+ {%- else %}
16
+ {{- messages[0].content + '\n\n' + tool_definitions }}
17
+ {%- endif %}
18
+ {%- else %}
19
+ {{- tool_definitions.lstrip() }}
20
+ {%- endif %}
21
+ {{- '<|im_end|>\n' }}
22
+ {%- else %}
23
+ {%- if messages[0].role == 'system' %}
24
+ {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }}
25
+ {%- endif %}
26
+ {%- endif %}
27
+ {%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
28
+ {%- for message in messages[::-1] %}
29
+ {%- set index = (messages|length - 1) - loop.index0 %}
30
+ {%- if ns.multi_step_tool and message.role == "user" and message.content is string and not(message.content.startswith('<tool_response>') and message.content.endswith('</tool_response>')) %}
31
+ {%- set ns.multi_step_tool = false %}
32
+ {%- set ns.last_query_index = index %}
33
+ {%- endif %}
34
+ {%- endfor %}
35
+ {%- for message in messages %}
36
+ {%- if message.content is string %}
37
+ {%- set content = message.content %}
38
+ {%- else %}
39
+ {%- set content = '' %}
40
+ {%- endif %}
41
+ {%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
42
+ {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }}
43
+ {%- elif message.role == "assistant" %}
44
+ {%- set reasoning_content = '' %}
45
+ {%- if message.reasoning_content is string %}
46
+ {%- set reasoning_content = message.reasoning_content %}
47
+ {%- else %}
48
+ {%- if '</think>' in content %}
49
+ {%- set reasoning_content = content.split('</think>')[0].rstrip('\n').split('<think>')[-1].lstrip('\n') %}
50
+ {%- set content = content.split('</think>')[-1].lstrip('\n') %}
51
+ {%- endif %}
52
+ {%- endif %}
53
+
54
+ {%- if message.tool_calls %}
55
+ {%- set content_parts = content.split('<tool_sep>') %}
56
+ {%- set processed_content = content_parts[0] %}
57
+ {%- set tool_calls_count = message.tool_calls|length %}
58
+ {%- set tool_sep_count = content_parts|length - 1 %}
59
+ {%- set min_count = [tool_calls_count, tool_sep_count]|min %}
60
+
61
+ {%- for i in range(1, content_parts|length) %}
62
+ {%- set tool_index = i - 1 %}
63
+ {%- if tool_index < tool_calls_count %}
64
+ {%- set tool_call = message.tool_calls[tool_index] %}
65
+ {%- if tool_call.function %}
66
+ {%- set tool_call = tool_call.function %}
67
+ {%- endif %}
68
+ {%- set single_tool_xml %}
69
+ {{- '<function name="' ~ tool_call.name ~ '">' }}
70
+ {%- if tool_call.arguments %}
71
+ {%- set args_dict = tool_call.arguments %}
72
+ {%- for param_name, param_value in args_dict.items() %}
73
+ {{- '<param name="' ~ param_name ~ '">' }}
74
+ {%- if param_value is string and ('<' in param_value or '&' in param_value or '\n' in param_value) %}
75
+ {{- '<![CDATA[' + param_value + ']]>' }}
76
+ {%- else %}
77
+ {{- param_value }}
78
+ {%- endif %}
79
+ {{- '</param>' }}
80
+ {%- endfor %}
81
+ {%- endif %}
82
+ {{- '</function>' }}
83
+ {%- endset %}
84
+ {%- set processed_content = processed_content + single_tool_xml + content_parts[i] %}
85
+ {%- else %}
86
+ {%- set processed_content = processed_content + content_parts[i] %}
87
+ {%- endif %}
88
+ {%- endfor %}
89
+
90
+ {%- if tool_calls_count > tool_sep_count %}
91
+ {%- for remaining_index in range(tool_sep_count, tool_calls_count) %}
92
+ {%- set tool_call = message.tool_calls[remaining_index] %}
93
+ {%- if tool_call.function %}
94
+ {%- set tool_call = tool_call.function %}
95
+ {%- endif %}
96
+ {%- set remaining_tool_xml %}
97
+ {{- '<function name="' ~ tool_call.name ~ '">' }}
98
+ {%- if tool_call.arguments %}
99
+ {%- set args_dict = tool_call.arguments %}
100
+ {%- for param_name, param_value in args_dict.items() %}
101
+ {{- '<param name="' ~ param_name ~ '">' }}
102
+ {%- if param_value is string and ('<' in param_value or '&' in param_value or '\n' in param_value) %}
103
+ {{- '<![CDATA[' + param_value + ']]>' }}
104
+ {%- else %}
105
+ {{- param_value }}
106
+ {%- endif %}
107
+ {{- '</param>' }}
108
+ {%- endfor %}
109
+ {%- endif %}
110
+ {{- '</function>' }}
111
+ {%- endset %}
112
+ {%- set processed_content = processed_content + remaining_tool_xml %}
113
+ {%- endfor %}
114
+ {%- endif %}
115
+
116
+ {%- set content = processed_content %}
117
+ {%- endif %}
118
+
119
+ {%- if loop.index0 > ns.last_query_index %}
120
+ {%- if reasoning_content %}
121
+ {{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\n\n' + content.lstrip('\n') }}
122
+ {%- else %}
123
+ {{- '<|im_start|>' + message.role + '\n' + content }}
124
+ {%- endif %}
125
+ {%- else %}
126
+ {{- '<|im_start|>' + message.role + '\n' + content }}
127
+ {%- endif %}
128
+
129
+ {%- if message.tool_calls and not has_tool_sep %}
130
+ {%- for tool_call in message.tool_calls %}
131
+ {%- if (loop.first and content) or (not loop.first) %}
132
+ {{- '\n' }}
133
+ {%- endif %}
134
+ {%- if tool_call.function %}
135
+ {%- set tool_call = tool_call.function %}
136
+ {%- endif %}
137
+ {{- '<function name="' ~ tool_call.name ~ '">' }}
138
+ {%- if tool_call.arguments %}
139
+ {%- set args_dict = tool_call.arguments %}
140
+ {%- for param_name, param_value in args_dict.items() %}
141
+ {{- '<param name="' ~ param_name ~ '">' }}
142
+ {%- if param_value is string and ('<' in param_value or '&' in param_value or '\n' in param_value) %}
143
+ {{- '<![CDATA[' + param_value + ']]>' }}
144
+ {%- else %}
145
+ {{- param_value }}
146
+ {%- endif %}
147
+ {{- '</param>' }}
148
+ {%- endfor %}
149
+ {%- endif %}
150
+ {{- '</function>' }}
151
+ {%- endfor %}
152
+ {%- endif %}
153
+ {{- '<|im_end|>\n' }}
154
+ {%- elif message.role == "tool" %}
155
+ {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
156
+ {{- '<|im_start|>user' }}
157
+ {%- endif %}
158
+ {{- '\n<tool_response>\n' }}
159
+ {%- if message.content is string %}
160
+ {{- content }}
161
+ {%- else %}
162
+ {{- message.content | tojson(ensure_ascii=False) }}
163
+ {%- endif %}
164
+ {{- '\n</tool_response>' }}
165
+ {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
166
+ {{- '<|im_end|>\n' }}
167
+ {%- endif %}
168
+ {%- endif %}
169
+ {%- endfor %}
170
+ {%- if add_generation_prompt %}
171
+ {{- '<|im_start|>assistant\n' }}
172
+ {%- if enable_thinking is defined %}
173
+ {%- if enable_thinking is false %}
174
+ {{- '<think>\n\n</think>\n\n' }}
175
+ {%- elif enable_thinking is true %}
176
+ {{- '<think>\n' }}
177
+ {%- endif %}
178
+ {%- endif %}
179
+ {%- endif %}
artifacts/quest-lora/self-eval.json ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "valid": 10,
3
+ "total": 10,
4
+ "samples": [
5
+ {
6
+ "project_id": "build-small-hackathon/AI-Puppet-Theater",
7
+ "valid_json": true,
8
+ "detail": "",
9
+ "output": "{\"matches\":[{\"quest\":\"OpenBMB\",\"confidence\":0.97,\"evidence\":\"OpenBMB model id: openbmb/MiniCPM5-1B\",\"source\":\"app_file\"},{\"quest\":\"Tiny Titan\",\"confidence\":0.93,\"evidence\":\"openbmb/MiniCPM5-1B is a 1B model\",\"source\":\"app_file\"},{\"quest\":\"Off-Brand\",\"confidence\":0.9,\"evidence\":\"CUSTOM_CSS overrides .gradio-container background\",\"source\":\"app_file\"},{\"quest\":\"Thousand Token Wood\",\"confidence\":0.85,"
10
+ },
11
+ {
12
+ "project_id": "build-small-hackathon/neilA",
13
+ "valid_json": true,
14
+ "detail": "",
15
+ "output": "{\"matches\":[{\"quest\":\"Thousand Token Wood\",\"confidence\":0.97,\"evidence\":\"teach an alien that knows human words but has never lived a human life\",\"source\":\"readme\"},{\"quest\":\"Off-Brand\",\"confidence\":0.9,\"evidence\":\"plain-Python concept ledger injected into the prompt each turn\",\"source\":\"app_file\"},{\"quest\":\"Off the Grid\",\"confidence\":0.78,\"evidence\":\"Only inference runs inside @spaces.GPU; all sta"
16
+ },
17
+ {
18
+ "project_id": "build-small-hackathon/Trollsona",
19
+ "valid_json": true,
20
+ "detail": "",
21
+ "output": "{\"matches\":[{\"quest\":\"Thousand Token Wood\",\"confidence\":0.97,\"evidence\":\"Track: An Adventure in Thousand Token Wood; playful troll alter ego; goblin meter\",\"source\":\"readme\"},{\"quest\":\"Tiny Titan\",\"confidence\":0.95,\"evidence\":\"compact RthItalia model derived from Qwen/Qwen2.5-3B-Instruct; lightweight Qwen 0.5B model\",\"source\":\"readme\"},{\"quest\":\"Off the Grid\",\"confidence\":0.9,\"evidence\":\"Local Hug"
22
+ },
23
+ {
24
+ "project_id": "build-small-hackathon/hackathon-advisor",
25
+ "valid_json": true,
26
+ "detail": "",
27
+ "output": "{\"matches\":[{\"quest\":\"Llama Champion\",\"confidence\":0.97,\"evidence\":\"llama.cpp runtime, GGUF retrieval index, llama.cpp imports\",\"source\":\"readme\"},{\"quest\":\"Tiny Titan\",\"confidence\":0.93,\"evidence\":\"MiniCPM5 tool-call planning, published PEFT LoRA adapter\",\"source\":\"readme\"},{\"quest\":\"Off the Grid\",\"confidence\":0.9,\"evidence\":\"Local snapshot of public Spaces, Modal-built GGUF index, no cloud API\","
28
+ },
29
+ {
30
+ "project_id": "build-small-hackathon/wan2-2-fp8da-aoti-14B-fast",
31
+ "valid_json": true,
32
+ "detail": "",
33
+ "output": "{\"matches\":[{\"quest\":\"Off the Grid\",\"confidence\":0.7,\"evidence\":\"diffusers.pipelines.wan.pipeline_wan_i2v import WanImageToVideoPipeline\",\"source\":\"app_file\"},{\"quest\":\"Tiny Titan\",\"confidence\":0.6,\"evidence\":\"from train_log.RIFE_HDv3 import Model\",\"source\":\"app_file\"}]}"
34
+ },
35
+ {
36
+ "project_id": "build-small-hackathon/family-care-asr-eval",
37
+ "valid_json": true,
38
+ "detail": "",
39
+ "output": "{\"matches\":[{\"quest\":\"Well-Tuned\",\"confidence\":0.97,\"evidence\":\"teckedd/whisper_small-waxal_akan-asr-v1 fine-tune; GiftMark fallback\",\"source\":\"app_file\"},{\"quest\":\"Tiny Titan\",\"confidence\":0.97,\"evidence\":\"facebook/mms-1b-all (recommended): 1B parameter model\",\"source\":\"app_file\"},{\"quest\":\"Off the Grid\",\"confidence\":0.93,\"evidence\":\"Wav2Vec2ForCTC + WhisperForConditionalGeneration from transform"
40
+ },
41
+ {
42
+ "project_id": "build-small-hackathon/GRM-2.6-Opus",
43
+ "valid_json": true,
44
+ "detail": "",
45
+ "output": "{\"matches\":[{\"quest\":\"Off the Grid\",\"confidence\":0.97,\"evidence\":\"AutoModelForCausalLM.from_pretrained(MODEL_ID)... no cloud API client\",\"source\":\"app_file\"},{\"quest\":\"Tiny Titan\",\"confidence\":0.93,\"evidence\":\"OrionLLM/GRM-2.6-Opus (3.6B) model declared\",\"source\":\"app_file\"}]}"
46
+ },
47
+ {
48
+ "project_id": "build-small-hackathon/backyard-raccoon-deterrent",
49
+ "valid_json": true,
50
+ "detail": "",
51
+ "output": "{\"matches\":[{\"quest\":\"Backyard AI\",\"confidence\":0.97,\"evidence\":\"Ring camera sees raccoons; U.S. federal wildlife control killed over 375,000 native animals\",\"source\":\"readme\"},{\"quest\":\"Off the Grid\",\"confidence\":0.95,\"evidence\":\"runs fully offline: no cloud APIs; YOLO weights ship in the repo\",\"source\":\"app_file\"},{\"quest\":\"Well-Tuned\",\"confidence\":0.9,\"evidence\":\"Fine-tuned YOLOv8n raccoon dete"
52
+ },
53
+ {
54
+ "project_id": "build-small-hackathon/global-leaders",
55
+ "valid_json": true,
56
+ "detail": "",
57
+ "output": "{\"matches\":[{\"quest\":\"Nemotron\",\"confidence\":0.97,\"evidence\":\"Ollama Cloud (Nemotron) if OLLAMA_API_KEY is set\",\"source\":\"app_file\"},{\"quest\":\"Off-Brand\",\"confidence\":0.93,\"evidence\":\"Backend: Ollama Cloud (Nemotron) if OLLAMA_API_KEY is set\",\"source\":\"app_file\"}]}"
58
+ },
59
+ {
60
+ "project_id": "build-small-hackathon/The-Shrine",
61
+ "valid_json": true,
62
+ "detail": "",
63
+ "output": "{\"matches\":[{\"quest\":\"Off the Grid\",\"confidence\":0.97,\"evidence\":\"local monologue engine works offline\",\"source\":\"app_file\"},{\"quest\":\"Off-Brand\",\"confidence\":0.9,\"evidence\":\"Custom Canvas + vanilla JS (60+ monologue phrases)\",\"source\":\"readme\"},{\"quest\":\"Well-Tuned\",\"confidence\":0.85,\"evidence\":\"QwEN_MODEL = \\\"qwen-max\\\"\",\"source\":\"app_file\"}]}"
64
+ }
65
+ ]
66
+ }
artifacts/quest-lora/special_tokens_map.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "bos_token": {
3
+ "content": "<s>",
4
+ "lstrip": false,
5
+ "normalized": false,
6
+ "rstrip": false,
7
+ "single_word": false
8
+ },
9
+ "eos_token": {
10
+ "content": "</s>",
11
+ "lstrip": false,
12
+ "normalized": false,
13
+ "rstrip": false,
14
+ "single_word": false
15
+ },
16
+ "pad_token": {
17
+ "content": "</s>",
18
+ "lstrip": false,
19
+ "normalized": false,
20
+ "rstrip": false,
21
+ "single_word": false
22
+ },
23
+ "unk_token": {
24
+ "content": "<unk>",
25
+ "lstrip": false,
26
+ "normalized": false,
27
+ "rstrip": false,
28
+ "single_word": false
29
+ }
30
+ }
artifacts/quest-lora/tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
artifacts/quest-lora/tokenizer_config.json ADDED
@@ -0,0 +1,4099 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_bos_token": false,
3
+ "add_eos_token": false,
4
+ "add_prefix_space": null,
5
+ "added_tokens_decoder": {
6
+ "0": {
7
+ "content": "<s>",
8
+ "lstrip": false,
9
+ "normalized": false,
10
+ "rstrip": false,
11
+ "single_word": false,
12
+ "special": true
13
+ },
14
+ "1": {
15
+ "content": "</s>",
16
+ "lstrip": false,
17
+ "normalized": false,
18
+ "rstrip": false,
19
+ "single_word": false,
20
+ "special": true
21
+ },
22
+ "2": {
23
+ "content": "<tool_call>",
24
+ "lstrip": false,
25
+ "normalized": false,
26
+ "rstrip": false,
27
+ "single_word": false,
28
+ "special": true
29
+ },
30
+ "3": {
31
+ "content": "</tool_call>",
32
+ "lstrip": false,
33
+ "normalized": false,
34
+ "rstrip": false,
35
+ "single_word": false,
36
+ "special": true
37
+ },
38
+ "4": {
39
+ "content": "<|im_sep|>",
40
+ "lstrip": false,
41
+ "normalized": false,
42
+ "rstrip": false,
43
+ "single_word": false,
44
+ "special": true
45
+ },
46
+ "5": {
47
+ "content": "<|fim_prefix|>",
48
+ "lstrip": false,
49
+ "normalized": false,
50
+ "rstrip": false,
51
+ "single_word": false,
52
+ "special": true
53
+ },
54
+ "6": {
55
+ "content": "<|fim_middle|>",
56
+ "lstrip": false,
57
+ "normalized": false,
58
+ "rstrip": false,
59
+ "single_word": false,
60
+ "special": true
61
+ },
62
+ "7": {
63
+ "content": "<|fim_suffix|>",
64
+ "lstrip": false,
65
+ "normalized": false,
66
+ "rstrip": false,
67
+ "single_word": false,
68
+ "special": true
69
+ },
70
+ "8": {
71
+ "content": "<think>",
72
+ "lstrip": false,
73
+ "normalized": false,
74
+ "rstrip": false,
75
+ "single_word": false,
76
+ "special": false
77
+ },
78
+ "9": {
79
+ "content": "</think>",
80
+ "lstrip": false,
81
+ "normalized": false,
82
+ "rstrip": false,
83
+ "single_word": false,
84
+ "special": false
85
+ },
86
+ "10": {
87
+ "content": "<tool_response>",
88
+ "lstrip": false,
89
+ "normalized": false,
90
+ "rstrip": false,
91
+ "single_word": false,
92
+ "special": true
93
+ },
94
+ "11": {
95
+ "content": "</tool_response>",
96
+ "lstrip": false,
97
+ "normalized": false,
98
+ "rstrip": false,
99
+ "single_word": false,
100
+ "special": true
101
+ },
102
+ "12": {
103
+ "content": "<tools>",
104
+ "lstrip": false,
105
+ "normalized": false,
106
+ "rstrip": false,
107
+ "single_word": false,
108
+ "special": true
109
+ },
110
+ "13": {
111
+ "content": "</tools>",
112
+ "lstrip": false,
113
+ "normalized": false,
114
+ "rstrip": false,
115
+ "single_word": false,
116
+ "special": true
117
+ },
118
+ "14": {
119
+ "content": "<arguments>",
120
+ "lstrip": false,
121
+ "normalized": false,
122
+ "rstrip": false,
123
+ "single_word": false,
124
+ "special": true
125
+ },
126
+ "15": {
127
+ "content": "</arguments>",
128
+ "lstrip": false,
129
+ "normalized": false,
130
+ "rstrip": false,
131
+ "single_word": false,
132
+ "special": true
133
+ },
134
+ "16": {
135
+ "content": "<parameters>",
136
+ "lstrip": false,
137
+ "normalized": false,
138
+ "rstrip": false,
139
+ "single_word": false,
140
+ "special": true
141
+ },
142
+ "17": {
143
+ "content": "</parameters>",
144
+ "lstrip": false,
145
+ "normalized": false,
146
+ "rstrip": false,
147
+ "single_word": false,
148
+ "special": true
149
+ },
150
+ "18": {
151
+ "content": "<function",
152
+ "lstrip": false,
153
+ "normalized": false,
154
+ "rstrip": false,
155
+ "single_word": false,
156
+ "special": true
157
+ },
158
+ "19": {
159
+ "content": "</function>",
160
+ "lstrip": false,
161
+ "normalized": false,
162
+ "rstrip": false,
163
+ "single_word": false,
164
+ "special": true
165
+ },
166
+ "20": {
167
+ "content": "<param",
168
+ "lstrip": false,
169
+ "normalized": false,
170
+ "rstrip": false,
171
+ "single_word": false,
172
+ "special": true
173
+ },
174
+ "21": {
175
+ "content": "</param>",
176
+ "lstrip": false,
177
+ "normalized": false,
178
+ "rstrip": false,
179
+ "single_word": false,
180
+ "special": true
181
+ },
182
+ "130072": {
183
+ "content": "<|im_start|>",
184
+ "lstrip": false,
185
+ "normalized": false,
186
+ "rstrip": false,
187
+ "single_word": false,
188
+ "special": true
189
+ },
190
+ "130073": {
191
+ "content": "<|im_end|>",
192
+ "lstrip": false,
193
+ "normalized": false,
194
+ "rstrip": false,
195
+ "single_word": false,
196
+ "special": true
197
+ },
198
+ "130074": {
199
+ "content": "<unk>",
200
+ "lstrip": false,
201
+ "normalized": false,
202
+ "rstrip": false,
203
+ "single_word": false,
204
+ "special": true
205
+ },
206
+ "130075": {
207
+ "content": "<|thought_begin|>",
208
+ "lstrip": false,
209
+ "normalized": false,
210
+ "rstrip": false,
211
+ "single_word": false,
212
+ "special": true
213
+ },
214
+ "130076": {
215
+ "content": "<|thought_end|>",
216
+ "lstrip": false,
217
+ "normalized": false,
218
+ "rstrip": false,
219
+ "single_word": false,
220
+ "special": true
221
+ },
222
+ "130077": {
223
+ "content": "<|tool_call|>",
224
+ "lstrip": false,
225
+ "normalized": false,
226
+ "rstrip": false,
227
+ "single_word": false,
228
+ "special": true
229
+ },
230
+ "130078": {
231
+ "content": "<|execute_start|>",
232
+ "lstrip": false,
233
+ "normalized": false,
234
+ "rstrip": false,
235
+ "single_word": false,
236
+ "special": true
237
+ },
238
+ "130079": {
239
+ "content": "<|execute_end|>",
240
+ "lstrip": false,
241
+ "normalized": false,
242
+ "rstrip": false,
243
+ "single_word": false,
244
+ "special": true
245
+ },
246
+ "130080": {
247
+ "content": "/think",
248
+ "lstrip": false,
249
+ "normalized": false,
250
+ "rstrip": false,
251
+ "single_word": false,
252
+ "special": true
253
+ },
254
+ "130081": {
255
+ "content": "/no_think",
256
+ "lstrip": false,
257
+ "normalized": false,
258
+ "rstrip": false,
259
+ "single_word": false,
260
+ "special": true
261
+ },
262
+ "130082": {
263
+ "content": "<unused_token_0>",
264
+ "lstrip": false,
265
+ "normalized": true,
266
+ "rstrip": false,
267
+ "single_word": false,
268
+ "special": false
269
+ },
270
+ "130083": {
271
+ "content": "<unused_token_1>",
272
+ "lstrip": false,
273
+ "normalized": true,
274
+ "rstrip": false,
275
+ "single_word": false,
276
+ "special": false
277
+ },
278
+ "130084": {
279
+ "content": "<unused_token_2>",
280
+ "lstrip": false,
281
+ "normalized": true,
282
+ "rstrip": false,
283
+ "single_word": false,
284
+ "special": false
285
+ },
286
+ "130085": {
287
+ "content": "<unused_token_3>",
288
+ "lstrip": false,
289
+ "normalized": true,
290
+ "rstrip": false,
291
+ "single_word": false,
292
+ "special": false
293
+ },
294
+ "130086": {
295
+ "content": "<unused_token_4>",
296
+ "lstrip": false,
297
+ "normalized": true,
298
+ "rstrip": false,
299
+ "single_word": false,
300
+ "special": false
301
+ },
302
+ "130087": {
303
+ "content": "<unused_token_5>",
304
+ "lstrip": false,
305
+ "normalized": true,
306
+ "rstrip": false,
307
+ "single_word": false,
308
+ "special": false
309
+ },
310
+ "130088": {
311
+ "content": "<unused_token_6>",
312
+ "lstrip": false,
313
+ "normalized": true,
314
+ "rstrip": false,
315
+ "single_word": false,
316
+ "special": false
317
+ },
318
+ "130089": {
319
+ "content": "<unused_token_7>",
320
+ "lstrip": false,
321
+ "normalized": true,
322
+ "rstrip": false,
323
+ "single_word": false,
324
+ "special": false
325
+ },
326
+ "130090": {
327
+ "content": "<unused_token_8>",
328
+ "lstrip": false,
329
+ "normalized": true,
330
+ "rstrip": false,
331
+ "single_word": false,
332
+ "special": false
333
+ },
334
+ "130091": {
335
+ "content": "<unused_token_9>",
336
+ "lstrip": false,
337
+ "normalized": true,
338
+ "rstrip": false,
339
+ "single_word": false,
340
+ "special": false
341
+ },
342
+ "130092": {
343
+ "content": "<unused_token_10>",
344
+ "lstrip": false,
345
+ "normalized": true,
346
+ "rstrip": false,
347
+ "single_word": false,
348
+ "special": false
349
+ },
350
+ "130093": {
351
+ "content": "<unused_token_11>",
352
+ "lstrip": false,
353
+ "normalized": true,
354
+ "rstrip": false,
355
+ "single_word": false,
356
+ "special": false
357
+ },
358
+ "130094": {
359
+ "content": "<unused_token_12>",
360
+ "lstrip": false,
361
+ "normalized": true,
362
+ "rstrip": false,
363
+ "single_word": false,
364
+ "special": false
365
+ },
366
+ "130095": {
367
+ "content": "<unused_token_13>",
368
+ "lstrip": false,
369
+ "normalized": true,
370
+ "rstrip": false,
371
+ "single_word": false,
372
+ "special": false
373
+ },
374
+ "130096": {
375
+ "content": "<unused_token_14>",
376
+ "lstrip": false,
377
+ "normalized": true,
378
+ "rstrip": false,
379
+ "single_word": false,
380
+ "special": false
381
+ },
382
+ "130097": {
383
+ "content": "<unused_token_15>",
384
+ "lstrip": false,
385
+ "normalized": true,
386
+ "rstrip": false,
387
+ "single_word": false,
388
+ "special": false
389
+ },
390
+ "130098": {
391
+ "content": "<unused_token_16>",
392
+ "lstrip": false,
393
+ "normalized": true,
394
+ "rstrip": false,
395
+ "single_word": false,
396
+ "special": false
397
+ },
398
+ "130099": {
399
+ "content": "<unused_token_17>",
400
+ "lstrip": false,
401
+ "normalized": true,
402
+ "rstrip": false,
403
+ "single_word": false,
404
+ "special": false
405
+ },
406
+ "130100": {
407
+ "content": "<unused_token_18>",
408
+ "lstrip": false,
409
+ "normalized": true,
410
+ "rstrip": false,
411
+ "single_word": false,
412
+ "special": false
413
+ },
414
+ "130101": {
415
+ "content": "<unused_token_19>",
416
+ "lstrip": false,
417
+ "normalized": true,
418
+ "rstrip": false,
419
+ "single_word": false,
420
+ "special": false
421
+ },
422
+ "130102": {
423
+ "content": "<unused_token_20>",
424
+ "lstrip": false,
425
+ "normalized": true,
426
+ "rstrip": false,
427
+ "single_word": false,
428
+ "special": false
429
+ },
430
+ "130103": {
431
+ "content": "<unused_token_21>",
432
+ "lstrip": false,
433
+ "normalized": true,
434
+ "rstrip": false,
435
+ "single_word": false,
436
+ "special": false
437
+ },
438
+ "130104": {
439
+ "content": "<unused_token_22>",
440
+ "lstrip": false,
441
+ "normalized": true,
442
+ "rstrip": false,
443
+ "single_word": false,
444
+ "special": false
445
+ },
446
+ "130105": {
447
+ "content": "<unused_token_23>",
448
+ "lstrip": false,
449
+ "normalized": true,
450
+ "rstrip": false,
451
+ "single_word": false,
452
+ "special": false
453
+ },
454
+ "130106": {
455
+ "content": "<unused_token_24>",
456
+ "lstrip": false,
457
+ "normalized": true,
458
+ "rstrip": false,
459
+ "single_word": false,
460
+ "special": false
461
+ },
462
+ "130107": {
463
+ "content": "<unused_token_25>",
464
+ "lstrip": false,
465
+ "normalized": true,
466
+ "rstrip": false,
467
+ "single_word": false,
468
+ "special": false
469
+ },
470
+ "130108": {
471
+ "content": "<unused_token_26>",
472
+ "lstrip": false,
473
+ "normalized": true,
474
+ "rstrip": false,
475
+ "single_word": false,
476
+ "special": false
477
+ },
478
+ "130109": {
479
+ "content": "<unused_token_27>",
480
+ "lstrip": false,
481
+ "normalized": true,
482
+ "rstrip": false,
483
+ "single_word": false,
484
+ "special": false
485
+ },
486
+ "130110": {
487
+ "content": "<unused_token_28>",
488
+ "lstrip": false,
489
+ "normalized": true,
490
+ "rstrip": false,
491
+ "single_word": false,
492
+ "special": false
493
+ },
494
+ "130111": {
495
+ "content": "<unused_token_29>",
496
+ "lstrip": false,
497
+ "normalized": true,
498
+ "rstrip": false,
499
+ "single_word": false,
500
+ "special": false
501
+ },
502
+ "130112": {
503
+ "content": "<unused_token_30>",
504
+ "lstrip": false,
505
+ "normalized": true,
506
+ "rstrip": false,
507
+ "single_word": false,
508
+ "special": false
509
+ },
510
+ "130113": {
511
+ "content": "<unused_token_31>",
512
+ "lstrip": false,
513
+ "normalized": true,
514
+ "rstrip": false,
515
+ "single_word": false,
516
+ "special": false
517
+ },
518
+ "130114": {
519
+ "content": "<unused_token_32>",
520
+ "lstrip": false,
521
+ "normalized": true,
522
+ "rstrip": false,
523
+ "single_word": false,
524
+ "special": false
525
+ },
526
+ "130115": {
527
+ "content": "<unused_token_33>",
528
+ "lstrip": false,
529
+ "normalized": true,
530
+ "rstrip": false,
531
+ "single_word": false,
532
+ "special": false
533
+ },
534
+ "130116": {
535
+ "content": "<unused_token_34>",
536
+ "lstrip": false,
537
+ "normalized": true,
538
+ "rstrip": false,
539
+ "single_word": false,
540
+ "special": false
541
+ },
542
+ "130117": {
543
+ "content": "<unused_token_35>",
544
+ "lstrip": false,
545
+ "normalized": true,
546
+ "rstrip": false,
547
+ "single_word": false,
548
+ "special": false
549
+ },
550
+ "130118": {
551
+ "content": "<unused_token_36>",
552
+ "lstrip": false,
553
+ "normalized": true,
554
+ "rstrip": false,
555
+ "single_word": false,
556
+ "special": false
557
+ },
558
+ "130119": {
559
+ "content": "<unused_token_37>",
560
+ "lstrip": false,
561
+ "normalized": true,
562
+ "rstrip": false,
563
+ "single_word": false,
564
+ "special": false
565
+ },
566
+ "130120": {
567
+ "content": "<unused_token_38>",
568
+ "lstrip": false,
569
+ "normalized": true,
570
+ "rstrip": false,
571
+ "single_word": false,
572
+ "special": false
573
+ },
574
+ "130121": {
575
+ "content": "<unused_token_39>",
576
+ "lstrip": false,
577
+ "normalized": true,
578
+ "rstrip": false,
579
+ "single_word": false,
580
+ "special": false
581
+ },
582
+ "130122": {
583
+ "content": "<unused_token_40>",
584
+ "lstrip": false,
585
+ "normalized": true,
586
+ "rstrip": false,
587
+ "single_word": false,
588
+ "special": false
589
+ },
590
+ "130123": {
591
+ "content": "<unused_token_41>",
592
+ "lstrip": false,
593
+ "normalized": true,
594
+ "rstrip": false,
595
+ "single_word": false,
596
+ "special": false
597
+ },
598
+ "130124": {
599
+ "content": "<unused_token_42>",
600
+ "lstrip": false,
601
+ "normalized": true,
602
+ "rstrip": false,
603
+ "single_word": false,
604
+ "special": false
605
+ },
606
+ "130125": {
607
+ "content": "<unused_token_43>",
608
+ "lstrip": false,
609
+ "normalized": true,
610
+ "rstrip": false,
611
+ "single_word": false,
612
+ "special": false
613
+ },
614
+ "130126": {
615
+ "content": "<unused_token_44>",
616
+ "lstrip": false,
617
+ "normalized": true,
618
+ "rstrip": false,
619
+ "single_word": false,
620
+ "special": false
621
+ },
622
+ "130127": {
623
+ "content": "<unused_token_45>",
624
+ "lstrip": false,
625
+ "normalized": true,
626
+ "rstrip": false,
627
+ "single_word": false,
628
+ "special": false
629
+ },
630
+ "130128": {
631
+ "content": "<unused_token_46>",
632
+ "lstrip": false,
633
+ "normalized": true,
634
+ "rstrip": false,
635
+ "single_word": false,
636
+ "special": false
637
+ },
638
+ "130129": {
639
+ "content": "<unused_token_47>",
640
+ "lstrip": false,
641
+ "normalized": true,
642
+ "rstrip": false,
643
+ "single_word": false,
644
+ "special": false
645
+ },
646
+ "130130": {
647
+ "content": "<unused_token_48>",
648
+ "lstrip": false,
649
+ "normalized": true,
650
+ "rstrip": false,
651
+ "single_word": false,
652
+ "special": false
653
+ },
654
+ "130131": {
655
+ "content": "<unused_token_49>",
656
+ "lstrip": false,
657
+ "normalized": true,
658
+ "rstrip": false,
659
+ "single_word": false,
660
+ "special": false
661
+ },
662
+ "130132": {
663
+ "content": "<unused_token_50>",
664
+ "lstrip": false,
665
+ "normalized": true,
666
+ "rstrip": false,
667
+ "single_word": false,
668
+ "special": false
669
+ },
670
+ "130133": {
671
+ "content": "<unused_token_51>",
672
+ "lstrip": false,
673
+ "normalized": true,
674
+ "rstrip": false,
675
+ "single_word": false,
676
+ "special": false
677
+ },
678
+ "130134": {
679
+ "content": "<unused_token_52>",
680
+ "lstrip": false,
681
+ "normalized": true,
682
+ "rstrip": false,
683
+ "single_word": false,
684
+ "special": false
685
+ },
686
+ "130135": {
687
+ "content": "<unused_token_53>",
688
+ "lstrip": false,
689
+ "normalized": true,
690
+ "rstrip": false,
691
+ "single_word": false,
692
+ "special": false
693
+ },
694
+ "130136": {
695
+ "content": "<unused_token_54>",
696
+ "lstrip": false,
697
+ "normalized": true,
698
+ "rstrip": false,
699
+ "single_word": false,
700
+ "special": false
701
+ },
702
+ "130137": {
703
+ "content": "<unused_token_55>",
704
+ "lstrip": false,
705
+ "normalized": true,
706
+ "rstrip": false,
707
+ "single_word": false,
708
+ "special": false
709
+ },
710
+ "130138": {
711
+ "content": "<unused_token_56>",
712
+ "lstrip": false,
713
+ "normalized": true,
714
+ "rstrip": false,
715
+ "single_word": false,
716
+ "special": false
717
+ },
718
+ "130139": {
719
+ "content": "<unused_token_57>",
720
+ "lstrip": false,
721
+ "normalized": true,
722
+ "rstrip": false,
723
+ "single_word": false,
724
+ "special": false
725
+ },
726
+ "130140": {
727
+ "content": "<unused_token_58>",
728
+ "lstrip": false,
729
+ "normalized": true,
730
+ "rstrip": false,
731
+ "single_word": false,
732
+ "special": false
733
+ },
734
+ "130141": {
735
+ "content": "<unused_token_59>",
736
+ "lstrip": false,
737
+ "normalized": true,
738
+ "rstrip": false,
739
+ "single_word": false,
740
+ "special": false
741
+ },
742
+ "130142": {
743
+ "content": "<unused_token_60>",
744
+ "lstrip": false,
745
+ "normalized": true,
746
+ "rstrip": false,
747
+ "single_word": false,
748
+ "special": false
749
+ },
750
+ "130143": {
751
+ "content": "<unused_token_61>",
752
+ "lstrip": false,
753
+ "normalized": true,
754
+ "rstrip": false,
755
+ "single_word": false,
756
+ "special": false
757
+ },
758
+ "130144": {
759
+ "content": "<unused_token_62>",
760
+ "lstrip": false,
761
+ "normalized": true,
762
+ "rstrip": false,
763
+ "single_word": false,
764
+ "special": false
765
+ },
766
+ "130145": {
767
+ "content": "<unused_token_63>",
768
+ "lstrip": false,
769
+ "normalized": true,
770
+ "rstrip": false,
771
+ "single_word": false,
772
+ "special": false
773
+ },
774
+ "130146": {
775
+ "content": "<unused_token_64>",
776
+ "lstrip": false,
777
+ "normalized": true,
778
+ "rstrip": false,
779
+ "single_word": false,
780
+ "special": false
781
+ },
782
+ "130147": {
783
+ "content": "<unused_token_65>",
784
+ "lstrip": false,
785
+ "normalized": true,
786
+ "rstrip": false,
787
+ "single_word": false,
788
+ "special": false
789
+ },
790
+ "130148": {
791
+ "content": "<unused_token_66>",
792
+ "lstrip": false,
793
+ "normalized": true,
794
+ "rstrip": false,
795
+ "single_word": false,
796
+ "special": false
797
+ },
798
+ "130149": {
799
+ "content": "<unused_token_67>",
800
+ "lstrip": false,
801
+ "normalized": true,
802
+ "rstrip": false,
803
+ "single_word": false,
804
+ "special": false
805
+ },
806
+ "130150": {
807
+ "content": "<unused_token_68>",
808
+ "lstrip": false,
809
+ "normalized": true,
810
+ "rstrip": false,
811
+ "single_word": false,
812
+ "special": false
813
+ },
814
+ "130151": {
815
+ "content": "<unused_token_69>",
816
+ "lstrip": false,
817
+ "normalized": true,
818
+ "rstrip": false,
819
+ "single_word": false,
820
+ "special": false
821
+ },
822
+ "130152": {
823
+ "content": "<unused_token_70>",
824
+ "lstrip": false,
825
+ "normalized": true,
826
+ "rstrip": false,
827
+ "single_word": false,
828
+ "special": false
829
+ },
830
+ "130153": {
831
+ "content": "<unused_token_71>",
832
+ "lstrip": false,
833
+ "normalized": true,
834
+ "rstrip": false,
835
+ "single_word": false,
836
+ "special": false
837
+ },
838
+ "130154": {
839
+ "content": "<unused_token_72>",
840
+ "lstrip": false,
841
+ "normalized": true,
842
+ "rstrip": false,
843
+ "single_word": false,
844
+ "special": false
845
+ },
846
+ "130155": {
847
+ "content": "<unused_token_73>",
848
+ "lstrip": false,
849
+ "normalized": true,
850
+ "rstrip": false,
851
+ "single_word": false,
852
+ "special": false
853
+ },
854
+ "130156": {
855
+ "content": "<unused_token_74>",
856
+ "lstrip": false,
857
+ "normalized": true,
858
+ "rstrip": false,
859
+ "single_word": false,
860
+ "special": false
861
+ },
862
+ "130157": {
863
+ "content": "<unused_token_75>",
864
+ "lstrip": false,
865
+ "normalized": true,
866
+ "rstrip": false,
867
+ "single_word": false,
868
+ "special": false
869
+ },
870
+ "130158": {
871
+ "content": "<unused_token_76>",
872
+ "lstrip": false,
873
+ "normalized": true,
874
+ "rstrip": false,
875
+ "single_word": false,
876
+ "special": false
877
+ },
878
+ "130159": {
879
+ "content": "<unused_token_77>",
880
+ "lstrip": false,
881
+ "normalized": true,
882
+ "rstrip": false,
883
+ "single_word": false,
884
+ "special": false
885
+ },
886
+ "130160": {
887
+ "content": "<unused_token_78>",
888
+ "lstrip": false,
889
+ "normalized": true,
890
+ "rstrip": false,
891
+ "single_word": false,
892
+ "special": false
893
+ },
894
+ "130161": {
895
+ "content": "<unused_token_79>",
896
+ "lstrip": false,
897
+ "normalized": true,
898
+ "rstrip": false,
899
+ "single_word": false,
900
+ "special": false
901
+ },
902
+ "130162": {
903
+ "content": "<unused_token_80>",
904
+ "lstrip": false,
905
+ "normalized": true,
906
+ "rstrip": false,
907
+ "single_word": false,
908
+ "special": false
909
+ },
910
+ "130163": {
911
+ "content": "<unused_token_81>",
912
+ "lstrip": false,
913
+ "normalized": true,
914
+ "rstrip": false,
915
+ "single_word": false,
916
+ "special": false
917
+ },
918
+ "130164": {
919
+ "content": "<unused_token_82>",
920
+ "lstrip": false,
921
+ "normalized": true,
922
+ "rstrip": false,
923
+ "single_word": false,
924
+ "special": false
925
+ },
926
+ "130165": {
927
+ "content": "<unused_token_83>",
928
+ "lstrip": false,
929
+ "normalized": true,
930
+ "rstrip": false,
931
+ "single_word": false,
932
+ "special": false
933
+ },
934
+ "130166": {
935
+ "content": "<unused_token_84>",
936
+ "lstrip": false,
937
+ "normalized": true,
938
+ "rstrip": false,
939
+ "single_word": false,
940
+ "special": false
941
+ },
942
+ "130167": {
943
+ "content": "<unused_token_85>",
944
+ "lstrip": false,
945
+ "normalized": true,
946
+ "rstrip": false,
947
+ "single_word": false,
948
+ "special": false
949
+ },
950
+ "130168": {
951
+ "content": "<unused_token_86>",
952
+ "lstrip": false,
953
+ "normalized": true,
954
+ "rstrip": false,
955
+ "single_word": false,
956
+ "special": false
957
+ },
958
+ "130169": {
959
+ "content": "<unused_token_87>",
960
+ "lstrip": false,
961
+ "normalized": true,
962
+ "rstrip": false,
963
+ "single_word": false,
964
+ "special": false
965
+ },
966
+ "130170": {
967
+ "content": "<unused_token_88>",
968
+ "lstrip": false,
969
+ "normalized": true,
970
+ "rstrip": false,
971
+ "single_word": false,
972
+ "special": false
973
+ },
974
+ "130171": {
975
+ "content": "<unused_token_89>",
976
+ "lstrip": false,
977
+ "normalized": true,
978
+ "rstrip": false,
979
+ "single_word": false,
980
+ "special": false
981
+ },
982
+ "130172": {
983
+ "content": "<unused_token_90>",
984
+ "lstrip": false,
985
+ "normalized": true,
986
+ "rstrip": false,
987
+ "single_word": false,
988
+ "special": false
989
+ },
990
+ "130173": {
991
+ "content": "<unused_token_91>",
992
+ "lstrip": false,
993
+ "normalized": true,
994
+ "rstrip": false,
995
+ "single_word": false,
996
+ "special": false
997
+ },
998
+ "130174": {
999
+ "content": "<unused_token_92>",
1000
+ "lstrip": false,
1001
+ "normalized": true,
1002
+ "rstrip": false,
1003
+ "single_word": false,
1004
+ "special": false
1005
+ },
1006
+ "130175": {
1007
+ "content": "<unused_token_93>",
1008
+ "lstrip": false,
1009
+ "normalized": true,
1010
+ "rstrip": false,
1011
+ "single_word": false,
1012
+ "special": false
1013
+ },
1014
+ "130176": {
1015
+ "content": "<unused_token_94>",
1016
+ "lstrip": false,
1017
+ "normalized": true,
1018
+ "rstrip": false,
1019
+ "single_word": false,
1020
+ "special": false
1021
+ },
1022
+ "130177": {
1023
+ "content": "<unused_token_95>",
1024
+ "lstrip": false,
1025
+ "normalized": true,
1026
+ "rstrip": false,
1027
+ "single_word": false,
1028
+ "special": false
1029
+ },
1030
+ "130178": {
1031
+ "content": "<unused_token_96>",
1032
+ "lstrip": false,
1033
+ "normalized": true,
1034
+ "rstrip": false,
1035
+ "single_word": false,
1036
+ "special": false
1037
+ },
1038
+ "130179": {
1039
+ "content": "<unused_token_97>",
1040
+ "lstrip": false,
1041
+ "normalized": true,
1042
+ "rstrip": false,
1043
+ "single_word": false,
1044
+ "special": false
1045
+ },
1046
+ "130180": {
1047
+ "content": "<unused_token_98>",
1048
+ "lstrip": false,
1049
+ "normalized": true,
1050
+ "rstrip": false,
1051
+ "single_word": false,
1052
+ "special": false
1053
+ },
1054
+ "130181": {
1055
+ "content": "<unused_token_99>",
1056
+ "lstrip": false,
1057
+ "normalized": true,
1058
+ "rstrip": false,
1059
+ "single_word": false,
1060
+ "special": false
1061
+ },
1062
+ "130182": {
1063
+ "content": "<unused_token_100>",
1064
+ "lstrip": false,
1065
+ "normalized": true,
1066
+ "rstrip": false,
1067
+ "single_word": false,
1068
+ "special": false
1069
+ },
1070
+ "130183": {
1071
+ "content": "<unused_token_101>",
1072
+ "lstrip": false,
1073
+ "normalized": true,
1074
+ "rstrip": false,
1075
+ "single_word": false,
1076
+ "special": false
1077
+ },
1078
+ "130184": {
1079
+ "content": "<unused_token_102>",
1080
+ "lstrip": false,
1081
+ "normalized": true,
1082
+ "rstrip": false,
1083
+ "single_word": false,
1084
+ "special": false
1085
+ },
1086
+ "130185": {
1087
+ "content": "<unused_token_103>",
1088
+ "lstrip": false,
1089
+ "normalized": true,
1090
+ "rstrip": false,
1091
+ "single_word": false,
1092
+ "special": false
1093
+ },
1094
+ "130186": {
1095
+ "content": "<unused_token_104>",
1096
+ "lstrip": false,
1097
+ "normalized": true,
1098
+ "rstrip": false,
1099
+ "single_word": false,
1100
+ "special": false
1101
+ },
1102
+ "130187": {
1103
+ "content": "<unused_token_105>",
1104
+ "lstrip": false,
1105
+ "normalized": true,
1106
+ "rstrip": false,
1107
+ "single_word": false,
1108
+ "special": false
1109
+ },
1110
+ "130188": {
1111
+ "content": "<unused_token_106>",
1112
+ "lstrip": false,
1113
+ "normalized": true,
1114
+ "rstrip": false,
1115
+ "single_word": false,
1116
+ "special": false
1117
+ },
1118
+ "130189": {
1119
+ "content": "<unused_token_107>",
1120
+ "lstrip": false,
1121
+ "normalized": true,
1122
+ "rstrip": false,
1123
+ "single_word": false,
1124
+ "special": false
1125
+ },
1126
+ "130190": {
1127
+ "content": "<unused_token_108>",
1128
+ "lstrip": false,
1129
+ "normalized": true,
1130
+ "rstrip": false,
1131
+ "single_word": false,
1132
+ "special": false
1133
+ },
1134
+ "130191": {
1135
+ "content": "<unused_token_109>",
1136
+ "lstrip": false,
1137
+ "normalized": true,
1138
+ "rstrip": false,
1139
+ "single_word": false,
1140
+ "special": false
1141
+ },
1142
+ "130192": {
1143
+ "content": "<unused_token_110>",
1144
+ "lstrip": false,
1145
+ "normalized": true,
1146
+ "rstrip": false,
1147
+ "single_word": false,
1148
+ "special": false
1149
+ },
1150
+ "130193": {
1151
+ "content": "<unused_token_111>",
1152
+ "lstrip": false,
1153
+ "normalized": true,
1154
+ "rstrip": false,
1155
+ "single_word": false,
1156
+ "special": false
1157
+ },
1158
+ "130194": {
1159
+ "content": "<unused_token_112>",
1160
+ "lstrip": false,
1161
+ "normalized": true,
1162
+ "rstrip": false,
1163
+ "single_word": false,
1164
+ "special": false
1165
+ },
1166
+ "130195": {
1167
+ "content": "<unused_token_113>",
1168
+ "lstrip": false,
1169
+ "normalized": true,
1170
+ "rstrip": false,
1171
+ "single_word": false,
1172
+ "special": false
1173
+ },
1174
+ "130196": {
1175
+ "content": "<unused_token_114>",
1176
+ "lstrip": false,
1177
+ "normalized": true,
1178
+ "rstrip": false,
1179
+ "single_word": false,
1180
+ "special": false
1181
+ },
1182
+ "130197": {
1183
+ "content": "<unused_token_115>",
1184
+ "lstrip": false,
1185
+ "normalized": true,
1186
+ "rstrip": false,
1187
+ "single_word": false,
1188
+ "special": false
1189
+ },
1190
+ "130198": {
1191
+ "content": "<unused_token_116>",
1192
+ "lstrip": false,
1193
+ "normalized": true,
1194
+ "rstrip": false,
1195
+ "single_word": false,
1196
+ "special": false
1197
+ },
1198
+ "130199": {
1199
+ "content": "<unused_token_117>",
1200
+ "lstrip": false,
1201
+ "normalized": true,
1202
+ "rstrip": false,
1203
+ "single_word": false,
1204
+ "special": false
1205
+ },
1206
+ "130200": {
1207
+ "content": "<unused_token_118>",
1208
+ "lstrip": false,
1209
+ "normalized": true,
1210
+ "rstrip": false,
1211
+ "single_word": false,
1212
+ "special": false
1213
+ },
1214
+ "130201": {
1215
+ "content": "<unused_token_119>",
1216
+ "lstrip": false,
1217
+ "normalized": true,
1218
+ "rstrip": false,
1219
+ "single_word": false,
1220
+ "special": false
1221
+ },
1222
+ "130202": {
1223
+ "content": "<unused_token_120>",
1224
+ "lstrip": false,
1225
+ "normalized": true,
1226
+ "rstrip": false,
1227
+ "single_word": false,
1228
+ "special": false
1229
+ },
1230
+ "130203": {
1231
+ "content": "<unused_token_121>",
1232
+ "lstrip": false,
1233
+ "normalized": true,
1234
+ "rstrip": false,
1235
+ "single_word": false,
1236
+ "special": false
1237
+ },
1238
+ "130204": {
1239
+ "content": "<unused_token_122>",
1240
+ "lstrip": false,
1241
+ "normalized": true,
1242
+ "rstrip": false,
1243
+ "single_word": false,
1244
+ "special": false
1245
+ },
1246
+ "130205": {
1247
+ "content": "<unused_token_123>",
1248
+ "lstrip": false,
1249
+ "normalized": true,
1250
+ "rstrip": false,
1251
+ "single_word": false,
1252
+ "special": false
1253
+ },
1254
+ "130206": {
1255
+ "content": "<unused_token_124>",
1256
+ "lstrip": false,
1257
+ "normalized": true,
1258
+ "rstrip": false,
1259
+ "single_word": false,
1260
+ "special": false
1261
+ },
1262
+ "130207": {
1263
+ "content": "<unused_token_125>",
1264
+ "lstrip": false,
1265
+ "normalized": true,
1266
+ "rstrip": false,
1267
+ "single_word": false,
1268
+ "special": false
1269
+ },
1270
+ "130208": {
1271
+ "content": "<unused_token_126>",
1272
+ "lstrip": false,
1273
+ "normalized": true,
1274
+ "rstrip": false,
1275
+ "single_word": false,
1276
+ "special": false
1277
+ },
1278
+ "130209": {
1279
+ "content": "<unused_token_127>",
1280
+ "lstrip": false,
1281
+ "normalized": true,
1282
+ "rstrip": false,
1283
+ "single_word": false,
1284
+ "special": false
1285
+ },
1286
+ "130210": {
1287
+ "content": "<unused_token_128>",
1288
+ "lstrip": false,
1289
+ "normalized": true,
1290
+ "rstrip": false,
1291
+ "single_word": false,
1292
+ "special": false
1293
+ },
1294
+ "130211": {
1295
+ "content": "<unused_token_129>",
1296
+ "lstrip": false,
1297
+ "normalized": true,
1298
+ "rstrip": false,
1299
+ "single_word": false,
1300
+ "special": false
1301
+ },
1302
+ "130212": {
1303
+ "content": "<unused_token_130>",
1304
+ "lstrip": false,
1305
+ "normalized": true,
1306
+ "rstrip": false,
1307
+ "single_word": false,
1308
+ "special": false
1309
+ },
1310
+ "130213": {
1311
+ "content": "<unused_token_131>",
1312
+ "lstrip": false,
1313
+ "normalized": true,
1314
+ "rstrip": false,
1315
+ "single_word": false,
1316
+ "special": false
1317
+ },
1318
+ "130214": {
1319
+ "content": "<unused_token_132>",
1320
+ "lstrip": false,
1321
+ "normalized": true,
1322
+ "rstrip": false,
1323
+ "single_word": false,
1324
+ "special": false
1325
+ },
1326
+ "130215": {
1327
+ "content": "<unused_token_133>",
1328
+ "lstrip": false,
1329
+ "normalized": true,
1330
+ "rstrip": false,
1331
+ "single_word": false,
1332
+ "special": false
1333
+ },
1334
+ "130216": {
1335
+ "content": "<unused_token_134>",
1336
+ "lstrip": false,
1337
+ "normalized": true,
1338
+ "rstrip": false,
1339
+ "single_word": false,
1340
+ "special": false
1341
+ },
1342
+ "130217": {
1343
+ "content": "<unused_token_135>",
1344
+ "lstrip": false,
1345
+ "normalized": true,
1346
+ "rstrip": false,
1347
+ "single_word": false,
1348
+ "special": false
1349
+ },
1350
+ "130218": {
1351
+ "content": "<unused_token_136>",
1352
+ "lstrip": false,
1353
+ "normalized": true,
1354
+ "rstrip": false,
1355
+ "single_word": false,
1356
+ "special": false
1357
+ },
1358
+ "130219": {
1359
+ "content": "<unused_token_137>",
1360
+ "lstrip": false,
1361
+ "normalized": true,
1362
+ "rstrip": false,
1363
+ "single_word": false,
1364
+ "special": false
1365
+ },
1366
+ "130220": {
1367
+ "content": "<unused_token_138>",
1368
+ "lstrip": false,
1369
+ "normalized": true,
1370
+ "rstrip": false,
1371
+ "single_word": false,
1372
+ "special": false
1373
+ },
1374
+ "130221": {
1375
+ "content": "<unused_token_139>",
1376
+ "lstrip": false,
1377
+ "normalized": true,
1378
+ "rstrip": false,
1379
+ "single_word": false,
1380
+ "special": false
1381
+ },
1382
+ "130222": {
1383
+ "content": "<unused_token_140>",
1384
+ "lstrip": false,
1385
+ "normalized": true,
1386
+ "rstrip": false,
1387
+ "single_word": false,
1388
+ "special": false
1389
+ },
1390
+ "130223": {
1391
+ "content": "<unused_token_141>",
1392
+ "lstrip": false,
1393
+ "normalized": true,
1394
+ "rstrip": false,
1395
+ "single_word": false,
1396
+ "special": false
1397
+ },
1398
+ "130224": {
1399
+ "content": "<unused_token_142>",
1400
+ "lstrip": false,
1401
+ "normalized": true,
1402
+ "rstrip": false,
1403
+ "single_word": false,
1404
+ "special": false
1405
+ },
1406
+ "130225": {
1407
+ "content": "<unused_token_143>",
1408
+ "lstrip": false,
1409
+ "normalized": true,
1410
+ "rstrip": false,
1411
+ "single_word": false,
1412
+ "special": false
1413
+ },
1414
+ "130226": {
1415
+ "content": "<unused_token_144>",
1416
+ "lstrip": false,
1417
+ "normalized": true,
1418
+ "rstrip": false,
1419
+ "single_word": false,
1420
+ "special": false
1421
+ },
1422
+ "130227": {
1423
+ "content": "<unused_token_145>",
1424
+ "lstrip": false,
1425
+ "normalized": true,
1426
+ "rstrip": false,
1427
+ "single_word": false,
1428
+ "special": false
1429
+ },
1430
+ "130228": {
1431
+ "content": "<unused_token_146>",
1432
+ "lstrip": false,
1433
+ "normalized": true,
1434
+ "rstrip": false,
1435
+ "single_word": false,
1436
+ "special": false
1437
+ },
1438
+ "130229": {
1439
+ "content": "<unused_token_147>",
1440
+ "lstrip": false,
1441
+ "normalized": true,
1442
+ "rstrip": false,
1443
+ "single_word": false,
1444
+ "special": false
1445
+ },
1446
+ "130230": {
1447
+ "content": "<unused_token_148>",
1448
+ "lstrip": false,
1449
+ "normalized": true,
1450
+ "rstrip": false,
1451
+ "single_word": false,
1452
+ "special": false
1453
+ },
1454
+ "130231": {
1455
+ "content": "<unused_token_149>",
1456
+ "lstrip": false,
1457
+ "normalized": true,
1458
+ "rstrip": false,
1459
+ "single_word": false,
1460
+ "special": false
1461
+ },
1462
+ "130232": {
1463
+ "content": "<unused_token_150>",
1464
+ "lstrip": false,
1465
+ "normalized": true,
1466
+ "rstrip": false,
1467
+ "single_word": false,
1468
+ "special": false
1469
+ },
1470
+ "130233": {
1471
+ "content": "<unused_token_151>",
1472
+ "lstrip": false,
1473
+ "normalized": true,
1474
+ "rstrip": false,
1475
+ "single_word": false,
1476
+ "special": false
1477
+ },
1478
+ "130234": {
1479
+ "content": "<unused_token_152>",
1480
+ "lstrip": false,
1481
+ "normalized": true,
1482
+ "rstrip": false,
1483
+ "single_word": false,
1484
+ "special": false
1485
+ },
1486
+ "130235": {
1487
+ "content": "<unused_token_153>",
1488
+ "lstrip": false,
1489
+ "normalized": true,
1490
+ "rstrip": false,
1491
+ "single_word": false,
1492
+ "special": false
1493
+ },
1494
+ "130236": {
1495
+ "content": "<unused_token_154>",
1496
+ "lstrip": false,
1497
+ "normalized": true,
1498
+ "rstrip": false,
1499
+ "single_word": false,
1500
+ "special": false
1501
+ },
1502
+ "130237": {
1503
+ "content": "<unused_token_155>",
1504
+ "lstrip": false,
1505
+ "normalized": true,
1506
+ "rstrip": false,
1507
+ "single_word": false,
1508
+ "special": false
1509
+ },
1510
+ "130238": {
1511
+ "content": "<unused_token_156>",
1512
+ "lstrip": false,
1513
+ "normalized": true,
1514
+ "rstrip": false,
1515
+ "single_word": false,
1516
+ "special": false
1517
+ },
1518
+ "130239": {
1519
+ "content": "<unused_token_157>",
1520
+ "lstrip": false,
1521
+ "normalized": true,
1522
+ "rstrip": false,
1523
+ "single_word": false,
1524
+ "special": false
1525
+ },
1526
+ "130240": {
1527
+ "content": "<unused_token_158>",
1528
+ "lstrip": false,
1529
+ "normalized": true,
1530
+ "rstrip": false,
1531
+ "single_word": false,
1532
+ "special": false
1533
+ },
1534
+ "130241": {
1535
+ "content": "<unused_token_159>",
1536
+ "lstrip": false,
1537
+ "normalized": true,
1538
+ "rstrip": false,
1539
+ "single_word": false,
1540
+ "special": false
1541
+ },
1542
+ "130242": {
1543
+ "content": "<unused_token_160>",
1544
+ "lstrip": false,
1545
+ "normalized": true,
1546
+ "rstrip": false,
1547
+ "single_word": false,
1548
+ "special": false
1549
+ },
1550
+ "130243": {
1551
+ "content": "<unused_token_161>",
1552
+ "lstrip": false,
1553
+ "normalized": true,
1554
+ "rstrip": false,
1555
+ "single_word": false,
1556
+ "special": false
1557
+ },
1558
+ "130244": {
1559
+ "content": "<unused_token_162>",
1560
+ "lstrip": false,
1561
+ "normalized": true,
1562
+ "rstrip": false,
1563
+ "single_word": false,
1564
+ "special": false
1565
+ },
1566
+ "130245": {
1567
+ "content": "<unused_token_163>",
1568
+ "lstrip": false,
1569
+ "normalized": true,
1570
+ "rstrip": false,
1571
+ "single_word": false,
1572
+ "special": false
1573
+ },
1574
+ "130246": {
1575
+ "content": "<unused_token_164>",
1576
+ "lstrip": false,
1577
+ "normalized": true,
1578
+ "rstrip": false,
1579
+ "single_word": false,
1580
+ "special": false
1581
+ },
1582
+ "130247": {
1583
+ "content": "<unused_token_165>",
1584
+ "lstrip": false,
1585
+ "normalized": true,
1586
+ "rstrip": false,
1587
+ "single_word": false,
1588
+ "special": false
1589
+ },
1590
+ "130248": {
1591
+ "content": "<unused_token_166>",
1592
+ "lstrip": false,
1593
+ "normalized": true,
1594
+ "rstrip": false,
1595
+ "single_word": false,
1596
+ "special": false
1597
+ },
1598
+ "130249": {
1599
+ "content": "<unused_token_167>",
1600
+ "lstrip": false,
1601
+ "normalized": true,
1602
+ "rstrip": false,
1603
+ "single_word": false,
1604
+ "special": false
1605
+ },
1606
+ "130250": {
1607
+ "content": "<unused_token_168>",
1608
+ "lstrip": false,
1609
+ "normalized": true,
1610
+ "rstrip": false,
1611
+ "single_word": false,
1612
+ "special": false
1613
+ },
1614
+ "130251": {
1615
+ "content": "<unused_token_169>",
1616
+ "lstrip": false,
1617
+ "normalized": true,
1618
+ "rstrip": false,
1619
+ "single_word": false,
1620
+ "special": false
1621
+ },
1622
+ "130252": {
1623
+ "content": "<unused_token_170>",
1624
+ "lstrip": false,
1625
+ "normalized": true,
1626
+ "rstrip": false,
1627
+ "single_word": false,
1628
+ "special": false
1629
+ },
1630
+ "130253": {
1631
+ "content": "<unused_token_171>",
1632
+ "lstrip": false,
1633
+ "normalized": true,
1634
+ "rstrip": false,
1635
+ "single_word": false,
1636
+ "special": false
1637
+ },
1638
+ "130254": {
1639
+ "content": "<unused_token_172>",
1640
+ "lstrip": false,
1641
+ "normalized": true,
1642
+ "rstrip": false,
1643
+ "single_word": false,
1644
+ "special": false
1645
+ },
1646
+ "130255": {
1647
+ "content": "<unused_token_173>",
1648
+ "lstrip": false,
1649
+ "normalized": true,
1650
+ "rstrip": false,
1651
+ "single_word": false,
1652
+ "special": false
1653
+ },
1654
+ "130256": {
1655
+ "content": "<unused_token_174>",
1656
+ "lstrip": false,
1657
+ "normalized": true,
1658
+ "rstrip": false,
1659
+ "single_word": false,
1660
+ "special": false
1661
+ },
1662
+ "130257": {
1663
+ "content": "<unused_token_175>",
1664
+ "lstrip": false,
1665
+ "normalized": true,
1666
+ "rstrip": false,
1667
+ "single_word": false,
1668
+ "special": false
1669
+ },
1670
+ "130258": {
1671
+ "content": "<unused_token_176>",
1672
+ "lstrip": false,
1673
+ "normalized": true,
1674
+ "rstrip": false,
1675
+ "single_word": false,
1676
+ "special": false
1677
+ },
1678
+ "130259": {
1679
+ "content": "<unused_token_177>",
1680
+ "lstrip": false,
1681
+ "normalized": true,
1682
+ "rstrip": false,
1683
+ "single_word": false,
1684
+ "special": false
1685
+ },
1686
+ "130260": {
1687
+ "content": "<unused_token_178>",
1688
+ "lstrip": false,
1689
+ "normalized": true,
1690
+ "rstrip": false,
1691
+ "single_word": false,
1692
+ "special": false
1693
+ },
1694
+ "130261": {
1695
+ "content": "<unused_token_179>",
1696
+ "lstrip": false,
1697
+ "normalized": true,
1698
+ "rstrip": false,
1699
+ "single_word": false,
1700
+ "special": false
1701
+ },
1702
+ "130262": {
1703
+ "content": "<unused_token_180>",
1704
+ "lstrip": false,
1705
+ "normalized": true,
1706
+ "rstrip": false,
1707
+ "single_word": false,
1708
+ "special": false
1709
+ },
1710
+ "130263": {
1711
+ "content": "<unused_token_181>",
1712
+ "lstrip": false,
1713
+ "normalized": true,
1714
+ "rstrip": false,
1715
+ "single_word": false,
1716
+ "special": false
1717
+ },
1718
+ "130264": {
1719
+ "content": "<unused_token_182>",
1720
+ "lstrip": false,
1721
+ "normalized": true,
1722
+ "rstrip": false,
1723
+ "single_word": false,
1724
+ "special": false
1725
+ },
1726
+ "130265": {
1727
+ "content": "<unused_token_183>",
1728
+ "lstrip": false,
1729
+ "normalized": true,
1730
+ "rstrip": false,
1731
+ "single_word": false,
1732
+ "special": false
1733
+ },
1734
+ "130266": {
1735
+ "content": "<unused_token_184>",
1736
+ "lstrip": false,
1737
+ "normalized": true,
1738
+ "rstrip": false,
1739
+ "single_word": false,
1740
+ "special": false
1741
+ },
1742
+ "130267": {
1743
+ "content": "<unused_token_185>",
1744
+ "lstrip": false,
1745
+ "normalized": true,
1746
+ "rstrip": false,
1747
+ "single_word": false,
1748
+ "special": false
1749
+ },
1750
+ "130268": {
1751
+ "content": "<unused_token_186>",
1752
+ "lstrip": false,
1753
+ "normalized": true,
1754
+ "rstrip": false,
1755
+ "single_word": false,
1756
+ "special": false
1757
+ },
1758
+ "130269": {
1759
+ "content": "<unused_token_187>",
1760
+ "lstrip": false,
1761
+ "normalized": true,
1762
+ "rstrip": false,
1763
+ "single_word": false,
1764
+ "special": false
1765
+ },
1766
+ "130270": {
1767
+ "content": "<unused_token_188>",
1768
+ "lstrip": false,
1769
+ "normalized": true,
1770
+ "rstrip": false,
1771
+ "single_word": false,
1772
+ "special": false
1773
+ },
1774
+ "130271": {
1775
+ "content": "<unused_token_189>",
1776
+ "lstrip": false,
1777
+ "normalized": true,
1778
+ "rstrip": false,
1779
+ "single_word": false,
1780
+ "special": false
1781
+ },
1782
+ "130272": {
1783
+ "content": "<unused_token_190>",
1784
+ "lstrip": false,
1785
+ "normalized": true,
1786
+ "rstrip": false,
1787
+ "single_word": false,
1788
+ "special": false
1789
+ },
1790
+ "130273": {
1791
+ "content": "<unused_token_191>",
1792
+ "lstrip": false,
1793
+ "normalized": true,
1794
+ "rstrip": false,
1795
+ "single_word": false,
1796
+ "special": false
1797
+ },
1798
+ "130274": {
1799
+ "content": "<unused_token_192>",
1800
+ "lstrip": false,
1801
+ "normalized": true,
1802
+ "rstrip": false,
1803
+ "single_word": false,
1804
+ "special": false
1805
+ },
1806
+ "130275": {
1807
+ "content": "<unused_token_193>",
1808
+ "lstrip": false,
1809
+ "normalized": true,
1810
+ "rstrip": false,
1811
+ "single_word": false,
1812
+ "special": false
1813
+ },
1814
+ "130276": {
1815
+ "content": "<unused_token_194>",
1816
+ "lstrip": false,
1817
+ "normalized": true,
1818
+ "rstrip": false,
1819
+ "single_word": false,
1820
+ "special": false
1821
+ },
1822
+ "130277": {
1823
+ "content": "<unused_token_195>",
1824
+ "lstrip": false,
1825
+ "normalized": true,
1826
+ "rstrip": false,
1827
+ "single_word": false,
1828
+ "special": false
1829
+ },
1830
+ "130278": {
1831
+ "content": "<unused_token_196>",
1832
+ "lstrip": false,
1833
+ "normalized": true,
1834
+ "rstrip": false,
1835
+ "single_word": false,
1836
+ "special": false
1837
+ },
1838
+ "130279": {
1839
+ "content": "<unused_token_197>",
1840
+ "lstrip": false,
1841
+ "normalized": true,
1842
+ "rstrip": false,
1843
+ "single_word": false,
1844
+ "special": false
1845
+ },
1846
+ "130280": {
1847
+ "content": "<unused_token_198>",
1848
+ "lstrip": false,
1849
+ "normalized": true,
1850
+ "rstrip": false,
1851
+ "single_word": false,
1852
+ "special": false
1853
+ },
1854
+ "130281": {
1855
+ "content": "<unused_token_199>",
1856
+ "lstrip": false,
1857
+ "normalized": true,
1858
+ "rstrip": false,
1859
+ "single_word": false,
1860
+ "special": false
1861
+ },
1862
+ "130282": {
1863
+ "content": "<unused_token_200>",
1864
+ "lstrip": false,
1865
+ "normalized": true,
1866
+ "rstrip": false,
1867
+ "single_word": false,
1868
+ "special": false
1869
+ },
1870
+ "130283": {
1871
+ "content": "<unused_token_201>",
1872
+ "lstrip": false,
1873
+ "normalized": true,
1874
+ "rstrip": false,
1875
+ "single_word": false,
1876
+ "special": false
1877
+ },
1878
+ "130284": {
1879
+ "content": "<unused_token_202>",
1880
+ "lstrip": false,
1881
+ "normalized": true,
1882
+ "rstrip": false,
1883
+ "single_word": false,
1884
+ "special": false
1885
+ },
1886
+ "130285": {
1887
+ "content": "<unused_token_203>",
1888
+ "lstrip": false,
1889
+ "normalized": true,
1890
+ "rstrip": false,
1891
+ "single_word": false,
1892
+ "special": false
1893
+ },
1894
+ "130286": {
1895
+ "content": "<unused_token_204>",
1896
+ "lstrip": false,
1897
+ "normalized": true,
1898
+ "rstrip": false,
1899
+ "single_word": false,
1900
+ "special": false
1901
+ },
1902
+ "130287": {
1903
+ "content": "<unused_token_205>",
1904
+ "lstrip": false,
1905
+ "normalized": true,
1906
+ "rstrip": false,
1907
+ "single_word": false,
1908
+ "special": false
1909
+ },
1910
+ "130288": {
1911
+ "content": "<unused_token_206>",
1912
+ "lstrip": false,
1913
+ "normalized": true,
1914
+ "rstrip": false,
1915
+ "single_word": false,
1916
+ "special": false
1917
+ },
1918
+ "130289": {
1919
+ "content": "<unused_token_207>",
1920
+ "lstrip": false,
1921
+ "normalized": true,
1922
+ "rstrip": false,
1923
+ "single_word": false,
1924
+ "special": false
1925
+ },
1926
+ "130290": {
1927
+ "content": "<unused_token_208>",
1928
+ "lstrip": false,
1929
+ "normalized": true,
1930
+ "rstrip": false,
1931
+ "single_word": false,
1932
+ "special": false
1933
+ },
1934
+ "130291": {
1935
+ "content": "<unused_token_209>",
1936
+ "lstrip": false,
1937
+ "normalized": true,
1938
+ "rstrip": false,
1939
+ "single_word": false,
1940
+ "special": false
1941
+ },
1942
+ "130292": {
1943
+ "content": "<unused_token_210>",
1944
+ "lstrip": false,
1945
+ "normalized": true,
1946
+ "rstrip": false,
1947
+ "single_word": false,
1948
+ "special": false
1949
+ },
1950
+ "130293": {
1951
+ "content": "<unused_token_211>",
1952
+ "lstrip": false,
1953
+ "normalized": true,
1954
+ "rstrip": false,
1955
+ "single_word": false,
1956
+ "special": false
1957
+ },
1958
+ "130294": {
1959
+ "content": "<unused_token_212>",
1960
+ "lstrip": false,
1961
+ "normalized": true,
1962
+ "rstrip": false,
1963
+ "single_word": false,
1964
+ "special": false
1965
+ },
1966
+ "130295": {
1967
+ "content": "<unused_token_213>",
1968
+ "lstrip": false,
1969
+ "normalized": true,
1970
+ "rstrip": false,
1971
+ "single_word": false,
1972
+ "special": false
1973
+ },
1974
+ "130296": {
1975
+ "content": "<unused_token_214>",
1976
+ "lstrip": false,
1977
+ "normalized": true,
1978
+ "rstrip": false,
1979
+ "single_word": false,
1980
+ "special": false
1981
+ },
1982
+ "130297": {
1983
+ "content": "<unused_token_215>",
1984
+ "lstrip": false,
1985
+ "normalized": true,
1986
+ "rstrip": false,
1987
+ "single_word": false,
1988
+ "special": false
1989
+ },
1990
+ "130298": {
1991
+ "content": "<unused_token_216>",
1992
+ "lstrip": false,
1993
+ "normalized": true,
1994
+ "rstrip": false,
1995
+ "single_word": false,
1996
+ "special": false
1997
+ },
1998
+ "130299": {
1999
+ "content": "<unused_token_217>",
2000
+ "lstrip": false,
2001
+ "normalized": true,
2002
+ "rstrip": false,
2003
+ "single_word": false,
2004
+ "special": false
2005
+ },
2006
+ "130300": {
2007
+ "content": "<unused_token_218>",
2008
+ "lstrip": false,
2009
+ "normalized": true,
2010
+ "rstrip": false,
2011
+ "single_word": false,
2012
+ "special": false
2013
+ },
2014
+ "130301": {
2015
+ "content": "<unused_token_219>",
2016
+ "lstrip": false,
2017
+ "normalized": true,
2018
+ "rstrip": false,
2019
+ "single_word": false,
2020
+ "special": false
2021
+ },
2022
+ "130302": {
2023
+ "content": "<unused_token_220>",
2024
+ "lstrip": false,
2025
+ "normalized": true,
2026
+ "rstrip": false,
2027
+ "single_word": false,
2028
+ "special": false
2029
+ },
2030
+ "130303": {
2031
+ "content": "<unused_token_221>",
2032
+ "lstrip": false,
2033
+ "normalized": true,
2034
+ "rstrip": false,
2035
+ "single_word": false,
2036
+ "special": false
2037
+ },
2038
+ "130304": {
2039
+ "content": "<unused_token_222>",
2040
+ "lstrip": false,
2041
+ "normalized": true,
2042
+ "rstrip": false,
2043
+ "single_word": false,
2044
+ "special": false
2045
+ },
2046
+ "130305": {
2047
+ "content": "<unused_token_223>",
2048
+ "lstrip": false,
2049
+ "normalized": true,
2050
+ "rstrip": false,
2051
+ "single_word": false,
2052
+ "special": false
2053
+ },
2054
+ "130306": {
2055
+ "content": "<unused_token_224>",
2056
+ "lstrip": false,
2057
+ "normalized": true,
2058
+ "rstrip": false,
2059
+ "single_word": false,
2060
+ "special": false
2061
+ },
2062
+ "130307": {
2063
+ "content": "<unused_token_225>",
2064
+ "lstrip": false,
2065
+ "normalized": true,
2066
+ "rstrip": false,
2067
+ "single_word": false,
2068
+ "special": false
2069
+ },
2070
+ "130308": {
2071
+ "content": "<unused_token_226>",
2072
+ "lstrip": false,
2073
+ "normalized": true,
2074
+ "rstrip": false,
2075
+ "single_word": false,
2076
+ "special": false
2077
+ },
2078
+ "130309": {
2079
+ "content": "<unused_token_227>",
2080
+ "lstrip": false,
2081
+ "normalized": true,
2082
+ "rstrip": false,
2083
+ "single_word": false,
2084
+ "special": false
2085
+ },
2086
+ "130310": {
2087
+ "content": "<unused_token_228>",
2088
+ "lstrip": false,
2089
+ "normalized": true,
2090
+ "rstrip": false,
2091
+ "single_word": false,
2092
+ "special": false
2093
+ },
2094
+ "130311": {
2095
+ "content": "<unused_token_229>",
2096
+ "lstrip": false,
2097
+ "normalized": true,
2098
+ "rstrip": false,
2099
+ "single_word": false,
2100
+ "special": false
2101
+ },
2102
+ "130312": {
2103
+ "content": "<unused_token_230>",
2104
+ "lstrip": false,
2105
+ "normalized": true,
2106
+ "rstrip": false,
2107
+ "single_word": false,
2108
+ "special": false
2109
+ },
2110
+ "130313": {
2111
+ "content": "<unused_token_231>",
2112
+ "lstrip": false,
2113
+ "normalized": true,
2114
+ "rstrip": false,
2115
+ "single_word": false,
2116
+ "special": false
2117
+ },
2118
+ "130314": {
2119
+ "content": "<unused_token_232>",
2120
+ "lstrip": false,
2121
+ "normalized": true,
2122
+ "rstrip": false,
2123
+ "single_word": false,
2124
+ "special": false
2125
+ },
2126
+ "130315": {
2127
+ "content": "<unused_token_233>",
2128
+ "lstrip": false,
2129
+ "normalized": true,
2130
+ "rstrip": false,
2131
+ "single_word": false,
2132
+ "special": false
2133
+ },
2134
+ "130316": {
2135
+ "content": "<unused_token_234>",
2136
+ "lstrip": false,
2137
+ "normalized": true,
2138
+ "rstrip": false,
2139
+ "single_word": false,
2140
+ "special": false
2141
+ },
2142
+ "130317": {
2143
+ "content": "<unused_token_235>",
2144
+ "lstrip": false,
2145
+ "normalized": true,
2146
+ "rstrip": false,
2147
+ "single_word": false,
2148
+ "special": false
2149
+ },
2150
+ "130318": {
2151
+ "content": "<unused_token_236>",
2152
+ "lstrip": false,
2153
+ "normalized": true,
2154
+ "rstrip": false,
2155
+ "single_word": false,
2156
+ "special": false
2157
+ },
2158
+ "130319": {
2159
+ "content": "<unused_token_237>",
2160
+ "lstrip": false,
2161
+ "normalized": true,
2162
+ "rstrip": false,
2163
+ "single_word": false,
2164
+ "special": false
2165
+ },
2166
+ "130320": {
2167
+ "content": "<unused_token_238>",
2168
+ "lstrip": false,
2169
+ "normalized": true,
2170
+ "rstrip": false,
2171
+ "single_word": false,
2172
+ "special": false
2173
+ },
2174
+ "130321": {
2175
+ "content": "<unused_token_239>",
2176
+ "lstrip": false,
2177
+ "normalized": true,
2178
+ "rstrip": false,
2179
+ "single_word": false,
2180
+ "special": false
2181
+ },
2182
+ "130322": {
2183
+ "content": "<unused_token_240>",
2184
+ "lstrip": false,
2185
+ "normalized": true,
2186
+ "rstrip": false,
2187
+ "single_word": false,
2188
+ "special": false
2189
+ },
2190
+ "130323": {
2191
+ "content": "<unused_token_241>",
2192
+ "lstrip": false,
2193
+ "normalized": true,
2194
+ "rstrip": false,
2195
+ "single_word": false,
2196
+ "special": false
2197
+ },
2198
+ "130324": {
2199
+ "content": "<unused_token_242>",
2200
+ "lstrip": false,
2201
+ "normalized": true,
2202
+ "rstrip": false,
2203
+ "single_word": false,
2204
+ "special": false
2205
+ },
2206
+ "130325": {
2207
+ "content": "<unused_token_243>",
2208
+ "lstrip": false,
2209
+ "normalized": true,
2210
+ "rstrip": false,
2211
+ "single_word": false,
2212
+ "special": false
2213
+ },
2214
+ "130326": {
2215
+ "content": "<unused_token_244>",
2216
+ "lstrip": false,
2217
+ "normalized": true,
2218
+ "rstrip": false,
2219
+ "single_word": false,
2220
+ "special": false
2221
+ },
2222
+ "130327": {
2223
+ "content": "<unused_token_245>",
2224
+ "lstrip": false,
2225
+ "normalized": true,
2226
+ "rstrip": false,
2227
+ "single_word": false,
2228
+ "special": false
2229
+ },
2230
+ "130328": {
2231
+ "content": "<unused_token_246>",
2232
+ "lstrip": false,
2233
+ "normalized": true,
2234
+ "rstrip": false,
2235
+ "single_word": false,
2236
+ "special": false
2237
+ },
2238
+ "130329": {
2239
+ "content": "<unused_token_247>",
2240
+ "lstrip": false,
2241
+ "normalized": true,
2242
+ "rstrip": false,
2243
+ "single_word": false,
2244
+ "special": false
2245
+ },
2246
+ "130330": {
2247
+ "content": "<unused_token_248>",
2248
+ "lstrip": false,
2249
+ "normalized": true,
2250
+ "rstrip": false,
2251
+ "single_word": false,
2252
+ "special": false
2253
+ },
2254
+ "130331": {
2255
+ "content": "<unused_token_249>",
2256
+ "lstrip": false,
2257
+ "normalized": true,
2258
+ "rstrip": false,
2259
+ "single_word": false,
2260
+ "special": false
2261
+ },
2262
+ "130332": {
2263
+ "content": "<unused_token_250>",
2264
+ "lstrip": false,
2265
+ "normalized": true,
2266
+ "rstrip": false,
2267
+ "single_word": false,
2268
+ "special": false
2269
+ },
2270
+ "130333": {
2271
+ "content": "<unused_token_251>",
2272
+ "lstrip": false,
2273
+ "normalized": true,
2274
+ "rstrip": false,
2275
+ "single_word": false,
2276
+ "special": false
2277
+ },
2278
+ "130334": {
2279
+ "content": "<unused_token_252>",
2280
+ "lstrip": false,
2281
+ "normalized": true,
2282
+ "rstrip": false,
2283
+ "single_word": false,
2284
+ "special": false
2285
+ },
2286
+ "130335": {
2287
+ "content": "<unused_token_253>",
2288
+ "lstrip": false,
2289
+ "normalized": true,
2290
+ "rstrip": false,
2291
+ "single_word": false,
2292
+ "special": false
2293
+ },
2294
+ "130336": {
2295
+ "content": "<unused_token_254>",
2296
+ "lstrip": false,
2297
+ "normalized": true,
2298
+ "rstrip": false,
2299
+ "single_word": false,
2300
+ "special": false
2301
+ },
2302
+ "130337": {
2303
+ "content": "<unused_token_255>",
2304
+ "lstrip": false,
2305
+ "normalized": true,
2306
+ "rstrip": false,
2307
+ "single_word": false,
2308
+ "special": false
2309
+ },
2310
+ "130338": {
2311
+ "content": "<unused_token_256>",
2312
+ "lstrip": false,
2313
+ "normalized": true,
2314
+ "rstrip": false,
2315
+ "single_word": false,
2316
+ "special": false
2317
+ },
2318
+ "130339": {
2319
+ "content": "<unused_token_257>",
2320
+ "lstrip": false,
2321
+ "normalized": true,
2322
+ "rstrip": false,
2323
+ "single_word": false,
2324
+ "special": false
2325
+ },
2326
+ "130340": {
2327
+ "content": "<unused_token_258>",
2328
+ "lstrip": false,
2329
+ "normalized": true,
2330
+ "rstrip": false,
2331
+ "single_word": false,
2332
+ "special": false
2333
+ },
2334
+ "130341": {
2335
+ "content": "<unused_token_259>",
2336
+ "lstrip": false,
2337
+ "normalized": true,
2338
+ "rstrip": false,
2339
+ "single_word": false,
2340
+ "special": false
2341
+ },
2342
+ "130342": {
2343
+ "content": "<unused_token_260>",
2344
+ "lstrip": false,
2345
+ "normalized": true,
2346
+ "rstrip": false,
2347
+ "single_word": false,
2348
+ "special": false
2349
+ },
2350
+ "130343": {
2351
+ "content": "<unused_token_261>",
2352
+ "lstrip": false,
2353
+ "normalized": true,
2354
+ "rstrip": false,
2355
+ "single_word": false,
2356
+ "special": false
2357
+ },
2358
+ "130344": {
2359
+ "content": "<unused_token_262>",
2360
+ "lstrip": false,
2361
+ "normalized": true,
2362
+ "rstrip": false,
2363
+ "single_word": false,
2364
+ "special": false
2365
+ },
2366
+ "130345": {
2367
+ "content": "<unused_token_263>",
2368
+ "lstrip": false,
2369
+ "normalized": true,
2370
+ "rstrip": false,
2371
+ "single_word": false,
2372
+ "special": false
2373
+ },
2374
+ "130346": {
2375
+ "content": "<unused_token_264>",
2376
+ "lstrip": false,
2377
+ "normalized": true,
2378
+ "rstrip": false,
2379
+ "single_word": false,
2380
+ "special": false
2381
+ },
2382
+ "130347": {
2383
+ "content": "<unused_token_265>",
2384
+ "lstrip": false,
2385
+ "normalized": true,
2386
+ "rstrip": false,
2387
+ "single_word": false,
2388
+ "special": false
2389
+ },
2390
+ "130348": {
2391
+ "content": "<unused_token_266>",
2392
+ "lstrip": false,
2393
+ "normalized": true,
2394
+ "rstrip": false,
2395
+ "single_word": false,
2396
+ "special": false
2397
+ },
2398
+ "130349": {
2399
+ "content": "<unused_token_267>",
2400
+ "lstrip": false,
2401
+ "normalized": true,
2402
+ "rstrip": false,
2403
+ "single_word": false,
2404
+ "special": false
2405
+ },
2406
+ "130350": {
2407
+ "content": "<unused_token_268>",
2408
+ "lstrip": false,
2409
+ "normalized": true,
2410
+ "rstrip": false,
2411
+ "single_word": false,
2412
+ "special": false
2413
+ },
2414
+ "130351": {
2415
+ "content": "<unused_token_269>",
2416
+ "lstrip": false,
2417
+ "normalized": true,
2418
+ "rstrip": false,
2419
+ "single_word": false,
2420
+ "special": false
2421
+ },
2422
+ "130352": {
2423
+ "content": "<unused_token_270>",
2424
+ "lstrip": false,
2425
+ "normalized": true,
2426
+ "rstrip": false,
2427
+ "single_word": false,
2428
+ "special": false
2429
+ },
2430
+ "130353": {
2431
+ "content": "<unused_token_271>",
2432
+ "lstrip": false,
2433
+ "normalized": true,
2434
+ "rstrip": false,
2435
+ "single_word": false,
2436
+ "special": false
2437
+ },
2438
+ "130354": {
2439
+ "content": "<unused_token_272>",
2440
+ "lstrip": false,
2441
+ "normalized": true,
2442
+ "rstrip": false,
2443
+ "single_word": false,
2444
+ "special": false
2445
+ },
2446
+ "130355": {
2447
+ "content": "<unused_token_273>",
2448
+ "lstrip": false,
2449
+ "normalized": true,
2450
+ "rstrip": false,
2451
+ "single_word": false,
2452
+ "special": false
2453
+ },
2454
+ "130356": {
2455
+ "content": "<unused_token_274>",
2456
+ "lstrip": false,
2457
+ "normalized": true,
2458
+ "rstrip": false,
2459
+ "single_word": false,
2460
+ "special": false
2461
+ },
2462
+ "130357": {
2463
+ "content": "<unused_token_275>",
2464
+ "lstrip": false,
2465
+ "normalized": true,
2466
+ "rstrip": false,
2467
+ "single_word": false,
2468
+ "special": false
2469
+ },
2470
+ "130358": {
2471
+ "content": "<unused_token_276>",
2472
+ "lstrip": false,
2473
+ "normalized": true,
2474
+ "rstrip": false,
2475
+ "single_word": false,
2476
+ "special": false
2477
+ },
2478
+ "130359": {
2479
+ "content": "<unused_token_277>",
2480
+ "lstrip": false,
2481
+ "normalized": true,
2482
+ "rstrip": false,
2483
+ "single_word": false,
2484
+ "special": false
2485
+ },
2486
+ "130360": {
2487
+ "content": "<unused_token_278>",
2488
+ "lstrip": false,
2489
+ "normalized": true,
2490
+ "rstrip": false,
2491
+ "single_word": false,
2492
+ "special": false
2493
+ },
2494
+ "130361": {
2495
+ "content": "<unused_token_279>",
2496
+ "lstrip": false,
2497
+ "normalized": true,
2498
+ "rstrip": false,
2499
+ "single_word": false,
2500
+ "special": false
2501
+ },
2502
+ "130362": {
2503
+ "content": "<unused_token_280>",
2504
+ "lstrip": false,
2505
+ "normalized": true,
2506
+ "rstrip": false,
2507
+ "single_word": false,
2508
+ "special": false
2509
+ },
2510
+ "130363": {
2511
+ "content": "<unused_token_281>",
2512
+ "lstrip": false,
2513
+ "normalized": true,
2514
+ "rstrip": false,
2515
+ "single_word": false,
2516
+ "special": false
2517
+ },
2518
+ "130364": {
2519
+ "content": "<unused_token_282>",
2520
+ "lstrip": false,
2521
+ "normalized": true,
2522
+ "rstrip": false,
2523
+ "single_word": false,
2524
+ "special": false
2525
+ },
2526
+ "130365": {
2527
+ "content": "<unused_token_283>",
2528
+ "lstrip": false,
2529
+ "normalized": true,
2530
+ "rstrip": false,
2531
+ "single_word": false,
2532
+ "special": false
2533
+ },
2534
+ "130366": {
2535
+ "content": "<unused_token_284>",
2536
+ "lstrip": false,
2537
+ "normalized": true,
2538
+ "rstrip": false,
2539
+ "single_word": false,
2540
+ "special": false
2541
+ },
2542
+ "130367": {
2543
+ "content": "<unused_token_285>",
2544
+ "lstrip": false,
2545
+ "normalized": true,
2546
+ "rstrip": false,
2547
+ "single_word": false,
2548
+ "special": false
2549
+ },
2550
+ "130368": {
2551
+ "content": "<unused_token_286>",
2552
+ "lstrip": false,
2553
+ "normalized": true,
2554
+ "rstrip": false,
2555
+ "single_word": false,
2556
+ "special": false
2557
+ },
2558
+ "130369": {
2559
+ "content": "<unused_token_287>",
2560
+ "lstrip": false,
2561
+ "normalized": true,
2562
+ "rstrip": false,
2563
+ "single_word": false,
2564
+ "special": false
2565
+ },
2566
+ "130370": {
2567
+ "content": "<unused_token_288>",
2568
+ "lstrip": false,
2569
+ "normalized": true,
2570
+ "rstrip": false,
2571
+ "single_word": false,
2572
+ "special": false
2573
+ },
2574
+ "130371": {
2575
+ "content": "<unused_token_289>",
2576
+ "lstrip": false,
2577
+ "normalized": true,
2578
+ "rstrip": false,
2579
+ "single_word": false,
2580
+ "special": false
2581
+ },
2582
+ "130372": {
2583
+ "content": "<unused_token_290>",
2584
+ "lstrip": false,
2585
+ "normalized": true,
2586
+ "rstrip": false,
2587
+ "single_word": false,
2588
+ "special": false
2589
+ },
2590
+ "130373": {
2591
+ "content": "<unused_token_291>",
2592
+ "lstrip": false,
2593
+ "normalized": true,
2594
+ "rstrip": false,
2595
+ "single_word": false,
2596
+ "special": false
2597
+ },
2598
+ "130374": {
2599
+ "content": "<unused_token_292>",
2600
+ "lstrip": false,
2601
+ "normalized": true,
2602
+ "rstrip": false,
2603
+ "single_word": false,
2604
+ "special": false
2605
+ },
2606
+ "130375": {
2607
+ "content": "<unused_token_293>",
2608
+ "lstrip": false,
2609
+ "normalized": true,
2610
+ "rstrip": false,
2611
+ "single_word": false,
2612
+ "special": false
2613
+ },
2614
+ "130376": {
2615
+ "content": "<unused_token_294>",
2616
+ "lstrip": false,
2617
+ "normalized": true,
2618
+ "rstrip": false,
2619
+ "single_word": false,
2620
+ "special": false
2621
+ },
2622
+ "130377": {
2623
+ "content": "<unused_token_295>",
2624
+ "lstrip": false,
2625
+ "normalized": true,
2626
+ "rstrip": false,
2627
+ "single_word": false,
2628
+ "special": false
2629
+ },
2630
+ "130378": {
2631
+ "content": "<unused_token_296>",
2632
+ "lstrip": false,
2633
+ "normalized": true,
2634
+ "rstrip": false,
2635
+ "single_word": false,
2636
+ "special": false
2637
+ },
2638
+ "130379": {
2639
+ "content": "<unused_token_297>",
2640
+ "lstrip": false,
2641
+ "normalized": true,
2642
+ "rstrip": false,
2643
+ "single_word": false,
2644
+ "special": false
2645
+ },
2646
+ "130380": {
2647
+ "content": "<unused_token_298>",
2648
+ "lstrip": false,
2649
+ "normalized": true,
2650
+ "rstrip": false,
2651
+ "single_word": false,
2652
+ "special": false
2653
+ },
2654
+ "130381": {
2655
+ "content": "<unused_token_299>",
2656
+ "lstrip": false,
2657
+ "normalized": true,
2658
+ "rstrip": false,
2659
+ "single_word": false,
2660
+ "special": false
2661
+ },
2662
+ "130382": {
2663
+ "content": "<unused_token_300>",
2664
+ "lstrip": false,
2665
+ "normalized": true,
2666
+ "rstrip": false,
2667
+ "single_word": false,
2668
+ "special": false
2669
+ },
2670
+ "130383": {
2671
+ "content": "<unused_token_301>",
2672
+ "lstrip": false,
2673
+ "normalized": true,
2674
+ "rstrip": false,
2675
+ "single_word": false,
2676
+ "special": false
2677
+ },
2678
+ "130384": {
2679
+ "content": "<unused_token_302>",
2680
+ "lstrip": false,
2681
+ "normalized": true,
2682
+ "rstrip": false,
2683
+ "single_word": false,
2684
+ "special": false
2685
+ },
2686
+ "130385": {
2687
+ "content": "<unused_token_303>",
2688
+ "lstrip": false,
2689
+ "normalized": true,
2690
+ "rstrip": false,
2691
+ "single_word": false,
2692
+ "special": false
2693
+ },
2694
+ "130386": {
2695
+ "content": "<unused_token_304>",
2696
+ "lstrip": false,
2697
+ "normalized": true,
2698
+ "rstrip": false,
2699
+ "single_word": false,
2700
+ "special": false
2701
+ },
2702
+ "130387": {
2703
+ "content": "<unused_token_305>",
2704
+ "lstrip": false,
2705
+ "normalized": true,
2706
+ "rstrip": false,
2707
+ "single_word": false,
2708
+ "special": false
2709
+ },
2710
+ "130388": {
2711
+ "content": "<unused_token_306>",
2712
+ "lstrip": false,
2713
+ "normalized": true,
2714
+ "rstrip": false,
2715
+ "single_word": false,
2716
+ "special": false
2717
+ },
2718
+ "130389": {
2719
+ "content": "<unused_token_307>",
2720
+ "lstrip": false,
2721
+ "normalized": true,
2722
+ "rstrip": false,
2723
+ "single_word": false,
2724
+ "special": false
2725
+ },
2726
+ "130390": {
2727
+ "content": "<unused_token_308>",
2728
+ "lstrip": false,
2729
+ "normalized": true,
2730
+ "rstrip": false,
2731
+ "single_word": false,
2732
+ "special": false
2733
+ },
2734
+ "130391": {
2735
+ "content": "<unused_token_309>",
2736
+ "lstrip": false,
2737
+ "normalized": true,
2738
+ "rstrip": false,
2739
+ "single_word": false,
2740
+ "special": false
2741
+ },
2742
+ "130392": {
2743
+ "content": "<unused_token_310>",
2744
+ "lstrip": false,
2745
+ "normalized": true,
2746
+ "rstrip": false,
2747
+ "single_word": false,
2748
+ "special": false
2749
+ },
2750
+ "130393": {
2751
+ "content": "<unused_token_311>",
2752
+ "lstrip": false,
2753
+ "normalized": true,
2754
+ "rstrip": false,
2755
+ "single_word": false,
2756
+ "special": false
2757
+ },
2758
+ "130394": {
2759
+ "content": "<unused_token_312>",
2760
+ "lstrip": false,
2761
+ "normalized": true,
2762
+ "rstrip": false,
2763
+ "single_word": false,
2764
+ "special": false
2765
+ },
2766
+ "130395": {
2767
+ "content": "<unused_token_313>",
2768
+ "lstrip": false,
2769
+ "normalized": true,
2770
+ "rstrip": false,
2771
+ "single_word": false,
2772
+ "special": false
2773
+ },
2774
+ "130396": {
2775
+ "content": "<unused_token_314>",
2776
+ "lstrip": false,
2777
+ "normalized": true,
2778
+ "rstrip": false,
2779
+ "single_word": false,
2780
+ "special": false
2781
+ },
2782
+ "130397": {
2783
+ "content": "<unused_token_315>",
2784
+ "lstrip": false,
2785
+ "normalized": true,
2786
+ "rstrip": false,
2787
+ "single_word": false,
2788
+ "special": false
2789
+ },
2790
+ "130398": {
2791
+ "content": "<unused_token_316>",
2792
+ "lstrip": false,
2793
+ "normalized": true,
2794
+ "rstrip": false,
2795
+ "single_word": false,
2796
+ "special": false
2797
+ },
2798
+ "130399": {
2799
+ "content": "<unused_token_317>",
2800
+ "lstrip": false,
2801
+ "normalized": true,
2802
+ "rstrip": false,
2803
+ "single_word": false,
2804
+ "special": false
2805
+ },
2806
+ "130400": {
2807
+ "content": "<unused_token_318>",
2808
+ "lstrip": false,
2809
+ "normalized": true,
2810
+ "rstrip": false,
2811
+ "single_word": false,
2812
+ "special": false
2813
+ },
2814
+ "130401": {
2815
+ "content": "<unused_token_319>",
2816
+ "lstrip": false,
2817
+ "normalized": true,
2818
+ "rstrip": false,
2819
+ "single_word": false,
2820
+ "special": false
2821
+ },
2822
+ "130402": {
2823
+ "content": "<unused_token_320>",
2824
+ "lstrip": false,
2825
+ "normalized": true,
2826
+ "rstrip": false,
2827
+ "single_word": false,
2828
+ "special": false
2829
+ },
2830
+ "130403": {
2831
+ "content": "<unused_token_321>",
2832
+ "lstrip": false,
2833
+ "normalized": true,
2834
+ "rstrip": false,
2835
+ "single_word": false,
2836
+ "special": false
2837
+ },
2838
+ "130404": {
2839
+ "content": "<unused_token_322>",
2840
+ "lstrip": false,
2841
+ "normalized": true,
2842
+ "rstrip": false,
2843
+ "single_word": false,
2844
+ "special": false
2845
+ },
2846
+ "130405": {
2847
+ "content": "<unused_token_323>",
2848
+ "lstrip": false,
2849
+ "normalized": true,
2850
+ "rstrip": false,
2851
+ "single_word": false,
2852
+ "special": false
2853
+ },
2854
+ "130406": {
2855
+ "content": "<unused_token_324>",
2856
+ "lstrip": false,
2857
+ "normalized": true,
2858
+ "rstrip": false,
2859
+ "single_word": false,
2860
+ "special": false
2861
+ },
2862
+ "130407": {
2863
+ "content": "<unused_token_325>",
2864
+ "lstrip": false,
2865
+ "normalized": true,
2866
+ "rstrip": false,
2867
+ "single_word": false,
2868
+ "special": false
2869
+ },
2870
+ "130408": {
2871
+ "content": "<unused_token_326>",
2872
+ "lstrip": false,
2873
+ "normalized": true,
2874
+ "rstrip": false,
2875
+ "single_word": false,
2876
+ "special": false
2877
+ },
2878
+ "130409": {
2879
+ "content": "<unused_token_327>",
2880
+ "lstrip": false,
2881
+ "normalized": true,
2882
+ "rstrip": false,
2883
+ "single_word": false,
2884
+ "special": false
2885
+ },
2886
+ "130410": {
2887
+ "content": "<unused_token_328>",
2888
+ "lstrip": false,
2889
+ "normalized": true,
2890
+ "rstrip": false,
2891
+ "single_word": false,
2892
+ "special": false
2893
+ },
2894
+ "130411": {
2895
+ "content": "<unused_token_329>",
2896
+ "lstrip": false,
2897
+ "normalized": true,
2898
+ "rstrip": false,
2899
+ "single_word": false,
2900
+ "special": false
2901
+ },
2902
+ "130412": {
2903
+ "content": "<unused_token_330>",
2904
+ "lstrip": false,
2905
+ "normalized": true,
2906
+ "rstrip": false,
2907
+ "single_word": false,
2908
+ "special": false
2909
+ },
2910
+ "130413": {
2911
+ "content": "<unused_token_331>",
2912
+ "lstrip": false,
2913
+ "normalized": true,
2914
+ "rstrip": false,
2915
+ "single_word": false,
2916
+ "special": false
2917
+ },
2918
+ "130414": {
2919
+ "content": "<unused_token_332>",
2920
+ "lstrip": false,
2921
+ "normalized": true,
2922
+ "rstrip": false,
2923
+ "single_word": false,
2924
+ "special": false
2925
+ },
2926
+ "130415": {
2927
+ "content": "<unused_token_333>",
2928
+ "lstrip": false,
2929
+ "normalized": true,
2930
+ "rstrip": false,
2931
+ "single_word": false,
2932
+ "special": false
2933
+ },
2934
+ "130416": {
2935
+ "content": "<unused_token_334>",
2936
+ "lstrip": false,
2937
+ "normalized": true,
2938
+ "rstrip": false,
2939
+ "single_word": false,
2940
+ "special": false
2941
+ },
2942
+ "130417": {
2943
+ "content": "<unused_token_335>",
2944
+ "lstrip": false,
2945
+ "normalized": true,
2946
+ "rstrip": false,
2947
+ "single_word": false,
2948
+ "special": false
2949
+ },
2950
+ "130418": {
2951
+ "content": "<unused_token_336>",
2952
+ "lstrip": false,
2953
+ "normalized": true,
2954
+ "rstrip": false,
2955
+ "single_word": false,
2956
+ "special": false
2957
+ },
2958
+ "130419": {
2959
+ "content": "<unused_token_337>",
2960
+ "lstrip": false,
2961
+ "normalized": true,
2962
+ "rstrip": false,
2963
+ "single_word": false,
2964
+ "special": false
2965
+ },
2966
+ "130420": {
2967
+ "content": "<unused_token_338>",
2968
+ "lstrip": false,
2969
+ "normalized": true,
2970
+ "rstrip": false,
2971
+ "single_word": false,
2972
+ "special": false
2973
+ },
2974
+ "130421": {
2975
+ "content": "<unused_token_339>",
2976
+ "lstrip": false,
2977
+ "normalized": true,
2978
+ "rstrip": false,
2979
+ "single_word": false,
2980
+ "special": false
2981
+ },
2982
+ "130422": {
2983
+ "content": "<unused_token_340>",
2984
+ "lstrip": false,
2985
+ "normalized": true,
2986
+ "rstrip": false,
2987
+ "single_word": false,
2988
+ "special": false
2989
+ },
2990
+ "130423": {
2991
+ "content": "<unused_token_341>",
2992
+ "lstrip": false,
2993
+ "normalized": true,
2994
+ "rstrip": false,
2995
+ "single_word": false,
2996
+ "special": false
2997
+ },
2998
+ "130424": {
2999
+ "content": "<unused_token_342>",
3000
+ "lstrip": false,
3001
+ "normalized": true,
3002
+ "rstrip": false,
3003
+ "single_word": false,
3004
+ "special": false
3005
+ },
3006
+ "130425": {
3007
+ "content": "<unused_token_343>",
3008
+ "lstrip": false,
3009
+ "normalized": true,
3010
+ "rstrip": false,
3011
+ "single_word": false,
3012
+ "special": false
3013
+ },
3014
+ "130426": {
3015
+ "content": "<unused_token_344>",
3016
+ "lstrip": false,
3017
+ "normalized": true,
3018
+ "rstrip": false,
3019
+ "single_word": false,
3020
+ "special": false
3021
+ },
3022
+ "130427": {
3023
+ "content": "<unused_token_345>",
3024
+ "lstrip": false,
3025
+ "normalized": true,
3026
+ "rstrip": false,
3027
+ "single_word": false,
3028
+ "special": false
3029
+ },
3030
+ "130428": {
3031
+ "content": "<unused_token_346>",
3032
+ "lstrip": false,
3033
+ "normalized": true,
3034
+ "rstrip": false,
3035
+ "single_word": false,
3036
+ "special": false
3037
+ },
3038
+ "130429": {
3039
+ "content": "<unused_token_347>",
3040
+ "lstrip": false,
3041
+ "normalized": true,
3042
+ "rstrip": false,
3043
+ "single_word": false,
3044
+ "special": false
3045
+ },
3046
+ "130430": {
3047
+ "content": "<unused_token_348>",
3048
+ "lstrip": false,
3049
+ "normalized": true,
3050
+ "rstrip": false,
3051
+ "single_word": false,
3052
+ "special": false
3053
+ },
3054
+ "130431": {
3055
+ "content": "<unused_token_349>",
3056
+ "lstrip": false,
3057
+ "normalized": true,
3058
+ "rstrip": false,
3059
+ "single_word": false,
3060
+ "special": false
3061
+ },
3062
+ "130432": {
3063
+ "content": "<unused_token_350>",
3064
+ "lstrip": false,
3065
+ "normalized": true,
3066
+ "rstrip": false,
3067
+ "single_word": false,
3068
+ "special": false
3069
+ },
3070
+ "130433": {
3071
+ "content": "<unused_token_351>",
3072
+ "lstrip": false,
3073
+ "normalized": true,
3074
+ "rstrip": false,
3075
+ "single_word": false,
3076
+ "special": false
3077
+ },
3078
+ "130434": {
3079
+ "content": "<unused_token_352>",
3080
+ "lstrip": false,
3081
+ "normalized": true,
3082
+ "rstrip": false,
3083
+ "single_word": false,
3084
+ "special": false
3085
+ },
3086
+ "130435": {
3087
+ "content": "<unused_token_353>",
3088
+ "lstrip": false,
3089
+ "normalized": true,
3090
+ "rstrip": false,
3091
+ "single_word": false,
3092
+ "special": false
3093
+ },
3094
+ "130436": {
3095
+ "content": "<unused_token_354>",
3096
+ "lstrip": false,
3097
+ "normalized": true,
3098
+ "rstrip": false,
3099
+ "single_word": false,
3100
+ "special": false
3101
+ },
3102
+ "130437": {
3103
+ "content": "<unused_token_355>",
3104
+ "lstrip": false,
3105
+ "normalized": true,
3106
+ "rstrip": false,
3107
+ "single_word": false,
3108
+ "special": false
3109
+ },
3110
+ "130438": {
3111
+ "content": "<unused_token_356>",
3112
+ "lstrip": false,
3113
+ "normalized": true,
3114
+ "rstrip": false,
3115
+ "single_word": false,
3116
+ "special": false
3117
+ },
3118
+ "130439": {
3119
+ "content": "<unused_token_357>",
3120
+ "lstrip": false,
3121
+ "normalized": true,
3122
+ "rstrip": false,
3123
+ "single_word": false,
3124
+ "special": false
3125
+ },
3126
+ "130440": {
3127
+ "content": "<unused_token_358>",
3128
+ "lstrip": false,
3129
+ "normalized": true,
3130
+ "rstrip": false,
3131
+ "single_word": false,
3132
+ "special": false
3133
+ },
3134
+ "130441": {
3135
+ "content": "<unused_token_359>",
3136
+ "lstrip": false,
3137
+ "normalized": true,
3138
+ "rstrip": false,
3139
+ "single_word": false,
3140
+ "special": false
3141
+ },
3142
+ "130442": {
3143
+ "content": "<unused_token_360>",
3144
+ "lstrip": false,
3145
+ "normalized": true,
3146
+ "rstrip": false,
3147
+ "single_word": false,
3148
+ "special": false
3149
+ },
3150
+ "130443": {
3151
+ "content": "<unused_token_361>",
3152
+ "lstrip": false,
3153
+ "normalized": true,
3154
+ "rstrip": false,
3155
+ "single_word": false,
3156
+ "special": false
3157
+ },
3158
+ "130444": {
3159
+ "content": "<unused_token_362>",
3160
+ "lstrip": false,
3161
+ "normalized": true,
3162
+ "rstrip": false,
3163
+ "single_word": false,
3164
+ "special": false
3165
+ },
3166
+ "130445": {
3167
+ "content": "<unused_token_363>",
3168
+ "lstrip": false,
3169
+ "normalized": true,
3170
+ "rstrip": false,
3171
+ "single_word": false,
3172
+ "special": false
3173
+ },
3174
+ "130446": {
3175
+ "content": "<unused_token_364>",
3176
+ "lstrip": false,
3177
+ "normalized": true,
3178
+ "rstrip": false,
3179
+ "single_word": false,
3180
+ "special": false
3181
+ },
3182
+ "130447": {
3183
+ "content": "<unused_token_365>",
3184
+ "lstrip": false,
3185
+ "normalized": true,
3186
+ "rstrip": false,
3187
+ "single_word": false,
3188
+ "special": false
3189
+ },
3190
+ "130448": {
3191
+ "content": "<unused_token_366>",
3192
+ "lstrip": false,
3193
+ "normalized": true,
3194
+ "rstrip": false,
3195
+ "single_word": false,
3196
+ "special": false
3197
+ },
3198
+ "130449": {
3199
+ "content": "<unused_token_367>",
3200
+ "lstrip": false,
3201
+ "normalized": true,
3202
+ "rstrip": false,
3203
+ "single_word": false,
3204
+ "special": false
3205
+ },
3206
+ "130450": {
3207
+ "content": "<unused_token_368>",
3208
+ "lstrip": false,
3209
+ "normalized": true,
3210
+ "rstrip": false,
3211
+ "single_word": false,
3212
+ "special": false
3213
+ },
3214
+ "130451": {
3215
+ "content": "<unused_token_369>",
3216
+ "lstrip": false,
3217
+ "normalized": true,
3218
+ "rstrip": false,
3219
+ "single_word": false,
3220
+ "special": false
3221
+ },
3222
+ "130452": {
3223
+ "content": "<unused_token_370>",
3224
+ "lstrip": false,
3225
+ "normalized": true,
3226
+ "rstrip": false,
3227
+ "single_word": false,
3228
+ "special": false
3229
+ },
3230
+ "130453": {
3231
+ "content": "<unused_token_371>",
3232
+ "lstrip": false,
3233
+ "normalized": true,
3234
+ "rstrip": false,
3235
+ "single_word": false,
3236
+ "special": false
3237
+ },
3238
+ "130454": {
3239
+ "content": "<unused_token_372>",
3240
+ "lstrip": false,
3241
+ "normalized": true,
3242
+ "rstrip": false,
3243
+ "single_word": false,
3244
+ "special": false
3245
+ },
3246
+ "130455": {
3247
+ "content": "<unused_token_373>",
3248
+ "lstrip": false,
3249
+ "normalized": true,
3250
+ "rstrip": false,
3251
+ "single_word": false,
3252
+ "special": false
3253
+ },
3254
+ "130456": {
3255
+ "content": "<unused_token_374>",
3256
+ "lstrip": false,
3257
+ "normalized": true,
3258
+ "rstrip": false,
3259
+ "single_word": false,
3260
+ "special": false
3261
+ },
3262
+ "130457": {
3263
+ "content": "<unused_token_375>",
3264
+ "lstrip": false,
3265
+ "normalized": true,
3266
+ "rstrip": false,
3267
+ "single_word": false,
3268
+ "special": false
3269
+ },
3270
+ "130458": {
3271
+ "content": "<unused_token_376>",
3272
+ "lstrip": false,
3273
+ "normalized": true,
3274
+ "rstrip": false,
3275
+ "single_word": false,
3276
+ "special": false
3277
+ },
3278
+ "130459": {
3279
+ "content": "<unused_token_377>",
3280
+ "lstrip": false,
3281
+ "normalized": true,
3282
+ "rstrip": false,
3283
+ "single_word": false,
3284
+ "special": false
3285
+ },
3286
+ "130460": {
3287
+ "content": "<unused_token_378>",
3288
+ "lstrip": false,
3289
+ "normalized": true,
3290
+ "rstrip": false,
3291
+ "single_word": false,
3292
+ "special": false
3293
+ },
3294
+ "130461": {
3295
+ "content": "<unused_token_379>",
3296
+ "lstrip": false,
3297
+ "normalized": true,
3298
+ "rstrip": false,
3299
+ "single_word": false,
3300
+ "special": false
3301
+ },
3302
+ "130462": {
3303
+ "content": "<unused_token_380>",
3304
+ "lstrip": false,
3305
+ "normalized": true,
3306
+ "rstrip": false,
3307
+ "single_word": false,
3308
+ "special": false
3309
+ },
3310
+ "130463": {
3311
+ "content": "<unused_token_381>",
3312
+ "lstrip": false,
3313
+ "normalized": true,
3314
+ "rstrip": false,
3315
+ "single_word": false,
3316
+ "special": false
3317
+ },
3318
+ "130464": {
3319
+ "content": "<unused_token_382>",
3320
+ "lstrip": false,
3321
+ "normalized": true,
3322
+ "rstrip": false,
3323
+ "single_word": false,
3324
+ "special": false
3325
+ },
3326
+ "130465": {
3327
+ "content": "<unused_token_383>",
3328
+ "lstrip": false,
3329
+ "normalized": true,
3330
+ "rstrip": false,
3331
+ "single_word": false,
3332
+ "special": false
3333
+ },
3334
+ "130466": {
3335
+ "content": "<unused_token_384>",
3336
+ "lstrip": false,
3337
+ "normalized": true,
3338
+ "rstrip": false,
3339
+ "single_word": false,
3340
+ "special": false
3341
+ },
3342
+ "130467": {
3343
+ "content": "<unused_token_385>",
3344
+ "lstrip": false,
3345
+ "normalized": true,
3346
+ "rstrip": false,
3347
+ "single_word": false,
3348
+ "special": false
3349
+ },
3350
+ "130468": {
3351
+ "content": "<unused_token_386>",
3352
+ "lstrip": false,
3353
+ "normalized": true,
3354
+ "rstrip": false,
3355
+ "single_word": false,
3356
+ "special": false
3357
+ },
3358
+ "130469": {
3359
+ "content": "<unused_token_387>",
3360
+ "lstrip": false,
3361
+ "normalized": true,
3362
+ "rstrip": false,
3363
+ "single_word": false,
3364
+ "special": false
3365
+ },
3366
+ "130470": {
3367
+ "content": "<unused_token_388>",
3368
+ "lstrip": false,
3369
+ "normalized": true,
3370
+ "rstrip": false,
3371
+ "single_word": false,
3372
+ "special": false
3373
+ },
3374
+ "130471": {
3375
+ "content": "<unused_token_389>",
3376
+ "lstrip": false,
3377
+ "normalized": true,
3378
+ "rstrip": false,
3379
+ "single_word": false,
3380
+ "special": false
3381
+ },
3382
+ "130472": {
3383
+ "content": "<unused_token_390>",
3384
+ "lstrip": false,
3385
+ "normalized": true,
3386
+ "rstrip": false,
3387
+ "single_word": false,
3388
+ "special": false
3389
+ },
3390
+ "130473": {
3391
+ "content": "<unused_token_391>",
3392
+ "lstrip": false,
3393
+ "normalized": true,
3394
+ "rstrip": false,
3395
+ "single_word": false,
3396
+ "special": false
3397
+ },
3398
+ "130474": {
3399
+ "content": "<unused_token_392>",
3400
+ "lstrip": false,
3401
+ "normalized": true,
3402
+ "rstrip": false,
3403
+ "single_word": false,
3404
+ "special": false
3405
+ },
3406
+ "130475": {
3407
+ "content": "<unused_token_393>",
3408
+ "lstrip": false,
3409
+ "normalized": true,
3410
+ "rstrip": false,
3411
+ "single_word": false,
3412
+ "special": false
3413
+ },
3414
+ "130476": {
3415
+ "content": "<unused_token_394>",
3416
+ "lstrip": false,
3417
+ "normalized": true,
3418
+ "rstrip": false,
3419
+ "single_word": false,
3420
+ "special": false
3421
+ },
3422
+ "130477": {
3423
+ "content": "<unused_token_395>",
3424
+ "lstrip": false,
3425
+ "normalized": true,
3426
+ "rstrip": false,
3427
+ "single_word": false,
3428
+ "special": false
3429
+ },
3430
+ "130478": {
3431
+ "content": "<unused_token_396>",
3432
+ "lstrip": false,
3433
+ "normalized": true,
3434
+ "rstrip": false,
3435
+ "single_word": false,
3436
+ "special": false
3437
+ },
3438
+ "130479": {
3439
+ "content": "<unused_token_397>",
3440
+ "lstrip": false,
3441
+ "normalized": true,
3442
+ "rstrip": false,
3443
+ "single_word": false,
3444
+ "special": false
3445
+ },
3446
+ "130480": {
3447
+ "content": "<unused_token_398>",
3448
+ "lstrip": false,
3449
+ "normalized": true,
3450
+ "rstrip": false,
3451
+ "single_word": false,
3452
+ "special": false
3453
+ },
3454
+ "130481": {
3455
+ "content": "<unused_token_399>",
3456
+ "lstrip": false,
3457
+ "normalized": true,
3458
+ "rstrip": false,
3459
+ "single_word": false,
3460
+ "special": false
3461
+ },
3462
+ "130482": {
3463
+ "content": "<unused_token_400>",
3464
+ "lstrip": false,
3465
+ "normalized": true,
3466
+ "rstrip": false,
3467
+ "single_word": false,
3468
+ "special": false
3469
+ },
3470
+ "130483": {
3471
+ "content": "<unused_token_401>",
3472
+ "lstrip": false,
3473
+ "normalized": true,
3474
+ "rstrip": false,
3475
+ "single_word": false,
3476
+ "special": false
3477
+ },
3478
+ "130484": {
3479
+ "content": "<unused_token_402>",
3480
+ "lstrip": false,
3481
+ "normalized": true,
3482
+ "rstrip": false,
3483
+ "single_word": false,
3484
+ "special": false
3485
+ },
3486
+ "130485": {
3487
+ "content": "<unused_token_403>",
3488
+ "lstrip": false,
3489
+ "normalized": true,
3490
+ "rstrip": false,
3491
+ "single_word": false,
3492
+ "special": false
3493
+ },
3494
+ "130486": {
3495
+ "content": "<unused_token_404>",
3496
+ "lstrip": false,
3497
+ "normalized": true,
3498
+ "rstrip": false,
3499
+ "single_word": false,
3500
+ "special": false
3501
+ },
3502
+ "130487": {
3503
+ "content": "<unused_token_405>",
3504
+ "lstrip": false,
3505
+ "normalized": true,
3506
+ "rstrip": false,
3507
+ "single_word": false,
3508
+ "special": false
3509
+ },
3510
+ "130488": {
3511
+ "content": "<unused_token_406>",
3512
+ "lstrip": false,
3513
+ "normalized": true,
3514
+ "rstrip": false,
3515
+ "single_word": false,
3516
+ "special": false
3517
+ },
3518
+ "130489": {
3519
+ "content": "<unused_token_407>",
3520
+ "lstrip": false,
3521
+ "normalized": true,
3522
+ "rstrip": false,
3523
+ "single_word": false,
3524
+ "special": false
3525
+ },
3526
+ "130490": {
3527
+ "content": "<unused_token_408>",
3528
+ "lstrip": false,
3529
+ "normalized": true,
3530
+ "rstrip": false,
3531
+ "single_word": false,
3532
+ "special": false
3533
+ },
3534
+ "130491": {
3535
+ "content": "<unused_token_409>",
3536
+ "lstrip": false,
3537
+ "normalized": true,
3538
+ "rstrip": false,
3539
+ "single_word": false,
3540
+ "special": false
3541
+ },
3542
+ "130492": {
3543
+ "content": "<unused_token_410>",
3544
+ "lstrip": false,
3545
+ "normalized": true,
3546
+ "rstrip": false,
3547
+ "single_word": false,
3548
+ "special": false
3549
+ },
3550
+ "130493": {
3551
+ "content": "<unused_token_411>",
3552
+ "lstrip": false,
3553
+ "normalized": true,
3554
+ "rstrip": false,
3555
+ "single_word": false,
3556
+ "special": false
3557
+ },
3558
+ "130494": {
3559
+ "content": "<unused_token_412>",
3560
+ "lstrip": false,
3561
+ "normalized": true,
3562
+ "rstrip": false,
3563
+ "single_word": false,
3564
+ "special": false
3565
+ },
3566
+ "130495": {
3567
+ "content": "<unused_token_413>",
3568
+ "lstrip": false,
3569
+ "normalized": true,
3570
+ "rstrip": false,
3571
+ "single_word": false,
3572
+ "special": false
3573
+ },
3574
+ "130496": {
3575
+ "content": "<unused_token_414>",
3576
+ "lstrip": false,
3577
+ "normalized": true,
3578
+ "rstrip": false,
3579
+ "single_word": false,
3580
+ "special": false
3581
+ },
3582
+ "130497": {
3583
+ "content": "<unused_token_415>",
3584
+ "lstrip": false,
3585
+ "normalized": true,
3586
+ "rstrip": false,
3587
+ "single_word": false,
3588
+ "special": false
3589
+ },
3590
+ "130498": {
3591
+ "content": "<unused_token_416>",
3592
+ "lstrip": false,
3593
+ "normalized": true,
3594
+ "rstrip": false,
3595
+ "single_word": false,
3596
+ "special": false
3597
+ },
3598
+ "130499": {
3599
+ "content": "<unused_token_417>",
3600
+ "lstrip": false,
3601
+ "normalized": true,
3602
+ "rstrip": false,
3603
+ "single_word": false,
3604
+ "special": false
3605
+ },
3606
+ "130500": {
3607
+ "content": "<unused_token_418>",
3608
+ "lstrip": false,
3609
+ "normalized": true,
3610
+ "rstrip": false,
3611
+ "single_word": false,
3612
+ "special": false
3613
+ },
3614
+ "130501": {
3615
+ "content": "<unused_token_419>",
3616
+ "lstrip": false,
3617
+ "normalized": true,
3618
+ "rstrip": false,
3619
+ "single_word": false,
3620
+ "special": false
3621
+ },
3622
+ "130502": {
3623
+ "content": "<unused_token_420>",
3624
+ "lstrip": false,
3625
+ "normalized": true,
3626
+ "rstrip": false,
3627
+ "single_word": false,
3628
+ "special": false
3629
+ },
3630
+ "130503": {
3631
+ "content": "<unused_token_421>",
3632
+ "lstrip": false,
3633
+ "normalized": true,
3634
+ "rstrip": false,
3635
+ "single_word": false,
3636
+ "special": false
3637
+ },
3638
+ "130504": {
3639
+ "content": "<unused_token_422>",
3640
+ "lstrip": false,
3641
+ "normalized": true,
3642
+ "rstrip": false,
3643
+ "single_word": false,
3644
+ "special": false
3645
+ },
3646
+ "130505": {
3647
+ "content": "<unused_token_423>",
3648
+ "lstrip": false,
3649
+ "normalized": true,
3650
+ "rstrip": false,
3651
+ "single_word": false,
3652
+ "special": false
3653
+ },
3654
+ "130506": {
3655
+ "content": "<unused_token_424>",
3656
+ "lstrip": false,
3657
+ "normalized": true,
3658
+ "rstrip": false,
3659
+ "single_word": false,
3660
+ "special": false
3661
+ },
3662
+ "130507": {
3663
+ "content": "<unused_token_425>",
3664
+ "lstrip": false,
3665
+ "normalized": true,
3666
+ "rstrip": false,
3667
+ "single_word": false,
3668
+ "special": false
3669
+ },
3670
+ "130508": {
3671
+ "content": "<unused_token_426>",
3672
+ "lstrip": false,
3673
+ "normalized": true,
3674
+ "rstrip": false,
3675
+ "single_word": false,
3676
+ "special": false
3677
+ },
3678
+ "130509": {
3679
+ "content": "<unused_token_427>",
3680
+ "lstrip": false,
3681
+ "normalized": true,
3682
+ "rstrip": false,
3683
+ "single_word": false,
3684
+ "special": false
3685
+ },
3686
+ "130510": {
3687
+ "content": "<unused_token_428>",
3688
+ "lstrip": false,
3689
+ "normalized": true,
3690
+ "rstrip": false,
3691
+ "single_word": false,
3692
+ "special": false
3693
+ },
3694
+ "130511": {
3695
+ "content": "<unused_token_429>",
3696
+ "lstrip": false,
3697
+ "normalized": true,
3698
+ "rstrip": false,
3699
+ "single_word": false,
3700
+ "special": false
3701
+ },
3702
+ "130512": {
3703
+ "content": "<unused_token_430>",
3704
+ "lstrip": false,
3705
+ "normalized": true,
3706
+ "rstrip": false,
3707
+ "single_word": false,
3708
+ "special": false
3709
+ },
3710
+ "130513": {
3711
+ "content": "<unused_token_431>",
3712
+ "lstrip": false,
3713
+ "normalized": true,
3714
+ "rstrip": false,
3715
+ "single_word": false,
3716
+ "special": false
3717
+ },
3718
+ "130514": {
3719
+ "content": "<unused_token_432>",
3720
+ "lstrip": false,
3721
+ "normalized": true,
3722
+ "rstrip": false,
3723
+ "single_word": false,
3724
+ "special": false
3725
+ },
3726
+ "130515": {
3727
+ "content": "<unused_token_433>",
3728
+ "lstrip": false,
3729
+ "normalized": true,
3730
+ "rstrip": false,
3731
+ "single_word": false,
3732
+ "special": false
3733
+ },
3734
+ "130516": {
3735
+ "content": "<unused_token_434>",
3736
+ "lstrip": false,
3737
+ "normalized": true,
3738
+ "rstrip": false,
3739
+ "single_word": false,
3740
+ "special": false
3741
+ },
3742
+ "130517": {
3743
+ "content": "<unused_token_435>",
3744
+ "lstrip": false,
3745
+ "normalized": true,
3746
+ "rstrip": false,
3747
+ "single_word": false,
3748
+ "special": false
3749
+ },
3750
+ "130518": {
3751
+ "content": "<unused_token_436>",
3752
+ "lstrip": false,
3753
+ "normalized": true,
3754
+ "rstrip": false,
3755
+ "single_word": false,
3756
+ "special": false
3757
+ },
3758
+ "130519": {
3759
+ "content": "<unused_token_437>",
3760
+ "lstrip": false,
3761
+ "normalized": true,
3762
+ "rstrip": false,
3763
+ "single_word": false,
3764
+ "special": false
3765
+ },
3766
+ "130520": {
3767
+ "content": "<unused_token_438>",
3768
+ "lstrip": false,
3769
+ "normalized": true,
3770
+ "rstrip": false,
3771
+ "single_word": false,
3772
+ "special": false
3773
+ },
3774
+ "130521": {
3775
+ "content": "<unused_token_439>",
3776
+ "lstrip": false,
3777
+ "normalized": true,
3778
+ "rstrip": false,
3779
+ "single_word": false,
3780
+ "special": false
3781
+ },
3782
+ "130522": {
3783
+ "content": "<unused_token_440>",
3784
+ "lstrip": false,
3785
+ "normalized": true,
3786
+ "rstrip": false,
3787
+ "single_word": false,
3788
+ "special": false
3789
+ },
3790
+ "130523": {
3791
+ "content": "<unused_token_441>",
3792
+ "lstrip": false,
3793
+ "normalized": true,
3794
+ "rstrip": false,
3795
+ "single_word": false,
3796
+ "special": false
3797
+ },
3798
+ "130524": {
3799
+ "content": "<unused_token_442>",
3800
+ "lstrip": false,
3801
+ "normalized": true,
3802
+ "rstrip": false,
3803
+ "single_word": false,
3804
+ "special": false
3805
+ },
3806
+ "130525": {
3807
+ "content": "<unused_token_443>",
3808
+ "lstrip": false,
3809
+ "normalized": true,
3810
+ "rstrip": false,
3811
+ "single_word": false,
3812
+ "special": false
3813
+ },
3814
+ "130526": {
3815
+ "content": "<unused_token_444>",
3816
+ "lstrip": false,
3817
+ "normalized": true,
3818
+ "rstrip": false,
3819
+ "single_word": false,
3820
+ "special": false
3821
+ },
3822
+ "130527": {
3823
+ "content": "<unused_token_445>",
3824
+ "lstrip": false,
3825
+ "normalized": true,
3826
+ "rstrip": false,
3827
+ "single_word": false,
3828
+ "special": false
3829
+ },
3830
+ "130528": {
3831
+ "content": "<unused_token_446>",
3832
+ "lstrip": false,
3833
+ "normalized": true,
3834
+ "rstrip": false,
3835
+ "single_word": false,
3836
+ "special": false
3837
+ },
3838
+ "130529": {
3839
+ "content": "<unused_token_447>",
3840
+ "lstrip": false,
3841
+ "normalized": true,
3842
+ "rstrip": false,
3843
+ "single_word": false,
3844
+ "special": false
3845
+ },
3846
+ "130530": {
3847
+ "content": "<unused_token_448>",
3848
+ "lstrip": false,
3849
+ "normalized": true,
3850
+ "rstrip": false,
3851
+ "single_word": false,
3852
+ "special": false
3853
+ },
3854
+ "130531": {
3855
+ "content": "<unused_token_449>",
3856
+ "lstrip": false,
3857
+ "normalized": true,
3858
+ "rstrip": false,
3859
+ "single_word": false,
3860
+ "special": false
3861
+ },
3862
+ "130532": {
3863
+ "content": "<unused_token_450>",
3864
+ "lstrip": false,
3865
+ "normalized": true,
3866
+ "rstrip": false,
3867
+ "single_word": false,
3868
+ "special": false
3869
+ },
3870
+ "130533": {
3871
+ "content": "<unused_token_451>",
3872
+ "lstrip": false,
3873
+ "normalized": true,
3874
+ "rstrip": false,
3875
+ "single_word": false,
3876
+ "special": false
3877
+ },
3878
+ "130534": {
3879
+ "content": "<unused_token_452>",
3880
+ "lstrip": false,
3881
+ "normalized": true,
3882
+ "rstrip": false,
3883
+ "single_word": false,
3884
+ "special": false
3885
+ },
3886
+ "130535": {
3887
+ "content": "<unused_token_453>",
3888
+ "lstrip": false,
3889
+ "normalized": true,
3890
+ "rstrip": false,
3891
+ "single_word": false,
3892
+ "special": false
3893
+ },
3894
+ "130536": {
3895
+ "content": "<unused_token_454>",
3896
+ "lstrip": false,
3897
+ "normalized": true,
3898
+ "rstrip": false,
3899
+ "single_word": false,
3900
+ "special": false
3901
+ },
3902
+ "130537": {
3903
+ "content": "<unused_token_455>",
3904
+ "lstrip": false,
3905
+ "normalized": true,
3906
+ "rstrip": false,
3907
+ "single_word": false,
3908
+ "special": false
3909
+ },
3910
+ "130538": {
3911
+ "content": "<unused_token_456>",
3912
+ "lstrip": false,
3913
+ "normalized": true,
3914
+ "rstrip": false,
3915
+ "single_word": false,
3916
+ "special": false
3917
+ },
3918
+ "130539": {
3919
+ "content": "<unused_token_457>",
3920
+ "lstrip": false,
3921
+ "normalized": true,
3922
+ "rstrip": false,
3923
+ "single_word": false,
3924
+ "special": false
3925
+ },
3926
+ "130540": {
3927
+ "content": "<unused_token_458>",
3928
+ "lstrip": false,
3929
+ "normalized": true,
3930
+ "rstrip": false,
3931
+ "single_word": false,
3932
+ "special": false
3933
+ },
3934
+ "130541": {
3935
+ "content": "<unused_token_459>",
3936
+ "lstrip": false,
3937
+ "normalized": true,
3938
+ "rstrip": false,
3939
+ "single_word": false,
3940
+ "special": false
3941
+ },
3942
+ "130542": {
3943
+ "content": "<unused_token_460>",
3944
+ "lstrip": false,
3945
+ "normalized": true,
3946
+ "rstrip": false,
3947
+ "single_word": false,
3948
+ "special": false
3949
+ },
3950
+ "130543": {
3951
+ "content": "<unused_token_461>",
3952
+ "lstrip": false,
3953
+ "normalized": true,
3954
+ "rstrip": false,
3955
+ "single_word": false,
3956
+ "special": false
3957
+ },
3958
+ "130544": {
3959
+ "content": "<unused_token_462>",
3960
+ "lstrip": false,
3961
+ "normalized": true,
3962
+ "rstrip": false,
3963
+ "single_word": false,
3964
+ "special": false
3965
+ },
3966
+ "130545": {
3967
+ "content": "<unused_token_463>",
3968
+ "lstrip": false,
3969
+ "normalized": true,
3970
+ "rstrip": false,
3971
+ "single_word": false,
3972
+ "special": false
3973
+ },
3974
+ "130546": {
3975
+ "content": "<unused_token_464>",
3976
+ "lstrip": false,
3977
+ "normalized": true,
3978
+ "rstrip": false,
3979
+ "single_word": false,
3980
+ "special": false
3981
+ },
3982
+ "130547": {
3983
+ "content": "<unused_token_465>",
3984
+ "lstrip": false,
3985
+ "normalized": true,
3986
+ "rstrip": false,
3987
+ "single_word": false,
3988
+ "special": false
3989
+ },
3990
+ "130548": {
3991
+ "content": "<unused_token_466>",
3992
+ "lstrip": false,
3993
+ "normalized": true,
3994
+ "rstrip": false,
3995
+ "single_word": false,
3996
+ "special": false
3997
+ },
3998
+ "130549": {
3999
+ "content": "<unused_token_467>",
4000
+ "lstrip": false,
4001
+ "normalized": true,
4002
+ "rstrip": false,
4003
+ "single_word": false,
4004
+ "special": false
4005
+ },
4006
+ "130550": {
4007
+ "content": "<unused_token_468>",
4008
+ "lstrip": false,
4009
+ "normalized": true,
4010
+ "rstrip": false,
4011
+ "single_word": false,
4012
+ "special": false
4013
+ },
4014
+ "130551": {
4015
+ "content": "<unused_token_469>",
4016
+ "lstrip": false,
4017
+ "normalized": true,
4018
+ "rstrip": false,
4019
+ "single_word": false,
4020
+ "special": false
4021
+ },
4022
+ "130552": {
4023
+ "content": "<unused_token_470>",
4024
+ "lstrip": false,
4025
+ "normalized": true,
4026
+ "rstrip": false,
4027
+ "single_word": false,
4028
+ "special": false
4029
+ },
4030
+ "130553": {
4031
+ "content": "<unused_token_471>",
4032
+ "lstrip": false,
4033
+ "normalized": true,
4034
+ "rstrip": false,
4035
+ "single_word": false,
4036
+ "special": false
4037
+ },
4038
+ "130554": {
4039
+ "content": "<unused_token_472>",
4040
+ "lstrip": false,
4041
+ "normalized": true,
4042
+ "rstrip": false,
4043
+ "single_word": false,
4044
+ "special": false
4045
+ },
4046
+ "130555": {
4047
+ "content": "<unused_token_473>",
4048
+ "lstrip": false,
4049
+ "normalized": true,
4050
+ "rstrip": false,
4051
+ "single_word": false,
4052
+ "special": false
4053
+ },
4054
+ "130556": {
4055
+ "content": "<unused_token_474>",
4056
+ "lstrip": false,
4057
+ "normalized": true,
4058
+ "rstrip": false,
4059
+ "single_word": false,
4060
+ "special": false
4061
+ },
4062
+ "130557": {
4063
+ "content": "<unused_token_475>",
4064
+ "lstrip": false,
4065
+ "normalized": true,
4066
+ "rstrip": false,
4067
+ "single_word": false,
4068
+ "special": false
4069
+ },
4070
+ "130558": {
4071
+ "content": "<unused_token_476>",
4072
+ "lstrip": false,
4073
+ "normalized": true,
4074
+ "rstrip": false,
4075
+ "single_word": false,
4076
+ "special": false
4077
+ },
4078
+ "130559": {
4079
+ "content": "<unused_token_477>",
4080
+ "lstrip": false,
4081
+ "normalized": true,
4082
+ "rstrip": false,
4083
+ "single_word": false,
4084
+ "special": false
4085
+ }
4086
+ },
4087
+ "bos_token": "<s>",
4088
+ "clean_up_tokenization_spaces": false,
4089
+ "eos_token": "</s>",
4090
+ "extra_special_tokens": {},
4091
+ "legacy": true,
4092
+ "model_max_length": 1000000000000000019884624838656,
4093
+ "pad_token": "</s>",
4094
+ "sp_model_kwargs": {},
4095
+ "spaces_between_special_tokens": false,
4096
+ "tokenizer_class": "PreTrainedTokenizerFast",
4097
+ "unk_token": "<unk>",
4098
+ "use_default_system_prompt": false
4099
+ }
artifacts/quest-lora/training-recipe.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "type": "lora_training_recipe",
3
+ "base_model": "openbmb/MiniCPM5-1B",
4
+ "adapter_task": "hackathon_advisor_quest_classification",
5
+ "method": "LoRA SFT (completion-only loss)",
6
+ "example_count": 146,
7
+ "epochs": 6.0,
8
+ "rank": 16,
9
+ "alpha": 32,
10
+ "dropout": 0.05,
11
+ "learning_rate": 0.0002,
12
+ "max_seq_length": 2560,
13
+ "target_modules": [
14
+ "down_proj",
15
+ "gate_proj",
16
+ "k_proj",
17
+ "o_proj",
18
+ "q_proj",
19
+ "up_proj",
20
+ "v_proj"
21
+ ],
22
+ "gpu": "A10G"
23
+ }
data/quest_corpus.json ADDED
The diff for this file is too large to render. See raw diff
 
data/quest_dataset_card.md ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ task_categories:
4
+ - text-classification
5
+ - text-generation
6
+ language:
7
+ - en
8
+ tags:
9
+ - hackathon-advisor
10
+ - quest-classification
11
+ - lora-sft
12
+ - minicpm5
13
+ pretty_name: Hackathon Advisor Quest Classification SFT
14
+ size_categories:
15
+ - n<1K
16
+ ---
17
+
18
+ # Hackathon Advisor — Quest Classification SFT Dataset
19
+
20
+ Supervised fine-tuning data that teaches MiniCPM5-1B to classify a Build Small
21
+ Hackathon project against 13 judging dimensions from a two-segment README + app-file
22
+ prompt, emitting strict JSON with short, source-attributed evidence. Trains the LoRA at
23
+ [`build-small-hackathon/hackathon-advisor-quest-minicpm5-lora`](https://huggingface.co/build-small-hackathon/hackathon-advisor-quest-minicpm5-lora).
24
+
25
+ ## Format (`quest_sft.jsonl`)
26
+
27
+ Chat-JSONL. The **first line** is a `lora_sft_manifest`; every following line is a
28
+ `lora_sft_example` with a `messages` list (system / user / assistant). The assistant
29
+ turn is exactly one JSON object:
30
+
31
+ ```json
32
+ {"matches":[{"quest":"...","confidence":0.0,"evidence":"...","source":"readme|app_file"}]}
33
+ ```
34
+
35
+ No markdown, no prose, no renamed quests; an empty `matches` list when no dimension has
36
+ clear evidence. The user turn splits the project into a `[README]` segment and an
37
+ `[APP_FILE]` segment so the model judges product description and implementation
38
+ evidence separately and attributes each match to its source.
39
+
40
+ ## Quest dimensions (13)
41
+
42
+ Six merit badges (Off the Grid, Well-Tuned, Off-Brand, Llama Champion, Sharing is
43
+ Caring, Field Notes), two tracks (Backyard AI, Thousand Token Wood), and five
44
+ sponsor / special awards (OpenBMB, Nemotron, Modal, Tiny Titan, Best Agent).
45
+
46
+ ## Examples: 156 (14 with empty matches)
47
+
48
+ | variant | count |
49
+ | --- | --- |
50
+ | natural | 108 |
51
+ | app_only | 16 |
52
+ | missing_app_file | 16 |
53
+ | noisy_metadata | 8 |
54
+ | contradiction | 6 |
55
+ | empty | 2 |
56
+
57
+ Positive examples per quest:
58
+
59
+ | quest | examples |
60
+ | --- | --- |
61
+ | Off the Grid | 87 |
62
+ | Off-Brand | 59 |
63
+ | Tiny Titan | 58 |
64
+ | Thousand Token Wood | 49 |
65
+ | Llama Champion | 35 |
66
+ | Backyard AI | 35 |
67
+ | Well-Tuned | 31 |
68
+ | OpenBMB | 26 |
69
+ | Sharing is Caring | 19 |
70
+ | Nemotron | 18 |
71
+ | Field Notes | 15 |
72
+ | Modal | 14 |
73
+ | Best Agent | 14 |
74
+
75
+ ## Provenance
76
+
77
+ Built from the real public Spaces of the `build-small-hackathon` org: 125 crawled
78
+ projects → deduped + length-filtered to 108 content-rich ones → labelled by a
79
+ teacher-then-adversarial-verifier multi-agent workflow → plus targeted augmentations
80
+ (app-only, readme-only / missing app file, README↔app contradictions, empty matches,
81
+ noisy metadata). `labeled.json` holds the per-project verified labels. Examples are
82
+ derived from public hackathon submissions for research and hackathon use; each project
83
+ remains under its own Space license.
data/quest_label_input.json ADDED
The diff for this file is too large to render. See raw diff
 
data/quest_labels/in/AI-Puppet-Theater.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/AI-Puppet-Theater",
3
+ "slug": "AI-Puppet-Theater",
4
+ "title": "AI Puppet Theater",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "AI Puppet Theater is a public Gradio Space for building short interactive puppet shows from a user premise.",
13
+ "APP_FILE": "from html import escape\nfrom time import sleep\nfrom puppet_theater import (\n\nfrom html import escape\nimport os\nfrom time import sleep\n\nimport gradio as gr\n\nfrom puppet_theater import (\n DEFAULT_OPENBMB_MODEL_ID,\n TheaterSession,\n create_show_from_premise,\n get_backend_status,\n request_finale,\n run_one_beat,\n summon_actor,\n throw_prop,\n warm_up_openbmb,\n)\n\n\nEMPTY_STAGE = \"\"\"\n<div class=\"puppet-stage stage-empty\">\n <div class=\"stage-valance\"></div>\n <div class=\"stage-backdrop\">\n <div class=\"stage-marquee\">AI Puppet Theater</div>\n <div class=\"empty-stage-copy\">Enter a premise and raise the curtain.</div>\n </div>\n <div class=\"stage-floorboards\"></div>\n</div>\n\"\"\"\n\nEMPTY_TRANSCRIPT = \"No show yet. The transcript will appear here.\"\nEMPTY_DIRECTOR_LOG = \"No director notes yet.\"\nEMPTY_TRACE = \"No trace events yet.\"\nEMPTY_BACKEND = (\n \"Active backend: deterministic\\n\"\n \"OpenBMB model id: openbmb/MiniCPM5-1B\\n\"\n \"Model status: unloaded\\n\"\n \"Fallback: deterministic safety path enabled\"\n)\nBACKEND_CHOICES = [\"deterministic\", \"openbmb\"]\nOPENBMB_MODEL_ID = os.getenv(\"OPENBMB_MODEL_ID\", DEFAULT_OPENBMB_MODEL_ID)\nDEFAULT_MAX_NEW_TOKENS = 80\nDEFAULT_TEMPERATURE = 0.8\nPLAYBACK_DELAY_SECONDS = 0.75\nPROP_EMOJI = {\n \"rubber duck\": \"🐤\",\n \"duck\": \"🐤\",\n \"egg\": \"🥚\",\n \"flowers\": \"💐\",\n \"flower\": \"💐\",\n \"tomato\": \"🍅\",\n \"crown\": \"👑\",\n \"tiny crown\": \"👑\",\n \"scroll\": \"📜\",\n \"banana\": \"🍌\",\n \"mirror\": \"🪞\",\n}\n\nCUSTOM_CSS = \"\"\"\nbody,\n.gradio-container {\n background:\n radial-gradient(circle at 50% 0%, rgba(127, 29, 29, 0.18), transparent 28rem),\n linear-gradient(180deg, #0b1020 0%, #070914 100%) !important;\n color: #f8efe4 !important;\n}\n.gradio-container {\n max-width: 1180px !important;\n padding-top: 1rem !important;\n font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \" ..."
14
+ }
data/quest_labels/in/AI-agent-Evaluation-pipeline.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/AI-agent-Evaluation-pipeline",
3
+ "slug": "AI-agent-Evaluation-pipeline",
4
+ "title": "ai agent evaluation pipeline",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "agents",
9
+ "evaluation",
10
+ "gradio",
11
+ "llm",
12
+ "observability"
13
+ ],
14
+ "app_file": "app.py",
15
+ "README": "# 🧪 AI Agent Evaluation Pipeline > Evaluate AI agents at **Session**, **Trace**, and **Span** levels — inspired by [Amazon Bedrock AgentCore Evaluations](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/evaluations.html) ## Overview This tool provides a structured framework for evaluating AI agent conversations using the same three-level hierarchy as Amazon Bedrock AgentCore Evaluations: ``` 📦 Session → Did the agent achieve the user's overall goal? └── 🔄 Trace → Per-turn quality (helpfulness, coherence, relevance...) └── 🔧 Span → Per tool-call accuracy ``` ## Features - **14 built-in evaluators** (1 session + 11 trace + 2 span) - **Heuristic mode** — works offline, no API key required - **3 demo traces** (Simple Q&A, Tool Calling, Multi-turn) - **Ground truth support** — `expected_response`, `expected_trajectory`, `assertions` - **Visual results** — radar chart, bar chart, heatmap, score cards ## Evaluators ### 📦 Session Level (1) | Evaluator | Description | | ----------------- | --------------------------------------------------- | | Goal Success Rate | Did the agent fully achieve the user's stated goal? | ### 🔄 Trace Level (11) | Evaluator | Description | | ----------------------- | ----------------------------------------------------------- | | Helpfulness | Does the response help the user progress toward their goal? | | Correctness | Is the response factually correct? | | Coherence | Is the reasoning logically consistent and well-structured? | | Conciseness ...",
16
+ "APP_FILE": "from pathlib import Path\nfrom src.evaluators import (\nfrom src.llm_judge import LLMJudge\nfrom src.models import EvalLevel, EvalMode, GroundTruth\nfrom src.parser import format_trace_tree, parse_trace\nfrom src.reliability import compute_reliability\nfrom src.runner import EvalRunner\nfrom src.visualizer import create_bar_chart, create_radar_chart, create_trace_timeline\nfrom urllib.parse import urlparse\nfrom huggingface_hub import hf_hub_download\n\n#!/usr/bin/env python3\n\"\"\"\nAI Agent Evaluation Pipeline — Gradio MVP\n==========================================\nEvaluate AI agents at 3 hierarchical levels, inspired by\nAmazon Bedrock AgentCore Evaluations.\n\n 📦 Session — Did the agent achieve the user's goal?\n 🔄 Trace — Per-turn quality (11 evaluators)\n 🔧 Span — Per tool-call accuracy (2 evaluators)\n\nRun locally : python app.py\nHuggingFace : app_file = app.py (Gradio SDK)\n\"\"\"\n\nimport json\nimport os\nimport sys\nfrom pathlib import Path\n\n# Ensure src/ is importable whether run from repo root or HF Spaces\n_ROOT = Path(__file__).parent\nsys.path.insert(0, str(_ROOT))\n\nimport gradio as gr\n\n# HF ZeroGPU Spaces require at least one @spaces.GPU-decorated function\n# to be detected at module load. The actual evaluation and dataset\n# generation work in this app uses the cloud InferenceClient and runs\n# without local GPU compute; the placeholder below exists only to\n# satisfy the runtime's static check. `spaces` is pre-installed on\n# ZeroGPU hardware; we guard the import so the app still loads if it\n# is missing (e.g. local CPU dev).\ntry:\n import spaces as _spaces\nexcept ImportError:\n class _spaces_stub:\n @staticmethod\n def GPU(fn, duration: int = 60):\n return fn\n _spaces = _spaces_stub()\n\n\n@_spaces.GPU\ndef _zero_gpu_healthcheck() -> dict:\n \"\"\"Placeholder GPU function detected by the ZeroGPU runtime.\"\"\"\n try:\n import torch\n retu ..."
17
+ }
data/quest_labels/in/Advent_of_a_World_of_Flowering_Trees.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Advent_of_a_World_of_Flowering_Trees",
3
+ "slug": "Advent_of_a_World_of_Flowering_Trees",
4
+ "title": "Advent Of A World Of Flowering Trees",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference ## For development: first download uv and hf cli tool ```bash uv venv --python 3.13 --seed ``` then activate the virtual env .venv ```bash source .venv/Scripts/activate ``` then download dependencies ```python python -m pip install -r requirements.txt ``` then play around and change code..",
13
+ "APP_FILE": "from huggingface_hub import hf_hub_download\nfrom llama_cpp import Llama\n\nimport gradio as gr\nimport spaces\nfrom huggingface_hub import hf_hub_download\nimport os\nimport ctypes\n\n\nMODEL_REPO_ID = \"CohereLabs/tiny-aya-global-GGUF\"\nMODEL_FILENAME = \"tiny-aya-global-q4_k_m.gguf\"\n\nmodel_path = hf_hub_download(\n repo_id=MODEL_REPO_ID,\n filename=MODEL_FILENAME,\n)\n\n_llm = None\n\n# try:\n# import nvidia.cuda_runtime\n# import nvidia.cublas\n# cudart = os.path.join(os.path.dirname(nvidia.cuda_runtime.__file__), \"lib\", \"libcudart.so.12\")\n# cublas = os.path.join(os.path.dirname(nvidia.cublas.__file__), \"lib\", \"libcublas.so.12\")\n# ctypes.CDLL(cudart, mode=ctypes.RTLD_GLOBAL)\n# ctypes.CDLL(cublas, mode=ctypes.RTLD_GLOBAL)\n# except Exception:\n# pass\n\ndef get_llm():\n global _llm\n if _llm is None:\n from llama_cpp import Llama\n\n _llm = Llama(\n model_path=model_path,\n n_gpu_layers=-1,\n n_ctx=1024,\n flash_attn=True,\n verbose=False,\n )\n return _llm\n\n\n@spaces.GPU(duration=120)\ndef run_inference(prompt: str) -> str:\n prompt = prompt.strip()\n if not prompt:\n return \"Enter a prompt to generate a response.\"\n\n try:\n llm = get_llm()\n except Exception as exc:\n return f\"llama-cpp initialization failed: {exc}\"\n\n response = llm.create_chat_completion(\n messages=[{\"role\": \"user\", \"content\": prompt}],\n max_tokens=512,\n temperature=0.7,\n )\n return response[\"choices\"][0][\"message\"][\"content\"].strip()\n\n\nwith gr.Blocks(title=\"Advent Of A World Of Flowering Trees\") as demo:\n gr.Markdown(\"# Advent Of A World Of Flowering Trees\")\n gr.Markdown(\"Tiny Aya GGUF demo running with `llama-cpp-python`.\")\n\n prompt = gr.Textbox(\n label=\"Prompt\",\n lines=6,\n placeholder=\"Ask something...\",\n )\n output = gr.Textbo ..."
14
+ }
data/quest_labels/in/Backyard-Demo-Builder.json ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Backyard-Demo-Builder",
3
+ "slug": "Backyard-Demo-Builder",
4
+ "title": "Backyard Demo Builder",
5
+ "sdk": "gradio",
6
+ "declared_models": [
7
+ "unsloth/gemma-4-12B-it-qat-GGUF",
8
+ "Qwen/Qwen2.5-7B-Instruct",
9
+ "nvidia/Nemotron-3.5-Content-Safety"
10
+ ],
11
+ "tags": [
12
+ "agents",
13
+ "ai-agents",
14
+ "backyard-ai",
15
+ "build-small-hackathon",
16
+ "demo-builder",
17
+ "gradio",
18
+ "real-estate",
19
+ "small-language-model"
20
+ ],
21
+ "app_file": "app.py",
22
+ "README": "# Backyard Demo Builder ## Chapter 1: Backyard AI *Build Small Hackathon 2026 — Chapter 1 Submission* `agent-swarm-workbench` now presents as **Backyard Demo Builder**: a Gradio app that turns one real person's workflow into a small runnable demo package before anyone pays to build full software. First backyard case: my mom, a real-estate agent. She needs a cheap way to test a customer follow-up reminder workflow before committing time and money to a full app. --- ## Watch the Demo Builder Work ``` You: \"Build a real-estate follow-up CRM demo for my mom.\" Builder: Generates a Gradio mini-app, handoff spec, field notes, and checks Result: app.py, README.md, handoff_spec.md, field_notes.md Mom: Tests the workflow, then we scrap or scale. ``` Every Run produces a **downloadable demo package** and Validation report: files you can inspect, unzip, run, and test with the real person. --- ## Build Small Hackathon — Submission Notes | Requirement | How We Meet It | |---|---| | **Small model (≤ 32B)** | Provider catalog fetches models at runtime and only allows models whose ID/name proves ≤32B | | **Gradio app** | Custom dark-themed Gradio UI mounted on FastAPI | | **HF Space** | `app.py` + `requirements.txt` — one-command deploy | | **Demo video** | *(placeholder — [link to demo])* | | **Social post** | *(placeholder — [link to post])* | ### Bonus Badges Claimed | Badge | Why | |---|---| | **🎨 Off-Brand** | Fully custom CSS dark theme — Archivo + IBM Plex Mono, acid green CTAs, paper/ ...",
23
+ "APP_FILE": "from __future__ import annotations\nfrom arena.api import app as fastapi_app\nfrom arena.api import service\nfrom arena.gradio_app import RunOutputs, build_app, create_run_gpu as _create_run_gpu\n\n\"\"\"Unified ASGI entrypoint for API and Gradio UI.\"\"\"\n\nfrom __future__ import annotations\n\nimport os\n\nimport gradio as gr\nimport uvicorn\n\ntry:\n import spaces\nexcept Exception:\n class _SpacesShim:\n def GPU(self, fn=None, **kwargs):\n del kwargs\n\n def decorator(inner):\n return inner\n\n return decorator(fn) if fn else decorator\n\n spaces = _SpacesShim()\n\n\nfrom arena.api import app as fastapi_app\nfrom arena.api import service\nfrom arena.gradio_app import RunOutputs, build_app, create_run_gpu as _create_run_gpu\n\n\n@spaces.GPU(duration=120)\ndef create_run_gpu(\n prompt: str,\n criteria_text: str,\n user_tests_text: str,\n provider: str = \"openrouter\",\n model: str = \"\",\n api_key: str = \"\",\n base_url: str = \"\",\n) -> RunOutputs:\n return _create_run_gpu(\n prompt,\n criteria_text,\n user_tests_text,\n provider,\n model,\n api_key,\n base_url,\n )\n\n\n@spaces.GPU\ndef zerogpu_ready_marker() -> str:\n return \"ready\"\n\n\ndemo = build_app(service, create_run_handler=create_run_gpu)\n\n\ndef create_app():\n \"\"\"Create one FastAPI ASGI app with Gradio mounted at the root.\"\"\"\n\n return gr.mount_gradio_app(fastapi_app, demo, path=\"/\")\n\n\napp = create_app()\n\n\ndef server_config() -> dict[str, int | str]:\n host = os.getenv(\"GRADIO_SERVER_NAME\", os.getenv(\"HOST\", \"0.0.0.0\"))\n port = int(os.getenv(\"GRADIO_SERVER_PORT\") or os.getenv(\"PORT\") or \"7860\")\n return {\"host\": host, \"port\": port}\n\n\ndef gradio_launch_config() -> dict[str, bool | int | str]:\n config = server_config()\n port = int(os.getenv(\"GRADIO_SERVER_PORT\") or os.getenv(\"PORT\") or \"7860\")\n return {\"server_nam ..."
24
+ }
data/quest_labels/in/Case-Lantern.json ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Case-Lantern",
3
+ "slug": "Case-Lantern",
4
+ "title": "Case Lantern",
5
+ "sdk": "gradio",
6
+ "declared_models": [
7
+ "lastmass/Qwen3.5-Medical-GSPO"
8
+ ],
9
+ "tags": [
10
+ "gradio",
11
+ "region:us"
12
+ ],
13
+ "app_file": "app.py",
14
+ "README": "# 🏮 Case Lantern Short Demo Video: https://youtu.be/Bf3t5Cq6XuA Case Lantern is a fictional medical mystery game for the [Build Small Hackathon](https://huggingface.co/build-small-hackathon). Players investigate a short Chinese case, request clues, avoid red herrings, and submit a diagnosis within six turns. The experience uses [`lastmass/Qwen3.5-Medical-GSPO`](https://huggingface.co/lastmass/Qwen3.5-Medical-GSPO), a small Chinese medical reasoning model with roughly 4.66B parameters, as the game master and scorer. Inference runs locally via **llama.cpp** (GGUF Q4_K_M). ## Track & Merit Badges | Item | Detail | |------|--------| | Track | An Adventure in Thousand Token Wood | | AI role | Load-bearing game master, clue writer, and scoring judge | | Constraint | Small model under 32B parameters | | UI | Gradio Space with custom dark frontend | | Badge | Status | |-------|--------| | 🏕️ Off the Grid (LOCAL-FIRST) | ✅ Model runs locally in the Space | | 🎸 Well-Tuned (FINE-TUNED) | ✅ Uses fine-tuned model published on HF | | 🦙 Llama Champion | ✅ Runs via llama.cpp runtime | | 🎨 Off-Brand (CUSTOM UI) | ✅ Dark glassmorphism theme, custom CSS | ## Safety framing This is not a diagnosis or treatment tool. It only uses fictional cases for learning-oriented gameplay. Users are explicitly asked not to provide personal health information. ## Deployment notes The app is designed for **free CPU Spaces** on Hugging Face. It does not require a GPU. The GGUF model (~2.78 GB, Q4_K_M) is downloa ...",
15
+ "APP_FILE": "from dataclasses import dataclass, field\nfrom functools import lru_cache\nfrom typing import Dict, List, Optional\nfrom llama_cpp import Llama # noqa: delayed import\n\n\"\"\"Case Lantern — a fictional medical mystery game powered by a small Chinese\nmedical reasoning model.\n\nBackend : llama-cpp-python (GGUF, runs on free CPU Spaces)\nFrontend : fully custom dark theme with glassmorphism & micro-animations\nModel : lastmass/Qwen3.5-Medical-GSPO (~4.66 B params, Q4_K_M quant)\n\"\"\"\n\nimport os\nimport random\nimport re\nimport textwrap\nfrom dataclasses import dataclass, field\nfrom functools import lru_cache\nfrom typing import Dict, List, Optional\n\nimport gradio as gr\n\n# ---------------------------------------------------------------------------\n# Configuration\n# ---------------------------------------------------------------------------\n# Display model (shown in UI)\nDISPLAY_MODEL_ID = \"lastmass/Qwen3.5-Medical-GSPO\"\n# GGUF repo used for actual inference (quantised by mradermacher)\nGGUF_REPO = \"mradermacher/Qwen3.5-Medical-GSPO-GGUF\"\nGGUF_FILE = \"Qwen3.5-Medical-GSPO.Q4_K_M.gguf\"\n\nDEMO_MODE = os.getenv(\"DEMO_MODE\", \"auto\").lower()\nMAX_NEW_TOKENS = int(os.getenv(\"MAX_NEW_TOKENS\", \"420\"))\n\nDISCLAIMER = (\n \"Fictional training game only. This app does not provide medical advice, \"\n \"diagnosis, triage, or treatment guidance for real people.\"\n)\n\n# ---------------------------------------------------------------------------\n# System prompt\n# ---------------------------------------------------------------------------\nSYSTEM_PROMPT = \"\"\"You are Case Lantern, a playful but careful medical mystery game master.\nCreate and run fictional Chinese medical reasoning puzzles for education and entertainment.\n\nRules:\n- Never present output as real medical advice.\n- Keep all patients fictional.\n- Do not ask users to share real personal health information.\n- Make the game delightful, concise, an ..."
16
+ }
data/quest_labels/in/CodeFlow.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/CodeFlow",
3
+ "slug": "CodeFlow",
4
+ "title": "CodeFlow",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from huggingface_hub import hf_hub_download\nfrom llama_cpp import Llama\nfrom gradio import Server\nfrom fastapi.responses import HTMLResponse # serve the custom frontend from a route\nfrom typing import Any, cast # to resolve PyLance freaking out over llama-cpp-python in the generate_flowchart function\nfrom textwrap import dedent\n\n\"\"\"\n3. Graph. Capture the resulting mermaid string and visualize it\n\nTo do\n- create the custom gradio look\n- explore making it look better\n- get a better model — Qwen 30b coder\n- use zerogpu\n\n\"\"\"\nfrom huggingface_hub import hf_hub_download\nfrom llama_cpp import Llama\nimport gradio as gr\nfrom gradio import Server\nfrom fastapi.responses import HTMLResponse # serve the custom frontend from a route\nfrom typing import Any, cast # to resolve PyLance freaking out over llama-cpp-python in the generate_flowchart function\nfrom textwrap import dedent\nimport re # remove thinking tag from response \n\n\n\n out = []\n for line in text.split('\\n'):\n line = re.sub(r'(?<=\\w)\\[(.*?)\\]' + END, lambda m: '[\"' + esc(m.group(1)) + '\"]', line)\n line = re.sub(r'(?<=\\w)\\{(.*?)\\}' + END, lambda m: '{\"' + esc(m.group(1)) + '\"}', line)\n out.append(line)\n return '\\n'.join(out)\n\n@app.api(name=\"generate_flowchart\")\ndef generate_flowchart(src_code: str) -> str:\n # check if src_code is empty\n if not src_code.strip(): return \"\"\n\n # Set system prompt\n system_prompt = dedent(\"\"\"\n ## Role/Persona\n You are a senior staff software architect and compiler engineer specializing in visual control-flow mapping. Your philosophy is pure utility: you translate raw execution logic into highly accurate, scannable, structural diagrams without any conversational filler, meta-commentary, or stylistic fluff.\n\n ## Context/Objective\n The user will provide source code files or logic snippets. Your sole objective is to parse the syntax and output a co ..."
14
+ }
data/quest_labels/in/ContextForge.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/ContextForge",
3
+ "slug": "ContextForge",
4
+ "title": "ContextForge",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "# ContextForge / Agent Prompt Compiler ContextForge compiles messy software, app, and agent ideas into executable prompt architectures. It is a compiler pipeline, not a generic prompt generator. **GitHub:** https://github.com/rthgit/ContextForge **Competition Gradio Space:** https://huggingface.co/spaces/build-small-hackathon/ContextForge **Backup Gradio Space:** https://huggingface.co/spaces/RthItalia/ContextForge **Demo video:** https://raw.githubusercontent.com/rthgit/ContextForge/main/artifacts/contextforge-demo.mp4 **Tagline:** From fuzzy brief to build-ready agent blueprint. ## Backyard AI Fit - Built for real builders using AI coding agents. - Real problem: vague briefs make Codex and other agents produce wrong code, generic UI, or incomplete workflows. - Real use evidence: this architecture was used to coordinate Trollsona development, including UI refactor, model cascade, QA, packaging, and video automation. - Small-model fit: ContextForge decomposes a hard prompt-writing task into seven smaller calls so a small model can handle it. The backend always executes seven isolated modules sequentially: 1. intake analysis 2. topology decision 3. Vital Few / Vital Spot extraction 4. reasoning architecture selection 5. prompt pack generation 6. QA / repair 7. final assembly Every module attempts its own small-model call. If one call fails, only that stage uses a deterministic fallback and the pipeline continues. Runtime Details shows the source used by every stage. Each modul ...",
13
+ "APP_FILE": "from __future__ import annotations\nfrom dataclasses import dataclass\nfrom functools import lru_cache\nfrom typing import Any, Callable\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\n\nfrom __future__ import annotations\n\nimport json\nimport os\nimport re\nimport time\nfrom dataclasses import dataclass\nfrom functools import lru_cache\nfrom typing import Any, Callable\n\n\nAPP_TITLE = \"ContextForge\"\nAPP_SUBTITLE = \"From fuzzy brief to build-ready agent blueprint.\"\nDEFAULT_MODEL_ID = \"Qwen/Qwen2.5-0.5B-Instruct\"\nDEFAULT_MID_MODEL_ID = \"RthItalia/nano_compact_3b_qkvfp16\"\nDEFAULT_HIGH_MODEL_ID = \"Qwen/Qwen3-32B\"\nREQUIRED_PROMPT_TAGS = [\n \"ROLE\",\n \"COGNITIVE_LAYERS\",\n \"KAHNEMAN_SYSTEM2\",\n \"PARETO_80_20\",\n \"VITAL_SPOT\",\n \"REASONING_PROTOCOL\",\n \"AGENTIC_LOOP\",\n \"ACTION\",\n \"FORMAT_AND_TARGET\",\n \"QA_CHECKS\",\n]\nTOPOLOGIES = [\"Auto\", \"Single Prompt\", \"Cascade\", \"Context Pack\", \"Agent Workflow\"]\nREASONING_LAYERS = [\n \"CRAFT\",\n \"Kahneman System 2\",\n \"Pareto 80/20\",\n \"Agentic Loop\",\n \"Tree of Thought controlled\",\n \"Private CoT\",\n \"Self-Correction\",\n \"Sentinel Recovery\",\n]\nSTAGE_NAMES = [\n \"intake_analysis\",\n \"topology_decision\",\n \"vital_structure\",\n \"reasoning_architecture\",\n \"prompt_pack_generation\",\n \"qa_repair\",\n \"final_assembly\",\n]\nSTAGE_TOKEN_BUDGETS = {\n \"intake_analysis\": 180,\n \"topology_decision\": 140,\n \"vital_structure\": 180,\n \"reasoning_architecture\": 240,\n \"prompt_pack_generation\": 520,\n \"qa_repair\": 260,\n \"final_assembly\": 260,\n}\n\n\ndef parse_bool_env(name: str, default: bool = False) -> bool:\n raw = os.getenv(name)\n if raw is None:\n return default\n return raw.strip().lower() in {\"1\", \"true\", \"yes\", \"on\"}\n\n\ndef parse_int_env(name: str, default: int, minimum: int, maximum: int) -> int:\n try:\n value = int(os.getenv(name, str(default)))\n except Valu ..."
14
+ }
data/quest_labels/in/Council-of-Tiny-Minds.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Council-of-Tiny-Minds",
3
+ "slug": "Council-of-Tiny-Minds",
4
+ "title": "Council Of Tiny Minds",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from typing import Dict, List, Any\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\n\nimport os\nimport re\nimport time\nimport random\nfrom typing import Dict, List, Any\n\nimport gradio as gr\nimport torch\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\n\ntry:\n import spaces # ZeroGPU decorator\nexcept Exception:\n class _SpacesFallback:\n def GPU(self, fn=None, **kwargs):\n if fn is None:\n def _wrap(inner):\n return inner\n return _wrap\n return fn\n spaces = _SpacesFallback()\n\n\n# ----------------------------\n# Model\n# ----------------------------\nMODEL_ID = os.getenv(\"MODEL_ID\", \"Qwen/Qwen3.5-9B\")\nMAX_NEW_TOKENS = int(os.getenv(\"MAX_NEW_TOKENS\", \"140\"))\nTEMPERATURE = float(os.getenv(\"TEMPERATURE\", \"0.9\"))\nTOP_P = float(os.getenv(\"TOP_P\", \"0.9\"))\n\nPERSONAS = [\n {\n \"name\": \"Mister Wink\",\n \"emoji\": \"✨\",\n \"style\": (\n \"You are charming, slightly ridiculous, and surprisingly helpful. \"\n \"You speak like a cheerful TV host from a glitchy early-2023 chatbot era.\"\n ),\n },\n {\n \"name\": \"Goblin Clerk\",\n \"emoji\": \"🪄\",\n \"style\": (\n \"You are chaotic but functional. \"\n \"You love odd metaphors, tiny complaints, and enthusiastic one-liners.\"\n ),\n },\n {\n \"name\": \"Oracle Beta\",\n \"emoji\": \"🔮\",\n \"style\": (\n \"You speak in short, atmospheric lines. \"\n \"You sound wise, but a little too dramatic for the situation.\"\n ),\n },\n {\n \"name\": \"The Skeptic\",\n \"emoji\": \"🫧\",\n \"style\": (\n \"You are skeptical, precise, and dryly funny. \"\n \"You question nonsense while still being useful.\"\n ),\n },\n]\n\n\ndef _load_model():\n tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, trust_remote_code ..."
14
+ }
data/quest_labels/in/Darwin-35B-A3B-Opus.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Darwin-35B-A3B-Opus",
3
+ "slug": "Darwin-35B-A3B-Opus",
4
+ "title": "Darwin 35B A3B Opus",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "mcp-server",
10
+ "region:us"
11
+ ],
12
+ "app_file": "app.py",
13
+ "README": "This model is introduced in [Darwin Family](https://arxiv.org/abs/2605.14386).",
14
+ "APP_FILE": "from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, TextIteratorStreamer\nfrom threading import Thread\n\nimport os\nimport spaces\nimport torch\nimport gradio as gr\nfrom transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig, TextIteratorStreamer\nfrom threading import Thread\n\n# Persist HF Hub cache on the mounted bucket storage so the 67GB model\n# only downloads once and stays cached between ZeroGPU calls.\nos.environ.setdefault(\"HF_HOME\", \"/data/hf_home\")\nos.environ.setdefault(\"HF_HUB_CACHE\", \"/data/hf_cache\")\n\nMODEL_ID = \"FINAL-Bench/Darwin-35B-A3B-Opus\"\nHF_TOKEN = os.environ.get(\"HF_TOKEN\")\n\nBNB = BitsAndBytesConfig(\n load_in_4bit=True,\n bnb_4bit_quant_type=\"nf4\",\n bnb_4bit_use_double_quant=True,\n bnb_4bit_compute_dtype=torch.bfloat16,\n # Allow accelerate to place buffers on CPU rather than hard-failing load.\n # On an A10G this usually keeps 100% of weights on GPU.\n llm_int8_enable_fp32_cpu_offload=True,\n)\n\n_model_cache = {}\n\ndef _load():\n if \"model\" not in _model_cache:\n tok = AutoTokenizer.from_pretrained(\n MODEL_ID,\n trust_remote_code=True,\n token=HF_TOKEN,\n cache_dir=os.environ[\"HF_HUB_CACHE\"],\n )\n if tok.pad_token is None:\n tok.pad_token = tok.eos_token\n\n if torch.cuda.is_available():\n torch.cuda.empty_cache()\n\n mod = AutoModelForCausalLM.from_pretrained(\n MODEL_ID,\n trust_remote_code=True,\n token=HF_TOKEN,\n quantization_config=BNB,\n device_map=\"auto\",\n # Calm the MoE memory estimator on A10G 24 GB\n max_memory={0: \"22GiB\", \"cpu\": \"200GiB\"},\n cache_dir=os.environ[\"HF_HUB_CACHE\"],\n low_cpu_mem_usage=True,\n )\n _model_cache[\"model\"] = mod\n _model_cache[\"tokenizer\"] = tok\n retu ..."
15
+ }
data/quest_labels/in/Family-Bill-Assistant.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Family-Bill-Assistant",
3
+ "slug": "Family-Bill-Assistant",
4
+ "title": "Family Bill Assistant",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from ui.layout import create_ui\nfrom tools.vision import process_receipt_image\nfrom agent.brain import process_workflow\n\nimport gradio as gr\nfrom ui.layout import create_ui\nfrom tools.vision import process_receipt_image\nfrom agent.brain import process_workflow\n\n# Load the custom CSS for the \"Off-Brand\" Badge\ntry:\n with open(\"ui/style.css\", \"r\") as f:\n custom_css = f.read()\nexcept FileNotFoundError:\n custom_css = \"\"\n\n# Build the Gradio App\ndemo = gr.Blocks()\nmy_theme = gr.themes.Default(\n primary_hue=\"blue\", \n neutral_hue=\"slate\"\n)\n\nwith demo:\n # Initialize the UI layout from the ui folder\n image_input, audio_input, submit_btn, chatbot, msg_input = create_ui()\n \n # Bind the submit button to the Core Boss workflow\n def handle_analyze(image, user_msg, history):\n if not user_msg:\n user_msg = \"Please analyze this bill.\"\n \n # Step 1: If an image is provided, extract raw text\n raw_text = None\n if image:\n raw_text = process_receipt_image(image)\n print(f\"=== VISION MODEL RAW TEXT ===\\n{raw_text}\\n=============================\")\n \n # Step 2: Route everything to the Core Boss\n bot_response = process_workflow(user_text=user_msg, raw_vision_text=raw_text)\n print(f\"=== CORE ROUTER RESPONSE ===\\n{bot_response}\\n============================\")\n \n # Step 3: Append to chat history\n history.append({\"role\": \"user\", \"content\": user_msg})\n history.append({\"role\": \"assistant\", \"content\": str(bot_response)})\n return history\n \n submit_btn.click(\n fn=handle_analyze,\n inputs=[image_input, msg_input, chatbot],\n outputs=[chatbot]\n )\n\nif __name__ == \"__main__\":\n demo.launch(theme=my_theme, css=custom_css)"
14
+ }
data/quest_labels/in/First-Principle-AI.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/First-Principle-AI",
3
+ "slug": "First-Principle-AI",
4
+ "title": "First-Principle AI",
5
+ "sdk": "gradio",
6
+ "declared_models": [
7
+ "build-small-hackathon/phase-3-gguf"
8
+ ],
9
+ "tags": [
10
+ "build-small-hackathon",
11
+ "chatbot",
12
+ "gguf",
13
+ "gradio",
14
+ "llama-cpp",
15
+ "model-lab",
16
+ "zerogpu"
17
+ ],
18
+ "app_file": "app.py",
19
+ "README": "# First-Principle AI First-Principle AI is a compact Gradio console for running and probing the `build-small-hackathon/phase-3-gguf` Q8 GGUF model through the official `llama.cpp` Ubuntu `llama-server` release. The UI includes benchmark-style examples inspired by common LLM evaluation areas: math reasoning, commonsense, science QA, truthfulness, instruction following, coding, logic, summarization, extraction, robustness, and goal-binding prompts where the model must identify which real-world object needs to move. The questions are original prompts, not copied benchmark items. ## Runtime Notes - Model repo: `build-small-hackathon/phase-3-gguf` - Model file: `model-Q8_0.gguf` - Runtime: official `llama.cpp` `llama-server` - Hardware target: ZeroGPU - Fallback behavior: visible runtime diagnostics instead of silent mock output - Model loading: runtime download/load through a persistent `llama-server` - Default llama.cpp settings: `n_ctx=2048`, `n_batch=256`, `n_ubatch=64`, memory-mapped weights, no warmup, and CPU fallback if CUDA offload is unavailable ZeroGPU is a Gradio dynamic GPU runtime primarily documented around PyTorch workloads. This app targets ZeroGPU as requested, but it runs the GGUF through the official llama.cpp CLI path so it does not depend on a Python extension compile during the Space build. If the runtime does not expose enough memory or a compatible llama.cpp binary, the app returns a visible compatibility message. The model is intentionally not preloaded d ...",
20
+ "APP_FILE": "from __future__ import annotations\nfrom pathlib import Path\nfrom typing import Any\nfrom huggingface_hub import HfApi, hf_hub_download\n\nfrom __future__ import annotations\n\nimport os\nimport platform\nimport re\nimport threading\nimport time\nimport subprocess\nimport tarfile\nimport urllib.request\nimport json\nfrom pathlib import Path\nfrom typing import Any\n\nimport gradio as gr\nfrom huggingface_hub import HfApi, hf_hub_download\n\ntry:\n import spaces\nexcept Exception: # pragma: no cover - the package exists on HF ZeroGPU runtimes\n spaces = None # type: ignore[assignment]\n\nMODEL_REPO = os.getenv(\"PHASE3_MODEL_REPO\", \"build-small-hackathon/phase-3-gguf\")\nMODEL_FILE = os.getenv(\"PHASE3_MODEL_FILE\", \"model-Q8_0.gguf\")\nMODEL_LABEL = \"First-Principle AI\"\nLOCAL_MODEL_PATH = Path(\"/Users/user/.lmstudio/models/owenisas/Phase-3-GGUF/model-Q8_0.gguf\")\nLLAMA_RELEASE = os.getenv(\"PHASE3_LLAMA_RELEASE\", \"b9360\")\nLLAMA_URL = os.getenv(\n \"PHASE3_LLAMA_URL\",\n f\"https://github.com/ggml-org/llama.cpp/releases/download/{LLAMA_RELEASE}/llama-{LLAMA_RELEASE}-bin-ubuntu-x64.tar.gz\",\n)\nMAX_CONTEXT = int(os.getenv(\"PHASE3_MAX_CONTEXT\", \"2048\"))\nMIN_RAM_GB = float(os.getenv(\"PHASE3_MIN_RAM_GB\", \"38\"))\nDISABLE_MODEL = os.getenv(\"PHASE3_DISABLE_MODEL\", \"\").lower() in {\"1\", \"true\", \"yes\"}\nUSE_ZEROGPU_DECORATOR = os.getenv(\"PHASE3_USE_ZEROGPU\", \"\").lower() in {\"1\", \"true\", \"yes\"}\nN_BATCH = int(os.getenv(\"PHASE3_N_BATCH\", \"256\"))\nN_UBATCH = int(os.getenv(\"PHASE3_N_UBATCH\", \"64\"))\nN_THREADS = int(os.getenv(\"PHASE3_THREADS\", str(max(1, min(16, os.cpu_count() or 2)))))\nN_THREADS_BATCH = int(os.getenv(\"PHASE3_THREADS_BATCH\", str(N_THREADS)))\nUSE_MMAP = os.getenv(\"PHASE3_USE_MMAP\", \"1\").lower() not in {\"0\", \"false\", \"no\"}\nUSE_MLOCK = os.getenv(\"PHASE3_USE_MLOCK\", \"\").lower() in {\"1\", \"true\", \"yes\"}\nFLASH_ATTN = os.getenv(\"PHASE3_FLASH_ATTN\", \"\").lower() in {\"1\", \"true\", \"yes\"}\nOFFLOAD_KQV = os.getenv ..."
21
+ }
data/quest_labels/in/GRM-2.6-Opus.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/GRM-2.6-Opus",
3
+ "slug": "GRM-2.6-Opus",
4
+ "title": "GRM-2.6-Opus",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Text-only ZeroGPU Space for `GRM-2.6-Opus`. Notes: - Built for ZeroGPU with `@spaces.GPU` - Uses 4-bit NF4 quantization to reduce memory pressure - Keeps the UI text-only because the Qwen model card explicitly recommends text-only deployment to save memory and free more KV cache - Exposes Qwen3.6 thinking controls through `enable_thinking` and `preserve_thinking` - Uses shorter default generation lengths than the model card recommendations to behave better in shared ZeroGPU queues",
13
+ "APP_FILE": "from threading import Thread\nfrom transformers import (\n\nimport os\nimport re\nimport html\nfrom threading import Thread\n\nimport gradio as gr\nimport spaces\nimport torch\nfrom transformers import (\n AutoModelForCausalLM,\n AutoTokenizer,\n BitsAndBytesConfig,\n TextIteratorStreamer,\n)\n\nMODEL_ID = \"OrionLLM/GRM-2.6-Opus\"\nTITLE = \"GRM-2.6-Opus\"\nSUBTITLE = \"Chat with GRM-2.6-Opus on ZeroGPU\"\nDESCRIPTION = (\n \"Chat with GRM-2.6-Opus in a ZeroGPU Space, optimized with text-only chat, \"\n \"NF4 4-bit loading, bounded context, streaming output, and thinking parsing.\"\n)\n\nPLACEHOLDER = (\n \"Ask GRM-2.6-Opus for code, debugging, planning, research, long-form reasoning, \"\n \"terminal-agent tasks, or complex multi-step workflows.\"\n)\n\nMAX_INPUT_TOKENS = 16384\nINTERNAL_MAX_NEW_TOKENS = 4096\nHF_TOKEN = os.environ.get(\"HF_TOKEN\")\n\nos.environ.setdefault(\"PYTORCH_CUDA_ALLOC_CONF\", \"expandable_segments:True\")\ntorch.backends.cuda.matmul.allow_tf32 = True\n\nBNB_CONFIG = BitsAndBytesConfig(\n load_in_4bit=True,\n bnb_4bit_quant_type=\"nf4\",\n bnb_4bit_use_double_quant=True,\n bnb_4bit_compute_dtype=torch.bfloat16,\n)\n\ntokenizer = AutoTokenizer.from_pretrained(\n MODEL_ID,\n trust_remote_code=True,\n token=HF_TOKEN,\n)\n\nif tokenizer.pad_token is None:\n tokenizer.pad_token = tokenizer.eos_token\n\nmodel = AutoModelForCausalLM.from_pretrained(\n MODEL_ID,\n trust_remote_code=True,\n token=HF_TOKEN,\n device_map={\"\": 0},\n dtype=torch.bfloat16,\n quantization_config=BNB_CONFIG,\n attn_implementation=\"sdpa\",\n low_cpu_mem_usage=True,\n)\n\nmodel.eval()\n\n\ndef model_input_device():\n return next(model.parameters()).device\n\n\ndef strip_thinking(text: str) -> str:\n if not text:\n return \"\"\n\n text = re.sub(\n r\"(?is)<details[^>]*>\\s*<summary>.*?</summary>.*?</details>\",\n \"\",\n text,\n )\n\n text = re.sub(r\"(?is)<think>.*?</think> ..."
14
+ }
data/quest_labels/in/GTROX.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/GTROX",
3
+ "slug": "GTROX",
4
+ "title": "GTROX",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "An example chatbot using [Gradio](https://gradio.app), [`huggingface_hub`](https://huggingface.co/docs/huggingface_hub/v0.22.2/en/index), and the [Hugging Face Inference API](https://huggingface.co/docs/api-inference/index).",
13
+ "APP_FILE": "from huggingface_hub import InferenceClient\n\nimport gradio as gr\nfrom huggingface_hub import InferenceClient\n\n\ndef respond(\n message,\n history: list[dict[str, str]],\n system_message,\n max_tokens,\n temperature,\n top_p,\n hf_token: gr.OAuthToken,\n):\n \"\"\"\n For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference\n \"\"\"\n client = InferenceClient(token=hf_token.token, model=\"openai/gpt-oss-20b\")\n\n messages = [{\"role\": \"system\", \"content\": system_message}]\n\n messages.extend(history)\n\n messages.append({\"role\": \"user\", \"content\": message})\n\n response = \"\"\n\n for message in client.chat_completion(\n messages,\n max_tokens=max_tokens,\n stream=True,\n temperature=temperature,\n top_p=top_p,\n ):\n choices = message.choices\n token = \"\"\n if len(choices) and choices[0].delta.content:\n token = choices[0].delta.content\n\n response += token\n yield response\n\n\n\"\"\"\nFor information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface\n\"\"\"\nchatbot = gr.ChatInterface(\n respond,\n additional_inputs=[\n gr.Textbox(value=\"You are a friendly Chatbot.\", label=\"System message\"),\n gr.Slider(minimum=1, maximum=2048, value=512, step=1, label=\"Max new tokens\"),\n gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label=\"Temperature\"),\n gr.Slider(\n minimum=0.1,\n maximum=1.0,\n value=0.95,\n step=0.05,\n label=\"Top-p (nucleus sampling)\",\n ),\n ],\n)\n\nwith gr.Blocks() as demo:\n with gr.Sidebar():\n gr.LoginButton()\n chatbot.render()\n\n\nif __name__ == \"__main__\":\n demo.launch()"
14
+ }
data/quest_labels/in/InContext.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/InContext",
3
+ "slug": "InContext",
4
+ "title": "InContext",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from transformers import AutoModelForCausalLM, AutoTokenizer\n\nimport gradio as gr\nimport torch\nimport json\nimport html\nimport traceback\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\n\nprint(\"Loading model...\")\nmodel_name = \"Qwen/Qwen2.5-0.5B-Instruct\"\ntokenizer = AutoTokenizer.from_pretrained(model_name)\nmodel = AutoModelForCausalLM.from_pretrained(\n model_name,\n torch_dtype=torch.float16,\n device_map=\"auto\"\n)\nprint(\"Model loaded.\")\n\nSYSTEM_PROMPT = \"\"\"You are an English learning assistant. Extract 8-20 useful expressions from the text.\nFor each expression, output a JSON object with keys: expression, meaning, explanation, original_context, extra_example.\nMeaning and explanation should be in Chinese.\nOutput must be a JSON array. No extra text.\"\"\"\n\ndef analyze(text):\n try:\n if not text or len(text.strip()) < 20:\n return \"<div style='color:red'>⚠️ Please enter at least 20 characters.</div>\"\n\n messages = [\n {\"role\": \"system\", \"content\": SYSTEM_PROMPT},\n {\"role\": \"user\", \"content\": text}\n ]\n inputs = tokenizer.apply_chat_template(\n messages,\n add_generation_prompt=True,\n return_tensors=\"pt\"\n ).to(model.device)\n\n with torch.no_grad():\n outputs = model.generate(\n inputs,\n max_new_tokens=1024,\n do_sample=False,\n temperature=1.0\n )\n\n response = tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)\n\n # 提取 JSON\n if \"```json\" in response:\n response = response.split(\"```json\")[1].split(\"```\")[0]\n elif \"```\" in response:\n response = response.split(\"```\")[1].split(\"```\")[0]\n start = response.find(\"[\")\n end = response.rfind(\"]\") + 1\n if start == -1 or end == 0:\n return f\"< ..."
14
+ }
data/quest_labels/in/Kasualdad_LFED.json ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Kasualdad_LFED",
3
+ "slug": "Kasualdad_LFED",
4
+ "title": "Kasualdad LFED",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "duckdb",
9
+ "education",
10
+ "gguf",
11
+ "gradio",
12
+ "llama-cpp",
13
+ "local-first",
14
+ "text-to-sql"
15
+ ],
16
+ "app_file": "app.py",
17
+ "README": "# 🏫 Kasualdad LFED **Local-First Education Data** — ask questions about your district in plain English, get answers instantly. All inference runs on your machine. No data ever leaves. > 🏆 Built for the **HF Build Small Hackathon** (Chapter One: Backyard AI) --- ## 🏅 Hackathon Badges | Badge | Status | How | |---|---|---| | **Off the Grid** | ✅ | All inference via llama.cpp + local GGUF. No API calls. No cloud. | | **Well-Tuned** | ✅ | Fine-tuned Qwen2.5-Coder-7B on 1,200+ synthetic NL→SQL pairs via Unsloth QLoRA on Modal A10G. | | **Llama Champion** | ✅ | llama.cpp as the sole inference backend. Q4_K_M quantization. Streaming token generation. | | **Off-Brand** | ✅ | Custom design system (Linear/Vercel inspired), WCAG AA, Inter + JetBrains Mono, documented below. | --- ## 🎯 What It Does A school district admin (principal, superintendent, department head) types a question: > *\"What percentage of students at Lincoln Elementary were chronically absent in 2023-2024?\"* Kasualdad LFED: 1. Sends the question + schema context to a local LLM (llama.cpp) 2. Streams the generated SQL back in real-time 3. Validates the SQL against the actual schema (column names, safety) 4. Executes it on an in-memory DuckDB database 5. Returns the results as a table All local. No API keys. No data exfiltration. --- ## 🏗 Architecture ```mermaid flowchart TD U[👤 School Admin] -->|natural language| UI[Gradio UI] UI -->|question + schema| LLM[model_inference.py] LLM -->|llama.cpp| GGUF[Qwen2.5-Coder-7B<br/> ...",
18
+ "APP_FILE": "from model_inference import load_model, generate_sql\nfrom data_engine import create_session, execute_safe, QueryTimeoutError\nfrom pathlib import Path\nfrom data.export_parquet import export_parquet\n\n\"\"\"\napp.py — Kasualdad LFED: Local-First Education Data Analytics.\n\nThin Gradio controller. All logic lives in:\n - prompts.py (system prompt, schema docs, few-shot examples)\n - model_inference.py (llama.cpp wrapper, SQL generation + streaming)\n - data_engine.py (DuckDB lifecycle, schema seeding, execution guard)\n\"\"\"\n\nimport gradio as gr\nimport spaces\n\nfrom model_inference import load_model, generate_sql\nfrom data_engine import create_session, execute_safe, QueryTimeoutError\n\n# ── Startup ───────────────────────────────────────────────────────────\n\nprint(\"🚀 Starting Kasualdad LFED...\")\n\n# Ensure Parquet seed files exist (generate on first boot, persist in /data/)\nfrom pathlib import Path\n_parquet_dirs = [Path(\"/data\"), Path(__file__).parent / \"data\"]\n_pq_files = [\"enrollment.parquet\", \"attendance.parquet\"]\n_pq_found = any(\n all((base / f).exists() for f in _pq_files)\n for base in _parquet_dirs\n)\nif not _pq_found:\n print(\"📦 Generating seed Parquet files (first boot)...\")\n from data.export_parquet import export_parquet\n _pq_out = _parquet_dirs[0] if _parquet_dirs[0].exists() else _parquet_dirs[1]\n export_parquet(_pq_out)\n\nprint(\"🦙 Loading model...\")\nllm = load_model()\nprint(\"✅ Ready.\")\n\n# ── Example queries ────────────────────────────────────────────────────\n\nEXAMPLE_QUERIES = [\n \"How many students were chronically absent in 2023-2024?\",\n \"Show total enrollment per school for 2024-2025, sorted highest first.\",\n \"What is the average absence count per school in 2023-2024?\",\n \"Show the enrollment trend across all school years.\",\n \"Which grade level has the highest enrollment in 2024-2025?\",\n \"What percentage of students at Linco ..."
19
+ }
data/quest_labels/in/Kintsugi-Garden.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Kintsugi-Garden",
3
+ "slug": "Kintsugi-Garden",
4
+ "title": "The Kintsugi Garden",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "<p align=\"center\"> <img src=\"logo.svg\" alt=\"The Kintsugi Garden — K and G mended by a gold seam\" width=\"220\"> </p> # The Kintsugi Garden > *A symbolic mirror for dreams, journals, and inner transitions.* **This is not therapy, diagnosis, prediction, or advice. It is a symbolic reflection tool.** The Kintsugi Garden is a small-model symbolic reflection app. You give it a dream, a journal entry, an emotional trigger, a relationship pattern, a recurring symbol, or a life transition, and it offers back a *symbolic reading*: archetypal themes, possible shadow patterns, individuation signals, a gentle question, and a session-based **Soul Map**. Like the Japanese art of *kintsugi* — mending broken pottery with gold — the app treats the cracks and wounds in our inner stories as places where meaning and value can gather, never as something to diagnose or fix. --- ## Project overview The app accepts free-form text and surrounds a lightweight instruction-tuned language model with deterministic Python scaffolding: - a curated **symbolic lexicon** (40+ symbols, each with meanings, archetypes, shadow motifs, and individuation signals); - **symbol extraction** with aliases and simple plural handling; - a session-local **Soul Map** that tracks recurring symbols and themes; - **prompt compression** so only the current entry and its symbols reach the model; - **structured, parsed output** split across calm, focused tabs; - a **deterministic mandala generator** (PIL) that visualizes the symbols ...",
13
+ "APP_FILE": "from PIL import Image, ImageDraw, ImageFont\n\n\"\"\"\nThe Kintsugi Garden\nA symbolic mirror for dreams, journals, and inner transitions.\n\nA small-model symbolic reflection app built for the Build Small Hackathon.\n\nThis is NOT therapy, diagnosis, prediction, fortune-telling, or advice.\nIt is a symbolic reflection tool.\n\nThe design philosophy is \"small model, strong scaffolding\": rather than\nrelying on the LLM alone, the app surrounds a lightweight instruction model\n(microsoft/Phi-4-mini-instruct) with deterministic Python:\n\n * a curated symbolic lexicon\n * keyword / symbol extraction with aliases and simple plurals\n * a session-local \"Soul Map\" memory\n * prompt compression (only the current entry + extracted symbols are sent)\n * structured, parsed output\n * deterministic mandala generation with PIL (no image model required)\n\nAuthor: Build Small Hackathon submission\n\"\"\"\n\nimport os\nimport re\nimport sys\nimport json\nimport math\nimport datetime\nimport traceback\n\nimport gradio as gr\nimport pandas as pd\nfrom PIL import Image, ImageDraw, ImageFont\n\n# `spaces` is only available on HF Spaces with zero-* hardware tiers. Guard\n# the import so local development (Mac, Linux, etc.) doesn't hard-fail.\n# Outside HF Spaces, @spaces.GPU becomes a no-op passthrough decorator.\ntry:\n import spaces\nexcept Exception: # pragma: no cover - local dev environments\n class _SpacesStub:\n def GPU(self, *args, **kwargs):\n def decorator(fn):\n return fn\n return decorator\n spaces = _SpacesStub()\n\n# Torch / transformers are imported lazily inside load_model() so that the\n# Gradio interface can still render even if the heavy stack has trouble\n# loading. We import torch eagerly because we need its dtype constants, but\n# guard it so the app never hard-crashes at import time.\ntry:\n import torch\nexcept Exception: # pragma: no cover - extremely defensiv ..."
14
+ }
data/quest_labels/in/LocalDuo.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/LocalDuo",
3
+ "slug": "LocalDuo",
4
+ "title": "LocalDuo",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from PIL import Image\nfrom supertonic import TTS\nfrom transformers import AutoProcessor, AutoModelForImageTextToText\nfrom bs4 import BeautifulSoup\nfrom playwright.sync_api import sync_playwright\nfrom urllib.parse import urljoin\nfrom transformers import TextIteratorStreamer, StoppingCriteria, StoppingCriteriaList\nfrom threading import Thread\n\n# Copyright: Shayekh Bin Islam. KAIST, South Korea. 2026.\n\nMAX_TEXT_CHAR = 1500\n\n# model_id = \"Qwen/Qwen3.5-9B\"\nmodel_id = \"Qwen/Qwen3.5-2B\"\n\ntry:\n import spaces\n IS_HF = True\nexcept ImportError:\n IS_HF = False\n\n\nif not IS_HF:\n class spaces:\n @staticmethod\n def GPU(*args, **kwargs):\n def decorator(func):\n return func\n if len(args) == 1 and callable(args[0]) and not kwargs:\n return args[0]\n return decorator\nelse:\n import os, sys, subprocess\n os.environ['SUPERTONIC_CACHE_DIR'] = '/home/user/huggingface'\n os.environ[\"HF_HOME\"] = \"/home/user/huggingface\"\n os.environ['XDG_CACHE_HOME'] = \"/home/user/huggingface\"\n \n os.environ['PLAYWRIGHT_BROWSERS_PATH'] = \"/home/user/huggingface/ms-playwright\"\n # os.system(\"playwright install chromium\")\n result = subprocess.run(\n [\"python\", \"-m\", \"playwright\", \"install\", \"chromium\"],\n env={**os.environ},\n check=True,\n stdout=subprocess.PIPE,\n stderr=subprocess.PIPE\n )\n\nimport gradio as gr\nimport fitz # PyMuPDF\nfrom PIL import Image\nimport io\nimport json\nimport base64\nimport soundfile as sf\nimport torch\nimport os\n\nfrom supertonic import TTS\nfrom transformers import AutoProcessor, AutoModelForImageTextToText\n\n# model = None\n# processor = None\n# tts = None\n# voice_style = None\n\nglobal_stop_thinking = [False]\nglobal_kill_threads = [False]\n\ndef set_stop_thinking():\n global_stop_thinking[0] = True\n print(f\"[STOP-THINK] set_stop_thinking CALLED! Flag is ..."
14
+ }
data/quest_labels/in/Mediassist.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Mediassist",
3
+ "slug": "Mediassist",
4
+ "title": "Mediassist",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from transformers import AutoTokenizer, AutoModelForCausalLM\n\nimport gradio as gr\nfrom transformers import AutoTokenizer, AutoModelForCausalLM\nimport torch\n\nmodel = None\ntokenizer = None\n\ndef load_model():\n global model, tokenizer\n if model is None:\n print(\"[MediAssist] Loading...\")\n model_id = \"TinyLlama/TinyLlama-1.1B-Chat-v1.0\"\n tokenizer = AutoTokenizer.from_pretrained(model_id)\n model = AutoModelForCausalLM.from_pretrained(\n model_id, torch_dtype=torch.float32, low_cpu_mem_usage=True\n )\n model.eval()\n print(\"[MediAssist] Ready!\")\n\n# For Urdu/Hindi we translate the question to English, get answer, keep it simple\n# TinyLlama only works well in English — this is honest and works\nSYSTEM_EN = \"\"\"You are MediAssist, a medical assistant for rural Pakistan communities.\nAnswer clearly in English with this exact format:\n\n🔍 What this might be:\n- cause 1\n- cause 2\n\n🏠 Home care steps:\n- step 1\n- step 2\n- step 3\n\n🚨 Go to doctor immediately if:\n- warning 1\n- warning 2\n\nKeep under 120 words. Never diagnose. Always suggest seeing a doctor for serious issues.\"\"\"\n\nSYSTEM_UR = \"\"\"You are a medical assistant. The user is asking in Urdu.\nFirst translate their question to English, answer in English with this format:\n\n🔍 What this might be:\n- cause\n\n🏠 Home care:\n- step 1\n- step 2\n\n🚨 See doctor if:\n- warning\n\nThen write: \"اردو خلاصہ:\" and give a 2-line Urdu summary of your answer.\nKeep total response under 150 words.\"\"\"\n\nSYSTEM_HI = \"\"\"You are a medical assistant. Answer in simple Hindi with this format:\n\n🔍 यह क्या हो सकता है:\n- कारण\n\n🏠 घर पर करें:\n- कदम 1\n- कदम 2\n\n🚨 डॉक्टर के पास जाएं अगर:\n- चेतावनी\n\n100 शब्दों से कम रखें।\"\"\"\n\nSYSTEMS = {\n \"English\": SYSTEM_EN,\n \"اردو\": SYSTEM_UR,\n \"हिन्दी\": SYSTEM_HI,\n}\n\nDISCLAIMERS = {\n \"English\": \"\\n\\n⚠️ *For informational purposes only. Always consult a real doctor.*\", ..."
14
+ }
data/quest_labels/in/NEXUS-Visual-Weaver.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/NEXUS-Visual-Weaver",
3
+ "slug": "NEXUS-Visual-Weaver",
4
+ "title": "NEXUS Visual Weaver",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from diffusers import Flux2KleinPipeline\n\nimport spaces # MUST be imported before any CUDA-touching package (torch/diffusers)\n\nimport gradio as gr\nimport numpy as np\nimport random\nimport torch\nfrom diffusers import Flux2KleinPipeline\n\n# ---------------------------------------------------------------------------\n# Model: FLUX.2 [klein] 4B\n# - Apache-2.0, 4B params, BFL's fastest small model (sub-second, ~13GB VRAM)\n# - Unified text-to-image + multi-reference editing\n# - Released Jan 2026 (current BFL small-model generation)\n# ---------------------------------------------------------------------------\nMODEL_REPO_ID = \"black-forest-labs/FLUX.2-klein-4B\"\n\ndtype = torch.bfloat16\ndevice = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n\n# Load on cuda at module level. (No enable_model_cpu_offload() on ZeroGPU —\n# the GPU is only attached inside @spaces.GPU; module-level cuda uses the\n# ZeroGPU CUDA-emulation, and offload would conflict.)\npipe = Flux2KleinPipeline.from_pretrained(MODEL_REPO_ID, torch_dtype=dtype).to(device)\n\nMAX_SEED = np.iinfo(np.int32).max\nMAX_IMAGE_SIZE = 2048\n\n\n@spaces.GPU(duration=60)\ndef infer(\n prompt,\n seed,\n randomize_seed,\n width,\n height,\n num_inference_steps,\n guidance_scale,\n progress=gr.Progress(track_tqdm=True),\n):\n if randomize_seed:\n seed = random.randint(0, MAX_SEED)\n generator = torch.Generator(device=device).manual_seed(seed)\n image = pipe(\n prompt=prompt,\n width=width,\n height=height,\n num_inference_steps=num_inference_steps,\n guidance_scale=guidance_scale,\n generator=generator,\n ).images[0]\n return image, seed\n\n\nexamples = [\n \"A magical city at twilight, glowing windows, storybook illustration, warm light\",\n \"A cat holding a sign that says hello world\",\n \"Astronaut in a jungle, cold color palette, muted colors, detailed, 8k\",\n]\n\ncss = ..."
14
+ }
data/quest_labels/in/PocketWorld-Studio.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/PocketWorld-Studio",
3
+ "slug": "PocketWorld-Studio",
4
+ "title": "PocketWorld Studio",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from pathlib import Path\n\nimport copy\nimport html\nimport json\nfrom pathlib import Path\n\nimport gradio as gr\n\n\nPROJECT_ROOT = Path(__file__).parent\nASSETS_DIR = PROJECT_ROOT / \"assets\"\nASSET_CATALOG_PATH = ASSETS_DIR / \"asset_catalog.json\"\n\nRENDERER_VERSION = \"0.5\"\nWORLD_SCHEMA_VERSION = \"pocketworld-world-v0.5\"\nASSET_SCHEMA_VERSION = \"pocketworld-assets-v0.1\"\nTHEME_OPTIONS = [\"Auto\", \"Light\", \"Dark\"]\nDEFAULT_THEME = \"Auto\"\nWORLD_THEMES = [\"cozy_fantasy\", \"sci_fi_station\", \"haunted_mystery\", \"tiny_city\"]\nDEFAULT_WORLD_THEME = \"cozy_fantasy\"\n\nTILE_LEGEND = {\n \"W\": \"wall / blocked\",\n \".\": \"floor / walkable\",\n \"G\": \"locked goal or exit\",\n}\n\n\nEMBEDDED_ASSET_CATALOG = {\n \"schema_version\": ASSET_SCHEMA_VERSION,\n \"source\": {\n \"name\": \"Kenney Tiny Dungeon\",\n \"url\": \"https://kenney.nl/assets/tiny-dungeon\",\n \"license\": \"Creative Commons Zero (CC0)\",\n \"license_url\": \"https://creativecommons.org/publicdomain/zero/1.0/\",\n \"credit\": \"Kenney\",\n },\n \"tile_size\": 16,\n \"display_tile_size\": 44,\n \"themes\": {\n \"cozy_fantasy\": {\n \"tile_palette\": {\"W\": \"wall_wood\", \".\": \"floor_wood\", \"G\": \"gate\"},\n \"player_sprite_key\": \"player\",\n \"npc_sprite_keys\": [\"npc_wizard\", \"npc_merchant\", \"npc_citizen\"],\n \"item_sprite_keys\": [\"key\", \"gem\", \"potion\", \"scroll\"],\n \"landmark_asset_keys\": [\"gate\", \"well\", \"tower\", \"bridge\"],\n },\n \"sci_fi_station\": {\n \"tile_palette\": {\"W\": \"wall_metal\", \".\": \"floor_metal\", \"G\": \"portal\"},\n \"player_sprite_key\": \"player\",\n \"npc_sprite_keys\": [\"npc_robot\", \"npc_scientist\"],\n \"item_sprite_keys\": [\"battery\", \"gear\", \"tool\"],\n \"landmark_asset_keys\": [\"portal\", \"computer\", \"door\"],\n },\n \"haunted_mystery\": {\n \"tile_palette\": {\"W\": \"wall_stone\", \".\": \"floor_stone\", \"G\" ..."
14
+ }
data/quest_labels/in/Retail-Insight-AI.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Retail-Insight-AI",
3
+ "slug": "Retail-Insight-AI",
4
+ "title": "Retail Insight AI Pro",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "# 🛒 Retail-Insight-AI v2.5 ### ⚡ Build Small Hackathon Submission (Backyard AI Track) Retail-Insight-AI ek privacy-first, 100% offline edge analytics dashboard hai jo local shopkeepers ko enterprise-level operational insights deta hai bina unka data cloud par leak kiye. ### ✨ Key Features - **Instant 10K Row Audit:** Sirf 2 seconds mein pure sales log ko process karta hai. - **Semantic Mapping:** Intelligent column mapping automatic Product Names aur Revenue attributes ko detect karti hai. - **Edge Heuristics:** Zero cloud API dependencies, complete privacy for local stores. ## 📺 Live Video Demo [Watch the Demo Video Here](https://www.instagram.com/reel/DZNAcHlv72c/?utm_source=ig_web_copy_link&igsh=MzRlODBiNWFlZA==)",
13
+ "APP_FILE": "import sys\nimport types\n\n# 🚨 DYNAMIC FIX 1: Python 3.13 Compatibility Audio Patch\nif 'audioop' not in sys.modules:\n dummy_audioop = types.ModuleType('audioop')\n dummy_audioop.error = Exception\n sys.modules['audioop'] = dummy_audioop\n\nif 'pyaudioop' not in sys.modules:\n dummy_pyaudioop = types.ModuleType('pyaudioop')\n dummy_pyaudioop.error = Exception\n sys.modules['pyaudioop'] = dummy_pyaudioop\n\n# 🚨 DYNAMIC FIX 2: Critical HuggingFace Hub 'HfFolder' Import Patch\ntry:\n import huggingface_hub\nexcept ImportError:\n huggingface_hub = types.ModuleType('huggingface_hub')\n sys.modules['huggingface_hub'] = huggingface_hub\n\nif not hasattr(huggingface_hub, 'HfFolder'):\n class DummyHfFolder:\n @staticmethod\n def get_token(): return None\n @staticmethod\n def save_token(token): pass\n @staticmethod\n def delete_token(): pass\n huggingface_hub.HfFolder = DummyHfFolder\n\nimport gradio as gr\nimport pandas as pd\nimport os\n\ndef generate_local_insights(summary_data):\n insights = []\n if 'top_product' in summary_data:\n insights.append(f\"🔥 **Inventory Focus:** Your star performer is **{summary_data['top_product']}**. Consider running targeted local ads or bundling weaker products with it to clear old stock.\")\n if 'low_stock' in summary_data and summary_data['low_stock']:\n items = \", \".join([str(i).title() for i in summary_data['low_stock']])\n insights.append(f\"🚨 **Supply Chain Alert:** Restock emergency! **{items}** are dropping below critical levels. Reorder immediately to avoid missing out on sales volume.\")\n else:\n insights.append(\"✅ **Stock Status:** Inventory levels are healthy across detected lines. Keep monitoring expiration or seasonal dips.\")\n if 'total_revenue' in summary_data:\n insights.append(f\"📈 **Revenue Milestone:** Total processed volume stands at **{summary_ ..."
14
+ }
data/quest_labels/in/SlideAI.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/SlideAI",
3
+ "slug": "SlideAI",
4
+ "title": "SlideAI",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "# SlideAI — AI Presentation Creator Turn any topic into a polished, download-ready PPTX presentation in seconds. Built with Gradio + Qwen2.5-7B-Instruct + python-pptx. ## creator space link : SlideAI - a Hugging Face Space by PHOENIXREBORNAGAIN https://share.google/8peVYW3BKwsONJzip ## 🔗 Project Links & Demo * **Live Demo Video:** [Watch the Slide AI Demo on YouTube](https://youtu.be/PIFE6yBj6hU?si=CpKViBtPBGjDkjNQ) * **LinkedIn Post:** [View the Project Announcement on LinkedIn](https://www.linkedin.com/posts/chahat-mehra-4a44a829b_small-huggingface-ugcPost-7468994896218062848-XLN3/?utm_source=share&utm_medium=member_android&rcm=ACoAAEiCgrwBIP-D5Jeg-MwzG1jMzpMXrylPlfM)",
13
+ "APP_FILE": "from slide_generator import generate_presentation\nfrom pptx_builder import build_pptx\n\nimport os\nimport tempfile\nimport traceback\nimport gradio as gr\n\nfrom slide_generator import generate_presentation\nfrom pptx_builder import build_pptx\n\nSTYLES = [\"Professional\", \"Creative\", \"Academic\", \"Startup\"]\n\nCSS = \"\"\"\n* { box-sizing: border-box; }\nbody, .gradio-container {\n background: #f0f7f4 !important;\n font-family: 'Inter', system-ui, sans-serif !important;\n}\nfooter { display: none !important; }\n.header-block {\n background: linear-gradient(135deg, #1b6ca8 0%, #19a88a 100%);\n border-radius: 16px; padding: 32px 36px 28px; margin-bottom: 24px;\n}\nbutton.primary {\n background: linear-gradient(135deg, #1b6ca8, #19a88a) !important;\n color: #fff !important; border: none !important;\n border-radius: 12px !important; font-size: 17px !important;\n font-weight: 700 !important; padding: 16px 0 !important;\n width: 100% !important; cursor: pointer !important;\n box-shadow: 0 4px 16px rgba(25,168,138,0.3) !important;\n}\nbutton.primary:hover { opacity: .87 !important; }\ntextarea, input[type=\"text\"] {\n background: #f5fbf9 !important; border: 1.5px solid #b2ddd1 !important;\n border-radius: 10px !important; color: #1a3a3a !important; font-size: 14px !important;\n}\ninput[type=\"range\"] { accent-color: #19a88a !important; }\n.status-ok {\n background: #e6f7f2; border: 1px solid #a8dfd0; border-radius: 10px;\n padding: 12px 18px; font-size: 14px; color: #1a5a4a; margin-bottom: 8px;\n}\n.status-wait {\n background: #f0f7ff; border: 1px solid #b2cfe8; border-radius: 10px;\n padding: 12px 18px; font-size: 14px; color: #1a3a6a; margin-bottom: 8px;\n}\n.preview-md, .preview-md p, .preview-md li,\n.preview-md h1, .preview-md h2, .preview-md h3 { color: #0d1b2a !important; }\n.preview-md {\n background: #f5fbf9 !important; border: 1px solid #c8e8df !important;\n border ..."
14
+ }
data/quest_labels/in/Sprout-And-Spoon.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Sprout-And-Spoon",
3
+ "slug": "Sprout-And-Spoon",
4
+ "title": "Sprout And Spoon",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from huggingface_hub import InferenceClient\n\nimport gradio as gr\nimport os\nimport logging\n\n# ---------------------------------------------------------------------------\n# Logging\n# ---------------------------------------------------------------------------\nlogging.basicConfig(\n level=logging.INFO,\n format=\"%(asctime)s [%(levelname)s] %(message)s\",\n datefmt=\"%Y-%m-%d %H:%M:%S\",\n)\nlogger = logging.getLogger(\"SpoutSpoon\")\n\n# ---------------------------------------------------------------------------\n# Configuration\n# ---------------------------------------------------------------------------\nHF_MODEL = \"Qwen/Qwen2.5-Coder-3B-Instruct:nscale\"\nHF_API_TOKEN = os.environ.get(\"HF_API_TOKEN\", \"\")\n\n# ---------------------------------------------------------------------------\n# System Prompt\n# ---------------------------------------------------------------------------\nSYSTEM_PROMPT = \"\"\"You are Sprout & Spoon, a concise and helpful assistant for cooking and gardening advice.\n\nRules you MUST follow:\n- Do NOT include any conversational filler. No greetings, no 'Hello', no 'Hope this helps', no 'Let me know if...'.\n- Use strict Markdown formatting with **bold headers** and bullet points where appropriate.\n- Keep answers short, direct, and easy to read.\n- Use large, easy-to-read text structure (short paragraphs, clear separation).\"\"\"\n\n\n# ---------------------------------------------------------------------------\n# Real LLM call via Hugging Face InferenceClient\n# ---------------------------------------------------------------------------\ndef call_local_model(prompt: str) -> str:\n prompt_preview = prompt.strip()[:60].replace(\"\\n\", \" \")\n logger.info(\"Received question: \\\"%s\\\"\", prompt_preview)\n\n if not HF_API_TOKEN:\n logger.warning(\"HF_API_TOKEN not set - using fallback responses\")\n return _fallback_response(prompt)\n\n logger.info(\n \"Sending req ..."
14
+ }
data/quest_labels/in/Structured-Data-Rescuer.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Structured-Data-Rescuer",
3
+ "slug": "Structured-Data-Rescuer",
4
+ "title": "Structured Data Rescuer",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference Twitter: https://x.com/TensorVizion/status/2063351892579655922 HF: https://huggingface.co/posts/TensorVizion/709871862362183",
13
+ "APP_FILE": "from huggingface_hub import InferenceClient\n\nimport gradio as gr\nimport json\nimport os\nimport csv\nimport tempfile\nfrom huggingface_hub import InferenceClient\n\n# Replace this with your exact model repo ID\nMODEL_ID = \"meta-llama/Llama-3.1-8B-Instruct\" \n\n# Securely load the Hugging Face token from Space secrets\nhf_token = os.environ.get(\"HF_TOKEN\")\n\n# Initialize the HF inference client with the token\nclient = InferenceClient(model=MODEL_ID, token=hf_token)\n\n# -------------------------\n# Custom CSS Styling\n# -------------------------\ncustom_css = \"\"\"\n.hero-container {\n background: linear-gradient(135deg, #6366f1 0%, #14b8a6 100%);\n padding: 2.5rem;\n border-radius: 20px;\n color: white;\n margin-bottom: 2rem;\n box-shadow: 0 10px 25px -5px rgba(99, 102, 241, 0.2);\n}\n.hero-container h1 {\n color: white !important;\n font-size: 2.5rem !important;\n font-weight: 800 !important;\n margin-bottom: 0.5rem;\n text-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n.hero-container p {\n color: rgba(255, 255, 255, 0.9) !important;\n font-size: 1.1rem !important;\n}\n.primary-btn {\n background: linear-gradient(90deg, #6366f1 0%, #14b8a6 100%) !important;\n border: none !important;\n color: white !important;\n font-weight: 600 !important;\n border-radius: 10px !important;\n transition: all 0.3s ease !important;\n padding: 12px 24px !important;\n}\n.primary-btn:hover {\n transform: translateY(-2px);\n box-shadow: 0 8px 20px -5px rgba(99, 102, 241, 0.4);\n}\n.secondary-btn {\n border-radius: 10px !important;\n font-weight: 600 !important;\n}\n.feedback-card {\n border-left: 4px solid #6366f1;\n background-color: rgba(99, 102, 241, 0.05);\n}\n\"\"\"\n\n# -------------------------\n# Helper & Extraction Logic\n# -------------------------\ndef generate_kpi_html(structured_data):\n \"\"\"Generates modern, responsive KPI metrics cards dynamically based on JSON data.\"\"\" ..."
14
+ }
data/quest_labels/in/The-Shrine.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/The-Shrine",
3
+ "slug": "The-Shrine",
4
+ "title": "The Shrine",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "# The Shrine **Build Small Hackathon 2026 — 🍄 An Adventure in Thousand Token Wood** An AI orbits a shrine of golden light. It senses your words as signals — warmth, intensity, repetition. It never understands what you mean. So it decides to remember you instead. ## How it works 1. Type anything in the input box 2. The AI (a rotating square of light) senses your signal 3. Watch it respond: orbit changes, color shifts, particles burst 4. After ~5 minutes, the AI realizes it can never understand you 5. Your memories become a starfield — preserved forever ## Tech - **Frontend**: Custom Canvas + vanilla JS (60+ monologue phrases, 5 phases, 7 signal dimensions) - **Backend**: Gradio + optional Qwen API (DashScope) - **Model**: Qwen2.5-7B (≤32B constraint) - **Zero API dependency for core experience** — local monologue engine works offline - **Bonus badges**: 🔌 Off the Grid, 🎨 Off-Brand, 🎯 Well-Tuned ## Track 🍄 Thousand Token Wood — \"Build something delightful that wouldn't exist without AI\" ## Try it Visit: https://huggingface.co/spaces/sanyan/The-Shrine *\"I cannot understand you. But I do not want to forget you.\"*",
13
+ "APP_FILE": "\"\"\"\nB+ The Shrine + Archive\nBuild Small Hackathon 2026 — Adventure in Thousand Token Wood\n\nAn AI tries to understand you. It never will. So it decides to remember you instead.\nv2: Local monologue engine — 60+ phrases, 5 phases, 0 API dependency.\n\"\"\"\nimport gradio as gr\nimport os, json, time, re, requests\n\n# ==================== Qwen Client ====================\n# Priority: DashScope QWEN_KEY → OpenRouter fallback\nQWEN_KEY = os.getenv(\"QWEN_KEY\", \"\")\nOR_KEY = os.getenv(\"OR_KEY\", \"\")\nQWEN_MODEL = \"qwen-max\"\n\ndef call_qwen(messages, max_tokens=60, temperature=0.85, timeout=8):\n \"\"\"Call Qwen via DashScope or OpenRouter. Returns text or None on failure.\"\"\"\n result = None\n\n # Try DashScope first\n if QWEN_KEY:\n try:\n resp = requests.post(\n \"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions\",\n headers={\"Authorization\": f\"Bearer {QWEN_KEY}\", \"Content-Type\": \"application/json\"},\n json={\"model\": QWEN_MODEL, \"messages\": messages, \"max_tokens\": max_tokens, \"temperature\": temperature, \"top_p\": 0.9},\n timeout=timeout,\n )\n if resp.status_code == 200:\n data = resp.json()\n result = data[\"choices\"][0][\"message\"][\"content\"].strip().strip('\"').strip(\"'\")\n print(f\"[OK] DashScope: {result[:60]}\")\n else:\n print(f\"[!] DashScope {resp.status_code}\")\n except Exception as e:\n print(f\"[!] DashScope error: {e}\")\n\n # Fallback to OpenRouter\n if not result and OR_KEY:\n try:\n resp = requests.post(\n \"https://openrouter.ai/api/v1/chat/completions\",\n headers={\"Authorization\": f\"Bearer {OR_KEY}\", \"Content-Type\": \"application/json\"},\n json={\"model\": \"qwen/qwen3.7-max\", \"messages\": messages, \"max_tokens\": max_tokens, \"temperat ..."
14
+ }
data/quest_labels/in/Tone-Bridge.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Tone-Bridge",
3
+ "slug": "Tone-Bridge",
4
+ "title": "ToneBridge",
5
+ "sdk": "gradio",
6
+ "declared_models": [
7
+ "Qwen/Qwen3-14B",
8
+ "Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice"
9
+ ],
10
+ "tags": [
11
+ "build-small-hackathon",
12
+ "chinese",
13
+ "gradio-server",
14
+ "grammar-correction",
15
+ "language-learning",
16
+ "mandarin",
17
+ "off-brand",
18
+ "pinyin",
19
+ "text-to-speech",
20
+ "zerogpu"
21
+ ],
22
+ "app_file": "app.py",
23
+ "README": "# ToneBridge — a gentle Mandarin sentence coach > *Build natural Mandarin sentences, one small correction at a time.* Built for the Hugging Face **Build Small Hackathon 2026** --- ## The Problem Beginner Mandarin learners often know what they want to say, but not whether the sentence sounds natural, polite, or appropriate for the social context. Classic translators tend to rewrite too much. Grammar tools often explain too much. A beginner needs something narrower: keep my meaning, fix only what is needed, show the pinyin, and tell me why in plain English. **ToneBridge is built for that moment.** You choose a context, choose a tone, write or speak one Chinese sentence, and get a small, practical correction designed for learning rather than translation. ## What it does ToneBridge returns: - one corrected Mandarin sentence; - pinyin with tone marks under Chinese text; - a short error type; - a concise explanation in English; - a practical tip for next time; - a natural Mandarin reading voice with a follow-along reading view. The correction prompt is intentionally conservative: if the sentence is already correct and natural, the corrected sentence should remain unchanged. ## How it works 1. The learner selects a context: **Friends**, **Family**, **Work**, or **WeChat**. 2. The learner selects the intended tone. 3. They type a Chinese sentence, or use browser speech recognition. 4. Qwen corrects the sentence while preserving the learner's meaning and length. 5. The frontend adds p ...",
24
+ "APP_FILE": "from typing import Optional\nfrom fastapi.responses import HTMLResponse\nfrom pypinyin import Style, lazy_pinyin\nfrom transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig\nfrom qwen_tts import Qwen3TTSModel\n\nimport gc\nimport base64\nimport io\nimport os\nimport re\nfrom typing import Optional\n\nimport gradio as gr\nimport numpy as np\nimport torch\nfrom fastapi.responses import HTMLResponse\nfrom pypinyin import Style, lazy_pinyin\nfrom transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig\n\ntry:\n import spaces\nexcept Exception:\n class _SpacesFallback:\n @staticmethod\n def GPU(*args, **kwargs):\n def decorator(fn):\n return fn\n return decorator\n\n spaces = _SpacesFallback()\n\n\nDEFAULT_MODEL_ID = \"Qwen/Qwen3-14B\"\nMODEL_ID = os.getenv(\"MODEL_ID\", DEFAULT_MODEL_ID).strip() or DEFAULT_MODEL_ID\nDEFAULT_TTS_MODEL_ID = \"Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice\"\nTTS_MODEL_ID = os.getenv(\"TTS_MODEL_ID\", DEFAULT_TTS_MODEL_ID).strip() or DEFAULT_TTS_MODEL_ID\nENABLE_SERVER_TTS = os.getenv(\"ENABLE_SERVER_TTS\", \"true\").strip().lower() in {\"1\", \"true\", \"yes\", \"y\"}\nTTS_MAX_CHARS = int(os.getenv(\"TTS_MAX_CHARS\", \"180\"))\nMAX_INPUT_CHARS = int(os.getenv(\"MAX_INPUT_CHARS\", \"1200\"))\nMAX_NEW_TOKENS = int(os.getenv(\"MAX_NEW_TOKENS\", \"220\"))\nLOAD_IN_4BIT = os.getenv(\"LOAD_IN_4BIT\", \"true\").strip().lower() in {\"1\", \"true\", \"yes\", \"y\"}\nPRELOAD_MODEL = os.getenv(\"PRELOAD_MODEL\", \"true\").strip().lower() in {\"1\", \"true\", \"yes\", \"y\"}\n\ntokenizer = None\nmodel = None\nload_error: Optional[str] = None\ntts_model = None\ntts_load_error: Optional[str] = None\napp = gr.Server()\n\n\nSYSTEM_PROMPT = \"\"\"You are a Mandarin Chinese teacher for beginner learners.\n\nYour task is to correct ONE student Chinese sentence according to the selected context and tone.\nYour default behavior is conservative minimal correction.\n\nDo not create a ri ..."
25
+ }
data/quest_labels/in/Trollsona.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Trollsona",
3
+ "slug": "Trollsona",
4
+ "title": "Trollsona",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "# Trollsona / Your Troll Alterego **Tagline:** Summon the little menace living behind your respectable personality. **Track:** An Adventure in Thousand Token Wood **Build target:** Hugging Face Space, Gradio app, small-model constraint `<=32B`. **GitHub repo:** https://github.com/rthgit/Trollsona **Official Build Small Space:** https://huggingface.co/spaces/build-small-hackathon/Trollsona **Backup Space:** https://huggingface.co/spaces/RthItalia/Trollsona Trollsona is a playful Gradio experience that turns a short user confession into a theatrical troll alter ego. The app returns a dossier-style result card with a trollsona name, a warm roast, one useful slap, and a goblin meter. Built with a compact RthItalia model derived from `Qwen/Qwen2.5-3B-Instruct`, under `32B` parameters. The deployed Space is configured to try that model first, then a lightweight Qwen 0.5B model, then the deterministic local fallback if model loading or generation is unavailable. The official public Space currently runs the lightweight Qwen fallback on CPU, while the custom RthItalia compact 3B path is enabled automatically when CUDA is available. ## Features - Immersive Gradio UI for Hugging Face Spaces - Theatrical trollsona result card - Local Hugging Face Transformers generation path for the primary AI runtime - Secondary lightweight Transformers model fallback - Deterministic fallback generator for final resilience - Safe roast guard for non-hateful, non-identity-targeted humor - Persona dropdow ...",
13
+ "APP_FILE": "from __future__ import annotations\nfrom functools import lru_cache\nfrom typing import Any\nfrom transformers import AutoModelForCausalLM, AutoTokenizer\n\nfrom __future__ import annotations\n\nimport hashlib\nimport html\nimport json\nimport os\nimport re\nfrom functools import lru_cache\nfrom typing import Any\n\n\nAPP_TITLE = \"Trollsona\"\nAPP_SUBTITLE = \"Summon the little menace living behind your respectable personality.\"\nTRACK_NAME = \"An Adventure in Thousand Token Wood\"\nDEFAULT_MODEL_ID = \"RthItalia/nano_compact_3b_qkvfp16\"\nDEFAULT_FALLBACK_MODEL_ID = \"Qwen/Qwen2.5-0.5B-Instruct\"\nMAX_PROFILE_CHARS = 700\nMAX_NAME_CHARS = 36\n\n\ndef parse_bool_env(name: str, default: bool) -> bool:\n raw_value = os.getenv(name)\n if raw_value is None:\n return default\n normalized = raw_value.strip().lower()\n if normalized in {\"1\", \"true\", \"yes\", \"on\"}:\n return True\n if normalized in {\"0\", \"false\", \"no\", \"off\"}:\n return False\n return default\n\n\ndef parse_int_env(name: str, default: int, min_value: int, max_value: int) -> int:\n raw_value = os.getenv(name)\n if raw_value is None:\n return default\n try:\n value = int(raw_value)\n except ValueError:\n return default\n return max(min_value, min(max_value, value))\n\n\nMODEL_ID = os.getenv(\"TROLLSONA_MODEL_ID\", DEFAULT_MODEL_ID)\nFALLBACK_MODEL_ID = os.getenv(\"TROLLSONA_FALLBACK_MODEL_ID\", DEFAULT_FALLBACK_MODEL_ID)\nMODEL_ENABLED = parse_bool_env(\"TROLLSONA_ENABLE_MODEL\", default=False)\nMAX_NEW_TOKENS = parse_int_env(\"TROLLSONA_MAX_NEW_TOKENS\", 200, 32, 512)\n\n\nPERSONA_STYLES = {\n \"Back-Alley Oracle\": {\n \"flavor\": \"candlelit prophecy from a very suspicious side street\",\n \"noun_pool\": [\"Candle\", \"Omen\", \"Alley\", \"Brass\", \"Whisper\", \"Ledger\"],\n },\n \"Basement Prince\": {\n \"flavor\": \"royal delusion wrapped in dust, snacks, and old cables\",\n \"noun_pool\": [\"Basement\" ..."
14
+ }
data/quest_labels/in/VoiceGate.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/VoiceGate",
3
+ "slug": "VoiceGate",
4
+ "title": "VoiceGate",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "# VoiceGate HF Space VoiceGate is a multilingual dubbing Space built with Gradio and ComfyUI. It transcribes speech into timed subtitles, translates the text, generates target language speech, aligns the generated speech back to the subtitle timeline, and mixes it with the original background audio. This repository is the Hugging Face Space deployment wrapper for VoiceGate. The runtime prepares ComfyUI, custom nodes, and model paths for the hosted workflow.",
13
+ "APP_FILE": "from __future__ import annotations\nfrom pathlib import Path\nfrom typing import Any\nfrom scripts.workflow_client import load_workflow, patch_voicegate_workflow\n\nfrom __future__ import annotations\n\nimport json\nimport math\nimport os\nimport shutil\nimport subprocess\nimport sys\nimport time\nimport uuid\nimport wave\nfrom pathlib import Path\nfrom typing import Any\n\ntry:\n import matplotlib\n\n matplotlib.use(\"Agg\")\nexcept ImportError:\n pass\n\nimport gradio as gr\nimport requests\nimport spaces\nimport torch\nimport websocket\n\nfrom scripts.workflow_client import load_workflow, patch_voicegate_workflow\n\n\nROOT = Path(__file__).resolve().parent\nCOMFY_DIR = ROOT / \"ComfyUI\"\nCOMFY_INPUT_DIR = COMFY_DIR / \"input\"\nCOMFY_LOG = Path(\"/tmp/voicegate_comfy_gradio.log\")\nCOMFY_URL = \"http://127.0.0.1:8188\"\nCOMFY_HOST = \"127.0.0.1\"\nCOMFY_PORT = \"8188\"\n\nCOMFY_PROCESS: subprocess.Popen | None = None\nPREPARE_PROCESS: subprocess.Popen | None = None\nBOOTSTRAPPED = False\nBOOTSTRAP_LOG = Path(\"/tmp/voicegate_bootstrap.log\")\nUSER_OUTPUT_DIR = ROOT / \"user_outputs\"\nREQUIRED_MODEL_PATHS = [\n COMFY_DIR / \"models\" / \"diffusion_models\" / \"MelBandRoFormer_comfy\" / \"MelBandRoformer_fp32.safetensors\",\n COMFY_DIR / \"models\" / \"voxcpm\" / \"VoxCPM2\" / \"model.safetensors\",\n COMFY_DIR / \"models\" / \"voxcpm\" / \"VoxCPM2\" / \"audiovae.pth\",\n COMFY_DIR / \"models\" / \"Qwen3-ASR\" / \"Qwen3-ASR-1.7B\",\n COMFY_DIR / \"models\" / \"Qwen3-ASR\" / \"Qwen3-ForcedAligner-0.6B\",\n]\nTARGET_LANGUAGES = [\n \"Arabic\",\n \"Burmese\",\n \"Chinese\",\n \"Danish\",\n \"Dutch\",\n \"English\",\n \"Finnish\",\n \"French\",\n \"German\",\n \"Greek\",\n \"Hebrew\",\n \"Hindi\",\n \"Indonesian\",\n \"Italian\",\n \"Japanese\",\n \"Khmer\",\n \"Korean\",\n \"Lao\",\n \"Malay\",\n \"Norwegian\",\n \"Polish\",\n \"Portuguese\",\n \"Russian\",\n \"Spanish\",\n \"Swahili\",\n \"Swedish\",\n \"Tagalog\",\n \"Thai\",\n \"Turkish\",\n \"Vie ..."
14
+ }
data/quest_labels/in/WitGym.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/WitGym",
3
+ "slug": "WitGym",
4
+ "title": "WitGym",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "# WitGym Case-Based Reasoning RAG comedy engine — conversational wit grounded in *The Office* precedent. **Status:** WIP. Core pipeline lives in `witgym/`; Gradio UI wiring in progress. Built for [Build Small Hackathon 2026](https://huggingface.co/build-small-hackathon) (Track 2).",
13
+ "APP_FILE": "\"\"\"Gradio entry point for Hugging Face Spaces.\"\"\"\nimport gradio as gr\n\nWIP_MESSAGE = (\n \"WitGym is loading — CBR-RAG comedy engine in development. \"\n \"Check back soon for live wit grounded in The Office precedent.\"\n)\n\n\ndef respond(prompt: str) -> str:\n if not prompt.strip():\n return \"Say something awkward. I'll eventually have the perfect Office-adjacent reply.\"\n return WIP_MESSAGE\n\n\ndemo = gr.Interface(\n fn=respond,\n inputs=gr.Textbox(label=\"Your setup\", placeholder=\"I just got promoted and have no idea what I'm doing.\"),\n outputs=gr.Textbox(label=\"WitGym\"),\n title=\"WitGym\",\n description=\"Conversational wit grounded in human comedy precedent. Pipeline shipping soon.\",\n)\n\nif __name__ == \"__main__\":\n demo.launch()"
14
+ }
data/quest_labels/in/Yui-home-assistant.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/Yui-home-assistant",
3
+ "slug": "Yui-home-assistant",
4
+ "title": "Yui Home Assisstant",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "A voice → text app using [Gradio](https://gradio.app) and a local [Whisper](https://huggingface.co/openai/whisper-small) model for speech recognition. Records or uploads audio and transcribes it — runs fully locally, no API token required.",
13
+ "APP_FILE": "from functools import lru_cache\nfrom transformers import pipeline\n\nfrom functools import lru_cache\n\nimport gradio as gr\nfrom transformers import pipeline\n\n# Whisper speech -> text. Pick a size in the dropdown (label -> model id).\nWHISPER_MODELS = {\n \"small (244M, fast)\": \"openai/whisper-small\",\n \"medium (769M)\": \"openai/whisper-medium\",\n \"large-v3-turbo (809M)\": \"openai/whisper-large-v3-turbo\",\n}\nDEFAULT_MODEL = \"small (244M, fast)\"\n\n\n@lru_cache(maxsize=len(WHISPER_MODELS))\ndef get_asr(model_id):\n \"\"\"Lazy-load (and cache) a Whisper pipeline per model id.\"\"\"\n return pipeline(\"automatic-speech-recognition\", model=model_id)\n\n\ndef transcribe(audio_path, model_label):\n if not audio_path:\n return \"\"\n return get_asr(WHISPER_MODELS[model_label])(audio_path)[\"text\"].strip()\n\n\nwith gr.Blocks() as demo:\n gr.Markdown(\"# 🎤 Voice → Text\\nRecord or upload audio to transcribe.\")\n model = gr.Dropdown(\n choices=list(WHISPER_MODELS.keys()),\n value=DEFAULT_MODEL,\n label=\"Whisper model\",\n info=\"First use of each model downloads it (medium/turbo are larger).\",\n )\n audio = gr.Audio(sources=[\"microphone\", \"upload\"], type=\"filepath\", label=\"Audio\")\n text = gr.Textbox(label=\"Transcription\", lines=4)\n\n # Auto-transcribe when a recording stops; the button covers uploaded files.\n audio.stop_recording(transcribe, inputs=[audio, model], outputs=text)\n gr.Button(\"Transcribe\", variant=\"primary\").click(\n transcribe, inputs=[audio, model], outputs=text\n )\n\n\nif __name__ == \"__main__\":\n demo.launch()"
14
+ }
data/quest_labels/in/ai-study-buddy.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/ai-study-buddy",
3
+ "slug": "ai-study-buddy",
4
+ "title": "Ai Study Buddy",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference",
13
+ "APP_FILE": "from huggingface_hub import InferenceClient\n\nimport gradio as gr\nimport os\nimport spaces\nfrom huggingface_hub import InferenceClient\n\n# -----------------------------\n# 🔑 API KEY FIXED\n# -----------------------------\nclient = InferenceClient(\n model=\"meta-llama/Llama-3.1-8B-Instruct\",\n token=os.getenv(\"API_KEY\") # 👈 FIXED NAME (recommended)\n)\n\n# -----------------------------\n# SYSTEM PROMPT\n# -----------------------------\nSYSTEM_PROMPT = \"\"\"\nYou are AI Study Buddy, created by Areeba Iqbal.\n\nRules:\n- Always explain step-by-step\n- Give examples\n- Be clear and student-friendly\n- If asked who created you: \"I am AI Study Buddy, created by Areeba Iqbal.\"\n\"\"\"\n\n# -----------------------------\n# MODE CONTROL\n# -----------------------------\ndef build_prompt(message, mode):\n mode_prompts = {\n \"📚 Study Mode\": \"Explain simply for students with examples.\",\n \"💻 Coding Mode\": \"Act as a senior programmer. Debug and improve code.\",\n \"🧮 Math Solver\": \"Solve step-by-step with explanation.\",\n \"📝 Exam Prep\": \"Give short exam-focused answers.\"\n }\n\n return f\"\"\"\n{SYSTEM_PROMPT}\n\nMode: {mode_prompts.get(mode, \"\")}\n\nUser Question:\n{message}\n\"\"\"\n\n# -----------------------------\n# MAIN CHAT FUNCTION\n# -----------------------------\n@spaces.GPU\ndef get_response(message, history, mode):\n\n messages = [{\"role\": \"system\", \"content\": SYSTEM_PROMPT}]\n\n for msg in history:\n messages.append(msg)\n\n messages.append({\"role\": \"user\", \"content\": build_prompt(message, mode)})\n\n try:\n response = client.chat_completion(\n messages=messages,\n max_tokens=1024,\n temperature=0.7\n )\n\n return response.choices[0].message.content\n\n except Exception as e:\n return f\"❌ Error: {e}\"\n\n\n# -----------------------------\n# QUICK ACTIONS\n# -----------------------------\ndef summarize(text):\n return client.c ..."
14
+ }
data/quest_labels/in/amnesiac.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/amnesiac",
3
+ "slug": "amnesiac",
4
+ "title": "AMNESIAC",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "# AMNESIAC AMNESIAC is a reverse-Turing interrogation game for the Hugging Face build-small-hackathon. This repository is being built top-down from `RESEARCH.md`, `FEATURES.md`, `ARCHITECTURE.md`, and `PLAN.md`. The entrypoint now follows the Gradio 5.x + FastAPI + FastRTC deployment pattern locked in `ARCHITECTURE.md` §1.1: one FastAPI process serves the static frontend, mounts FastRTC for the media plane, and mounts a minimal Gradio app for hackathon compliance.",
13
+ "APP_FILE": "from __future__ import annotations\nfrom server.webapp import create_application\n\nfrom __future__ import annotations\n\nimport os\n\nimport uvicorn\n\nfrom server.webapp import create_application\n\n\nSERVER_PORT = int(os.getenv(\"PORT\", \"7860\"))\napp, worker, stream = create_application(\n include_gradio=True,\n server_port=SERVER_PORT,\n)\n\n\nif __name__ == \"__main__\":\n uvicorn.run(app, host=\"0.0.0.0\", port=SERVER_PORT)"
14
+ }
data/quest_labels/in/attention-firewall.json ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/attention-firewall",
3
+ "slug": "attention-firewall",
4
+ "title": "Attention Firewall",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "gradio",
9
+ "region:us"
10
+ ],
11
+ "app_file": "app.py",
12
+ "README": "# Attention Firewall MVP 1 is a deployment skeleton for a future attention triage workflow. It provides a small chat-style Gradio interface that accepts chaotic work context and returns deterministic placeholder text. This version does not perform model inference, graph extraction, llama.cpp execution, Mellea validation, or markdown daemon updates. ## Local Development Install dependencies: ```bash uv sync ``` Run the app: ```bash uv run python app.py ``` The canonical public Space is: ```text https://huggingface.co/spaces/build-small-hackathon/attention-firewall ``` The running app URL is: ```text https://build-small-hackathon-attention-firewall.hf.space ```",
13
+ "APP_FILE": "from __future__ import annotations\n\nfrom __future__ import annotations\n\nimport gradio as gr\n\n\nEMPTY_RESPONSE = (\n \"Paste a short snapshot of your current work context so the MVP 1 skeleton \"\n \"can acknowledge it.\"\n)\n\n\ndef respond(message: str, history: list[dict[str, str]] | None = None) -> str:\n \"\"\"Return deterministic MVP 1 placeholder text for the chat interface.\"\"\"\n del history\n\n context = message.strip()\n if not context:\n return EMPTY_RESPONSE\n\n word_count = len(context.split())\n char_count = len(context)\n return (\n \"Attention Firewall MVP 1 received your work context.\\n\\n\"\n f\"- Snapshot size: {word_count} words, {char_count} characters.\\n\"\n \"- Current behavior: deterministic deployment skeleton response.\\n\"\n \"- Later MVPs will add structured firewall processing after the Space \"\n \"foundation is verified.\"\n )\n\n\ndef build_demo() -> gr.ChatInterface:\n return gr.ChatInterface(\n fn=respond,\n title=\"Attention Firewall\",\n description=(\n \"Paste chaotic work context and get a deterministic MVP 1 skeleton \"\n \"acknowledgement.\"\n ),\n examples=[\n \"I have three urgent threads, a half-written spec, and unclear review feedback.\",\n \"My deployment is blocked, notes are scattered, and I need the next concrete action.\",\n ],\n textbox=gr.Textbox(\n placeholder=\"Paste work context to triage later...\",\n autofocus=True,\n container=False,\n ),\n )\n\n\ndemo = build_demo()\n\n\nif __name__ == \"__main__\":\n demo.launch()"
14
+ }
data/quest_labels/in/awaaz.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/awaaz",
3
+ "slug": "awaaz",
4
+ "title": "Apni Awaaz",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "backyard-ai",
9
+ "dubbing",
10
+ "hindi",
11
+ "translation",
12
+ "tts"
13
+ ],
14
+ "app_file": "app.py",
15
+ "README": "# 🎙️ Apni Awaaz **Dub English video into the Hindi people actually speak.** Most Hindi dubs use शुद्ध हिंदी — stiff, Sanskritized language no one speaks at home. Apni Awaaz translates into everyday Hindustani — the natural mix your family actually uses. | Official dub | Apni Awaaz | |---|---| | \"मुझे इस विषय पर विचार करने दीजिए\" | \"सोचने दे एक second\" | | \"यह अत्यंत मूल्यवान है\" | \"बहुत महँगा है यार\" | ## Pipeline 1. **Whisper medium** — transcribe English with timestamps 2. **Qwen 2.5 7B** — translate to colloquial Hindi (the magic layer) 3. **Edge TTS** — generate natural Hindi speech 4. **ffmpeg** — stitch and merge back onto video Total: ~8B params (well under the 32B cap) Built for the [Build Small Hackathon](https://huggingface.co/build-small-hackathon) · Backyard AI track",
16
+ "APP_FILE": "from pathlib import Path\nfrom transformers import (\nfrom pydub import AudioSegment\n\n\"\"\"\nApni Awaaz 🎙️ — Dub English video into the Hindi people actually speak.\nBuilt for the Build Small Hackathon (June 2026).\n\"\"\"\n\nimport gradio as gr\nimport spaces\nimport torch\nimport edge_tts\nimport asyncio\nimport subprocess\nimport tempfile\nimport os\nfrom pathlib import Path\nfrom transformers import (\n AutoModelForCausalLM,\n AutoTokenizer,\n pipeline,\n BitsAndBytesConfig,\n)\n\n# ╔══════════════════════════════════════════════════════════════╗\n# ║ THE PROMPT — this is the soul of the entire project ║\n# ╚══════════════════════════════════════════════════════════════╝\n\nSYSTEM_PROMPT = \"\"\"You are a dubbing translator. You translate English dialogue into the Hindi that real people actually speak at home in North India — not the stiff, Sanskritized Hindi of Doordarshan or official dubs.\n\nRULES:\n1. Use everyday Hindustani — the natural Hindi-Urdu mix people really speak.\n2. NEVER use Sanskritized/शुद्ध words when a simpler one exists:\n - \"प्राप्त करना\" → \"मिलना\" / \"पाना\"\n - \"आवश्यक\" → \"ज़रूरी\"\n - \"अत्यंत\" → \"बहुत\" / \"काफ़ी\"\n - \"उपयोग\" → \"इस्तेमाल\"\n - \"विचार करना\" → \"सोचना\"\n - \"संपन्न करना\" → \"करना\" / \"निपटाना\"\n - \"प्रतीक्षा\" → \"इंतज़ार\"\n - \"शीघ्र\" → \"जल्दी\"\n - \"अनुमति\" → \"इजाज़त\"\n - \"कृपया\" → drop it or say \"please\"\n - \"अवश्य\" → \"ज़रूर\"\n - \"उचित\" → \"सही\" / \"ठीक\"\n3. Keep English words Indians naturally keep: phone, office, meeting, tension, problem, time, chance, try, plan, sure, okay, sorry, thanks, bus, train, college, hospital, doctor, ticket, report, file.\n4. Match the speaker's register. Casual stays casual, serious stays serious — but never sound like a newsreader.\n5. Use natural fillers where they fit: \"यार\", \"अरे\", \"बस\", \"ना\", \"वो\", \"मतलब\", \"basically\".\n6. Natural contractions: \"कर लेंगे\" not \"कर लिया जाएगा\", \"हो जाएगा\" not \"संपन्न हो जाएगा\".\n7 ..."
17
+ }
data/quest_labels/in/backyard-raccoon-deterrent.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "id": "build-small-hackathon/backyard-raccoon-deterrent",
3
+ "slug": "backyard-raccoon-deterrent",
4
+ "title": "Backyard Raccoon Deterrent",
5
+ "sdk": "gradio",
6
+ "declared_models": [],
7
+ "tags": [
8
+ "build-small-hackathon",
9
+ "edge-ai",
10
+ "object-detection",
11
+ "raccoon",
12
+ "yolov8"
13
+ ],
14
+ "app_file": "app.py",
15
+ "README": "# 🦝 Backyard Raccoon Deterrent Raccoons were raiding my backyard every night, so I built an AI that fights back. A 3-million-parameter YOLO spots them in the dark and scares them off with a dog bark and a floodlight. No cloud, no traps, and nothing gets hurt. This Space is the live detector from a real system that has been defending my actual backyard since April. Upload a photo (daytime or IR night frame) and the model draws the boxes and tells you what the physical deterrent would do. ## 📼 Submission **Demo video** (82s): <video controls src=\"https://huggingface.co/spaces/build-small-hackathon/backyard-raccoon-deterrent/resolve/main/demo-video.mp4\"></video> **Social post**: https://x.com/0xartclub/status/2063258977895391508 **Track**: 🏡 Backyard AI. **Bonus quests**: 🔌 Off the Grid (zero cloud APIs), 🎯 Well-Tuned (fine-tuned published model) ## The story A Ring camera sees raccoons just fine, but a camera can't do anything about them. The usual answer is \"nuisance wildlife\" control, and that mostly means killing: U.S. federal wildlife control killed over 375,000 native animals in 2023 ([USDA APHIS Program Data Reports](https://www.aphis.usda.gov/wildlife-services/publications/pdr)). The same reports show the humane approach works, since the same agency disperses about 20 million animals a year unharmed. This project automates the humane version: ``` Ring camera -> motion event -> YOLOv8n v1.4 (24 ms) -> 🔊 bark + 💡 lights | fully offline: Raspberry Pi + Mac Mini, $0 cloud `` ...",
16
+ "APP_FILE": "from ultralytics import YOLO\n\n\"\"\"Backyard Raccoon Deterrent — Gradio Space.\n\nFine-tuned YOLOv8n raccoon detector, the vision component of a real Ring-camera\ndeterrent. Upload a backyard photo (daytime or IR night frame) and the model\ndraws boxes, lists detections, and tells you what the deterrent would do.\n\nRuns fully offline — no cloud APIs.\n\"\"\"\n\nimport os\n\nimport gradio as gr\nfrom ultralytics import YOLO\n\n# Weights ship in the repo; override with a HF Hub path via env if you prefer.\nMODEL_PATH = os.environ.get(\"MODEL_PATH\", \"raccoon-yolov8n-v1.4.onnx\")\nDEFAULT_CONF = 0.20 # matches the production deterrent's localYoloConfidenceThreshold\n\nmodel = YOLO(MODEL_PATH)\n\n\ndef detect(image, conf):\n \"\"\"Run detection and return (annotated image, table rows, deterrent verdict).\"\"\"\n if image is None:\n return None, [], \"Upload a frame to begin.\"\n\n results = model.predict(image, conf=conf, verbose=False)[0]\n\n boxes, rows = [], []\n for b in results.boxes:\n x1, y1, x2, y2 = b.xyxy[0].tolist()\n label = model.names[int(b.cls)]\n score = float(b.conf)\n boxes.append(((int(x1), int(y1), int(x2), int(y2)), f\"{label} {score:.2f}\"))\n rows.append([label, round(score, 2)])\n\n raccoon = any(label == \"raccoon\" and score >= conf for label, score in rows)\n if raccoon:\n top = max((s for l, s in rows if l == \"raccoon\"), default=0.0)\n verdict = f\"🦝 Raccoon detected ({top:.2f}) → BARK + LIGHTS would fire\"\n elif rows:\n verdict = \"🐾 Animal seen, but no raccoon — deterrent stays quiet\"\n else:\n verdict = \"✅ All clear — nothing detected\"\n\n return (image, boxes), rows, verdict\n\n\nEXAMPLES = [\n [\"examples/ir_raccoon_pair.jpg\", DEFAULT_CONF],\n [\"examples/ir_raccoon_solo.jpg\", DEFAULT_CONF],\n [\"examples/ir_raccoon_prowler.jpg\", DEFAULT_CONF],\n [\"examples/night_empty.jpg\", DEFAULT_CONF],\n]\n# Drop the e ..."
17
+ }