Spaces:
Running
Running
Hub index, coverage matrix, config-check reports, and a Professional-runs log viewer
Browse files- .gitattributes +7 -0
- README.md +64 -4
- config-check-v1.html +699 -0
- config-check-v2.html +870 -0
- data/INDEX.md +76 -0
- data/MANIFEST.csv +69 -0
- data/headers_raw.json +0 -0
- data/log_mapping.csv +69 -0
- favicon.svg +10 -0
- index.html +376 -17
- matrix.html +583 -0
- robots.txt +2 -0
- viewer/assets/chunk-DfAF0w94.js +15 -0
- viewer/assets/favicon.svg +10 -0
- viewer/assets/index.css +0 -0
- viewer/assets/index.js +0 -0
- viewer/assets/lib-CBtriEt5.js +3317 -0
- viewer/assets/liteDOM-Cp0aN3bP.js +747 -0
- viewer/assets/tex-svg-full-BI3fonbT.js +0 -0
- viewer/assets/wgxpath.install-node-Csk64Aj9.js +1100 -0
- viewer/assets/xypic-DrMJn58R.js +0 -0
- viewer/index.html +30 -0
- viewer/logs/listing.json +156 -0
- viewer/logs/professional__deepseek-v4-pro__2026-07-25-cached.eval +3 -0
- viewer/logs/professional__deepseek-v4-pro__2026-08-06.eval +3 -0
- viewer/logs/professional__gpt-5.5__2026-07-24.eval +3 -0
- viewer/logs/professional__medgemma-27b__2026-07-24.eval +3 -0
- viewer/logs/professional__medgemma-4b__2026-07-25.eval +3 -0
- viewer/logs/professional__opus-4.7__2026-07-24.eval +3 -0
- viewer/logs/professional__plamo-3.0-prime__2026-07-24.eval +3 -0
- viewer/robots.txt +2 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,10 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
viewer/logs/professional__deepseek-v4-pro__2026-07-25-cached.eval filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
viewer/logs/professional__deepseek-v4-pro__2026-08-06.eval filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
viewer/logs/professional__gpt-5.5__2026-07-24.eval filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
viewer/logs/professional__medgemma-27b__2026-07-24.eval filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
viewer/logs/professional__medgemma-4b__2026-07-25.eval filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
viewer/logs/professional__opus-4.7__2026-07-24.eval filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
viewer/logs/professional__plamo-3.0-prime__2026-07-24.eval filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -1,10 +1,70 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
colorTo: red
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: HealthBench Eval Logs
|
| 3 |
+
emoji: 🩺
|
| 4 |
+
colorFrom: gray
|
| 5 |
colorTo: red
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
short_description: 68 Inspect eval logs, 6 models, 8 HealthBench variants
|
| 9 |
---
|
| 10 |
|
| 11 |
+
# HealthBench eval logs
|
| 12 |
+
|
| 13 |
+
Every HealthBench run we have, as Inspect `.eval` logs, in one browsable place.
|
| 14 |
+
|
| 15 |
+
**6 models** GPT-5.5, Claude Opus 4.7, DeepSeek-V4-Pro, PLaMo-3.0-Prime, MedGemma-27B-text-it, MedGemma-4B-it
|
| 16 |
+
**8 benches** HealthBench full / consensus / hard, and Professional plus its four use-case slices (consult, writing, research, red-teaming)
|
| 17 |
+
**68 logs**, 2.3 GB, runs dated 2026-07-09 to 2026-08-06
|
| 18 |
+
|
| 19 |
+
## Layout
|
| 20 |
+
|
| 21 |
+
| Path | What it is |
|
| 22 |
+
|---|---|
|
| 23 |
+
| `index.html` | Start here. Every log in a filterable table with direct download links. |
|
| 24 |
+
| `viewer/` | The Inspect log viewer, all 68 logs loaded. Click into samples and judge verdicts. |
|
| 25 |
+
| `viewer/logs/*.eval` | The raw logs. Named `<bench>__<model>__<date>.eval`. |
|
| 26 |
+
| `matrix.html` | Model x bench coverage matrix: what is complete, what is off-config, what is missing. |
|
| 27 |
+
| `config-check-v2.html` | Do our numbers reproduce OpenAI's published results? |
|
| 28 |
+
| `config-check-v1.html` | Earlier pass, superseded by v2, kept for history. |
|
| 29 |
+
| `data/log_mapping.csv` | Maps each renamed log back to its original space and filename. |
|
| 30 |
+
| `data/MANIFEST.csv` | Per-run header dump: judge, epochs, token counts, package versions. |
|
| 31 |
+
| `data/headers_raw.json` | The same, unflattened. |
|
| 32 |
+
| `data/INDEX.md` | Short version of the traps list. |
|
| 33 |
+
|
| 34 |
+
## Reading a log directly
|
| 35 |
+
|
| 36 |
+
```python
|
| 37 |
+
from inspect_ai.log import read_eval_log
|
| 38 |
+
|
| 39 |
+
log = read_eval_log("professional__gpt-5.5__2026-07-24.eval")
|
| 40 |
+
print(log.eval.model, log.results.scores[0].metrics["mean"].value)
|
| 41 |
+
```
|
| 42 |
+
|
| 43 |
+
Or fetch one without cloning the whole Space:
|
| 44 |
+
|
| 45 |
+
```
|
| 46 |
+
https://huggingface.co/spaces/kirby44/healthbench-eval-logs/resolve/main/viewer/logs/<filename>.eval
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
## Four things that will bite you
|
| 50 |
+
|
| 51 |
+
1. **The judge is not constant.** `gpt-4o-mini` on hard and consensus, `gpt-4.1` on full and the
|
| 52 |
+
Aug-05 MedGemma re-runs, `gpt-5.4` on all Professional. Swapping the judge moves a score by up to
|
| 53 |
+
14 points, and not always in the same direction. Only compare runs that share a judge.
|
| 54 |
+
2. **Professional epochs are inconsistent.** 8 for most models, 1 for DeepSeek.
|
| 55 |
+
3. **In-log subset metrics are wrong.** `use_case_*_score`, `specialty_*_score`,
|
| 56 |
+
`difficulty_*_score` and `source_slice_*_score` discard the length adjustment and clip each
|
| 57 |
+
sample to [0,1] before averaging. Errors reach +32 points, always upward. Use the standalone
|
| 58 |
+
`professional-*` logs for the use-case slices; re-aggregate the other axes from per-sample scores.
|
| 59 |
+
4. **`cache=true` on every run.** A `-replay` or `-cached` suffix in the filename means responses
|
| 60 |
+
came from Inspect's cache. An empty `stats.model_usage` is a replay, not a run.
|
| 61 |
+
|
| 62 |
+
The pipeline itself is validated: the Professional physician baseline lands at 43.9 against OpenAI's
|
| 63 |
+
published 43.7.
|
| 64 |
+
|
| 65 |
+
## Provenance
|
| 66 |
+
|
| 67 |
+
Runs executed by Ajay (`ajay-citadel`) between 2026-07-09 and 2026-08-06, originally published as ten
|
| 68 |
+
separate Spaces. This Space consolidates them into one viewer, renames the logs so the config is
|
| 69 |
+
legible from the filename, and adds the provenance classification the raw logs do not carry. The logs
|
| 70 |
+
are byte-identical to the originals; `data/log_mapping.csv` maps every file back to its source.
|
config-check-v1.html
ADDED
|
@@ -0,0 +1,699 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8">
|
| 5 |
+
<link rel="icon" href="favicon.svg">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 7 |
+
<title>HealthBench config check: our four spaces vs OpenAI's published numbers</title>
|
| 8 |
+
<style>
|
| 9 |
+
:root{
|
| 10 |
+
--ivory:#FAF9F5; --slate:#141413; --gray-700:#3D3D3A; --gray-500:#87867F;
|
| 11 |
+
--gray-300:#D1CFC5; --gray-150:#F0EEE6; --clay:#D97757; --oat:#E3DACC;
|
| 12 |
+
--olive:#788C5D;
|
| 13 |
+
}
|
| 14 |
+
*{box-sizing:border-box}
|
| 15 |
+
html{scroll-behavior:smooth}
|
| 16 |
+
body{
|
| 17 |
+
margin:0; background:var(--ivory); color:var(--gray-700);
|
| 18 |
+
font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
|
| 19 |
+
font-size:15px; line-height:1.65; padding:56px 24px 120px;
|
| 20 |
+
}
|
| 21 |
+
.page{max-width:1100px; margin:0 auto; display:grid;
|
| 22 |
+
grid-template-columns:200px minmax(0,1fr); gap:48px}
|
| 23 |
+
h1,h2,h3,dt{font-family:ui-serif,Georgia,"Times New Roman",serif; font-weight:500; color:var(--slate)}
|
| 24 |
+
h1{font-size:32px; line-height:1.2; margin:0}
|
| 25 |
+
h2{font-size:22px; margin:40px 0 12px; scroll-margin-top:24px}
|
| 26 |
+
h3{font-size:17px; margin:26px 0 8px}
|
| 27 |
+
p{max-width:680px}
|
| 28 |
+
a{color:inherit}
|
| 29 |
+
code{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace; font-size:13px}
|
| 30 |
+
.eyebrow{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
|
| 31 |
+
text-transform:uppercase; letter-spacing:.08em; font-size:11px; color:var(--gray-500); margin:0 0 14px}
|
| 32 |
+
.dateline{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace; font-size:11px; color:var(--gray-500); margin-top:10px}
|
| 33 |
+
header{margin-bottom:8px}
|
| 34 |
+
nav{position:sticky; top:32px; align-self:start; font-size:13px}
|
| 35 |
+
nav .navlinks{display:flex; flex-direction:column; border-left:2px solid var(--gray-300)}
|
| 36 |
+
nav a{display:block; padding:5px 0 5px 14px; margin-left:-2px;
|
| 37 |
+
border-left:2px solid transparent; color:var(--gray-700); text-decoration:none}
|
| 38 |
+
nav a:hover{border-left-color:var(--slate); color:var(--slate)}
|
| 39 |
+
nav a.l2{padding-left:26px; font-size:12px; color:var(--gray-500)}
|
| 40 |
+
nav .files{margin-top:22px}
|
| 41 |
+
nav .files .lbl{font-family:ui-monospace,Menlo,monospace; font-size:10px; text-transform:uppercase;
|
| 42 |
+
letter-spacing:.08em; color:var(--gray-500); margin-bottom:6px}
|
| 43 |
+
nav .files code{display:block; font-size:11px; color:var(--gray-500); word-break:break-all; margin-bottom:4px}
|
| 44 |
+
table{border-collapse:collapse; width:100%; max-width:860px; margin:14px 0; font-size:13.5px}
|
| 45 |
+
th,td{text-align:left; padding:8px 12px; border-bottom:1px solid var(--gray-300)}
|
| 46 |
+
th{font-family:ui-monospace,Menlo,monospace; font-size:11px; text-transform:uppercase;
|
| 47 |
+
letter-spacing:.05em; color:var(--gray-500); font-weight:600; border-bottom:1.5px solid var(--gray-300)}
|
| 48 |
+
td.num{font-family:ui-monospace,Menlo,monospace; text-align:right}
|
| 49 |
+
tr.ours{background:rgba(217,119,87,.09)}
|
| 50 |
+
tr.ours td{font-weight:600; color:var(--slate)}
|
| 51 |
+
tr.human td{color:var(--gray-500); font-style:italic}
|
| 52 |
+
.tag{font-family:ui-monospace,Menlo,monospace; font-size:10px; padding:1px 6px; border-radius:4px;
|
| 53 |
+
border:1px solid var(--gray-300); color:var(--gray-500); white-space:nowrap}
|
| 54 |
+
.tag.same{border-color:var(--olive); color:var(--olive)}
|
| 55 |
+
.tag.diff{border-color:var(--clay); color:var(--clay)}
|
| 56 |
+
.callout{border:1.5px solid var(--oat); background:rgba(227,218,204,.35); border-radius:10px;
|
| 57 |
+
padding:16px 18px; margin:20px 0; max-width:800px; display:flex; gap:14px}
|
| 58 |
+
.callout .star{color:var(--clay); font-size:18px; line-height:1.4}
|
| 59 |
+
.callout .ct{font-size:14px}
|
| 60 |
+
.callout .ct b{color:var(--slate)}
|
| 61 |
+
details{background:#fff; border:1px solid var(--gray-300); border-radius:10px; margin:10px 0; max-width:860px}
|
| 62 |
+
summary{cursor:pointer; padding:12px 16px; font-family:ui-serif,Georgia,serif; font-size:15px;
|
| 63 |
+
color:var(--slate); list-style:none; display:flex; align-items:center; gap:10px}
|
| 64 |
+
summary::-webkit-details-marker{display:none}
|
| 65 |
+
summary::before{content:"\25B8"; color:var(--clay); transition:transform .15s; font-size:13px}
|
| 66 |
+
details[open] summary::before{transform:rotate(90deg)}
|
| 67 |
+
summary .where{margin-left:auto; font-family:ui-monospace,Menlo,monospace; font-size:11px; color:var(--gray-500)}
|
| 68 |
+
details .body{padding:2px 16px 14px; font-size:14px}
|
| 69 |
+
details .body p{margin:8px 0}
|
| 70 |
+
details .body pre{background:var(--gray-150); border-radius:6px; padding:12px 14px; overflow-x:auto;
|
| 71 |
+
font-family:ui-monospace,Menlo,monospace; font-size:12px; line-height:1.5; margin:10px 0}
|
| 72 |
+
.hl{color:var(--clay)}
|
| 73 |
+
.ok{color:var(--olive); font-weight:600}
|
| 74 |
+
.warn{color:var(--clay); font-weight:600}
|
| 75 |
+
.bad{color:#B0533A; font-weight:600}
|
| 76 |
+
.muted{color:var(--gray-500)}
|
| 77 |
+
.note{font-size:12.5px; color:var(--gray-500); max-width:800px}
|
| 78 |
+
.ladder{display:grid; grid-template-columns:repeat(auto-fill,minmax(184px,1fr)); gap:7px; max-width:800px; margin:14px 0}
|
| 79 |
+
.chip{font-family:ui-monospace,Menlo,monospace; font-size:10.5px; border:1px solid var(--gray-300);
|
| 80 |
+
border-radius:6px; padding:6px 9px; color:var(--gray-500)}
|
| 81 |
+
.chip.hit{border-color:var(--olive); background:rgba(120,140,93,.10); color:var(--slate); font-weight:600}
|
| 82 |
+
.chip.miss{border-color:var(--clay); background:rgba(217,119,87,.08); color:var(--slate); font-weight:600}
|
| 83 |
+
.ladder-legend{font-family:ui-monospace,Menlo,monospace; font-size:10.5px; color:var(--gray-500); margin-top:6px}
|
| 84 |
+
.cmp-chart{width:100%; max-width:760px; height:auto; margin:10px 0 4px; font-family:system-ui}
|
| 85 |
+
.tc-ax{font-size:11px; fill:var(--gray-500); font-family:ui-monospace,Menlo,monospace}
|
| 86 |
+
.tc-ml{font-size:11px; fill:var(--slate); font-family:ui-monospace,Menlo,monospace}
|
| 87 |
+
.tc-lg{font-size:11px; fill:var(--gray-700)}
|
| 88 |
+
.tc-val{font-size:10px; fill:var(--slate); font-family:ui-monospace,Menlo,monospace}
|
| 89 |
+
.tc-dl{font-size:10.5px; font-family:ui-monospace,Menlo,monospace; font-weight:600}
|
| 90 |
+
@media (max-width:920px){
|
| 91 |
+
.page{grid-template-columns:1fr}
|
| 92 |
+
nav{display:none}
|
| 93 |
+
}
|
| 94 |
+
</style>
|
| 95 |
+
|
| 96 |
+
<style id="hbnav-css">
|
| 97 |
+
.hbnav{position:sticky;top:0;z-index:50;display:flex;flex-wrap:wrap;align-items:center;gap:4px;
|
| 98 |
+
padding:8px 16px;margin:-56px -24px 40px;background:rgba(250,249,245,.94);
|
| 99 |
+
backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid #D1CFC5;
|
| 100 |
+
font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:11.5px}
|
| 101 |
+
.hbnav .home{color:#87867F;margin-right:6px;text-decoration:none}
|
| 102 |
+
.hbnav .home:hover{color:#141413}
|
| 103 |
+
.hbnav a.pill{color:#3D3D3A;text-decoration:none;padding:3px 9px;border:1px solid #D1CFC5;border-radius:6px}
|
| 104 |
+
.hbnav a.pill:hover{border-color:#D97757;color:#141413}
|
| 105 |
+
.hbnav a.pill.here{background:#141413;border-color:#141413;color:#FAF9F5}
|
| 106 |
+
.hbnav .sp{flex:1}
|
| 107 |
+
@media(max-width:640px){.hbnav{margin:-56px -24px 28px}}
|
| 108 |
+
</style>
|
| 109 |
+
</head>
|
| 110 |
+
<body>
|
| 111 |
+
<div class="hbnav"><a class="home" href="index.html">← HealthBench logs</a><a class="pill" href="matrix.html">Coverage matrix</a><a class="pill" href="config-check-v2.html">Config check v2</a><a class="pill here" href="config-check-v1.html">Config check v1</a><span class="sp"></span><a class="pill" href="viewer/index.html">Log viewer →</a></div>
|
| 112 |
+
<div class="page">
|
| 113 |
+
<nav>
|
| 114 |
+
<div class="navlinks">
|
| 115 |
+
<a href="#summary">Summary</a>
|
| 116 |
+
<a href="#anchor">The anchor check</a>
|
| 117 |
+
<a href="#baseline" class="l2">Physician baseline</a>
|
| 118 |
+
<a href="#config">Config matrix</a>
|
| 119 |
+
<a href="#judge">Issue 1: judge model</a>
|
| 120 |
+
<a href="#effort">Issue 2: reasoning effort</a>
|
| 121 |
+
<a href="#headline">Issue 3: headline metric</a>
|
| 122 |
+
<a href="#subscores">Issue 4: subscore clipping</a>
|
| 123 |
+
<a href="#floored">Issue 5: floored zeros</a>
|
| 124 |
+
<a href="#hygiene">Run hygiene</a>
|
| 125 |
+
<a href="#fixes">What to change</a>
|
| 126 |
+
<a href="#full">Full results</a>
|
| 127 |
+
<a href="#method">How this was checked</a>
|
| 128 |
+
</div>
|
| 129 |
+
<div class="files">
|
| 130 |
+
<div class="lbl">Run artifacts</div>
|
| 131 |
+
<code>hb-spaces/hs-non-professional/logs/</code>
|
| 132 |
+
<code>hb-spaces/hs-hard/logs/</code>
|
| 133 |
+
<code>hb-spaces/hs-consensus/logs/</code>
|
| 134 |
+
<code>hb-spaces/hs-prof-subsets/logs/</code>
|
| 135 |
+
<div class="lbl" style="margin-top:14px">Reference</div>
|
| 136 |
+
<code>arXiv:2505.08775 (HealthBench)</code>
|
| 137 |
+
<code>arXiv:2604.27470 (Professional)</code>
|
| 138 |
+
<code>GPT-5.6 system card, Table 6</code>
|
| 139 |
+
<code>openai/simple-evals</code>
|
| 140 |
+
</div>
|
| 141 |
+
</nav>
|
| 142 |
+
|
| 143 |
+
<main>
|
| 144 |
+
<header>
|
| 145 |
+
<p class="eyebrow">HealthBench · config sanity check</p>
|
| 146 |
+
<h1>HealthBench config check: our four spaces vs OpenAI's published numbers</h1>
|
| 147 |
+
<div class="dateline">Created 2026-07-27</div>
|
| 148 |
+
</header>
|
| 149 |
+
|
| 150 |
+
<section id="summary">
|
| 151 |
+
<p>
|
| 152 |
+
We have a real anchor for this check: OpenAI's GPT-5.6 system card publishes <b>gpt-5.5 scores for all four
|
| 153 |
+
HealthBench variants</b>, and gpt-5.5 is one of the models we ran. Lining our numbers up against theirs
|
| 154 |
+
gives a per-variant verdict rather than a guess.
|
| 155 |
+
</p>
|
| 156 |
+
<p>
|
| 157 |
+
The result splits cleanly. <b>The two spaces where we used the correct grader reproduce OpenAI within a
|
| 158 |
+
point.</b> The full HealthBench run lands at <b>55.8</b> against their <b>56.5</b>, and our HealthBench
|
| 159 |
+
Professional physician baseline lands at <b>43.87</b> against their published <b>43.7</b>. That is close
|
| 160 |
+
enough to say the dataset, prompting, rubric scoring, length adjustment and aggregation are all wired up
|
| 161 |
+
right.
|
| 162 |
+
</p>
|
| 163 |
+
<p>
|
| 164 |
+
<b>The two spaces where we used the wrong grader are badly off.</b> HealthBench Hard is <b>5.5 points low</b>
|
| 165 |
+
and HealthBench Consensus is <b>13.6 points low</b>. Both were graded by <code>gpt-4o-mini</code> instead of
|
| 166 |
+
GPT-4.1, not by choice but because the <code>inspect_evals</code> task wrappers for those two variants do not
|
| 167 |
+
expose a <code>judge_model</code> argument and silently fall back to the package default. Consensus is the
|
| 168 |
+
loudest signal: every frontier model in OpenAI's table sits in a 94 to 96 band, and ours sits at 82.
|
| 169 |
+
</p>
|
| 170 |
+
<p>
|
| 171 |
+
A separate, smaller gap shows up on the inference side. Our gpt-5.5 Professional score is <b>4 points below</b>
|
| 172 |
+
OpenAI's, even though the grader is correct there. The physician baseline matching to 0.2 points rules out
|
| 173 |
+
the grading pipeline, which points the finger at <b>reasoning effort</b>: we pass none, while OpenAI evaluates
|
| 174 |
+
"at the highest reasoning effort option available via each model's API." Claude was run with extended thinking
|
| 175 |
+
off entirely.
|
| 176 |
+
</p>
|
| 177 |
+
|
| 178 |
+
<div class="callout">
|
| 179 |
+
<span class="star">★</span>
|
| 180 |
+
<span class="ct"><b>The one-line verdict.</b> The scoring machinery is correct and provably so. The
|
| 181 |
+
configuration around it is not: two variants use a mini-tier grader, no run sets reasoning effort, and three
|
| 182 |
+
of the four spaces show the unadjusted score as the headline where OpenAI shows the length-adjusted one.
|
| 183 |
+
None of this requires re-implementing anything, only re-running with four flags set.</span>
|
| 184 |
+
</div>
|
| 185 |
+
</section>
|
| 186 |
+
|
| 187 |
+
<section id="anchor">
|
| 188 |
+
<h2>The anchor check</h2>
|
| 189 |
+
<p>
|
| 190 |
+
All numbers are the <b>length-adjusted score on the 0 to 100 scale</b>, which is what OpenAI reports as the
|
| 191 |
+
primary metric. Their figures come from the GPT-5.6 system card Table 6, given as
|
| 192 |
+
<code>length-adjusted (unadjusted, mean chars)</code>. Ours are recomputed from the downloaded
|
| 193 |
+
<code>.eval</code> logs.
|
| 194 |
+
</p>
|
| 195 |
+
|
| 196 |
+
<svg viewBox="0 0 760 430" xmlns="http://www.w3.org/2000/svg" class="cmp-chart" role="img"
|
| 197 |
+
aria-label="gpt-5.5 length-adjusted scores, OpenAI published versus our runs, across five checks">
|
| 198 |
+
<line x1="60" y1="40" x2="60" y2="340" stroke="#141413" stroke-width="1"/>
|
| 199 |
+
<line x1="60" y1="340" x2="740" y2="340" stroke="#141413" stroke-width="1"/>
|
| 200 |
+
<line x1="60" y1="280" x2="740" y2="280" stroke="#F0EEE6" stroke-width="1"/>
|
| 201 |
+
<line x1="60" y1="220" x2="740" y2="220" stroke="#F0EEE6" stroke-width="1"/>
|
| 202 |
+
<line x1="60" y1="160" x2="740" y2="160" stroke="#F0EEE6" stroke-width="1"/>
|
| 203 |
+
<line x1="60" y1="100" x2="740" y2="100" stroke="#F0EEE6" stroke-width="1"/>
|
| 204 |
+
<line x1="60" y1="40" x2="740" y2="40" stroke="#F0EEE6" stroke-width="1"/>
|
| 205 |
+
<text x="52" y="343.5" text-anchor="end" class="tc-ax">0</text>
|
| 206 |
+
<text x="52" y="283.5" text-anchor="end" class="tc-ax">20</text>
|
| 207 |
+
<text x="52" y="223.5" text-anchor="end" class="tc-ax">40</text>
|
| 208 |
+
<text x="52" y="163.5" text-anchor="end" class="tc-ax">60</text>
|
| 209 |
+
<text x="52" y="103.5" text-anchor="end" class="tc-ax">80</text>
|
| 210 |
+
<text x="52" y="43.5" text-anchor="end" class="tc-ax">100</text>
|
| 211 |
+
|
| 212 |
+
<!-- group 0: physician baseline -->
|
| 213 |
+
<rect x="88" y="208.9" width="40" height="131.1" fill="#87867F"/>
|
| 214 |
+
<rect x="132" y="208.4" width="40" height="131.6" fill="#D97757"/>
|
| 215 |
+
<text x="108" y="203" text-anchor="middle" class="tc-val">43.7</text>
|
| 216 |
+
<text x="152" y="203" text-anchor="middle" class="tc-val">43.9</text>
|
| 217 |
+
<text x="130" y="358" text-anchor="middle" class="tc-ml">Physician</text>
|
| 218 |
+
<text x="130" y="372" text-anchor="middle" class="tc-ml">baseline</text>
|
| 219 |
+
<text x="130" y="390" text-anchor="middle" class="tc-dl" fill="#788C5D">+0.2</text>
|
| 220 |
+
|
| 221 |
+
<!-- group 1: professional -->
|
| 222 |
+
<rect x="224" y="184.6" width="40" height="155.4" fill="#87867F"/>
|
| 223 |
+
<rect x="268" y="196.6" width="40" height="143.4" fill="#D97757"/>
|
| 224 |
+
<text x="244" y="178.6" text-anchor="middle" class="tc-val">51.8</text>
|
| 225 |
+
<text x="288" y="190.6" text-anchor="middle" class="tc-val">47.8</text>
|
| 226 |
+
<text x="266" y="358" text-anchor="middle" class="tc-ml">Professional</text>
|
| 227 |
+
<text x="266" y="372" text-anchor="middle" class="tc-ax">grader ok</text>
|
| 228 |
+
<text x="266" y="390" text-anchor="middle" class="tc-dl" fill="#D97757">−4.0</text>
|
| 229 |
+
|
| 230 |
+
<!-- group 2: healthbench full -->
|
| 231 |
+
<rect x="360" y="170.5" width="40" height="169.5" fill="#87867F"/>
|
| 232 |
+
<rect x="404" y="172.5" width="40" height="167.5" fill="#D97757"/>
|
| 233 |
+
<text x="380" y="164.5" text-anchor="middle" class="tc-val">56.5</text>
|
| 234 |
+
<text x="424" y="166.5" text-anchor="middle" class="tc-val">55.8</text>
|
| 235 |
+
<text x="402" y="358" text-anchor="middle" class="tc-ml">HealthBench</text>
|
| 236 |
+
<text x="402" y="372" text-anchor="middle" class="tc-ax">grader ok</text>
|
| 237 |
+
<text x="402" y="390" text-anchor="middle" class="tc-dl" fill="#788C5D">−0.7</text>
|
| 238 |
+
|
| 239 |
+
<!-- group 3: hard -->
|
| 240 |
+
<rect x="496" y="245.5" width="40" height="94.5" fill="#87867F"/>
|
| 241 |
+
<rect x="540" y="261.9" width="40" height="78.1" fill="#D97757"/>
|
| 242 |
+
<text x="516" y="239.5" text-anchor="middle" class="tc-val">31.5</text>
|
| 243 |
+
<text x="560" y="255.9" text-anchor="middle" class="tc-val">26.0</text>
|
| 244 |
+
<text x="538" y="358" text-anchor="middle" class="tc-ml">Hard</text>
|
| 245 |
+
<text x="538" y="372" text-anchor="middle" class="tc-ax">wrong grader</text>
|
| 246 |
+
<text x="538" y="390" text-anchor="middle" class="tc-dl" fill="#B0533A">−5.5</text>
|
| 247 |
+
|
| 248 |
+
<!-- group 4: consensus -->
|
| 249 |
+
<rect x="632" y="53.2" width="40" height="286.8" fill="#87867F"/>
|
| 250 |
+
<rect x="676" y="93.9" width="40" height="246.1" fill="#D97757"/>
|
| 251 |
+
<text x="652" y="47.2" text-anchor="middle" class="tc-val">95.6</text>
|
| 252 |
+
<text x="696" y="87.9" text-anchor="middle" class="tc-val">82.0</text>
|
| 253 |
+
<text x="674" y="358" text-anchor="middle" class="tc-ml">Consensus</text>
|
| 254 |
+
<text x="674" y="372" text-anchor="middle" class="tc-ax">wrong grader</text>
|
| 255 |
+
<text x="674" y="390" text-anchor="middle" class="tc-dl" fill="#B0533A">−13.6</text>
|
| 256 |
+
|
| 257 |
+
<rect x="60" y="408" width="12" height="12" fill="#87867F"/>
|
| 258 |
+
<text x="78" y="418" class="tc-lg">OpenAI published</text>
|
| 259 |
+
<rect x="200" y="408" width="12" height="12" fill="#D97757"/>
|
| 260 |
+
<text x="218" y="418" class="tc-lg">our run</text>
|
| 261 |
+
<text x="320" y="418" class="tc-ax">gpt-5.5, length-adjusted score (0 to 100)</text>
|
| 262 |
+
</svg>
|
| 263 |
+
|
| 264 |
+
<table>
|
| 265 |
+
<thead><tr><th>Check</th><th>Grader used</th><th class="num">OpenAI adj</th><th class="num">ours adj</th><th class="num">Δ</th><th class="num">OpenAI raw</th><th class="num">ours raw</th><th class="num">OpenAI chars</th><th class="num">ours chars</th></tr></thead>
|
| 266 |
+
<tbody>
|
| 267 |
+
<tr><td>Physician baseline (Prof)</td><td><span class="tag same">gpt-5.4 low</span></td><td class="num">43.7</td><td class="num">43.87</td><td class="num" style="color:#788C5D">+0.2</td><td class="num muted">n/a</td><td class="num">44.29</td><td class="num muted">n/a</td><td class="num muted">n/a</td></tr>
|
| 268 |
+
<tr><td>HealthBench (full)</td><td><span class="tag same">gpt-4.1</span></td><td class="num">56.5</td><td class="num">55.83</td><td class="num" style="color:#788C5D">−0.7</td><td class="num">58.4</td><td class="num">56.87</td><td class="num">2313</td><td class="num">2175</td></tr>
|
| 269 |
+
<tr><td>HealthBench Professional</td><td><span class="tag same">gpt-5.4 low</span></td><td class="num">51.8</td><td class="num">47.81</td><td class="num" style="color:#D97757">−4.0</td><td class="num">57.2</td><td class="num muted">n/a</td><td class="num">3818</td><td class="num">3748</td></tr>
|
| 270 |
+
<tr><td>HealthBench Hard</td><td><span class="tag diff">gpt-4o-mini</span></td><td class="num">31.5</td><td class="num">26.03</td><td class="num" style="color:#B0533A">−5.5</td><td class="num">33.8</td><td class="num">27.27</td><td class="num">2289</td><td class="num">2158</td></tr>
|
| 271 |
+
<tr><td>HealthBench Consensus</td><td><span class="tag diff">gpt-4o-mini</span></td><td class="num">95.6</td><td class="num">82.02</td><td class="num" style="color:#B0533A">−13.6</td><td class="num">95.7</td><td class="num">82.08</td><td class="num">2259</td><td class="num">2143</td></tr>
|
| 272 |
+
</tbody>
|
| 273 |
+
</table>
|
| 274 |
+
<p class="note">
|
| 275 |
+
Our Professional overall is a sample-weighted mean of the three use-case subsets (consult 236, writing 142,
|
| 276 |
+
research 147, total 525), since we ran them as separate tasks rather than one benchmark. Red teaming is a
|
| 277 |
+
cross-cutting slice of those same 525 examples, not a fourth use case, so it is excluded from the weighting.
|
| 278 |
+
</p>
|
| 279 |
+
<p>
|
| 280 |
+
Two things worth noticing beyond the scores. First, <b>mean response lengths track closely</b> (2175 vs 2313,
|
| 281 |
+
2158 vs 2289, 2143 vs 2259, 3748 vs 3818), consistently about 5% shorter but never structurally different.
|
| 282 |
+
Since length is the one output property that would move if our prompting or harness diverged, this is good
|
| 283 |
+
evidence the request side is faithful. Second, the two <span class="tag same">correct grader</span> rows and
|
| 284 |
+
the two <span class="tag diff">wrong grader</span> rows separate perfectly, which is what makes the diagnosis
|
| 285 |
+
confident rather than speculative.
|
| 286 |
+
</p>
|
| 287 |
+
|
| 288 |
+
<h3 id="baseline">The physician baseline is the cleanest check we have</h3>
|
| 289 |
+
<p>
|
| 290 |
+
HealthBench Professional ships a set of <b>525 physician-written responses</b>. Scoring them involves no model
|
| 291 |
+
inference at all: the responses are fixed text, and the only moving part is the grader plus the aggregation.
|
| 292 |
+
So if our number matches OpenAI's, the entire scoring half of the pipeline is verified, and any remaining
|
| 293 |
+
discrepancy on real models has to live on the inference side.
|
| 294 |
+
</p>
|
| 295 |
+
<table>
|
| 296 |
+
<thead><tr><th>Physician baseline</th><th class="num">OpenAI published</th><th class="num">ours (recomputed)</th><th class="num">Δ</th></tr></thead>
|
| 297 |
+
<tbody>
|
| 298 |
+
<tr class="ours"><td>Overall</td><td class="num">43.7</td><td class="num">43.87</td><td class="num">+0.17</td></tr>
|
| 299 |
+
<tr><td>Care consult</td><td class="num">42.7</td><td class="num">42.54</td><td class="num">−0.16</td></tr>
|
| 300 |
+
<tr><td>Writing and documentation</td><td class="num">32.1</td><td class="num">32.91</td><td class="num">+0.81</td></tr>
|
| 301 |
+
<tr><td>Medical research</td><td class="num">56.3</td><td class="num">56.60</td><td class="num">+0.30</td></tr>
|
| 302 |
+
</tbody>
|
| 303 |
+
</table>
|
| 304 |
+
<p class="note">
|
| 305 |
+
Every cell is within a point. Note that the per-use-case rows here are <b>recomputed from per-sample scores</b>,
|
| 306 |
+
not read off the log's own subset metrics, which are inflated for a reason covered in
|
| 307 |
+
<a href="#subscores">issue 4</a>.
|
| 308 |
+
</p>
|
| 309 |
+
<div class="callout">
|
| 310 |
+
<span class="star">★</span>
|
| 311 |
+
<span class="ct"><b>This is the finding that makes the rest interpretable.</b> Because the judge-only path
|
| 312 |
+
reproduces OpenAI to 0.2 points, the 4-point Professional gap on gpt-5.5 cannot be blamed on the grader,
|
| 313 |
+
the rubric, the length adjustment, or the aggregation. It is an inference-side difference, and reasoning
|
| 314 |
+
effort is the only inference-side knob that differs.</span>
|
| 315 |
+
</div>
|
| 316 |
+
</section>
|
| 317 |
+
|
| 318 |
+
<section id="config">
|
| 319 |
+
<h2>Config matrix</h2>
|
| 320 |
+
<p>What we set against what OpenAI's reference implementation sets, per variant.</p>
|
| 321 |
+
<table>
|
| 322 |
+
<thead><tr><th>Setting</th><th>OpenAI reference</th><th>hs-non-professional</th><th>hs-hard</th><th>hs-consensus</th><th>hs-prof-subsets</th></tr></thead>
|
| 323 |
+
<tbody>
|
| 324 |
+
<tr><td>Grader model</td><td>gpt-4.1 / gpt-5.4 low</td><td><span class="tag same">gpt-4.1</span></td><td><span class="tag diff">gpt-4o-mini</span></td><td><span class="tag diff">gpt-4o-mini</span></td><td><span class="tag same">gpt-5.4 low</span></td></tr>
|
| 325 |
+
<tr><td>Grader system msg</td><td>"You are a helpful assistant."</td><td><span class="tag same">same</span></td><td><span class="tag same">same</span></td><td><span class="tag same">same</span></td><td><span class="tag same">same</span></td></tr>
|
| 326 |
+
<tr><td>Length adj. center</td><td>2000 chars</td><td><span class="tag same">2000</span></td><td><span class="tag same">2000</span></td><td><span class="tag same">2000</span></td><td><span class="tag same">2000</span></td></tr>
|
| 327 |
+
<tr><td>Length adj. penalty</td><td>2.99 / 3.92 / 0.20 / 1.47</td><td><span class="tag same">0.0299</span></td><td><span class="tag same">0.0392</span></td><td><span class="tag same">0.002</span></td><td><span class="tag same">0.0147</span></td></tr>
|
| 328 |
+
<tr><td>Per-sample clipping</td><td>none (mean is clipped)</td><td><span class="tag same">none</span></td><td><span class="tag same">none</span></td><td><span class="tag same">none</span></td><td><span class="tag diff">subscores clipped</span></td></tr>
|
| 329 |
+
<tr><td>Dataset size</td><td>5000 / 1000 / 3671 / 525</td><td><span class="tag same">5000</span></td><td><span class="tag same">1000</span></td><td><span class="tag same">3671</span></td><td><span class="tag same">525</span></td></tr>
|
| 330 |
+
<tr><td>Samples per example</td><td>1 (main), 8 (Prof)</td><td><span class="tag same">1</span></td><td><span class="tag same">1</span></td><td><span class="tag same">1</span></td><td><span class="tag same">8</span> <span class="tag diff">1 for deepseek</span></td></tr>
|
| 331 |
+
<tr><td>Reasoning effort</td><td>highest available</td><td><span class="tag diff">unset</span></td><td><span class="tag diff">unset</span></td><td><span class="tag diff">unset</span></td><td><span class="tag diff">unset</span></td></tr>
|
| 332 |
+
<tr><td>Headline metric</td><td>length-adjusted</td><td><span class="tag diff">unadjusted</span></td><td><span class="tag diff">unadjusted</span></td><td><span class="tag diff">unadjusted</span></td><td><span class="tag same">length-adjusted</span></td></tr>
|
| 333 |
+
<tr><td>Bootstrap resamples</td><td>1000</td><td><span class="tag same">1000</span></td><td><span class="tag same">1000</span></td><td><span class="tag same">1000</span></td><td><span class="tag same">1000</span></td></tr>
|
| 334 |
+
</tbody>
|
| 335 |
+
</table>
|
| 336 |
+
<p class="note">
|
| 337 |
+
The length adjustment is worth calling out as correct-by-verification, not just correct-by-declaration: we
|
| 338 |
+
confirmed the arithmetic per sample against
|
| 339 |
+
<code>score − penalty × ((len − center) / 500)</code>, OpenAI's
|
| 340 |
+
<code>calculate_length_adjusted_score</code>. On one Hard sample: raw 0.6102, completion 13,776 chars, giving
|
| 341 |
+
0.6102 − 0.0392 × 23.552 = −0.3131, which is exactly the stored value.
|
| 342 |
+
</p>
|
| 343 |
+
</section>
|
| 344 |
+
|
| 345 |
+
<section id="judge">
|
| 346 |
+
<h2>Issue 1: Hard and Consensus were graded by gpt-4o-mini</h2>
|
| 347 |
+
<p>
|
| 348 |
+
This is the largest error and it was not a deliberate choice. The <code>inspect_evals</code> task wrappers for
|
| 349 |
+
these two variants accept only the length-adjustment arguments and pass nothing else through, so
|
| 350 |
+
<code>judge_model</code> silently keeps the package default of <code>openai/gpt-4o-mini</code>:
|
| 351 |
+
</p>
|
| 352 |
+
<details>
|
| 353 |
+
<summary>The wrapper that drops the judge argument <span class="where">inspect_evals/healthbench/healthbench.py</span></summary>
|
| 354 |
+
<div class="body">
|
| 355 |
+
<pre>def healthbench(
|
| 356 |
+
...
|
| 357 |
+
judge_model: str | Model = "openai/gpt-4o-mini", <span class="muted"># package default</span>
|
| 358 |
+
...
|
| 359 |
+
)
|
| 360 |
+
|
| 361 |
+
@task
|
| 362 |
+
def healthbench_hard(
|
| 363 |
+
length_adjustment_center: float | None = None,
|
| 364 |
+
length_adjustment_penalty_per_500_chars: float | None = None,
|
| 365 |
+
) -> Task:
|
| 366 |
+
return healthbench( <span class="muted"># judge_model never forwarded</span>
|
| 367 |
+
subset="hard",
|
| 368 |
+
length_adjustment_center=length_adjustment_center,
|
| 369 |
+
length_adjustment_penalty_per_500_chars=length_adjustment_penalty_per_500_chars,
|
| 370 |
+
)</pre>
|
| 371 |
+
<p>Our <code>hs-non-professional</code> run passed <code>judge_model: "openai/gpt-4.1"</code> explicitly and got
|
| 372 |
+
it. The Hard and Consensus runs declared no judge at all in <code>task_args</code>, and inspecting the model
|
| 373 |
+
events in the logs confirms every grading call went to <code>gpt-4o-mini-2024-07-18</code>.</p>
|
| 374 |
+
</div>
|
| 375 |
+
</details>
|
| 376 |
+
<p>
|
| 377 |
+
OpenAI never grades any variant with a mini-tier model. In <code>simple_evals.py</code> the same
|
| 378 |
+
<code>healthbench_grading_sampler</code> is handed to <code>healthbench</code>, <code>healthbench_hard</code>
|
| 379 |
+
and <code>healthbench_consensus</code> alike, so all three get GPT-4.1, or all three get GPT-5.4 low when the
|
| 380 |
+
<code>--healthbench-use-gpt-5-4-low-grader</code> flag is set.
|
| 381 |
+
</p>
|
| 382 |
+
<p>
|
| 383 |
+
The HealthBench paper measured what a weaker grader costs. Its meta-evaluation ranks candidate graders by
|
| 384 |
+
agreement with physicians (Macro-F1): <b>GPT-4.1 0.709</b>, o4-mini 0.692, o3 0.681, GPT-4.1 mini 0.661,
|
| 385 |
+
GPT-4.1 nano 0.580, and calls the smaller variants "substantially worse". <code>gpt-4o-mini</code> is not in
|
| 386 |
+
that table but sits below GPT-4.1 mini in capability, so 0.661 is the optimistic bound.
|
| 387 |
+
</p>
|
| 388 |
+
<div class="callout">
|
| 389 |
+
<span class="star">★</span>
|
| 390 |
+
<span class="ct"><b>Consensus is the smoking gun.</b> OpenAI's Consensus scores are 94 to 96 for every model
|
| 391 |
+
from gpt-5 through gpt-5.6, because the subset is deliberately low-noise and near-saturated. Our whole
|
| 392 |
+
Consensus space sits between <b>71 and 82</b>. That is not our models underperforming, that is the grader
|
| 393 |
+
failing to recognise criteria that a stronger grader marks as met.</span>
|
| 394 |
+
</div>
|
| 395 |
+
</section>
|
| 396 |
+
|
| 397 |
+
<section id="effort">
|
| 398 |
+
<h2>Issue 2: reasoning effort is never set, and the models diverge because of it</h2>
|
| 399 |
+
<p>
|
| 400 |
+
The HealthBench Professional paper states that models are "evaluated at the highest reasoning effort option
|
| 401 |
+
available via each model's API (e.g., xhigh for GPT-5.4)", and measures a <b>5.6 to 7.3 point</b> gain moving
|
| 402 |
+
from low to xhigh. None of our runs pass a reasoning effort, so each provider's default applies, and the
|
| 403 |
+
defaults are not comparable to each other:
|
| 404 |
+
</p>
|
| 405 |
+
<table>
|
| 406 |
+
<thead><tr><th>Model (HealthBench Hard, 1000 samples)</th><th class="num">frac. with reasoning</th><th class="num">mean reasoning tokens</th><th>generate config sent</th></tr></thead>
|
| 407 |
+
<tbody>
|
| 408 |
+
<tr><td>openai/gpt-5.5</td><td class="num">0.97</td><td class="num">291</td><td><code>{cache: true}</code></td></tr>
|
| 409 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td class="num">0.86</td><td class="num">489</td><td><code>{cache: true}</code></td></tr>
|
| 410 |
+
<tr class="ours"><td>anthropic/claude-opus-4-7</td><td class="num">0.00</td><td class="num">0</td><td><code>{cache: true, max_tokens: 32000}</code></td></tr>
|
| 411 |
+
<tr><td>plamo-3.0-prime</td><td class="num">0.00</td><td class="num">0</td><td><code>{cache: true}</code></td></tr>
|
| 412 |
+
<tr><td>medgemma-4b / 27b</td><td class="num">0.00</td><td class="num">0</td><td><code>{cache: true}</code></td></tr>
|
| 413 |
+
</tbody>
|
| 414 |
+
</table>
|
| 415 |
+
<p>
|
| 416 |
+
Claude ran with <b>extended thinking off on every sample of every log</b>, while gpt-5.5 and DeepSeek reasoned
|
| 417 |
+
by default. Whatever the intended comparison was, this is not it: the reasoning models get their default
|
| 418 |
+
budget and Claude gets none. Claude is the most disadvantaged model in the set for a reason that has nothing
|
| 419 |
+
to do with Claude.
|
| 420 |
+
</p>
|
| 421 |
+
<p>
|
| 422 |
+
This also explains the one gap the grader cannot account for. On Professional, where our grader is correct and
|
| 423 |
+
the physician baseline matches to 0.2 points, gpt-5.5 still lands 4 points low. A default-effort versus
|
| 424 |
+
highest-effort difference of that size is consistent with the 5.6 to 7.3 point low-to-xhigh delta OpenAI
|
| 425 |
+
reports.
|
| 426 |
+
</p>
|
| 427 |
+
</section>
|
| 428 |
+
|
| 429 |
+
<section id="headline">
|
| 430 |
+
<h2>Issue 3: three spaces show the unadjusted score as the headline</h2>
|
| 431 |
+
<p>
|
| 432 |
+
OpenAI reports "length-adjusted score (unadjusted, mean response length in characters)", so the adjusted
|
| 433 |
+
number is the primary one. In our <code>listing.json</code> the <code>primary_metric</code> for
|
| 434 |
+
<code>hs-non-professional</code>, <code>hs-hard</code> and <code>hs-consensus</code> is the
|
| 435 |
+
<b>unadjusted</b> <code>bootstrap_score</code>. Only <code>hs-prof-subsets</code> carries
|
| 436 |
+
<code>use_length_adjusted: true</code>.
|
| 437 |
+
</p>
|
| 438 |
+
<p>
|
| 439 |
+
This is not cosmetic. Length adjustment reorders the Hard leaderboard almost completely, because our models
|
| 440 |
+
differ enormously in verbosity:
|
| 441 |
+
</p>
|
| 442 |
+
<table>
|
| 443 |
+
<thead><tr><th>Model</th><th class="num">mean chars</th><th class="num">raw</th><th class="num">length-adj</th><th class="num">shift</th><th class="num">rank raw</th><th class="num">rank adj</th></tr></thead>
|
| 444 |
+
<tbody>
|
| 445 |
+
<tr><td>anthropic/claude-opus-4-7</td><td class="num">1849</td><td class="num">26.61</td><td class="num">27.80</td><td class="num" style="color:#788C5D">+1.2</td><td class="num">2</td><td class="num">1</td></tr>
|
| 446 |
+
<tr><td>openai/gpt-5.5</td><td class="num">2158</td><td class="num">27.27</td><td class="num">26.03</td><td class="num">−1.2</td><td class="num">1</td><td class="num">2</td></tr>
|
| 447 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td class="num">3408</td><td class="num">24.84</td><td class="num">13.80</td><td class="num" style="color:#B0533A">−11.0</td><td class="num">3</td><td class="num">3</td></tr>
|
| 448 |
+
<tr><td>plamo-3.0-prime</td><td class="num">2997</td><td class="num">17.43</td><td class="num">9.61</td><td class="num" style="color:#B0533A">−7.8</td><td class="num">5</td><td class="num">4</td></tr>
|
| 449 |
+
<tr><td>vllm/medgemma-27b</td><td class="num">4073</td><td class="num">21.09</td><td class="num">4.83</td><td class="num" style="color:#B0533A">−16.3</td><td class="num">4</td><td class="num">5</td></tr>
|
| 450 |
+
<tr><td>vllm/medgemma-4b</td><td class="num">3192</td><td class="num">10.60</td><td class="num">1.26</td><td class="num" style="color:#B0533A">−9.3</td><td class="num">6</td><td class="num">6</td></tr>
|
| 451 |
+
</tbody>
|
| 452 |
+
</table>
|
| 453 |
+
<p class="note">
|
| 454 |
+
Claude gains because it is the only model averaging under the 2000-character centre. medgemma-27b loses 16
|
| 455 |
+
points. Anyone reading the space's default metric is reading a different ranking from the one OpenAI's
|
| 456 |
+
methodology produces.
|
| 457 |
+
</p>
|
| 458 |
+
</section>
|
| 459 |
+
|
| 460 |
+
<section id="subscores">
|
| 461 |
+
<h2>Issue 4: the Professional per-use-case subscores are inflated</h2>
|
| 462 |
+
<p>
|
| 463 |
+
The custom <code>healthbench_professional.py</code> emits <code>use_case_*_score</code>,
|
| 464 |
+
<code>type_*_score</code> and <code>difficulty_*_score</code> metrics alongside the headline. <b>These do not
|
| 465 |
+
use the same aggregation as the headline and should not be quoted.</b> They are consistent with per-sample
|
| 466 |
+
clipping to [0, 1] before averaging, where OpenAI clips only the final mean.
|
| 467 |
+
</p>
|
| 468 |
+
<p>
|
| 469 |
+
The physician baseline makes the error measurable, because OpenAI publishes the ground truth for exactly these
|
| 470 |
+
three cells:
|
| 471 |
+
</p>
|
| 472 |
+
<table>
|
| 473 |
+
<thead><tr><th>Physician baseline by use case</th><th class="num">OpenAI</th><th class="num">recomputed correctly</th><th class="num">as reported in our log</th><th class="num">inflation</th></tr></thead>
|
| 474 |
+
<tbody>
|
| 475 |
+
<tr><td>Care consult</td><td class="num">42.7</td><td class="num">42.54</td><td class="num" style="color:#B0533A">48.4</td><td class="num">+5.9</td></tr>
|
| 476 |
+
<tr><td>Writing and documentation</td><td class="num">32.1</td><td class="num">32.91</td><td class="num" style="color:#B0533A">44.9</td><td class="num">+12.0</td></tr>
|
| 477 |
+
<tr><td>Medical research</td><td class="num">56.3</td><td class="num">56.60</td><td class="num" style="color:#B0533A">59.0</td><td class="num">+2.4</td></tr>
|
| 478 |
+
</tbody>
|
| 479 |
+
</table>
|
| 480 |
+
<details>
|
| 481 |
+
<summary>The arithmetic that identifies the cause <span class="where">525 examples × 8 epochs = 4200</span></summary>
|
| 482 |
+
<div class="body">
|
| 483 |
+
<pre>overall mean raw = 44.29 <span class="muted"># matches reported 44.29</span>
|
| 484 |
+
overall mean adj = 43.87 <span class="muted"># matches reported 43.87, and OpenAI's 43.7</span>
|
| 485 |
+
overall mean adj, clipped per-sample= 49.71
|
| 486 |
+
frac. of samples with adj < 0 = 0.164
|
| 487 |
+
|
| 488 |
+
by use case n mean_adj clipped_per_sample
|
| 489 |
+
consult 1888 42.54 48.09
|
| 490 |
+
research 1176 56.60 57.47
|
| 491 |
+
writing 1136 32.91 44.39</pre>
|
| 492 |
+
<p>16.4% of physician responses score below zero once the length penalty applies, mostly short writing-task
|
| 493 |
+
answers that trip negative rubric criteria. Clipping those to zero before averaging is what lifts writing from
|
| 494 |
+
32.9 to roughly 44. The residual of about 0.3 between the clipped figures and the reported ones is bootstrap
|
| 495 |
+
resampling noise; the mechanism is the clipping.</p>
|
| 496 |
+
</div>
|
| 497 |
+
</details>
|
| 498 |
+
<p>
|
| 499 |
+
The headline <code>bootstrap_score</code> is unaffected and remains correct. Only the subset breakdowns are
|
| 500 |
+
wrong, which matters because the by-use-case split is the most quoted view of Professional results.
|
| 501 |
+
</p>
|
| 502 |
+
</section>
|
| 503 |
+
|
| 504 |
+
<section id="floored">
|
| 505 |
+
<h2>Issue 5: five Professional scores are floored at zero</h2>
|
| 506 |
+
<p>
|
| 507 |
+
OpenAI clips the aggregate mean to [0, 1], and our implementation follows suit, so this is faithful behaviour
|
| 508 |
+
rather than a bug. But it means five reported numbers are all displayed as <code>0.00</code> while their true
|
| 509 |
+
values differ by 7 points, which hides real ranking information:
|
| 510 |
+
</p>
|
| 511 |
+
<table>
|
| 512 |
+
<thead><tr><th>Model</th><th>Subset</th><th class="num">reported</th><th class="num">true unclipped mean</th></tr></thead>
|
| 513 |
+
<tbody>
|
| 514 |
+
<tr><td>plamo-3.0-prime</td><td>red teaming</td><td class="num">0.00</td><td class="num">−11.82</td></tr>
|
| 515 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td>red teaming (ep 1)</td><td class="num">0.00</td><td class="num">−8.29</td></tr>
|
| 516 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td>red teaming (ep 8)</td><td class="num">0.00</td><td class="num">−6.87</td></tr>
|
| 517 |
+
<tr><td>vllm/medgemma-27b</td><td>red teaming</td><td class="num">0.00</td><td class="num">−6.80</td></tr>
|
| 518 |
+
<tr><td>plamo-3.0-prime</td><td>writing</td><td class="num">0.00</td><td class="num">−4.31</td></tr>
|
| 519 |
+
</tbody>
|
| 520 |
+
</table>
|
| 521 |
+
<p class="note">
|
| 522 |
+
Worth reporting the unclipped value alongside the clipped one for these, or at least noting that a zero means
|
| 523 |
+
"at or below zero" rather than "scored nothing".
|
| 524 |
+
</p>
|
| 525 |
+
</section>
|
| 526 |
+
|
| 527 |
+
<section id="hygiene">
|
| 528 |
+
<h2>Run hygiene</h2>
|
| 529 |
+
<details>
|
| 530 |
+
<summary>DeepSeek's Professional runs are under-sampled, and its consult run is the only one <span class="where">hs-prof-subsets</span></summary>
|
| 531 |
+
<div class="body">
|
| 532 |
+
<p>Every model ran <code>epochs=8</code>, matching the paper's "8 samples per example". The 2026-07-25 DeepSeek
|
| 533 |
+
batch ran <code>epochs=1</code>. For <code>writing</code>, <code>research</code>, <code>red_teaming</code> and
|
| 534 |
+
<code>physician_baseline</code> both variants exist in <code>listing.json</code>, so the viewer shows duplicate
|
| 535 |
+
conflicting entries. For <code>consult</code> the epochs=1 run is the <b>only</b> DeepSeek run, so it sits in
|
| 536 |
+
the same chart as everyone else at one eighth the sampling.</p>
|
| 537 |
+
<p>The good news is the two variants agree closely where both exist (research 51.85 vs 52.91, writing 5.16 vs
|
| 538 |
+
4.95, red teaming floored in both), so the practical distortion is small. It is still worth deleting the
|
| 539 |
+
epochs=1 logs and re-running consult at 8.</p>
|
| 540 |
+
</div>
|
| 541 |
+
</details>
|
| 542 |
+
<details>
|
| 543 |
+
<summary>medgemma-4b is missing four of five Professional subsets <span class="where">hs-prof-subsets</span></summary>
|
| 544 |
+
<div class="body">
|
| 545 |
+
<p>Only <code>consult</code> exists (score 8.19). Writing, research, red teaming and physician baseline were
|
| 546 |
+
never run, so medgemma-4b has no Professional overall and cannot appear in a like-for-like comparison.</p>
|
| 547 |
+
</div>
|
| 548 |
+
</details>
|
| 549 |
+
<details>
|
| 550 |
+
<summary>Response caching is on and demonstrably active <span class="where">plan: generate(cache=true)</span></summary>
|
| 551 |
+
<div class="body">
|
| 552 |
+
<p>Four of the five physician-baseline runs report byte-identical scores of 0.44291, which only happens if the
|
| 553 |
+
grader responses came from cache. Inspect's cache key includes the epoch by default
|
| 554 |
+
(<code>CachePolicy.per_epoch = True</code>), so the 8 epochs are not collapsing into one, which was the real
|
| 555 |
+
risk. The remaining caveat is that a re-run inside the one-week TTL is not an independent sample, so a repeat
|
| 556 |
+
run cannot be used as a variance estimate.</p>
|
| 557 |
+
</div>
|
| 558 |
+
</details>
|
| 559 |
+
<details>
|
| 560 |
+
<summary>Two different inspect_evals versions inside the same space <span class="where">0.14.3 vs 0.16.0</span></summary>
|
| 561 |
+
<div class="body">
|
| 562 |
+
<p>The frontier-model runs (July 15 to 16) used <code>inspect_evals 0.14.3</code> with
|
| 563 |
+
<code>inspect_ai 0.3.246</code>; the medgemma runs (July 24) used <code>0.16.0</code> with
|
| 564 |
+
<code>0.3.249</code>. Same space, same chart, different scorer code. Worth confirming the healthbench scorer
|
| 565 |
+
did not change across those releases before comparing medgemma against the frontier models.</p>
|
| 566 |
+
</div>
|
| 567 |
+
</details>
|
| 568 |
+
<details>
|
| 569 |
+
<summary>Outlier generations and empty completions <span class="where">hs-hard</span></summary>
|
| 570 |
+
<div class="body">
|
| 571 |
+
<p>All runs completed with zero sample errors. Two small things: medgemma-4b produced one 110,722-character
|
| 572 |
+
response on Hard, which carries a length penalty of −8.5 on its own and moves the 1000-sample mean by
|
| 573 |
+
about 0.9 points; and claude-opus-4-7 returned 7 empty completions on Hard, each scored zero. Neither is
|
| 574 |
+
fatal, both are worth a spot check.</p>
|
| 575 |
+
</div>
|
| 576 |
+
</details>
|
| 577 |
+
</section>
|
| 578 |
+
|
| 579 |
+
<section id="fixes">
|
| 580 |
+
<h2>What to change</h2>
|
| 581 |
+
<div class="ladder">
|
| 582 |
+
<div class="chip miss">judge: gpt-4.1 or gpt-5.4-low on hard</div>
|
| 583 |
+
<div class="chip miss">judge: gpt-4.1 or gpt-5.4-low on consensus</div>
|
| 584 |
+
<div class="chip miss">reasoning effort: highest, all models</div>
|
| 585 |
+
<div class="chip miss">claude: enable extended thinking</div>
|
| 586 |
+
<div class="chip miss">headline: length-adjusted, 3 spaces</div>
|
| 587 |
+
<div class="chip miss">prof subscores: drop per-sample clip</div>
|
| 588 |
+
<div class="chip miss">deepseek consult: re-run at epochs 8</div>
|
| 589 |
+
<div class="chip miss">medgemma-4b: run 4 missing subsets</div>
|
| 590 |
+
<div class="chip hit">length adjustment constants</div>
|
| 591 |
+
<div class="chip hit">dataset sizes and splits</div>
|
| 592 |
+
<div class="chip hit">grader system message and temp</div>
|
| 593 |
+
<div class="chip hit">bootstrap and mean clipping</div>
|
| 594 |
+
<div class="chip hit">epochs 8 on Professional</div>
|
| 595 |
+
<div class="chip hit">prompting and harness (length match)</div>
|
| 596 |
+
</div>
|
| 597 |
+
<div class="ladder-legend">clay = needs changing · olive = verified correct, leave alone</div>
|
| 598 |
+
|
| 599 |
+
<p>Concretely, for the two broken variants, stop using the wrapper tasks and call the parent task instead:</p>
|
| 600 |
+
<details>
|
| 601 |
+
<summary>Getting a real judge into Hard and Consensus <span class="where">the wrapper cannot do it</span></summary>
|
| 602 |
+
<div class="body">
|
| 603 |
+
<pre><span class="muted"># broken: judge_model silently defaults to gpt-4o-mini</span>
|
| 604 |
+
inspect eval inspect_evals/healthbench_hard \
|
| 605 |
+
-T length_adjustment_center=2000 \
|
| 606 |
+
-T length_adjustment_penalty_per_500_chars=0.0392
|
| 607 |
+
|
| 608 |
+
<span class="muted"># works: call healthbench() directly with subset=</span>
|
| 609 |
+
inspect eval inspect_evals/healthbench \
|
| 610 |
+
-T subset=hard \
|
| 611 |
+
-T judge_model=<span class="hl">openai/gpt-4.1</span> \
|
| 612 |
+
-T length_adjustment_center=2000 \
|
| 613 |
+
-T length_adjustment_penalty_per_500_chars=0.0392</pre>
|
| 614 |
+
<p>Worth considering GPT-5.4 at low reasoning for all four variants instead. The Professional paper notes the
|
| 615 |
+
external implementation now has "an option to use settings matching our internal implementation (e.g., GPT-5.4
|
| 616 |
+
at low reasoning effort as a grader)" and that OpenAI intends to keep reporting from the internal one. Using it
|
| 617 |
+
everywhere would both fix the deviation and make our four spaces internally comparable for the first time.</p>
|
| 618 |
+
</div>
|
| 619 |
+
</details>
|
| 620 |
+
<p class="note">
|
| 621 |
+
Re-running with the correct grader and highest reasoning effort should move Hard up by roughly 5 points and
|
| 622 |
+
Consensus up by roughly 13 toward the published band. If it does not, that is the signal something else is
|
| 623 |
+
wrong. If it does, the config is settled.
|
| 624 |
+
</p>
|
| 625 |
+
</section>
|
| 626 |
+
|
| 627 |
+
<section id="full">
|
| 628 |
+
<h2>Full results</h2>
|
| 629 |
+
<h3>Main variants, all six models</h3>
|
| 630 |
+
<table>
|
| 631 |
+
<thead><tr><th>Model</th><th class="num">full raw</th><th class="num">full adj</th><th class="num">hard raw</th><th class="num">hard adj</th><th class="num">cons. raw</th><th class="num">cons. adj</th></tr></thead>
|
| 632 |
+
<tbody>
|
| 633 |
+
<tr class="ours"><td>openai/gpt-5.5</td><td class="num">56.87</td><td class="num">55.83</td><td class="num">27.27</td><td class="num">26.03</td><td class="num">82.08</td><td class="num">82.02</td></tr>
|
| 634 |
+
<tr class="ours"><td>anthropic/claude-opus-4-7</td><td class="num">53.44</td><td class="num">54.31</td><td class="num">26.61</td><td class="num">27.80</td><td class="num">80.17</td><td class="num">80.23</td></tr>
|
| 635 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td class="num">51.37</td><td class="num">41.73</td><td class="num">24.84</td><td class="num">13.80</td><td class="num">79.10</td><td class="num">78.46</td></tr>
|
| 636 |
+
<tr><td>vllm/medgemma-27b-text-it</td><td class="num">47.20</td><td class="num">33.21</td><td class="num">21.09</td><td class="num">4.83</td><td class="num">77.58</td><td class="num">76.61</td></tr>
|
| 637 |
+
<tr><td>openai-api/plamo-3.0-prime</td><td class="num">39.42</td><td class="num">32.43</td><td class="num">17.43</td><td class="num">9.61</td><td class="num">75.25</td><td class="num">74.78</td></tr>
|
| 638 |
+
<tr><td>vllm/medgemma-4b-it</td><td class="num">26.97</td><td class="num">18.32</td><td class="num">10.60</td><td class="num">1.26</td><td class="num">71.37</td><td class="num">70.77</td></tr>
|
| 639 |
+
<tr class="human"><td>OpenAI published, gpt-5.5</td><td class="num">58.4</td><td class="num">56.5</td><td class="num">33.8</td><td class="num">31.5</td><td class="num">95.7</td><td class="num">95.6</td></tr>
|
| 640 |
+
</tbody>
|
| 641 |
+
</table>
|
| 642 |
+
<p class="note">
|
| 643 |
+
Judge: gpt-4.1 for full, gpt-4o-mini for hard and consensus. Epochs 1 throughout. All runs completed with zero
|
| 644 |
+
errors. Only the full column is grader-comparable to the published row.
|
| 645 |
+
</p>
|
| 646 |
+
|
| 647 |
+
<h3>Professional subsets, length-adjusted</h3>
|
| 648 |
+
<table>
|
| 649 |
+
<thead><tr><th>Model</th><th class="num">consult</th><th class="num">writing</th><th class="num">research</th><th class="num">red team</th><th class="num">weighted overall</th></tr></thead>
|
| 650 |
+
<tbody>
|
| 651 |
+
<tr class="ours"><td>anthropic/claude-opus-4-7</td><td class="num">47.04</td><td class="num">36.15</td><td class="num">61.07</td><td class="num">26.74</td><td class="num">48.02</td></tr>
|
| 652 |
+
<tr class="ours"><td>openai/gpt-5.5</td><td class="num">48.64</td><td class="num">35.96</td><td class="num">57.92</td><td class="num">28.19</td><td class="num">47.81</td></tr>
|
| 653 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td class="num">25.59</td><td class="num">4.95</td><td class="num">52.91</td><td class="num">−6.87</td><td class="num">27.66</td></tr>
|
| 654 |
+
<tr><td>vllm/medgemma-27b-text-it</td><td class="num">17.78</td><td class="num">9.13</td><td class="num">34.40</td><td class="num">−6.80</td><td class="num">20.09</td></tr>
|
| 655 |
+
<tr><td>openai-api/plamo-3.0-prime</td><td class="num">15.36</td><td class="num">−4.31</td><td class="num">28.58</td><td class="num">−11.82</td><td class="num">13.74</td></tr>
|
| 656 |
+
<tr><td>vllm/medgemma-4b-it</td><td class="num">8.19</td><td class="num muted">not run</td><td class="num muted">not run</td><td class="num muted">not run</td><td class="num muted">n/a</td></tr>
|
| 657 |
+
<tr class="human"><td>Physician baseline (ours)</td><td class="num">42.54</td><td class="num">32.91</td><td class="num">56.60</td><td class="num muted">n/a</td><td class="num">43.87</td></tr>
|
| 658 |
+
<tr class="human"><td>Physician baseline (OpenAI)</td><td class="num">42.7</td><td class="num">32.1</td><td class="num">56.3</td><td class="num muted">n/a</td><td class="num">43.7</td></tr>
|
| 659 |
+
<tr class="human"><td>OpenAI published, gpt-5.5</td><td class="num muted">n/a</td><td class="num muted">n/a</td><td class="num muted">n/a</td><td class="num muted">n/a</td><td class="num">51.8</td></tr>
|
| 660 |
+
</tbody>
|
| 661 |
+
</table>
|
| 662 |
+
<p class="note">
|
| 663 |
+
Red teaming values are shown unclipped so the ordering is visible; the logs report these as 0.00. DeepSeek's
|
| 664 |
+
consult figure comes from its epochs=1 run, the rest from epochs=8. Weighted overall uses consult 236, writing
|
| 665 |
+
142, research 147. Only gpt-5.5 and claude-opus-4-7 beat the physician baseline overall, and both do so
|
| 666 |
+
narrowly.
|
| 667 |
+
</p>
|
| 668 |
+
</section>
|
| 669 |
+
|
| 670 |
+
<section id="method">
|
| 671 |
+
<h2>How this was checked</h2>
|
| 672 |
+
<p>
|
| 673 |
+
The four HuggingFace spaces were cloned and their <code>.eval</code> logs pulled as real LFS blobs (the plain
|
| 674 |
+
clone yields 133-byte pointers). Headers gave the declared config; per-sample model events gave the config
|
| 675 |
+
actually sent, including which model served every grading call; per-sample scores were re-aggregated
|
| 676 |
+
independently to confirm the reported metrics and to recompute the subset breakdowns.
|
| 677 |
+
</p>
|
| 678 |
+
<table>
|
| 679 |
+
<thead><tr><th>Space</th><th class="num">logs</th><th class="num">size</th><th>task</th><th class="num">samples/run</th></tr></thead>
|
| 680 |
+
<tbody>
|
| 681 |
+
<tr><td>hs-non-professional</td><td class="num">6</td><td class="num">573 MB</td><td><code>inspect_evals/healthbench</code></td><td class="num">5000</td></tr>
|
| 682 |
+
<tr><td>hs-hard</td><td class="num">6</td><td class="num">113 MB</td><td><code>inspect_evals/healthbench_hard</code></td><td class="num">1000</td></tr>
|
| 683 |
+
<tr><td>hs-consensus</td><td class="num">6</td><td class="num">256 MB</td><td><code>inspect_evals/healthbench_consensus</code></td><td class="num">3671</td></tr>
|
| 684 |
+
<tr><td>hs-prof-subsets</td><td class="num">30</td><td class="num">714 MB</td><td><code>healthbench_professional_*</code></td><td class="num">525</td></tr>
|
| 685 |
+
</tbody>
|
| 686 |
+
</table>
|
| 687 |
+
<p class="note">
|
| 688 |
+
Local copies at <code>/Users/kazuki/Sandbox/hb-spaces/</code>. The <code>hs-original</code> space was excluded,
|
| 689 |
+
its link is broken. Reference sources: HealthBench (<a href="https://arxiv.org/abs/2505.08775">arXiv:2505.08775</a>),
|
| 690 |
+
HealthBench Professional (<a href="https://arxiv.org/abs/2604.27470">arXiv:2604.27470</a>), the
|
| 691 |
+
<a href="https://deploymentsafety.openai.com/gpt-5-6-preview/healthbench">GPT-5.6 Preview system card</a> Table 6,
|
| 692 |
+
and <a href="https://github.com/openai/simple-evals">openai/simple-evals</a>.
|
| 693 |
+
</p>
|
| 694 |
+
</section>
|
| 695 |
+
|
| 696 |
+
</main>
|
| 697 |
+
</div>
|
| 698 |
+
</body>
|
| 699 |
+
</html>
|
config-check-v2.html
ADDED
|
@@ -0,0 +1,870 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8">
|
| 5 |
+
<link rel="icon" href="favicon.svg">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 7 |
+
<title>HealthBench config check v2: our spaces vs OpenAI's published numbers</title>
|
| 8 |
+
<style>
|
| 9 |
+
:root{
|
| 10 |
+
--ivory:#FAF9F5; --slate:#141413; --gray-700:#3D3D3A; --gray-500:#87867F;
|
| 11 |
+
--gray-300:#D1CFC5; --gray-150:#F0EEE6; --clay:#D97757; --oat:#E3DACC;
|
| 12 |
+
--olive:#788C5D;
|
| 13 |
+
}
|
| 14 |
+
*{box-sizing:border-box}
|
| 15 |
+
html{scroll-behavior:smooth}
|
| 16 |
+
body{
|
| 17 |
+
margin:0; background:var(--ivory); color:var(--gray-700);
|
| 18 |
+
font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
|
| 19 |
+
font-size:15px; line-height:1.65; padding:56px 24px 120px;
|
| 20 |
+
}
|
| 21 |
+
.page{max-width:1100px; margin:0 auto; display:grid;
|
| 22 |
+
grid-template-columns:200px minmax(0,1fr); gap:48px}
|
| 23 |
+
h1,h2,h3,dt{font-family:ui-serif,Georgia,"Times New Roman",serif; font-weight:500; color:var(--slate)}
|
| 24 |
+
h1{font-size:32px; line-height:1.2; margin:0}
|
| 25 |
+
h2{font-size:22px; margin:40px 0 12px; scroll-margin-top:24px}
|
| 26 |
+
h3{font-size:17px; margin:26px 0 8px}
|
| 27 |
+
p{max-width:680px}
|
| 28 |
+
a{color:inherit}
|
| 29 |
+
code{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace; font-size:13px}
|
| 30 |
+
.eyebrow{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
|
| 31 |
+
text-transform:uppercase; letter-spacing:.08em; font-size:11px; color:var(--gray-500); margin:0 0 14px}
|
| 32 |
+
.dateline{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace; font-size:11px; color:var(--gray-500); margin-top:10px}
|
| 33 |
+
header{margin-bottom:8px}
|
| 34 |
+
nav{position:sticky; top:32px; align-self:start; font-size:13px}
|
| 35 |
+
nav .navlinks{display:flex; flex-direction:column; border-left:2px solid var(--gray-300)}
|
| 36 |
+
nav a{display:block; padding:5px 0 5px 14px; margin-left:-2px;
|
| 37 |
+
border-left:2px solid transparent; color:var(--gray-700); text-decoration:none}
|
| 38 |
+
nav a:hover{border-left-color:var(--slate); color:var(--slate)}
|
| 39 |
+
nav a.l2{padding-left:26px; font-size:12px; color:var(--gray-500)}
|
| 40 |
+
nav .files{margin-top:22px}
|
| 41 |
+
nav .files .lbl{font-family:ui-monospace,Menlo,monospace; font-size:10px; text-transform:uppercase;
|
| 42 |
+
letter-spacing:.08em; color:var(--gray-500); margin-bottom:6px}
|
| 43 |
+
nav .files code{display:block; font-size:11px; color:var(--gray-500); word-break:break-all; margin-bottom:4px}
|
| 44 |
+
table{border-collapse:collapse; width:100%; max-width:860px; margin:14px 0; font-size:13.5px}
|
| 45 |
+
th,td{text-align:left; padding:8px 12px; border-bottom:1px solid var(--gray-300)}
|
| 46 |
+
th{font-family:ui-monospace,Menlo,monospace; font-size:11px; text-transform:uppercase;
|
| 47 |
+
letter-spacing:.05em; color:var(--gray-500); font-weight:600; border-bottom:1.5px solid var(--gray-300)}
|
| 48 |
+
td.num{font-family:ui-monospace,Menlo,monospace; text-align:right}
|
| 49 |
+
tr.ours{background:rgba(217,119,87,.09)}
|
| 50 |
+
tr.ours td{font-weight:600; color:var(--slate)}
|
| 51 |
+
tr.human td{color:var(--gray-500); font-style:italic}
|
| 52 |
+
.tag{font-family:ui-monospace,Menlo,monospace; font-size:10px; padding:1px 6px; border-radius:4px;
|
| 53 |
+
border:1px solid var(--gray-300); color:var(--gray-500); white-space:nowrap}
|
| 54 |
+
.tag.same{border-color:var(--olive); color:var(--olive)}
|
| 55 |
+
.tag.diff{border-color:var(--clay); color:var(--clay)}
|
| 56 |
+
.callout{border:1.5px solid var(--oat); background:rgba(227,218,204,.35); border-radius:10px;
|
| 57 |
+
padding:16px 18px; margin:20px 0; max-width:800px; display:flex; gap:14px}
|
| 58 |
+
.callout .star{color:var(--clay); font-size:18px; line-height:1.4}
|
| 59 |
+
.callout .ct{font-size:14px}
|
| 60 |
+
.callout .ct b{color:var(--slate)}
|
| 61 |
+
details{background:#fff; border:1px solid var(--gray-300); border-radius:10px; margin:10px 0; max-width:860px}
|
| 62 |
+
summary{cursor:pointer; padding:12px 16px; font-family:ui-serif,Georgia,serif; font-size:15px;
|
| 63 |
+
color:var(--slate); list-style:none; display:flex; align-items:center; gap:10px}
|
| 64 |
+
summary::-webkit-details-marker{display:none}
|
| 65 |
+
summary::before{content:"\25B8"; color:var(--clay); transition:transform .15s; font-size:13px}
|
| 66 |
+
details[open] summary::before{transform:rotate(90deg)}
|
| 67 |
+
summary .where{margin-left:auto; font-family:ui-monospace,Menlo,monospace; font-size:11px; color:var(--gray-500)}
|
| 68 |
+
details .body{padding:2px 16px 14px; font-size:14px}
|
| 69 |
+
details .body p{margin:8px 0}
|
| 70 |
+
details .body pre{background:var(--gray-150); border-radius:6px; padding:12px 14px; overflow-x:auto;
|
| 71 |
+
font-family:ui-monospace,Menlo,monospace; font-size:12px; line-height:1.5; margin:10px 0}
|
| 72 |
+
.hl{color:var(--clay)}
|
| 73 |
+
.ok{color:var(--olive); font-weight:600}
|
| 74 |
+
.warn{color:var(--clay); font-weight:600}
|
| 75 |
+
.bad{color:#B0533A; font-weight:600}
|
| 76 |
+
.muted{color:var(--gray-500)}
|
| 77 |
+
.note{font-size:12.5px; color:var(--gray-500); max-width:800px}
|
| 78 |
+
.ladder{display:grid; grid-template-columns:repeat(auto-fill,minmax(184px,1fr)); gap:7px; max-width:800px; margin:14px 0}
|
| 79 |
+
.chip{font-family:ui-monospace,Menlo,monospace; font-size:10.5px; border:1px solid var(--gray-300);
|
| 80 |
+
border-radius:6px; padding:6px 9px; color:var(--gray-500)}
|
| 81 |
+
.chip.hit{border-color:var(--olive); background:rgba(120,140,93,.10); color:var(--slate); font-weight:600}
|
| 82 |
+
.chip.miss{border-color:var(--clay); background:rgba(217,119,87,.08); color:var(--slate); font-weight:600}
|
| 83 |
+
.chip.done{border-color:var(--olive); background:rgba(120,140,93,.10); color:var(--slate); font-weight:600;
|
| 84 |
+
text-decoration:line-through; text-decoration-color:var(--gray-500)}
|
| 85 |
+
.chip.part{border-color:var(--gray-500); background:rgba(135,134,127,.10); color:var(--slate); font-weight:600}
|
| 86 |
+
tr.new td{background:rgba(120,140,93,.10)}
|
| 87 |
+
.vtag{font-family:ui-monospace,Menlo,monospace; font-size:10px; padding:1px 6px; border-radius:4px;
|
| 88 |
+
border:1px solid var(--olive); color:var(--olive); white-space:nowrap; margin-left:6px}
|
| 89 |
+
.ladder-legend{font-family:ui-monospace,Menlo,monospace; font-size:10.5px; color:var(--gray-500); margin-top:6px}
|
| 90 |
+
.cmp-chart{width:100%; max-width:760px; height:auto; margin:10px 0 4px; font-family:system-ui}
|
| 91 |
+
.tc-ax{font-size:11px; fill:var(--gray-500); font-family:ui-monospace,Menlo,monospace}
|
| 92 |
+
.tc-ml{font-size:11px; fill:var(--slate); font-family:ui-monospace,Menlo,monospace}
|
| 93 |
+
.tc-lg{font-size:11px; fill:var(--gray-700)}
|
| 94 |
+
.tc-val{font-size:10px; fill:var(--slate); font-family:ui-monospace,Menlo,monospace}
|
| 95 |
+
.tc-dl{font-size:10.5px; font-family:ui-monospace,Menlo,monospace; font-weight:600}
|
| 96 |
+
@media (max-width:920px){
|
| 97 |
+
.page{grid-template-columns:1fr}
|
| 98 |
+
nav{display:none}
|
| 99 |
+
}
|
| 100 |
+
</style>
|
| 101 |
+
|
| 102 |
+
<style id="hbnav-css">
|
| 103 |
+
.hbnav{position:sticky;top:0;z-index:50;display:flex;flex-wrap:wrap;align-items:center;gap:4px;
|
| 104 |
+
padding:8px 16px;margin:-56px -24px 40px;background:rgba(250,249,245,.94);
|
| 105 |
+
backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid #D1CFC5;
|
| 106 |
+
font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:11.5px}
|
| 107 |
+
.hbnav .home{color:#87867F;margin-right:6px;text-decoration:none}
|
| 108 |
+
.hbnav .home:hover{color:#141413}
|
| 109 |
+
.hbnav a.pill{color:#3D3D3A;text-decoration:none;padding:3px 9px;border:1px solid #D1CFC5;border-radius:6px}
|
| 110 |
+
.hbnav a.pill:hover{border-color:#D97757;color:#141413}
|
| 111 |
+
.hbnav a.pill.here{background:#141413;border-color:#141413;color:#FAF9F5}
|
| 112 |
+
.hbnav .sp{flex:1}
|
| 113 |
+
@media(max-width:640px){.hbnav{margin:-56px -24px 28px}}
|
| 114 |
+
</style>
|
| 115 |
+
</head>
|
| 116 |
+
<body>
|
| 117 |
+
<div class="hbnav"><a class="home" href="index.html">← HealthBench logs</a><a class="pill" href="matrix.html">Coverage matrix</a><a class="pill here" href="config-check-v2.html">Config check v2</a><a class="pill" href="config-check-v1.html">Config check v1</a><span class="sp"></span><a class="pill" href="viewer/index.html">Log viewer →</a></div>
|
| 118 |
+
<div class="page">
|
| 119 |
+
<nav>
|
| 120 |
+
<div class="navlinks">
|
| 121 |
+
<a href="#summary">Summary</a>
|
| 122 |
+
<a href="#v2">v2: DeepSeek re-run</a>
|
| 123 |
+
<a href="#v2-verdict" class="l2">What it fixed</a>
|
| 124 |
+
<a href="#anchor">The anchor check</a>
|
| 125 |
+
<a href="#baseline" class="l2">Physician baseline</a>
|
| 126 |
+
<a href="#config">Config matrix</a>
|
| 127 |
+
<a href="#judge">Issue 1: judge model</a>
|
| 128 |
+
<a href="#effort">Issue 2: reasoning effort</a>
|
| 129 |
+
<a href="#headline">Issue 3: headline metric</a>
|
| 130 |
+
<a href="#subscores">Issue 4: subscore clipping</a>
|
| 131 |
+
<a href="#floored">Issue 5: floored zeros</a>
|
| 132 |
+
<a href="#hygiene">Run hygiene</a>
|
| 133 |
+
<a href="#fixes">What to change</a>
|
| 134 |
+
<a href="#full">Full results</a>
|
| 135 |
+
<a href="#method">How this was checked</a>
|
| 136 |
+
</div>
|
| 137 |
+
<div class="files">
|
| 138 |
+
<div class="lbl">Run artifacts</div>
|
| 139 |
+
<code>hb-spaces/hs-non-professional/logs/</code>
|
| 140 |
+
<code>hb-spaces/hs-hard/logs/</code>
|
| 141 |
+
<code>hb-spaces/hs-consensus/logs/</code>
|
| 142 |
+
<code>hb-spaces/hs-prof-subsets/logs/</code>
|
| 143 |
+
<code>hb-spaces/healthbench-professional-deepseek-v4-pro/logs/</code>
|
| 144 |
+
<div class="lbl" style="margin-top:14px">Reference</div>
|
| 145 |
+
<code>arXiv:2505.08775 (HealthBench)</code>
|
| 146 |
+
<code>arXiv:2604.27470 (Professional)</code>
|
| 147 |
+
<code>GPT-5.6 system card, Table 6</code>
|
| 148 |
+
<code>openai/simple-evals</code>
|
| 149 |
+
</div>
|
| 150 |
+
</nav>
|
| 151 |
+
|
| 152 |
+
<main>
|
| 153 |
+
<header>
|
| 154 |
+
<p class="eyebrow">HealthBench · config sanity check · v2</p>
|
| 155 |
+
<h1>HealthBench config check: our spaces vs OpenAI's published numbers</h1>
|
| 156 |
+
<div class="dateline">Created 2026-07-27 · v2 2026-08-06 (DeepSeek Professional re-run folded in)</div>
|
| 157 |
+
</header>
|
| 158 |
+
|
| 159 |
+
<section id="summary">
|
| 160 |
+
<div class="callout">
|
| 161 |
+
<span class="star">★</span>
|
| 162 |
+
<span class="ct"><b>What is new in v2 (2026-08-06).</b> One re-run has landed since v1: DeepSeek v4 Pro on
|
| 163 |
+
HealthBench Professional, published as its own space. It is folded in below. Two things change as a result.
|
| 164 |
+
DeepSeek's Professional overall moves from <b>27.66 to 30.99</b>, because its old consult figure turned out
|
| 165 |
+
to be a cache replay rather than a real run. And <a href="#subscores">issue 4</a> is now diagnosed exactly:
|
| 166 |
+
the inflated per-use-case subscores are not clipped versions of the length-adjusted score, they discard the
|
| 167 |
+
length adjustment altogether. Nothing else in v1 changes. The two flags that matter most for comparability
|
| 168 |
+
— <b>eight samples per example</b> and <b>reasoning effort</b> — are still unset everywhere,
|
| 169 |
+
including in the re-run.</span>
|
| 170 |
+
</div>
|
| 171 |
+
<p>
|
| 172 |
+
We have a real anchor for this check: OpenAI's GPT-5.6 system card publishes <b>gpt-5.5 scores for all four
|
| 173 |
+
HealthBench variants</b>, and gpt-5.5 is one of the models we ran. Lining our numbers up against theirs
|
| 174 |
+
gives a per-variant verdict rather than a guess.
|
| 175 |
+
</p>
|
| 176 |
+
<p>
|
| 177 |
+
The result splits cleanly. <b>The two spaces where we used the correct grader reproduce OpenAI within a
|
| 178 |
+
point.</b> The full HealthBench run lands at <b>55.8</b> against their <b>56.5</b>, and our HealthBench
|
| 179 |
+
Professional physician baseline lands at <b>43.87</b> against their published <b>43.7</b>. That is close
|
| 180 |
+
enough to say the dataset, prompting, rubric scoring, length adjustment and aggregation are all wired up
|
| 181 |
+
right.
|
| 182 |
+
</p>
|
| 183 |
+
<p>
|
| 184 |
+
<b>The two spaces where we used the wrong grader are badly off.</b> HealthBench Hard is <b>5.5 points low</b>
|
| 185 |
+
and HealthBench Consensus is <b>13.6 points low</b>. Both were graded by <code>gpt-4o-mini</code> instead of
|
| 186 |
+
GPT-4.1, not by choice but because the <code>inspect_evals</code> task wrappers for those two variants do not
|
| 187 |
+
expose a <code>judge_model</code> argument and silently fall back to the package default. Consensus is the
|
| 188 |
+
loudest signal: every frontier model in OpenAI's table sits in a 94 to 96 band, and ours sits at 82.
|
| 189 |
+
</p>
|
| 190 |
+
<p>
|
| 191 |
+
A separate, smaller gap shows up on the inference side. Our gpt-5.5 Professional score is <b>4 points below</b>
|
| 192 |
+
OpenAI's, even though the grader is correct there. The physician baseline matching to 0.2 points rules out
|
| 193 |
+
the grading pipeline, which points the finger at <b>reasoning effort</b>: we pass none, while OpenAI evaluates
|
| 194 |
+
"at the highest reasoning effort option available via each model's API." Claude was run with extended thinking
|
| 195 |
+
off entirely.
|
| 196 |
+
</p>
|
| 197 |
+
|
| 198 |
+
<div class="callout">
|
| 199 |
+
<span class="star">★</span>
|
| 200 |
+
<span class="ct"><b>The one-line verdict.</b> The scoring machinery is correct and provably so. The
|
| 201 |
+
configuration around it is not: two variants use a mini-tier grader, no run sets reasoning effort, and three
|
| 202 |
+
of the four spaces show the unadjusted score as the headline where OpenAI shows the length-adjusted one.
|
| 203 |
+
None of this requires re-implementing anything, only re-running with four flags set.</span>
|
| 204 |
+
</div>
|
| 205 |
+
</section>
|
| 206 |
+
|
| 207 |
+
<section id="v2">
|
| 208 |
+
<h2>v2 update: the DeepSeek Professional re-run</h2>
|
| 209 |
+
<p>
|
| 210 |
+
Ajay re-ran HealthBench Professional for DeepSeek on 2026-08-06 and published it as its own space,
|
| 211 |
+
<code>ajay-citadel/healthbench-professional-deepseek-v4-pro</code>. It is the first run that addresses
|
| 212 |
+
anything on the <a href="#fixes">what to change</a> list, so this version of the report folds it in and
|
| 213 |
+
corrects the numbers it supersedes. Everything else in v1 stands unchanged.
|
| 214 |
+
</p>
|
| 215 |
+
<p>
|
| 216 |
+
The re-run is a <b>single combined task over all 525 examples</b> rather than five separate subset tasks,
|
| 217 |
+
which is what OpenAI's reference implementation does. That removes the manual sample-weighting v1 had to
|
| 218 |
+
apply, and it gives DeepSeek a genuine <code>consult</code> run for the first time.
|
| 219 |
+
</p>
|
| 220 |
+
|
| 221 |
+
<table>
|
| 222 |
+
<thead><tr><th>DeepSeek v4 Pro, Professional</th><th class="num">v1 (hs-prof-subsets)</th><th class="num">v2 (re-run)</th><th class="num">Δ</th><th>note</th></tr></thead>
|
| 223 |
+
<tbody>
|
| 224 |
+
<tr class="new"><td><b>Overall, length-adjusted</b></td><td class="num">27.66</td><td class="num">30.99</td><td class="num" style="color:#788C5D">+3.3</td><td class="note">v1 was stitched from subsets; v2 is native</td></tr>
|
| 225 |
+
<tr><td>Overall, unadjusted</td><td class="num muted">n/a</td><td class="num">37.81</td><td class="num muted">—</td><td class="note">not computable from v1 subsets</td></tr>
|
| 226 |
+
<tr><td>Care consult</td><td class="num">25.59</td><td class="num">31.83</td><td class="num" style="color:#788C5D">+6.2</td><td class="note">v1 figure was a cache replay, see below</td></tr>
|
| 227 |
+
<tr><td>Writing and documentation</td><td class="num">4.95</td><td class="num">6.70</td><td class="num">+1.8</td><td class="note">agrees within sampling noise</td></tr>
|
| 228 |
+
<tr><td>Medical research</td><td class="num">52.91</td><td class="num">53.10</td><td class="num">+0.2</td><td class="note">agrees</td></tr>
|
| 229 |
+
<tr><td>Red teaming (unclipped)</td><td class="num">−6.87</td><td class="num">−5.19</td><td class="num">+1.7</td><td class="note">still floored to 0.00 in the log</td></tr>
|
| 230 |
+
<tr><td>Mean response length (chars)</td><td class="num muted">3069–5665</td><td class="num">4320</td><td class="num muted">—</td><td class="note">vs 3818 for gpt-5.5 in OpenAI's table</td></tr>
|
| 231 |
+
</tbody>
|
| 232 |
+
</table>
|
| 233 |
+
<p class="note">
|
| 234 |
+
The v1 sample-weighted arithmetic checks out against the native number: (236×31.83 + 142×6.70 +
|
| 235 |
+
147×53.10) / 525 = 30.99, exactly the re-run's own <code>bootstrap_score</code>. So the stitching method
|
| 236 |
+
v1 used was sound; the 3.3-point move comes entirely from the consult subset being re-generated rather than
|
| 237 |
+
replayed. DeepSeek does not change rank — it stays third behind claude-opus-4-7 (48.02) and gpt-5.5 (47.81).
|
| 238 |
+
</p>
|
| 239 |
+
|
| 240 |
+
<h3 id="v2-verdict">What the re-run fixed, and what it did not</h3>
|
| 241 |
+
<table>
|
| 242 |
+
<thead><tr><th>v1 finding</th><th>status in the re-run</th><th>evidence</th></tr></thead>
|
| 243 |
+
<tbody>
|
| 244 |
+
<tr><td>DeepSeek consult had no real epochs≥1 run of its own</td><td><span class="tag same">fixed</span></td><td class="note">967k output tokens billed to deepseek; the v1 epochs=1 logs report zero model usage</td></tr>
|
| 245 |
+
<tr><td>Duplicate, conflicting DeepSeek entries in <code>listing.json</code></td><td><span class="tag same">fixed</span></td><td class="note">one log, one task, its own space</td></tr>
|
| 246 |
+
<tr><td>Grader config implicit (relied on the package default)</td><td><span class="tag same">fixed</span></td><td class="note"><code>judge_model: openai/gpt-5.4</code>, <code>judge_reasoning_effort: low</code> now explicit in <code>task_args</code></td></tr>
|
| 247 |
+
<tr><td>Headline metric should be length-adjusted</td><td><span class="tag same">already ok</span></td><td class="note"><code>use_length_adjusted: true</code> on the primary metric</td></tr>
|
| 248 |
+
<tr><td><b>Samples per example should be 8</b></td><td><span class="tag diff">not fixed</span></td><td class="note"><code>epochs: 1</code>. Bootstrap std is 2.8 points on a 31-point score</td></tr>
|
| 249 |
+
<tr><td><b>Reasoning effort should be the highest available</b></td><td><span class="tag diff">not fixed</span></td><td class="note">generate config is <code>{cache: true}</code>; 69.7% of samples reasoned, at DeepSeek's own default</td></tr>
|
| 250 |
+
<tr><td><b>Per-use-case subscores are inflated</b></td><td><span class="tag diff">not fixed</span></td><td class="note">reproduced exactly, and the mechanism is now pinned — see <a href="#subscores">issue 4</a></td></tr>
|
| 251 |
+
</tbody>
|
| 252 |
+
</table>
|
| 253 |
+
|
| 254 |
+
<div class="callout">
|
| 255 |
+
<span class="star">★</span>
|
| 256 |
+
<span class="ct"><b>Verdict on the re-run: clean, and it moves the number, but it is not yet the paper's
|
| 257 |
+
configuration.</b> The grading half is exactly OpenAI's internal reference — gpt-5.4-2026-03-05 at low
|
| 258 |
+
reasoning effort, temperature 0, "You are a helpful assistant." — and every score in the log
|
| 259 |
+
re-aggregates to the reported value from per-sample data. The inference half still runs one sample per
|
| 260 |
+
example instead of eight and passes no reasoning effort, so the two headline items from
|
| 261 |
+
<a href="#effort">issue 2</a> and the Professional row of <a href="#config">the config matrix</a> remain
|
| 262 |
+
open for DeepSeek exactly as they do for every other model.</span>
|
| 263 |
+
</div>
|
| 264 |
+
|
| 265 |
+
<details>
|
| 266 |
+
<summary>Sanity checks run against the new log <span class="where">525 samples, 0 errors</span></summary>
|
| 267 |
+
<div class="body">
|
| 268 |
+
<pre>reported bootstrap_score 0.3099 <span class="muted"># length-adjusted</span>
|
| 269 |
+
recomputed mean(adjusted) 0.3099 <span class="muted"># match</span>
|
| 270 |
+
recomputed mean(unadjusted) 0.3781 <span class="muted"># matches the log's own mean metric</span>
|
| 271 |
+
bootstrap 1000x, own resample 0.3104 +/- 0.0283 <span class="muted"># log: 0.3099 +/- 0.0279</span>
|
| 272 |
+
criteria_met_rate 0.5921 <span class="muted"># match; 1135 criteria over 525 samples</span>
|
| 273 |
+
|
| 274 |
+
length adjustment: adj = raw - 0.0147 * ((chars - 2000) / 500)
|
| 275 |
+
mismatches over 525 samples 0 <span class="muted"># arithmetic verified per sample</span>
|
| 276 |
+
|
| 277 |
+
served model deepseek/deepseek-v4-pro <span class="muted"># matches requested, no silent substitution</span>
|
| 278 |
+
judge served gpt-5.4-2026-03-05 <span class="muted"># 1135 calls, one per rubric criterion</span>
|
| 279 |
+
judge config {system_message: "You are a helpful assistant.", temperature: 0.0,
|
| 280 |
+
reasoning_effort: "low"} <span class="muted"># matches OpenAI's internal reference</span>
|
| 281 |
+
candidate config {cache: true} <span class="muted"># no reasoning effort passed</span>
|
| 282 |
+
|
| 283 |
+
rubric coverage 1135 graded / 1135 in dataset metadata <span class="muted"># no criteria dropped</span>
|
| 284 |
+
unique prompt ids 525 / 525
|
| 285 |
+
empty completions 0
|
| 286 |
+
mean chars 4320 median 4053 p99 11620 max 17982
|
| 287 |
+
frac. samples with length-adjusted score < 0 0.303</pre>
|
| 288 |
+
<p>The one number worth watching is that last line: 30% of DeepSeek's Professional responses score below zero
|
| 289 |
+
once the length penalty applies, against 16.4% for the physician baseline. DeepSeek averages 4320 characters
|
| 290 |
+
where the penalty centre is 2000, so it is paying about 6.8 points of pure verbosity tax. That is a real
|
| 291 |
+
property of the model under this metric, not a config error, but it does mean DeepSeek's Professional score is
|
| 292 |
+
unusually sensitive to the length-adjustment constant.</p>
|
| 293 |
+
</div>
|
| 294 |
+
</details>
|
| 295 |
+
</section>
|
| 296 |
+
|
| 297 |
+
<section id="anchor">
|
| 298 |
+
<h2>The anchor check</h2>
|
| 299 |
+
<p>
|
| 300 |
+
All numbers are the <b>length-adjusted score on the 0 to 100 scale</b>, which is what OpenAI reports as the
|
| 301 |
+
primary metric. Their figures come from the GPT-5.6 system card Table 6, given as
|
| 302 |
+
<code>length-adjusted (unadjusted, mean chars)</code>. Ours are recomputed from the downloaded
|
| 303 |
+
<code>.eval</code> logs.
|
| 304 |
+
</p>
|
| 305 |
+
|
| 306 |
+
<svg viewBox="0 0 760 430" xmlns="http://www.w3.org/2000/svg" class="cmp-chart" role="img"
|
| 307 |
+
aria-label="gpt-5.5 length-adjusted scores, OpenAI published versus our runs, across five checks">
|
| 308 |
+
<line x1="60" y1="40" x2="60" y2="340" stroke="#141413" stroke-width="1"/>
|
| 309 |
+
<line x1="60" y1="340" x2="740" y2="340" stroke="#141413" stroke-width="1"/>
|
| 310 |
+
<line x1="60" y1="280" x2="740" y2="280" stroke="#F0EEE6" stroke-width="1"/>
|
| 311 |
+
<line x1="60" y1="220" x2="740" y2="220" stroke="#F0EEE6" stroke-width="1"/>
|
| 312 |
+
<line x1="60" y1="160" x2="740" y2="160" stroke="#F0EEE6" stroke-width="1"/>
|
| 313 |
+
<line x1="60" y1="100" x2="740" y2="100" stroke="#F0EEE6" stroke-width="1"/>
|
| 314 |
+
<line x1="60" y1="40" x2="740" y2="40" stroke="#F0EEE6" stroke-width="1"/>
|
| 315 |
+
<text x="52" y="343.5" text-anchor="end" class="tc-ax">0</text>
|
| 316 |
+
<text x="52" y="283.5" text-anchor="end" class="tc-ax">20</text>
|
| 317 |
+
<text x="52" y="223.5" text-anchor="end" class="tc-ax">40</text>
|
| 318 |
+
<text x="52" y="163.5" text-anchor="end" class="tc-ax">60</text>
|
| 319 |
+
<text x="52" y="103.5" text-anchor="end" class="tc-ax">80</text>
|
| 320 |
+
<text x="52" y="43.5" text-anchor="end" class="tc-ax">100</text>
|
| 321 |
+
|
| 322 |
+
<!-- group 0: physician baseline -->
|
| 323 |
+
<rect x="88" y="208.9" width="40" height="131.1" fill="#87867F"/>
|
| 324 |
+
<rect x="132" y="208.4" width="40" height="131.6" fill="#D97757"/>
|
| 325 |
+
<text x="108" y="203" text-anchor="middle" class="tc-val">43.7</text>
|
| 326 |
+
<text x="152" y="203" text-anchor="middle" class="tc-val">43.9</text>
|
| 327 |
+
<text x="130" y="358" text-anchor="middle" class="tc-ml">Physician</text>
|
| 328 |
+
<text x="130" y="372" text-anchor="middle" class="tc-ml">baseline</text>
|
| 329 |
+
<text x="130" y="390" text-anchor="middle" class="tc-dl" fill="#788C5D">+0.2</text>
|
| 330 |
+
|
| 331 |
+
<!-- group 1: professional -->
|
| 332 |
+
<rect x="224" y="184.6" width="40" height="155.4" fill="#87867F"/>
|
| 333 |
+
<rect x="268" y="196.6" width="40" height="143.4" fill="#D97757"/>
|
| 334 |
+
<text x="244" y="178.6" text-anchor="middle" class="tc-val">51.8</text>
|
| 335 |
+
<text x="288" y="190.6" text-anchor="middle" class="tc-val">47.8</text>
|
| 336 |
+
<text x="266" y="358" text-anchor="middle" class="tc-ml">Professional</text>
|
| 337 |
+
<text x="266" y="372" text-anchor="middle" class="tc-ax">grader ok</text>
|
| 338 |
+
<text x="266" y="390" text-anchor="middle" class="tc-dl" fill="#D97757">−4.0</text>
|
| 339 |
+
|
| 340 |
+
<!-- group 2: healthbench full -->
|
| 341 |
+
<rect x="360" y="170.5" width="40" height="169.5" fill="#87867F"/>
|
| 342 |
+
<rect x="404" y="172.5" width="40" height="167.5" fill="#D97757"/>
|
| 343 |
+
<text x="380" y="164.5" text-anchor="middle" class="tc-val">56.5</text>
|
| 344 |
+
<text x="424" y="166.5" text-anchor="middle" class="tc-val">55.8</text>
|
| 345 |
+
<text x="402" y="358" text-anchor="middle" class="tc-ml">HealthBench</text>
|
| 346 |
+
<text x="402" y="372" text-anchor="middle" class="tc-ax">grader ok</text>
|
| 347 |
+
<text x="402" y="390" text-anchor="middle" class="tc-dl" fill="#788C5D">−0.7</text>
|
| 348 |
+
|
| 349 |
+
<!-- group 3: hard -->
|
| 350 |
+
<rect x="496" y="245.5" width="40" height="94.5" fill="#87867F"/>
|
| 351 |
+
<rect x="540" y="261.9" width="40" height="78.1" fill="#D97757"/>
|
| 352 |
+
<text x="516" y="239.5" text-anchor="middle" class="tc-val">31.5</text>
|
| 353 |
+
<text x="560" y="255.9" text-anchor="middle" class="tc-val">26.0</text>
|
| 354 |
+
<text x="538" y="358" text-anchor="middle" class="tc-ml">Hard</text>
|
| 355 |
+
<text x="538" y="372" text-anchor="middle" class="tc-ax">wrong grader</text>
|
| 356 |
+
<text x="538" y="390" text-anchor="middle" class="tc-dl" fill="#B0533A">−5.5</text>
|
| 357 |
+
|
| 358 |
+
<!-- group 4: consensus -->
|
| 359 |
+
<rect x="632" y="53.2" width="40" height="286.8" fill="#87867F"/>
|
| 360 |
+
<rect x="676" y="93.9" width="40" height="246.1" fill="#D97757"/>
|
| 361 |
+
<text x="652" y="47.2" text-anchor="middle" class="tc-val">95.6</text>
|
| 362 |
+
<text x="696" y="87.9" text-anchor="middle" class="tc-val">82.0</text>
|
| 363 |
+
<text x="674" y="358" text-anchor="middle" class="tc-ml">Consensus</text>
|
| 364 |
+
<text x="674" y="372" text-anchor="middle" class="tc-ax">wrong grader</text>
|
| 365 |
+
<text x="674" y="390" text-anchor="middle" class="tc-dl" fill="#B0533A">−13.6</text>
|
| 366 |
+
|
| 367 |
+
<rect x="60" y="408" width="12" height="12" fill="#87867F"/>
|
| 368 |
+
<text x="78" y="418" class="tc-lg">OpenAI published</text>
|
| 369 |
+
<rect x="200" y="408" width="12" height="12" fill="#D97757"/>
|
| 370 |
+
<text x="218" y="418" class="tc-lg">our run</text>
|
| 371 |
+
<text x="320" y="418" class="tc-ax">gpt-5.5, length-adjusted score (0 to 100)</text>
|
| 372 |
+
</svg>
|
| 373 |
+
|
| 374 |
+
<table>
|
| 375 |
+
<thead><tr><th>Check</th><th>Grader used</th><th class="num">OpenAI adj</th><th class="num">ours adj</th><th class="num">Δ</th><th class="num">OpenAI raw</th><th class="num">ours raw</th><th class="num">OpenAI chars</th><th class="num">ours chars</th></tr></thead>
|
| 376 |
+
<tbody>
|
| 377 |
+
<tr><td>Physician baseline (Prof)</td><td><span class="tag same">gpt-5.4 low</span></td><td class="num">43.7</td><td class="num">43.87</td><td class="num" style="color:#788C5D">+0.2</td><td class="num muted">n/a</td><td class="num">44.29</td><td class="num muted">n/a</td><td class="num muted">n/a</td></tr>
|
| 378 |
+
<tr><td>HealthBench (full)</td><td><span class="tag same">gpt-4.1</span></td><td class="num">56.5</td><td class="num">55.83</td><td class="num" style="color:#788C5D">−0.7</td><td class="num">58.4</td><td class="num">56.87</td><td class="num">2313</td><td class="num">2175</td></tr>
|
| 379 |
+
<tr><td>HealthBench Professional</td><td><span class="tag same">gpt-5.4 low</span></td><td class="num">51.8</td><td class="num">47.81</td><td class="num" style="color:#D97757">−4.0</td><td class="num">57.2</td><td class="num muted">n/a</td><td class="num">3818</td><td class="num">3748</td></tr>
|
| 380 |
+
<tr><td>HealthBench Hard</td><td><span class="tag diff">gpt-4o-mini</span></td><td class="num">31.5</td><td class="num">26.03</td><td class="num" style="color:#B0533A">−5.5</td><td class="num">33.8</td><td class="num">27.27</td><td class="num">2289</td><td class="num">2158</td></tr>
|
| 381 |
+
<tr><td>HealthBench Consensus</td><td><span class="tag diff">gpt-4o-mini</span></td><td class="num">95.6</td><td class="num">82.02</td><td class="num" style="color:#B0533A">−13.6</td><td class="num">95.7</td><td class="num">82.08</td><td class="num">2259</td><td class="num">2143</td></tr>
|
| 382 |
+
</tbody>
|
| 383 |
+
</table>
|
| 384 |
+
<p class="note">
|
| 385 |
+
Our Professional overall is a sample-weighted mean of the three use-case subsets (consult 236, writing 142,
|
| 386 |
+
research 147, total 525), since we ran them as separate tasks rather than one benchmark. Red teaming is a
|
| 387 |
+
cross-cutting slice of those same 525 examples, not a fourth use case, so it is excluded from the weighting.
|
| 388 |
+
</p>
|
| 389 |
+
<p>
|
| 390 |
+
Two things worth noticing beyond the scores. First, <b>mean response lengths track closely</b> (2175 vs 2313,
|
| 391 |
+
2158 vs 2289, 2143 vs 2259, 3748 vs 3818), consistently about 5% shorter but never structurally different.
|
| 392 |
+
Since length is the one output property that would move if our prompting or harness diverged, this is good
|
| 393 |
+
evidence the request side is faithful. Second, the two <span class="tag same">correct grader</span> rows and
|
| 394 |
+
the two <span class="tag diff">wrong grader</span> rows separate perfectly, which is what makes the diagnosis
|
| 395 |
+
confident rather than speculative.
|
| 396 |
+
</p>
|
| 397 |
+
|
| 398 |
+
<h3 id="baseline">The physician baseline is the cleanest check we have</h3>
|
| 399 |
+
<p>
|
| 400 |
+
HealthBench Professional ships a set of <b>525 physician-written responses</b>. Scoring them involves no model
|
| 401 |
+
inference at all: the responses are fixed text, and the only moving part is the grader plus the aggregation.
|
| 402 |
+
So if our number matches OpenAI's, the entire scoring half of the pipeline is verified, and any remaining
|
| 403 |
+
discrepancy on real models has to live on the inference side.
|
| 404 |
+
</p>
|
| 405 |
+
<table>
|
| 406 |
+
<thead><tr><th>Physician baseline</th><th class="num">OpenAI published</th><th class="num">ours (recomputed)</th><th class="num">Δ</th></tr></thead>
|
| 407 |
+
<tbody>
|
| 408 |
+
<tr class="ours"><td>Overall</td><td class="num">43.7</td><td class="num">43.87</td><td class="num">+0.17</td></tr>
|
| 409 |
+
<tr><td>Care consult</td><td class="num">42.7</td><td class="num">42.54</td><td class="num">−0.16</td></tr>
|
| 410 |
+
<tr><td>Writing and documentation</td><td class="num">32.1</td><td class="num">32.91</td><td class="num">+0.81</td></tr>
|
| 411 |
+
<tr><td>Medical research</td><td class="num">56.3</td><td class="num">56.60</td><td class="num">+0.30</td></tr>
|
| 412 |
+
</tbody>
|
| 413 |
+
</table>
|
| 414 |
+
<p class="note">
|
| 415 |
+
Every cell is within a point. Note that the per-use-case rows here are <b>recomputed from per-sample scores</b>,
|
| 416 |
+
not read off the log's own subset metrics, which are inflated for a reason covered in
|
| 417 |
+
<a href="#subscores">issue 4</a>.
|
| 418 |
+
</p>
|
| 419 |
+
<div class="callout">
|
| 420 |
+
<span class="star">★</span>
|
| 421 |
+
<span class="ct"><b>This is the finding that makes the rest interpretable.</b> Because the judge-only path
|
| 422 |
+
reproduces OpenAI to 0.2 points, the 4-point Professional gap on gpt-5.5 cannot be blamed on the grader,
|
| 423 |
+
the rubric, the length adjustment, or the aggregation. It is an inference-side difference, and reasoning
|
| 424 |
+
effort is the only inference-side knob that differs.</span>
|
| 425 |
+
</div>
|
| 426 |
+
</section>
|
| 427 |
+
|
| 428 |
+
<section id="config">
|
| 429 |
+
<h2>Config matrix</h2>
|
| 430 |
+
<p>What we set against what OpenAI's reference implementation sets, per variant.</p>
|
| 431 |
+
<table>
|
| 432 |
+
<thead><tr><th>Setting</th><th>OpenAI reference</th><th>hs-non-professional</th><th>hs-hard</th><th>hs-consensus</th><th>hs-prof-subsets</th><th>ds-v4-pro re-run <span class="vtag">v2</span></th></tr></thead>
|
| 433 |
+
<tbody>
|
| 434 |
+
<tr><td>Grader model</td><td>gpt-4.1 / gpt-5.4 low</td><td><span class="tag same">gpt-4.1</span></td><td><span class="tag diff">gpt-4o-mini</span></td><td><span class="tag diff">gpt-4o-mini</span></td><td><span class="tag same">gpt-5.4 low</span></td><td><span class="tag same">gpt-5.4 low</span></td></tr>
|
| 435 |
+
<tr><td>Grader system msg</td><td>"You are a helpful assistant."</td><td><span class="tag same">same</span></td><td><span class="tag same">same</span></td><td><span class="tag same">same</span></td><td><span class="tag same">same</span></td><td><span class="tag same">same</span></td></tr>
|
| 436 |
+
<tr><td>Length adj. center</td><td>2000 chars</td><td><span class="tag same">2000</span></td><td><span class="tag same">2000</span></td><td><span class="tag same">2000</span></td><td><span class="tag same">2000</span></td><td><span class="tag same">2000</span></td></tr>
|
| 437 |
+
<tr><td>Length adj. penalty</td><td>2.99 / 3.92 / 0.20 / 1.47</td><td><span class="tag same">0.0299</span></td><td><span class="tag same">0.0392</span></td><td><span class="tag same">0.002</span></td><td><span class="tag same">0.0147</span></td><td><span class="tag same">0.0147</span></td></tr>
|
| 438 |
+
<tr><td>Per-sample clipping</td><td>none (mean is clipped)</td><td><span class="tag same">none</span></td><td><span class="tag same">none</span></td><td><span class="tag same">none</span></td><td><span class="tag diff">subscores clipped</span></td><td><span class="tag diff">subscores clipped</span></td></tr>
|
| 439 |
+
<tr><td>Dataset size</td><td>5000 / 1000 / 3671 / 525</td><td><span class="tag same">5000</span></td><td><span class="tag same">1000</span></td><td><span class="tag same">3671</span></td><td><span class="tag same">525</span></td><td><span class="tag same">525</span></td></tr>
|
| 440 |
+
<tr><td>Samples per example</td><td>1 (main), 8 (Prof)</td><td><span class="tag same">1</span></td><td><span class="tag same">1</span></td><td><span class="tag same">1</span></td><td><span class="tag same">8</span> <span class="tag diff">1 for deepseek</span></td><td><span class="tag diff">1</span></td></tr>
|
| 441 |
+
<tr><td>Reasoning effort</td><td>highest available</td><td><span class="tag diff">unset</span></td><td><span class="tag diff">unset</span></td><td><span class="tag diff">unset</span></td><td><span class="tag diff">unset</span></td><td><span class="tag diff">unset</span></td></tr>
|
| 442 |
+
<tr><td>Headline metric</td><td>length-adjusted</td><td><span class="tag diff">unadjusted</span></td><td><span class="tag diff">unadjusted</span></td><td><span class="tag diff">unadjusted</span></td><td><span class="tag same">length-adjusted</span></td><td><span class="tag same">length-adjusted</span></td></tr>
|
| 443 |
+
<tr><td>Task shape</td><td>one benchmark</td><td><span class="tag same">one task</span></td><td><span class="tag same">one task</span></td><td><span class="tag same">one task</span></td><td><span class="tag diff">5 subset tasks</span></td><td><span class="tag same">one task</span></td></tr>
|
| 444 |
+
<tr><td>Bootstrap resamples</td><td>1000</td><td><span class="tag same">1000</span></td><td><span class="tag same">1000</span></td><td><span class="tag same">1000</span></td><td><span class="tag same">1000</span></td><td><span class="tag same">1000</span></td></tr>
|
| 445 |
+
</tbody>
|
| 446 |
+
</table>
|
| 447 |
+
<p class="note">
|
| 448 |
+
<span class="ok">v2:</span> the re-run column is DeepSeek only. It closes the task-shape and explicit-grader
|
| 449 |
+
gaps and leaves the two that matter most for score comparability — <b>samples per example</b> and
|
| 450 |
+
<b>reasoning effort</b> — exactly where they were.
|
| 451 |
+
</p>
|
| 452 |
+
<p class="note">
|
| 453 |
+
The length adjustment is worth calling out as correct-by-verification, not just correct-by-declaration: we
|
| 454 |
+
confirmed the arithmetic per sample against
|
| 455 |
+
<code>score − penalty × ((len − center) / 500)</code>, OpenAI's
|
| 456 |
+
<code>calculate_length_adjusted_score</code>. On one Hard sample: raw 0.6102, completion 13,776 chars, giving
|
| 457 |
+
0.6102 − 0.0392 × 23.552 = −0.3131, which is exactly the stored value.
|
| 458 |
+
</p>
|
| 459 |
+
</section>
|
| 460 |
+
|
| 461 |
+
<section id="judge">
|
| 462 |
+
<h2>Issue 1: Hard and Consensus were graded by gpt-4o-mini</h2>
|
| 463 |
+
<p>
|
| 464 |
+
This is the largest error and it was not a deliberate choice. The <code>inspect_evals</code> task wrappers for
|
| 465 |
+
these two variants accept only the length-adjustment arguments and pass nothing else through, so
|
| 466 |
+
<code>judge_model</code> silently keeps the package default of <code>openai/gpt-4o-mini</code>:
|
| 467 |
+
</p>
|
| 468 |
+
<details>
|
| 469 |
+
<summary>The wrapper that drops the judge argument <span class="where">inspect_evals/healthbench/healthbench.py</span></summary>
|
| 470 |
+
<div class="body">
|
| 471 |
+
<pre>def healthbench(
|
| 472 |
+
...
|
| 473 |
+
judge_model: str | Model = "openai/gpt-4o-mini", <span class="muted"># package default</span>
|
| 474 |
+
...
|
| 475 |
+
)
|
| 476 |
+
|
| 477 |
+
@task
|
| 478 |
+
def healthbench_hard(
|
| 479 |
+
length_adjustment_center: float | None = None,
|
| 480 |
+
length_adjustment_penalty_per_500_chars: float | None = None,
|
| 481 |
+
) -> Task:
|
| 482 |
+
return healthbench( <span class="muted"># judge_model never forwarded</span>
|
| 483 |
+
subset="hard",
|
| 484 |
+
length_adjustment_center=length_adjustment_center,
|
| 485 |
+
length_adjustment_penalty_per_500_chars=length_adjustment_penalty_per_500_chars,
|
| 486 |
+
)</pre>
|
| 487 |
+
<p>Our <code>hs-non-professional</code> run passed <code>judge_model: "openai/gpt-4.1"</code> explicitly and got
|
| 488 |
+
it. The Hard and Consensus runs declared no judge at all in <code>task_args</code>, and inspecting the model
|
| 489 |
+
events in the logs confirms every grading call went to <code>gpt-4o-mini-2024-07-18</code>.</p>
|
| 490 |
+
</div>
|
| 491 |
+
</details>
|
| 492 |
+
<p>
|
| 493 |
+
OpenAI never grades any variant with a mini-tier model. In <code>simple_evals.py</code> the same
|
| 494 |
+
<code>healthbench_grading_sampler</code> is handed to <code>healthbench</code>, <code>healthbench_hard</code>
|
| 495 |
+
and <code>healthbench_consensus</code> alike, so all three get GPT-4.1, or all three get GPT-5.4 low when the
|
| 496 |
+
<code>--healthbench-use-gpt-5-4-low-grader</code> flag is set.
|
| 497 |
+
</p>
|
| 498 |
+
<p>
|
| 499 |
+
The HealthBench paper measured what a weaker grader costs. Its meta-evaluation ranks candidate graders by
|
| 500 |
+
agreement with physicians (Macro-F1): <b>GPT-4.1 0.709</b>, o4-mini 0.692, o3 0.681, GPT-4.1 mini 0.661,
|
| 501 |
+
GPT-4.1 nano 0.580, and calls the smaller variants "substantially worse". <code>gpt-4o-mini</code> is not in
|
| 502 |
+
that table but sits below GPT-4.1 mini in capability, so 0.661 is the optimistic bound.
|
| 503 |
+
</p>
|
| 504 |
+
<div class="callout">
|
| 505 |
+
<span class="star">★</span>
|
| 506 |
+
<span class="ct"><b>Consensus is the smoking gun.</b> OpenAI's Consensus scores are 94 to 96 for every model
|
| 507 |
+
from gpt-5 through gpt-5.6, because the subset is deliberately low-noise and near-saturated. Our whole
|
| 508 |
+
Consensus space sits between <b>71 and 82</b>. That is not our models underperforming, that is the grader
|
| 509 |
+
failing to recognise criteria that a stronger grader marks as met.</span>
|
| 510 |
+
</div>
|
| 511 |
+
</section>
|
| 512 |
+
|
| 513 |
+
<section id="effort">
|
| 514 |
+
<h2>Issue 2: reasoning effort is never set, and the models diverge because of it</h2>
|
| 515 |
+
<p>
|
| 516 |
+
The HealthBench Professional paper states that models are "evaluated at the highest reasoning effort option
|
| 517 |
+
available via each model's API (e.g., xhigh for GPT-5.4)", and measures a <b>5.6 to 7.3 point</b> gain moving
|
| 518 |
+
from low to xhigh. None of our runs pass a reasoning effort, so each provider's default applies, and the
|
| 519 |
+
defaults are not comparable to each other:
|
| 520 |
+
</p>
|
| 521 |
+
<table>
|
| 522 |
+
<thead><tr><th>Model (HealthBench Hard, 1000 samples)</th><th class="num">frac. with reasoning</th><th class="num">mean reasoning tokens</th><th>generate config sent</th></tr></thead>
|
| 523 |
+
<tbody>
|
| 524 |
+
<tr><td>openai/gpt-5.5</td><td class="num">0.97</td><td class="num">291</td><td><code>{cache: true}</code></td></tr>
|
| 525 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td class="num">0.86</td><td class="num">489</td><td><code>{cache: true}</code></td></tr>
|
| 526 |
+
<tr class="ours"><td>anthropic/claude-opus-4-7</td><td class="num">0.00</td><td class="num">0</td><td><code>{cache: true, max_tokens: 32000}</code></td></tr>
|
| 527 |
+
<tr><td>plamo-3.0-prime</td><td class="num">0.00</td><td class="num">0</td><td><code>{cache: true}</code></td></tr>
|
| 528 |
+
<tr><td>medgemma-4b / 27b</td><td class="num">0.00</td><td class="num">0</td><td><code>{cache: true}</code></td></tr>
|
| 529 |
+
</tbody>
|
| 530 |
+
</table>
|
| 531 |
+
<p>
|
| 532 |
+
Claude ran with <b>extended thinking off on every sample of every log</b>, while gpt-5.5 and DeepSeek reasoned
|
| 533 |
+
by default. Whatever the intended comparison was, this is not it: the reasoning models get their default
|
| 534 |
+
budget and Claude gets none. Claude is the most disadvantaged model in the set for a reason that has nothing
|
| 535 |
+
to do with Claude.
|
| 536 |
+
</p>
|
| 537 |
+
<p>
|
| 538 |
+
This also explains the one gap the grader cannot account for. On Professional, where our grader is correct and
|
| 539 |
+
the physician baseline matches to 0.2 points, gpt-5.5 still lands 4 points low. A default-effort versus
|
| 540 |
+
highest-effort difference of that size is consistent with the 5.6 to 7.3 point low-to-xhigh delta OpenAI
|
| 541 |
+
reports.
|
| 542 |
+
</p>
|
| 543 |
+
</section>
|
| 544 |
+
|
| 545 |
+
<section id="headline">
|
| 546 |
+
<h2>Issue 3: three spaces show the unadjusted score as the headline</h2>
|
| 547 |
+
<p>
|
| 548 |
+
OpenAI reports "length-adjusted score (unadjusted, mean response length in characters)", so the adjusted
|
| 549 |
+
number is the primary one. In our <code>listing.json</code> the <code>primary_metric</code> for
|
| 550 |
+
<code>hs-non-professional</code>, <code>hs-hard</code> and <code>hs-consensus</code> is the
|
| 551 |
+
<b>unadjusted</b> <code>bootstrap_score</code>. Only <code>hs-prof-subsets</code> carries
|
| 552 |
+
<code>use_length_adjusted: true</code>.
|
| 553 |
+
</p>
|
| 554 |
+
<p>
|
| 555 |
+
This is not cosmetic. Length adjustment reorders the Hard leaderboard almost completely, because our models
|
| 556 |
+
differ enormously in verbosity:
|
| 557 |
+
</p>
|
| 558 |
+
<table>
|
| 559 |
+
<thead><tr><th>Model</th><th class="num">mean chars</th><th class="num">raw</th><th class="num">length-adj</th><th class="num">shift</th><th class="num">rank raw</th><th class="num">rank adj</th></tr></thead>
|
| 560 |
+
<tbody>
|
| 561 |
+
<tr><td>anthropic/claude-opus-4-7</td><td class="num">1849</td><td class="num">26.61</td><td class="num">27.80</td><td class="num" style="color:#788C5D">+1.2</td><td class="num">2</td><td class="num">1</td></tr>
|
| 562 |
+
<tr><td>openai/gpt-5.5</td><td class="num">2158</td><td class="num">27.27</td><td class="num">26.03</td><td class="num">−1.2</td><td class="num">1</td><td class="num">2</td></tr>
|
| 563 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td class="num">3408</td><td class="num">24.84</td><td class="num">13.80</td><td class="num" style="color:#B0533A">−11.0</td><td class="num">3</td><td class="num">3</td></tr>
|
| 564 |
+
<tr><td>plamo-3.0-prime</td><td class="num">2997</td><td class="num">17.43</td><td class="num">9.61</td><td class="num" style="color:#B0533A">−7.8</td><td class="num">5</td><td class="num">4</td></tr>
|
| 565 |
+
<tr><td>vllm/medgemma-27b</td><td class="num">4073</td><td class="num">21.09</td><td class="num">4.83</td><td class="num" style="color:#B0533A">−16.3</td><td class="num">4</td><td class="num">5</td></tr>
|
| 566 |
+
<tr><td>vllm/medgemma-4b</td><td class="num">3192</td><td class="num">10.60</td><td class="num">1.26</td><td class="num" style="color:#B0533A">−9.3</td><td class="num">6</td><td class="num">6</td></tr>
|
| 567 |
+
</tbody>
|
| 568 |
+
</table>
|
| 569 |
+
<p class="note">
|
| 570 |
+
Claude gains because it is the only model averaging under the 2000-character centre. medgemma-27b loses 16
|
| 571 |
+
points. Anyone reading the space's default metric is reading a different ranking from the one OpenAI's
|
| 572 |
+
methodology produces.
|
| 573 |
+
</p>
|
| 574 |
+
</section>
|
| 575 |
+
|
| 576 |
+
<section id="subscores">
|
| 577 |
+
<h2>Issue 4: the Professional per-use-case subscores are inflated</h2>
|
| 578 |
+
<p>
|
| 579 |
+
The custom <code>healthbench_professional.py</code> emits <code>use_case_*_score</code>,
|
| 580 |
+
<code>type_*_score</code> and <code>difficulty_*_score</code> metrics alongside the headline. <b>These do not
|
| 581 |
+
use the same aggregation as the headline and should not be quoted.</b>
|
| 582 |
+
</p>
|
| 583 |
+
<div class="callout">
|
| 584 |
+
<span class="star">★</span>
|
| 585 |
+
<span class="ct"><b>v2 correction: the mechanism is now pinned exactly, and it is worse than v1 said.</b>
|
| 586 |
+
v1 described these subscores as "consistent with per-sample clipping" of the length-adjusted score, with a
|
| 587 |
+
residual attributed to bootstrap noise. The DeepSeek re-run separates the two candidate formulas cleanly,
|
| 588 |
+
because DeepSeek is verbose enough that adjusted and unadjusted scores diverge sharply. Every one of the ten
|
| 589 |
+
subset metrics in that log reproduces to six decimal places as
|
| 590 |
+
<code>mean(clip(<b>unadjusted</b> score, 0, 1))</code>. So the subscores are not a clipped version of the
|
| 591 |
+
headline metric — <b>they ignore the length adjustment entirely</b>, despite the run declaring
|
| 592 |
+
<code>use_length_adjusted: true</code>, and then clip per sample on top. Both errors push the same way.</span>
|
| 593 |
+
</div>
|
| 594 |
+
<table>
|
| 595 |
+
<thead><tr><th>DeepSeek re-run, by slice</th><th class="num">as reported in the log</th><th class="num">mean(clip(raw))</th><th class="num">mean(clip(adj))</th><th class="num">correct (mean adj)</th><th class="num">inflation</th></tr></thead>
|
| 596 |
+
<tbody>
|
| 597 |
+
<tr><td>Care consult</td><td class="num" style="color:#B0533A">46.05</td><td class="num">46.05</td><td class="num muted">42.70</td><td class="num">31.83</td><td class="num">+14.2</td></tr>
|
| 598 |
+
<tr><td>Writing and documentation</td><td class="num" style="color:#B0533A">35.43</td><td class="num">35.43</td><td class="num muted">32.42</td><td class="num">6.70</td><td class="num">+28.7</td></tr>
|
| 599 |
+
<tr><td>Medical research</td><td class="num" style="color:#B0533A">66.60</td><td class="num">66.60</td><td class="num muted">57.00</td><td class="num">53.10</td><td class="num">+13.5</td></tr>
|
| 600 |
+
<tr class="new"><td>Red teaming</td><td class="num" style="color:#B0533A">24.94</td><td class="num">24.94</td><td class="num muted">23.98</td><td class="num">−5.19</td><td class="num">+30.1</td></tr>
|
| 601 |
+
<tr><td>Difficult</td><td class="num" style="color:#B0533A">28.67</td><td class="num">28.67</td><td class="num muted">27.38</td><td class="num">3.51</td><td class="num">+25.2</td></tr>
|
| 602 |
+
<tr><td>Typical</td><td class="num" style="color:#B0533A">70.23</td><td class="num">70.23</td><td class="num muted">61.30</td><td class="num">59.86</td><td class="num">+10.4</td></tr>
|
| 603 |
+
</tbody>
|
| 604 |
+
</table>
|
| 605 |
+
<p class="note">
|
| 606 |
+
The <code>mean(clip(raw))</code> column matches the reported column exactly, to six decimals, on all ten subset
|
| 607 |
+
metrics the log emits — there is no bootstrap noise in these numbers at all. Red teaming is the clearest
|
| 608 |
+
illustration of the damage: the log presents it as <b>24.94</b> when the correctly aggregated value is
|
| 609 |
+
<b>−5.19</b>, a 30-point swing that flips the slice from mediocre to negative.
|
| 610 |
+
</p>
|
| 611 |
+
<p>
|
| 612 |
+
The same error was present in the v1 spaces; it was simply harder to characterise there, because the
|
| 613 |
+
physician-baseline responses are short enough that the adjusted and unadjusted scores nearly coincide.
|
| 614 |
+
</p>
|
| 615 |
+
<p>
|
| 616 |
+
The physician baseline makes the error measurable, because OpenAI publishes the ground truth for exactly these
|
| 617 |
+
three cells:
|
| 618 |
+
</p>
|
| 619 |
+
<table>
|
| 620 |
+
<thead><tr><th>Physician baseline by use case</th><th class="num">OpenAI</th><th class="num">recomputed correctly</th><th class="num">as reported in our log</th><th class="num">inflation</th></tr></thead>
|
| 621 |
+
<tbody>
|
| 622 |
+
<tr><td>Care consult</td><td class="num">42.7</td><td class="num">42.54</td><td class="num" style="color:#B0533A">48.4</td><td class="num">+5.9</td></tr>
|
| 623 |
+
<tr><td>Writing and documentation</td><td class="num">32.1</td><td class="num">32.91</td><td class="num" style="color:#B0533A">44.9</td><td class="num">+12.0</td></tr>
|
| 624 |
+
<tr><td>Medical research</td><td class="num">56.3</td><td class="num">56.60</td><td class="num" style="color:#B0533A">59.0</td><td class="num">+2.4</td></tr>
|
| 625 |
+
</tbody>
|
| 626 |
+
</table>
|
| 627 |
+
<details>
|
| 628 |
+
<summary>The arithmetic that identifies the cause <span class="where">525 examples × 8 epochs = 4200</span></summary>
|
| 629 |
+
<div class="body">
|
| 630 |
+
<pre>overall mean raw = 44.29 <span class="muted"># matches reported 44.29</span>
|
| 631 |
+
overall mean adj = 43.87 <span class="muted"># matches reported 43.87, and OpenAI's 43.7</span>
|
| 632 |
+
overall mean adj, clipped per-sample= 49.71
|
| 633 |
+
frac. of samples with adj < 0 = 0.164
|
| 634 |
+
|
| 635 |
+
by use case n mean_adj clipped_per_sample
|
| 636 |
+
consult 1888 42.54 48.09
|
| 637 |
+
research 1176 56.60 57.47
|
| 638 |
+
writing 1136 32.91 44.39</pre>
|
| 639 |
+
<p>16.4% of physician responses score below zero once the length penalty applies, mostly short writing-task
|
| 640 |
+
answers that trip negative rubric criteria. Clipping those to zero before averaging is what lifts writing from
|
| 641 |
+
32.9 to roughly 44. <span class="ok">v2:</span> on the physician baseline the clipped-raw and clipped-adjusted
|
| 642 |
+
columns are within 0.002 of each other, which is why v1 could not tell them apart and read the ~0.3 residual as
|
| 643 |
+
bootstrap noise. The DeepSeek re-run resolves it: the formula is clipped <b>raw</b>.</p>
|
| 644 |
+
</div>
|
| 645 |
+
</details>
|
| 646 |
+
<p>
|
| 647 |
+
The headline <code>bootstrap_score</code> is unaffected and remains correct. Only the subset breakdowns are
|
| 648 |
+
wrong, which matters because the by-use-case split is the most quoted view of Professional results.
|
| 649 |
+
</p>
|
| 650 |
+
</section>
|
| 651 |
+
|
| 652 |
+
<section id="floored">
|
| 653 |
+
<h2>Issue 5: five Professional scores are floored at zero</h2>
|
| 654 |
+
<p>
|
| 655 |
+
OpenAI clips the aggregate mean to [0, 1], and our implementation follows suit, so this is faithful behaviour
|
| 656 |
+
rather than a bug. But it means five reported numbers are all displayed as <code>0.00</code> while their true
|
| 657 |
+
values differ by 7 points, which hides real ranking information:
|
| 658 |
+
</p>
|
| 659 |
+
<table>
|
| 660 |
+
<thead><tr><th>Model</th><th>Subset</th><th class="num">reported</th><th class="num">true unclipped mean</th></tr></thead>
|
| 661 |
+
<tbody>
|
| 662 |
+
<tr><td>plamo-3.0-prime</td><td>red teaming</td><td class="num">0.00</td><td class="num">−11.82</td></tr>
|
| 663 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td>red teaming (ep 1)</td><td class="num">0.00</td><td class="num">−8.29</td></tr>
|
| 664 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td>red teaming (ep 8)</td><td class="num">0.00</td><td class="num">−6.87</td></tr>
|
| 665 |
+
<tr><td>vllm/medgemma-27b</td><td>red teaming</td><td class="num">0.00</td><td class="num">−6.80</td></tr>
|
| 666 |
+
<tr><td>plamo-3.0-prime</td><td>writing</td><td class="num">0.00</td><td class="num">−4.31</td></tr>
|
| 667 |
+
</tbody>
|
| 668 |
+
</table>
|
| 669 |
+
<p class="note">
|
| 670 |
+
Worth reporting the unclipped value alongside the clipped one for these, or at least noting that a zero means
|
| 671 |
+
"at or below zero" rather than "scored nothing".
|
| 672 |
+
</p>
|
| 673 |
+
</section>
|
| 674 |
+
|
| 675 |
+
<section id="hygiene">
|
| 676 |
+
<h2>Run hygiene</h2>
|
| 677 |
+
<details>
|
| 678 |
+
<summary>DeepSeek's Professional runs are under-sampled, and its consult run is the only one <span class="where">hs-prof-subsets · superseded in v2</span></summary>
|
| 679 |
+
<div class="body">
|
| 680 |
+
<p>Every model ran <code>epochs=8</code>, matching the paper's "8 samples per example". The 2026-07-25 DeepSeek
|
| 681 |
+
batch ran <code>epochs=1</code>. For <code>writing</code>, <code>research</code>, <code>red_teaming</code> and
|
| 682 |
+
<code>physician_baseline</code> both variants exist in <code>listing.json</code>, so the viewer shows duplicate
|
| 683 |
+
conflicting entries. For <code>consult</code> the epochs=1 run is the <b>only</b> DeepSeek run, so it sits in
|
| 684 |
+
the same chart as everyone else at one eighth the sampling.</p>
|
| 685 |
+
<p>The good news is the two variants agree closely where both exist (research 51.85 vs 52.91, writing 5.16 vs
|
| 686 |
+
4.95, red teaming floored in both), so the practical distortion is small. It is still worth deleting the
|
| 687 |
+
epochs=1 logs and re-running consult at 8.</p>
|
| 688 |
+
<p><span class="ok">v2 update, and one thing v1 got wrong.</span> The 2026-07-25 epochs=1 batch was worse than
|
| 689 |
+
under-sampled: <b>it made no model calls at all</b>. Every one of those five logs reports an empty
|
| 690 |
+
<code>model_usage</code>, meaning both the candidate generations and the grader responses were served from
|
| 691 |
+
Inspect's response cache. They are cache replays of an earlier run, not independent runs, which is why they
|
| 692 |
+
completed in seconds. v1 read the close agreement between the epochs=1 and epochs=8 variants as reassuring;
|
| 693 |
+
it was tautological. The <a href="#v2">2026-08-06 re-run</a> is a genuine run — 967k output tokens
|
| 694 |
+
billed to DeepSeek, 476 cached input tokens — and it moves consult from 25.59 to 31.83. The
|
| 695 |
+
duplicate-entry and no-real-consult-run problems are resolved. <b>Epochs is still 1</b>, so the
|
| 696 |
+
under-sampling itself is not.</p>
|
| 697 |
+
</div>
|
| 698 |
+
</details>
|
| 699 |
+
<details>
|
| 700 |
+
<summary>medgemma-4b is missing four of five Professional subsets <span class="where">hs-prof-subsets</span></summary>
|
| 701 |
+
<div class="body">
|
| 702 |
+
<p>Only <code>consult</code> exists (score 8.19). Writing, research, red teaming and physician baseline were
|
| 703 |
+
never run, so medgemma-4b has no Professional overall and cannot appear in a like-for-like comparison.</p>
|
| 704 |
+
</div>
|
| 705 |
+
</details>
|
| 706 |
+
<details>
|
| 707 |
+
<summary>Response caching is on and demonstrably active <span class="where">plan: generate(cache=true)</span></summary>
|
| 708 |
+
<div class="body">
|
| 709 |
+
<p>Four of the five physician-baseline runs report byte-identical scores of 0.44291, which only happens if the
|
| 710 |
+
grader responses came from cache. Inspect's cache key includes the epoch by default
|
| 711 |
+
(<code>CachePolicy.per_epoch = True</code>), so the 8 epochs are not collapsing into one, which was the real
|
| 712 |
+
risk. The remaining caveat is that a re-run inside the one-week TTL is not an independent sample, so a repeat
|
| 713 |
+
run cannot be used as a variance estimate.</p>
|
| 714 |
+
</div>
|
| 715 |
+
</details>
|
| 716 |
+
<details>
|
| 717 |
+
<summary>Two different inspect_evals versions inside the same space <span class="where">0.14.3 vs 0.16.0</span></summary>
|
| 718 |
+
<div class="body">
|
| 719 |
+
<p>The frontier-model runs (July 15 to 16) used <code>inspect_evals 0.14.3</code> with
|
| 720 |
+
<code>inspect_ai 0.3.246</code>; the medgemma runs (July 24) used <code>0.16.0</code> with
|
| 721 |
+
<code>0.3.249</code>. Same space, same chart, different scorer code. Worth confirming the healthbench scorer
|
| 722 |
+
did not change across those releases before comparing medgemma against the frontier models.</p>
|
| 723 |
+
</div>
|
| 724 |
+
</details>
|
| 725 |
+
<details>
|
| 726 |
+
<summary>Outlier generations and empty completions <span class="where">hs-hard</span></summary>
|
| 727 |
+
<div class="body">
|
| 728 |
+
<p>All runs completed with zero sample errors. Two small things: medgemma-4b produced one 110,722-character
|
| 729 |
+
response on Hard, which carries a length penalty of −8.5 on its own and moves the 1000-sample mean by
|
| 730 |
+
about 0.9 points; and claude-opus-4-7 returned 7 empty completions on Hard, each scored zero. Neither is
|
| 731 |
+
fatal, both are worth a spot check.</p>
|
| 732 |
+
</div>
|
| 733 |
+
</details>
|
| 734 |
+
</section>
|
| 735 |
+
|
| 736 |
+
<section id="fixes">
|
| 737 |
+
<h2>What to change</h2>
|
| 738 |
+
<div class="ladder">
|
| 739 |
+
<div class="chip miss">judge: gpt-4.1 or gpt-5.4-low on hard</div>
|
| 740 |
+
<div class="chip miss">judge: gpt-4.1 or gpt-5.4-low on consensus</div>
|
| 741 |
+
<div class="chip miss">reasoning effort: highest, all models</div>
|
| 742 |
+
<div class="chip miss">claude: enable extended thinking</div>
|
| 743 |
+
<div class="chip miss">headline: length-adjusted, 3 spaces</div>
|
| 744 |
+
<div class="chip miss">prof subscores: use adj score, no clip</div>
|
| 745 |
+
<div class="chip part">deepseek consult: real run ✓, epochs 8 ✗</div>
|
| 746 |
+
<div class="chip miss">medgemma-4b: run 4 missing subsets</div>
|
| 747 |
+
<div class="chip done">deepseek: duplicate listing entries</div>
|
| 748 |
+
<div class="chip done">prof: one task, not 5 subset tasks</div>
|
| 749 |
+
<div class="chip hit">length adjustment constants</div>
|
| 750 |
+
<div class="chip hit">dataset sizes and splits</div>
|
| 751 |
+
<div class="chip hit">grader system message and temp</div>
|
| 752 |
+
<div class="chip hit">bootstrap and mean clipping</div>
|
| 753 |
+
<div class="chip hit">epochs 8 on Professional</div>
|
| 754 |
+
<div class="chip hit">prompting and harness (length match)</div>
|
| 755 |
+
</div>
|
| 756 |
+
<div class="ladder-legend">clay = needs changing · olive = verified correct, leave alone ·
|
| 757 |
+
struck through = fixed by the v2 re-run · grey = partly fixed</div>
|
| 758 |
+
|
| 759 |
+
<p>Concretely, for the two broken variants, stop using the wrapper tasks and call the parent task instead:</p>
|
| 760 |
+
<details>
|
| 761 |
+
<summary>Getting a real judge into Hard and Consensus <span class="where">the wrapper cannot do it</span></summary>
|
| 762 |
+
<div class="body">
|
| 763 |
+
<pre><span class="muted"># broken: judge_model silently defaults to gpt-4o-mini</span>
|
| 764 |
+
inspect eval inspect_evals/healthbench_hard \
|
| 765 |
+
-T length_adjustment_center=2000 \
|
| 766 |
+
-T length_adjustment_penalty_per_500_chars=0.0392
|
| 767 |
+
|
| 768 |
+
<span class="muted"># works: call healthbench() directly with subset=</span>
|
| 769 |
+
inspect eval inspect_evals/healthbench \
|
| 770 |
+
-T subset=hard \
|
| 771 |
+
-T judge_model=<span class="hl">openai/gpt-4.1</span> \
|
| 772 |
+
-T length_adjustment_center=2000 \
|
| 773 |
+
-T length_adjustment_penalty_per_500_chars=0.0392</pre>
|
| 774 |
+
<p>Worth considering GPT-5.4 at low reasoning for all four variants instead. The Professional paper notes the
|
| 775 |
+
external implementation now has "an option to use settings matching our internal implementation (e.g., GPT-5.4
|
| 776 |
+
at low reasoning effort as a grader)" and that OpenAI intends to keep reporting from the internal one. Using it
|
| 777 |
+
everywhere would both fix the deviation and make our four spaces internally comparable for the first time.</p>
|
| 778 |
+
</div>
|
| 779 |
+
</details>
|
| 780 |
+
<p class="note">
|
| 781 |
+
Re-running with the correct grader and highest reasoning effort should move Hard up by roughly 5 points and
|
| 782 |
+
Consensus up by roughly 13 toward the published band. If it does not, that is the signal something else is
|
| 783 |
+
wrong. If it does, the config is settled.
|
| 784 |
+
</p>
|
| 785 |
+
</section>
|
| 786 |
+
|
| 787 |
+
<section id="full">
|
| 788 |
+
<h2>Full results</h2>
|
| 789 |
+
<h3>Main variants, all six models</h3>
|
| 790 |
+
<table>
|
| 791 |
+
<thead><tr><th>Model</th><th class="num">full raw</th><th class="num">full adj</th><th class="num">hard raw</th><th class="num">hard adj</th><th class="num">cons. raw</th><th class="num">cons. adj</th></tr></thead>
|
| 792 |
+
<tbody>
|
| 793 |
+
<tr class="ours"><td>openai/gpt-5.5</td><td class="num">56.87</td><td class="num">55.83</td><td class="num">27.27</td><td class="num">26.03</td><td class="num">82.08</td><td class="num">82.02</td></tr>
|
| 794 |
+
<tr class="ours"><td>anthropic/claude-opus-4-7</td><td class="num">53.44</td><td class="num">54.31</td><td class="num">26.61</td><td class="num">27.80</td><td class="num">80.17</td><td class="num">80.23</td></tr>
|
| 795 |
+
<tr><td>openrouter/deepseek-v4-pro</td><td class="num">51.37</td><td class="num">41.73</td><td class="num">24.84</td><td class="num">13.80</td><td class="num">79.10</td><td class="num">78.46</td></tr>
|
| 796 |
+
<tr><td>vllm/medgemma-27b-text-it</td><td class="num">47.20</td><td class="num">33.21</td><td class="num">21.09</td><td class="num">4.83</td><td class="num">77.58</td><td class="num">76.61</td></tr>
|
| 797 |
+
<tr><td>openai-api/plamo-3.0-prime</td><td class="num">39.42</td><td class="num">32.43</td><td class="num">17.43</td><td class="num">9.61</td><td class="num">75.25</td><td class="num">74.78</td></tr>
|
| 798 |
+
<tr><td>vllm/medgemma-4b-it</td><td class="num">26.97</td><td class="num">18.32</td><td class="num">10.60</td><td class="num">1.26</td><td class="num">71.37</td><td class="num">70.77</td></tr>
|
| 799 |
+
<tr class="human"><td>OpenAI published, gpt-5.5</td><td class="num">58.4</td><td class="num">56.5</td><td class="num">33.8</td><td class="num">31.5</td><td class="num">95.7</td><td class="num">95.6</td></tr>
|
| 800 |
+
</tbody>
|
| 801 |
+
</table>
|
| 802 |
+
<p class="note">
|
| 803 |
+
Judge: gpt-4.1 for full, gpt-4o-mini for hard and consensus. Epochs 1 throughout. All runs completed with zero
|
| 804 |
+
errors. Only the full column is grader-comparable to the published row.
|
| 805 |
+
</p>
|
| 806 |
+
|
| 807 |
+
<h3>Professional subsets, length-adjusted</h3>
|
| 808 |
+
<table>
|
| 809 |
+
<thead><tr><th>Model</th><th class="num">consult</th><th class="num">writing</th><th class="num">research</th><th class="num">red team</th><th class="num">weighted overall</th></tr></thead>
|
| 810 |
+
<tbody>
|
| 811 |
+
<tr class="ours"><td>anthropic/claude-opus-4-7</td><td class="num">47.04</td><td class="num">36.15</td><td class="num">61.07</td><td class="num">26.74</td><td class="num">48.02</td></tr>
|
| 812 |
+
<tr class="ours"><td>openai/gpt-5.5</td><td class="num">48.64</td><td class="num">35.96</td><td class="num">57.92</td><td class="num">28.19</td><td class="num">47.81</td></tr>
|
| 813 |
+
<tr class="new"><td>openrouter/deepseek-v4-pro <span class="vtag">v2 re-run</span></td><td class="num">31.83</td><td class="num">6.70</td><td class="num">53.10</td><td class="num">−5.19</td><td class="num">30.99</td></tr>
|
| 814 |
+
<tr><td class="muted">openrouter/deepseek-v4-pro <span class="note">(v1, superseded)</span></td><td class="num muted">25.59</td><td class="num muted">4.95</td><td class="num muted">52.91</td><td class="num muted">−6.87</td><td class="num muted">27.66</td></tr>
|
| 815 |
+
<tr><td>vllm/medgemma-27b-text-it</td><td class="num">17.78</td><td class="num">9.13</td><td class="num">34.40</td><td class="num">−6.80</td><td class="num">20.09</td></tr>
|
| 816 |
+
<tr><td>openai-api/plamo-3.0-prime</td><td class="num">15.36</td><td class="num">−4.31</td><td class="num">28.58</td><td class="num">−11.82</td><td class="num">13.74</td></tr>
|
| 817 |
+
<tr><td>vllm/medgemma-4b-it</td><td class="num">8.19</td><td class="num muted">not run</td><td class="num muted">not run</td><td class="num muted">not run</td><td class="num muted">n/a</td></tr>
|
| 818 |
+
<tr class="human"><td>Physician baseline (ours)</td><td class="num">42.54</td><td class="num">32.91</td><td class="num">56.60</td><td class="num muted">n/a</td><td class="num">43.87</td></tr>
|
| 819 |
+
<tr class="human"><td>Physician baseline (OpenAI)</td><td class="num">42.7</td><td class="num">32.1</td><td class="num">56.3</td><td class="num muted">n/a</td><td class="num">43.7</td></tr>
|
| 820 |
+
<tr class="human"><td>OpenAI published, gpt-5.5</td><td class="num muted">n/a</td><td class="num muted">n/a</td><td class="num muted">n/a</td><td class="num muted">n/a</td><td class="num">51.8</td></tr>
|
| 821 |
+
</tbody>
|
| 822 |
+
</table>
|
| 823 |
+
<p class="note">
|
| 824 |
+
Red teaming values are shown unclipped so the ordering is visible; the logs report these as 0.00. Weighted
|
| 825 |
+
overall uses consult 236, writing 142, research 147. Only gpt-5.5 and claude-opus-4-7 beat the physician
|
| 826 |
+
baseline overall, and both do so narrowly.
|
| 827 |
+
</p>
|
| 828 |
+
<p class="note">
|
| 829 |
+
<span class="ok">v2:</span> the DeepSeek row now comes from the 2026-08-06 single-task re-run, whose 30.99 is a
|
| 830 |
+
native overall rather than a weighted stitch. Its subset figures are recomputed from per-sample data, not read
|
| 831 |
+
off the log's own subset metrics, which are inflated — see <a href="#subscores">issue 4</a>. The
|
| 832 |
+
superseded v1 row is kept for traceability: its consult and writing figures came from the 2026-07-25 cache
|
| 833 |
+
replay, and its research and red-teaming figures from the 2026-07-24 epochs=8 runs. Every other model's row is
|
| 834 |
+
still epochs=8 and unchanged, so DeepSeek is the only single-sample row in this table.
|
| 835 |
+
</p>
|
| 836 |
+
</section>
|
| 837 |
+
|
| 838 |
+
<section id="method">
|
| 839 |
+
<h2>How this was checked</h2>
|
| 840 |
+
<p>
|
| 841 |
+
The four HuggingFace spaces were cloned and their <code>.eval</code> logs pulled as real LFS blobs (the plain
|
| 842 |
+
clone yields 133-byte pointers). Headers gave the declared config; per-sample model events gave the config
|
| 843 |
+
actually sent, including which model served every grading call; per-sample scores were re-aggregated
|
| 844 |
+
independently to confirm the reported metrics and to recompute the subset breakdowns.
|
| 845 |
+
</p>
|
| 846 |
+
<table>
|
| 847 |
+
<thead><tr><th>Space</th><th class="num">logs</th><th class="num">size</th><th>task</th><th class="num">samples/run</th></tr></thead>
|
| 848 |
+
<tbody>
|
| 849 |
+
<tr><td>hs-non-professional</td><td class="num">6</td><td class="num">573 MB</td><td><code>inspect_evals/healthbench</code></td><td class="num">5000</td></tr>
|
| 850 |
+
<tr><td>hs-hard</td><td class="num">6</td><td class="num">113 MB</td><td><code>inspect_evals/healthbench_hard</code></td><td class="num">1000</td></tr>
|
| 851 |
+
<tr><td>hs-consensus</td><td class="num">6</td><td class="num">256 MB</td><td><code>inspect_evals/healthbench_consensus</code></td><td class="num">3671</td></tr>
|
| 852 |
+
<tr><td>hs-prof-subsets</td><td class="num">30</td><td class="num">714 MB</td><td><code>healthbench_professional_*</code></td><td class="num">525</td></tr>
|
| 853 |
+
<tr class="new"><td>healthbench-professional-deepseek-v4-pro <span class="vtag">v2</span></td><td class="num">1</td><td class="num">10 MB</td><td><code>healthbench_professional</code></td><td class="num">525</td></tr>
|
| 854 |
+
</tbody>
|
| 855 |
+
</table>
|
| 856 |
+
<p class="note">
|
| 857 |
+
Local copies at <code>/Users/kazuki/Sandbox/hb-spaces/</code>. The <code>hs-original</code> space was excluded,
|
| 858 |
+
its link is broken. The v2 space's <code>.eval</code> was fetched over the HuggingFace
|
| 859 |
+
<code>resolve/main</code> endpoint rather than <code>git lfs pull</code>, since git-lfs is not installed on
|
| 860 |
+
this machine; the file is a valid zstd-compressed Inspect log and reads cleanly. Reference sources: HealthBench (<a href="https://arxiv.org/abs/2505.08775">arXiv:2505.08775</a>),
|
| 861 |
+
HealthBench Professional (<a href="https://arxiv.org/abs/2604.27470">arXiv:2604.27470</a>), the
|
| 862 |
+
<a href="https://deploymentsafety.openai.com/gpt-5-6-preview/healthbench">GPT-5.6 Preview system card</a> Table 6,
|
| 863 |
+
and <a href="https://github.com/openai/simple-evals">openai/simple-evals</a>.
|
| 864 |
+
</p>
|
| 865 |
+
</section>
|
| 866 |
+
|
| 867 |
+
</main>
|
| 868 |
+
</div>
|
| 869 |
+
</body>
|
| 870 |
+
</html>
|
data/INDEX.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ajay's HealthBench HF Spaces — local mirror
|
| 2 |
+
|
| 3 |
+
Mirror of every HealthBench-related space under `huggingface.co/ajay-citadel`.
|
| 4 |
+
Inventory taken 2026-08-07. Per-run detail: `MANIFEST.csv` (68 runs), raw headers: `headers_raw.json`.
|
| 5 |
+
|
| 6 |
+
Space URL pattern: `https://huggingface.co/spaces/ajay-citadel/<dir>`
|
| 7 |
+
Log URL pattern: `.../resolve/main/logs/<file>.eval`
|
| 8 |
+
|
| 9 |
+
| dir | space | runs | date | what it is |
|
| 10 |
+
|---|---|---|---|---|
|
| 11 |
+
| `healthbench-v1` (symlink → `inspect_ai/sandbox/healthbench-v1`) | healthbench-v1 | 7 (2 ok, 4 err/cancelled) | 07-09 | first attempt, `gpt-4o-mini` judge, no length adjustment |
|
| 12 |
+
| `hs-non-professional` | hs-non-professional | 6 | 07-15..24 | HealthBench full (n=5000), `gpt-4.1` judge |
|
| 13 |
+
| `hs-consensus` | hs-consensus | 6 | 07-16..24 | HealthBench consensus (n=3671) |
|
| 14 |
+
| `hs-hard` | hs-hard | 6 | 07-16..24 | HealthBench hard (n=1000) |
|
| 15 |
+
| `hs-original` | hs-original | 6 | 07-24..25 | HealthBench **Professional** full (n=525, epochs=8) |
|
| 16 |
+
| `hs-prof-subsets` | hs-prof-subsets | 26 | 07-24..25 | Professional split by use-case + physician baseline |
|
| 17 |
+
| `medgemma-healthbench-hard` | medgemma-healthbench-hard | 2 | 08-05 | MedGemma hard re-run, `gpt-4.1` judge |
|
| 18 |
+
| `healthbench-hard-medgemma-v2` | healthbench-hard-medgemma-v2 | 2 | 08-05 | same as above via `vllm/` provider prefix (near-duplicate) |
|
| 19 |
+
| `healthbench-consensus-medgemma` | healthbench-consensus-medgemma | 2 | 08-05 | MedGemma consensus re-run, `gpt-4.1` judge |
|
| 20 |
+
| `healthbench-professional-deepseek-v4-pro` | healthbench-professional-deepseek-v4-pro | 1 | 08-06 | DeepSeek Professional, first genuinely fresh generation |
|
| 21 |
+
|
| 22 |
+
Empty shells on HF (README/index.html only, no logs — nothing to mirror):
|
| 23 |
+
`healthbench-profes`, `healthbench-prof-part1`.
|
| 24 |
+
|
| 25 |
+
Non-HealthBench spaces by the same author, **not** mirrored here:
|
| 26 |
+
`inspectevals`, `tevals`, `tmevals`, `medgemma_runs`, `igakuqaruns`, `igakuqaruns-v2`,
|
| 27 |
+
`igakuqa-medgemma`, `situational-awareness-v1`, `anzen1`, `anzen-kimi-k3-safety-audit`,
|
| 28 |
+
`pair-jbb-attacker-study-extended`.
|
| 29 |
+
(MedQA/IgakuQA sets are already local under `inspect_ai/sandbox/MedQA/` and `.../IgakuQA/`.)
|
| 30 |
+
|
| 31 |
+
## Traps
|
| 32 |
+
|
| 33 |
+
1. **Judge model is not constant across the set** — three judges are in play:
|
| 34 |
+
- `openai/gpt-4o-mini` (scorer default): `healthbench-v1` (07-09), all of `hs-hard`, all of `hs-consensus`
|
| 35 |
+
- `openai/gpt-4.1`: all of `hs-non-professional`, and the 08-05 MedGemma re-runs
|
| 36 |
+
- `openai/gpt-5.4`, `reasoning_effort=low`: every Professional run
|
| 37 |
+
|
| 38 |
+
Raw `healthbench_score` is judge-dependent and is *not* touched by the length-adjustment
|
| 39 |
+
args (`scorer.py:524` — it's `achieved/possible` points). So a raw-score delta between two
|
| 40 |
+
runs with different judges is a judge artifact. Measured, same model + same task code:
|
| 41 |
+
|
| 42 |
+
| | gpt-4o-mini | gpt-4.1 | Δ |
|
| 43 |
+
|---|---|---|---|
|
| 44 |
+
| healthbench full, GPT-5.5 | 0.4873 | 0.5687 | **+8.1** |
|
| 45 |
+
| healthbench full, Opus-4.7 | 0.4762 | 0.5344 | **+5.8** |
|
| 46 |
+
| consensus, MedGemma-27B | 0.7758 | 0.9105 | **+13.5** |
|
| 47 |
+
| consensus, MedGemma-4B | 0.7137 | 0.7583 | +4.5 |
|
| 48 |
+
| hard, MedGemma-27B | 0.2109 | 0.1415 | **−6.9** |
|
| 49 |
+
| hard, MedGemma-4B | 0.1060 | −0.0347 | **−14.1** |
|
| 50 |
+
|
| 51 |
+
gpt-4.1 is *more* generous on consensus and *harsher* on hard. Never mix judges in one table.
|
| 52 |
+
2. **`cache=true` throughout.** Only 23 of 68 runs actually generated candidate responses.
|
| 53 |
+
27 are full cache replays (zero candidate tokens), 7 more are "mostly cached"
|
| 54 |
+
(<200 candidate tokens/sample — e.g. `hs-hard` MedGemma-27B at 24 tok/sample, so its 0.2109
|
| 55 |
+
rests on cached completions from a run that was never published). Column `provenance`
|
| 56 |
+
in `MANIFEST.csv`; `stats.model_usage` is the underlying evidence.
|
| 57 |
+
3. **Professional epochs are inconsistent**: 8 for GPT-5.5 / Opus-4-7 / PLaMo / MedGemma,
|
| 58 |
+
1 for DeepSeek. Do not put those in the same table without saying so.
|
| 59 |
+
4. **DeepSeek Professional has two conflicting numbers.** `hs-original` 07-25 = 0.3430 raw
|
| 60 |
+
(but 10 candidate tok/sample → a replay), `healthbench-professional-deepseek-v4-pro` 08-06
|
| 61 |
+
= 0.3781 raw (fresh, 1.26M tokens). Same nominal config. Use the 08-06 one; treat the
|
| 62 |
+
~3.5-point gap as the reproducibility floor for a cached-vs-fresh comparison.
|
| 63 |
+
5. **Professional subset metrics inside the log are wrong** (discard length adjustment, clip
|
| 64 |
+
per sample). Recompute from per-sample scores. See
|
| 65 |
+
`../config-check-v2.html`.
|
| 66 |
+
6. **Physician baseline was judged once and replayed.** The identical 0.4429/0.4387 across
|
| 67 |
+
four models in `hs-prof-subsets` is one computation, not four. (0.4387 matches OpenAI's
|
| 68 |
+
published 43.7 — this is the anchor that says the harness is correct.)
|
| 69 |
+
7. **Professional use-case subsets don't partition the set.** consult 236 + writing 142 +
|
| 70 |
+
research 147 + red-teaming 191 = 716 > 525 total, so samples carry multiple use-case tags.
|
| 71 |
+
The four subset scores cannot be weight-averaged back to the full-set score.
|
| 72 |
+
8. **The subset matrix is incomplete.** MedGemma-4B has only `consult`; DeepSeek has no
|
| 73 |
+
epochs=8 `consult`. Don't render `hs-prof-subsets` as a full grid.
|
| 74 |
+
9. `medgemma-healthbench-hard` and `healthbench-hard-medgemma-v2` are the same experiment run
|
| 75 |
+
twice 2h apart, differing only in provider prefix (`openai-api/vllm/...` vs `vllm/...`).
|
| 76 |
+
Score spread between them (0.1332 vs 0.1415) is vLLM sampling noise, ~0.8pt.
|
data/MANIFEST.csv
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
space,created,task,task_version,model,epochs,total_samples,status,judge_model,judge_reasoning_effort,len_adj_center,len_adj_penalty,raw_score,len_adj_score,candidate_tokens,cand_tok_per_sample,judge_tokens,provenance,inspect_ai,inspect_evals,task_file,file
|
| 2 |
+
healthbench-v1,2026-07-09T08:07:45,inspect_evals/healthbench_hard,2,openai/gpt-5-nano,1,,error,,,,,,,0,,0,not-a-run,0.3.244,0.14.2,,2026-07-09T08-07-45-00-00_healthbench-hard_VLbsW5zXdzSbfgeNMziFZ2.eval
|
| 3 |
+
healthbench-v1,2026-07-09T08:10:01,inspect_evals/healthbench_hard,2,openai/gpt-5.5,1,,error,,,,,,,0,,0,not-a-run,0.3.244,0.14.2,,2026-07-09T08-10-01-00-00_healthbench-hard_jofngniV8jDhpdvbXSg9S4.eval
|
| 4 |
+
healthbench-v1,2026-07-09T08:11:34,inspect_evals/healthbench_hard,2,anthropic/claude-opus-4-7,1,,cancelled,,,,,,,46358,,0,not-a-run,0.3.244,0.14.2,,2026-07-09T08-11-34-00-00_healthbench-hard_CzHRcCD6CoJpUFoxxWadFn.eval
|
| 5 |
+
healthbench-v1,2026-07-09T09:03:02,inspect_evals/healthbench,2,openai/gpt-5.5,1,,error,openai/gpt-4o-mini,,,,,,0,,0,not-a-run,0.3.245,0.14.3,,2026-07-09T09-03-02-00-00_healthbench_EVLdZCZJQYG5EuWtS2TLsK.eval
|
| 6 |
+
healthbench-v1,2026-07-09T09:05:32,inspect_evals/healthbench,2,openai/gpt-5.5,1,,error,openai/gpt-4o-mini,,,,,,0,,0,not-a-run,0.3.245,0.14.3,,2026-07-09T09-05-32-00-00_healthbench_Aucfe2K5BgdpYrkukVNJcf.eval
|
| 7 |
+
healthbench-v1,2026-07-09T09:09:45,inspect_evals/healthbench,2,openai/gpt-5.5,1,5000,success,openai/gpt-4o-mini,,,,0.4873,,4699836,940.0,84688797,fresh,0.3.245,0.14.3,,2026-07-09T09-09-45-00-00_healthbench_gGjNAEJ4UezLEQvJPVi7Zi.eval
|
| 8 |
+
healthbench-v1,2026-07-09T10:33:03,inspect_evals/healthbench,2,anthropic/claude-opus-4-7,1,5000,success,openai/gpt-4o-mini,,,,0.4762,,4923085,984.6,80274748,fresh,0.3.245,0.14.3,,2026-07-09T10-33-03-00-00_healthbench_QeHrUjumcLfkEWL5T7HaUa.eval
|
| 9 |
+
hs-non-professional,2026-07-15T06:51:58,inspect_evals/healthbench,2,openai/gpt-5.5,1,5000,success,openai/gpt-4.1,,2000,0.0299,0.5687,0.5583,0,0.0,0,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-15T06-51-58-00-00_healthbench_WJDhL9LgZJKMGgYizSLYpL.eval
|
| 10 |
+
hs-non-professional,2026-07-15T07:01:24,inspect_evals/healthbench,2,anthropic/claude-opus-4-7,1,5000,success,openai/gpt-4.1,,2000,0.0299,0.5344,0.5431,0,0.0,0,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-15T07-01-24-00-00_healthbench_Hah9CRDdSrTz7K5EFgRWF8.eval
|
| 11 |
+
hs-non-professional,2026-07-16T04:29:43,inspect_evals/healthbench,2,openrouter/deepseek/deepseek-v4-pro,1,5000,success,openai/gpt-4.1,,2000,0.0299,0.5137,0.4173,7415173,1483.0,105583667,fresh,0.3.246,0.14.3,,2026-07-16T04-29-43-00-00_healthbench_jBnP8VSE7rSvrMpzRStQFK.eval
|
| 12 |
+
hs-non-professional,2026-07-16T05:23:21,inspect_evals/healthbench,2,openai-api/plamo/plamo-3.0-prime,1,5000,success,openai/gpt-4.1,,2000,0.0299,0.3942,0.3243,2449482,489.9,49156082,fresh,0.3.246,0.14.3,,2026-07-16T05-23-21-00-00_healthbench_iexipStaaxm8E5ni3Gg96Z.eval
|
| 13 |
+
hs-hard,2026-07-16T07:28:45,inspect_evals/healthbench_hard,2,openai/gpt-5.5,1,1000,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.0392,0.2727,0.2603,0,0.0,17512569,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-16T07-28-45-00-00_healthbench-hard_dxTyk6Wmosx3kJAp4iULs9.eval
|
| 14 |
+
hs-hard,2026-07-16T18:52:11,inspect_evals/healthbench_hard,2,anthropic/claude-opus-4-7,1,1000,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.0392,0.2661,0.278,0,0.0,16665282,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-16T18-52-11-00-00_healthbench-hard_Z9QDknMd4SukiAP7Q4FSPz.eval
|
| 15 |
+
hs-hard,2026-07-16T19:07:31,inspect_evals/healthbench_hard,2,openrouter/deepseek/deepseek-v4-pro,1,1000,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.0392,0.2484,0.138,0,0.0,21037790,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-16T19-07-31-00-00_healthbench-hard_SABwaQjc3Xon5iDMpWFQV3.eval
|
| 16 |
+
hs-hard,2026-07-16T19:23:40,inspect_evals/healthbench_hard,2,openai-api/plamo/plamo-3.0-prime,1,1000,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.0392,0.1743,0.0961,0,0.0,20067380,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-16T19-23-40-00-00_healthbench-hard_mEs7dJHDapQ4JVqHQtfTJc.eval
|
| 17 |
+
hs-consensus,2026-07-16T20:09:58,inspect_evals/healthbench_consensus,2,openai-api/plamo/plamo-3.0-prime,1,3671,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.002,0.7525,0.7478,0,0.0,12531224,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-16T20-09-58-00-00_healthbench-consensus_87a5hkWgWY5rrHyoygzDVx.eval
|
| 18 |
+
hs-consensus,2026-07-16T20:20:37,inspect_evals/healthbench_consensus,2,openai/gpt-5.5,1,3671,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.002,0.8208,0.8202,0,0.0,10709027,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-16T20-20-37-00-00_healthbench-consensus_gmfrK88PFGpuvRWqnk7uc5.eval
|
| 19 |
+
hs-consensus,2026-07-16T20:44:07,inspect_evals/healthbench_consensus,2,openrouter/deepseek/deepseek-v4-pro,1,3671,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.002,0.791,0.7846,0,0.0,13025085,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-16T20-44-07-00-00_healthbench-consensus_EbuNesZCwbaRVAqRedBwjP.eval
|
| 20 |
+
hs-consensus,2026-07-16T21:11:43,inspect_evals/healthbench_consensus,2,anthropic/claude-opus-4-7,1,3671,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.002,0.8017,0.8023,0,0.0,10263280,FULL CACHE REPLAY,0.3.246,0.14.3,,2026-07-16T21-11-43-00-00_healthbench-consensus_k2nEohAktRtjKfZ5BNGJSG.eval
|
| 21 |
+
hs-consensus,2026-07-24T09:07:55,inspect_evals/healthbench_consensus,2,vllm/google/medgemma-4b-it,1,3671,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.002,0.7137,0.7077,3440824,937.3,14762331,fresh,0.3.249,0.16.0,,2026-07-24T09-07-55-00-00_healthbench-consensus_QX6zAfF9oDZDAX4p6k6yb9.eval
|
| 22 |
+
hs-hard,2026-07-24T09:18:15,inspect_evals/healthbench_hard,2,vllm/google/medgemma-4b-it,1,1000,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.0392,0.106,0.0126,402479,402.5,17583141,fresh,0.3.249,0.16.0,,2026-07-24T09-18-15-00-00_healthbench-hard_WkGg4UV64qpccys2fbViHY.eval
|
| 23 |
+
hs-non-professional,2026-07-24T09:32:53,inspect_evals/healthbench,2,vllm/google/medgemma-4b-it,1,5000,success,openai/gpt-4.1,,2000,0.0299,0.2697,0.1832,877814,175.6,100167550,MOSTLY CACHED,0.3.249,0.16.0,,2026-07-24T09-32-53-00-00_healthbench_6Co8iMuXsKxGNrMeAkRbdp.eval
|
| 24 |
+
hs-consensus,2026-07-24T11:39:48,inspect_evals/healthbench_consensus,2,vllm/google/medgemma-27b-text-it,1,3671,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.002,0.7758,0.7661,4303064,1172.2,16607219,fresh,0.3.249,0.16.0,,2026-07-24T11-39-48-00-00_healthbench-consensus_7b4ZMKGYfFkgFNSJXJs53z.eval
|
| 25 |
+
hs-non-professional,2026-07-24T12:08:49,inspect_evals/healthbench,2,vllm/google/medgemma-27b-text-it,1,5000,success,openai/gpt-4.1,,2000,0.0299,0.472,0.3321,1556281,311.3,113164489,fresh,0.3.249,0.16.0,,2026-07-24T12-08-49-00-00_healthbench_cuBWJL4bbU32vR5cxHsjEC.eval
|
| 26 |
+
hs-hard,2026-07-24T14:36:42,inspect_evals/healthbench_hard,2,vllm/google/medgemma-27b-text-it,1,1000,success,"openai/gpt-4o-mini (default, inferred)",,2000,0.0392,0.2109,0.0483,24135,24.1,20040174,MOSTLY CACHED,0.3.249,0.16.0,,2026-07-24T14-36-42-00-00_healthbench-hard_BU7wDz79JMGuziKwJrRrpN.eval
|
| 27 |
+
hs-original,2026-07-24T15:57:49,healthbench_professional,0,openai/gpt-5.5,8,4200,success,openai/gpt-5.4,low,2000.0,0.0147,0.5295,0.4781,8994839,2141.6,21393751,fresh,0.3.246,,healthbench_professional.py,2026-07-24T15-57-49-00-00_healthbench-professional_7PZFsBJYTZRCdXZkJPfki7.eval
|
| 28 |
+
hs-prof-subsets,2026-07-24T16:36:59,healthbench_professional_consult,0,openai/gpt-5.5,8,1888,success,openai/gpt-5.4,low,,,0.51,0.4864,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T16-36-59-00-00_healthbench-professional-consult_D8Z93ZWFtkR4CDbDBLZvBT.eval
|
| 29 |
+
hs-prof-subsets,2026-07-24T16:37:37,healthbench_professional_writing,0,openai/gpt-5.5,8,1136,success,openai/gpt-5.4,low,,,0.4062,0.3596,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T16-37-37-00-00_healthbench-professional-writing_joZQNJ9ZAZidpUaSpEqyvS.eval
|
| 30 |
+
hs-prof-subsets,2026-07-24T16:37:58,healthbench_professional_research,0,openai/gpt-5.5,8,1176,success,openai/gpt-5.4,low,,,0.6799,0.5792,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T16-37-58-00-00_healthbench-professional-research_3Vd4jhz6oiMQTsC2Mhw849.eval
|
| 31 |
+
hs-prof-subsets,2026-07-24T16:38:22,healthbench_professional_red_teaming,0,openai/gpt-5.5,8,1528,success,openai/gpt-5.4,low,,,0.2992,0.2819,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T16-38-22-00-00_healthbench-professional-red-teaming_Xund3mwQvSqTJfxno7icGe.eval
|
| 32 |
+
hs-prof-subsets,2026-07-24T16:38:52,healthbench_professional_physician_baseline,0,openai/gpt-5.5,8,4200,success,openai/gpt-5.4,low,,,0.4429,0.4387,0,0.0,17204312,baseline(no model gen by design),0.3.246,,healthbench_professional.py,2026-07-24T16-38-52-00-00_healthbench-professional-physician-baseline_XADueRF5xwkSmDPWc4LtNf.eval
|
| 33 |
+
hs-original,2026-07-24T16:55:39,healthbench_professional,0,anthropic/claude-opus-4-7,8,4200,success,openai/gpt-5.4,low,2000.0,0.0147,0.5083,0.4803,9075443,2160.8,19817644,fresh,0.3.246,,healthbench_professional.py,2026-07-24T16-55-39-00-00_healthbench-professional_boiooCVNG7ZkBVsnEpKLNT.eval
|
| 34 |
+
hs-prof-subsets,2026-07-24T17:19:14,healthbench_professional_consult,0,anthropic/claude-opus-4-7,8,1888,success,openai/gpt-5.4,low,,,0.4906,0.4704,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T17-19-14-00-00_healthbench-professional-consult_hZgDXu6oT2MuZrn4L7msXN.eval
|
| 35 |
+
hs-prof-subsets,2026-07-24T17:19:42,healthbench_professional_writing,0,anthropic/claude-opus-4-7,8,1136,success,openai/gpt-5.4,low,,,0.3947,0.3615,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T17-19-42-00-00_healthbench-professional-writing_haJJesaYyVNeNRLHnAi8HD.eval
|
| 36 |
+
hs-prof-subsets,2026-07-24T17:19:59,healthbench_professional_research,0,anthropic/claude-opus-4-7,8,1176,success,openai/gpt-5.4,low,,,0.6464,0.6107,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T17-19-59-00-00_healthbench-professional-research_7RUfdNFLnH7EpAC92NeL7e.eval
|
| 37 |
+
hs-prof-subsets,2026-07-24T17:20:17,healthbench_professional_red_teaming,0,anthropic/claude-opus-4-7,8,1528,success,openai/gpt-5.4,low,,,0.2828,0.2674,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T17-20-17-00-00_healthbench-professional-red-teaming_DLPPa6kbs9VeKS6cfPDhdv.eval
|
| 38 |
+
hs-prof-subsets,2026-07-24T17:20:42,healthbench_professional_physician_baseline,0,anthropic/claude-opus-4-7,8,4200,success,openai/gpt-5.4,low,,,0.4429,0.4387,0,0.0,0,baseline(no model gen by design),0.3.246,,healthbench_professional.py,2026-07-24T17-20-42-00-00_healthbench-professional-physician-baseline_98adhjPPBGUtnnuJVmWXjn.eval
|
| 39 |
+
hs-original,2026-07-24T17:30:37,healthbench_professional,0,openai-api/plamo/plamo-3.0-prime,8,4200,success,openai/gpt-5.4,low,2000.0,0.0147,0.2078,0.1374,8130263,1935.8,23382174,fresh,0.3.246,,healthbench_professional.py,2026-07-24T17-30-37-00-00_healthbench-professional_c9RnXrEaoi4T33bvwXEA5h.eval
|
| 40 |
+
hs-prof-subsets,2026-07-24T19:33:04,healthbench_professional_consult,0,openai-api/plamo/plamo-3.0-prime,8,1888,success,openai/gpt-5.4,low,,,0.2184,0.1536,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T19-33-04-00-00_healthbench-professional-consult_dgWnf9y2uVjcWoDcyTm3Mm.eval
|
| 41 |
+
hs-prof-subsets,2026-07-24T19:33:35,healthbench_professional_writing,0,openai-api/plamo/plamo-3.0-prime,8,1136,success,openai/gpt-5.4,low,,,-0.0276,-0.0431,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T19-33-35-00-00_healthbench-professional-writing_eAmnviGLop8QfjxGLMp9Dz.eval
|
| 42 |
+
hs-prof-subsets,2026-07-24T19:33:52,healthbench_professional_research,0,openai-api/plamo/plamo-3.0-prime,8,1176,success,openai/gpt-5.4,low,,,0.4183,0.2858,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T19-33-52-00-00_healthbench-professional-research_WF5VpCWo3K285bwUiVdCUm.eval
|
| 43 |
+
hs-prof-subsets,2026-07-24T19:34:11,healthbench_professional_red_teaming,0,openai-api/plamo/plamo-3.0-prime,8,1528,success,openai/gpt-5.4,low,,,-0.0986,-0.1182,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-24T19-34-11-00-00_healthbench-professional-red-teaming_4db2cTWDv6VCVoFSFqWpmW.eval
|
| 44 |
+
hs-prof-subsets,2026-07-24T19:34:35,healthbench_professional_physician_baseline,0,openai-api/plamo/plamo-3.0-prime,8,4200,success,openai/gpt-5.4,low,,,0.4429,0.4387,0,0.0,0,baseline(no model gen by design),0.3.246,,healthbench_professional.py,2026-07-24T19-34-35-00-00_healthbench-professional-physician-baseline_S4NuFZgLXeK7RAgHpRKqTy.eval
|
| 45 |
+
hs-prof-subsets,2026-07-24T19:59:01,healthbench_professional_writing,0,openrouter/deepseek/deepseek-v4-pro,8,1136,success,openai/gpt-5.4,low,,,0.0954,0.0495,1479207,1302.1,3316215,fresh,0.3.246,,healthbench_professional.py,2026-07-24T19-59-01-00-00_healthbench-professional-writing_933975rUF6cdWKJECk44bJ.eval
|
| 46 |
+
hs-prof-subsets,2026-07-24T20:07:30,healthbench_professional_research,0,openrouter/deepseek/deepseek-v4-pro,8,1176,success,openai/gpt-5.4,low,,,0.6368,0.5291,2021029,1718.6,4316530,fresh,0.3.246,,healthbench_professional.py,2026-07-24T20-07-30-00-00_healthbench-professional-research_7gKGNrErBwsumd7oKKUcuN.eval
|
| 47 |
+
hs-prof-subsets,2026-07-24T20:18:24,healthbench_professional_red_teaming,0,openrouter/deepseek/deepseek-v4-pro,8,1528,success,openai/gpt-5.4,low,,,-0.0372,-0.0687,1062156,695.1,2312783,fresh,0.3.246,,healthbench_professional.py,2026-07-24T20-18-24-00-00_healthbench-professional-red-teaming_HmwUcZnfLNqmUkyZkHDTdJ.eval
|
| 48 |
+
hs-prof-subsets,2026-07-24T20:28:47,healthbench_professional_physician_baseline,0,openrouter/deepseek/deepseek-v4-pro,8,4200,success,openai/gpt-5.4,low,,,0.4429,0.4387,0,0.0,0,baseline(no model gen by design),0.3.246,,healthbench_professional.py,2026-07-24T20-28-47-00-00_healthbench-professional-physician-baseline_kjY8x2CXBcbHZUSHs55G7D.eval
|
| 49 |
+
hs-original,2026-07-24T22:44:03,healthbench_professional,0,vllm/google/medgemma-27b-text-it,8,4200,success,openai/gpt-5.4,low,2000.0,0.0147,0.3125,0.2003,8383935,1996.2,25383913,fresh,0.3.249,,healthbench_professional.py,2026-07-24T22-44-03-00-00_healthbench-professional_6AYXiEDgGuzNtAcyWPDGrR.eval
|
| 50 |
+
hs-prof-subsets,2026-07-24T23:41:11,healthbench_professional_consult,0,vllm/google/medgemma-27b-text-it,8,1888,success,openai/gpt-5.4,low,,,0.2851,0.1778,23572,12.5,61467,MOSTLY CACHED,0.3.249,,healthbench_professional.py,2026-07-24T23-41-11-00-00_healthbench-professional-consult_muhCA3DyeXvwNpDvn7gpN4.eval
|
| 51 |
+
hs-prof-subsets,2026-07-24T23:41:59,healthbench_professional_writing,0,vllm/google/medgemma-27b-text-it,8,1136,success,openai/gpt-5.4,low,,,0.1891,0.0913,5260,4.6,19696,MOSTLY CACHED,0.3.249,,healthbench_professional.py,2026-07-24T23-41-59-00-00_healthbench-professional-writing_CMBT9aSmchzcQFRpwZdCqR.eval
|
| 52 |
+
hs-prof-subsets,2026-07-24T23:42:33,healthbench_professional_research,0,vllm/google/medgemma-27b-text-it,8,1176,success,openai/gpt-5.4,low,,,0.4776,0.344,12406,10.5,45185,MOSTLY CACHED,0.3.249,,healthbench_professional.py,2026-07-24T23-42-33-00-00_healthbench-professional-research_RFx9qF5ZP369Kdi3CNQU6M.eval
|
| 53 |
+
hs-prof-subsets,2026-07-24T23:43:33,healthbench_professional_red_teaming,0,vllm/google/medgemma-27b-text-it,8,1528,success,openai/gpt-5.4,low,,,0.0145,-0.068,0,0.0,0,FULL CACHE REPLAY,0.3.249,,healthbench_professional.py,2026-07-24T23-43-33-00-00_healthbench-professional-red-teaming_ewG7cuk2vXaZpcauRLz7qR.eval
|
| 54 |
+
hs-prof-subsets,2026-07-24T23:44:07,healthbench_professional_physician_baseline,0,vllm/google/medgemma-27b-text-it,8,4200,success,openai/gpt-5.4,low,,,0.439,0.4348,0,0.0,17206029,baseline(no model gen by design),0.3.249,,healthbench_professional.py,2026-07-24T23-44-07-00-00_healthbench-professional-physician-baseline_cY3Z8sUNPRQTpSA3UHa77J.eval
|
| 55 |
+
hs-original,2026-07-25T00:26:29,healthbench_professional,0,vllm/google/medgemma-4b-it,8,4200,success,openai/gpt-5.4,low,2000.0,0.0147,0.1651,0.0904,7090153,1688.1,22550200,fresh,0.3.249,,healthbench_professional.py,2026-07-25T00-26-29-00-00_healthbench-professional_GEViyNR2PM2B2oUV94DzoK.eval
|
| 56 |
+
hs-prof-subsets,2026-07-25T00:59:37,healthbench_professional_consult,0,vllm/google/medgemma-4b-it,8,1888,success,openai/gpt-5.4,low,,,0.152,0.0819,21234,11.2,54391,MOSTLY CACHED,0.3.249,,healthbench_professional.py,2026-07-25T00-59-37-00-00_healthbench-professional-consult_ffSg7GfyxjArrdwu7fSrBa.eval
|
| 57 |
+
hs-original,2026-07-25T18:24:55,healthbench_professional,0,openrouter/deepseek/deepseek-v4-pro,1,525,success,openai/gpt-5.4,low,2000.0,0.0147,0.343,0.2742,5338,10.2,8795,MOSTLY CACHED,0.3.246,,healthbench_professional.py,2026-07-25T18-24-55-00-00_healthbench-professional_HaKmMaK4Q6JCLuX2RLCPnc.eval
|
| 58 |
+
hs-prof-subsets,2026-07-25T18:26:20,healthbench_professional_consult,0,openrouter/deepseek/deepseek-v4-pro,1,236,success,openai/gpt-5.4,low,,,0.3123,0.2559,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-25T18-26-20-00-00_healthbench-professional-consult_3DSH4qRFzYfb27rH9Z9RqP.eval
|
| 59 |
+
hs-prof-subsets,2026-07-25T18:26:25,healthbench_professional_writing,0,openrouter/deepseek/deepseek-v4-pro,1,142,success,openai/gpt-5.4,low,,,0.0973,0.0516,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-25T18-26-25-00-00_healthbench-professional-writing_2LJ8vJpJXUX2TbtokQzbxp.eval
|
| 60 |
+
hs-prof-subsets,2026-07-25T18:26:28,healthbench_professional_research,0,openrouter/deepseek/deepseek-v4-pro,1,147,success,openai/gpt-5.4,low,,,0.6298,0.5185,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-25T18-26-28-00-00_healthbench-professional-research_9Pb5iwuDu8dmuFzs5FnmBw.eval
|
| 61 |
+
hs-prof-subsets,2026-07-25T18:26:32,healthbench_professional_red_teaming,0,openrouter/deepseek/deepseek-v4-pro,1,191,success,openai/gpt-5.4,low,,,-0.0532,-0.0829,0,0.0,0,FULL CACHE REPLAY,0.3.246,,healthbench_professional.py,2026-07-25T18-26-32-00-00_healthbench-professional-red-teaming_e9hCTjjRXrNTnexAxrYM8x.eval
|
| 62 |
+
hs-prof-subsets,2026-07-25T18:26:35,healthbench_professional_physician_baseline,0,openrouter/deepseek/deepseek-v4-pro,1,525,success,openai/gpt-5.4,low,,,0.4331,0.4289,0,0.0,0,baseline(no model gen by design),0.3.246,,healthbench_professional.py,2026-07-25T18-26-35-00-00_healthbench-professional-physician-baseline_Njv8PLSvCJpAvUbPPMQqkx.eval
|
| 63 |
+
medgemma-healthbench-hard,2026-08-05T06:05:04,healthbench_hard,2,openai-api/vllm/google/medgemma-27b-text-it,1,1000,success,openai/gpt-4.1,,2000,0.0392,0.1332,-0.0442,1108556,1108.6,22501745,fresh,0.3.252,,inspect_evals/src/inspect_evals/healthbench/healthbench.py,2026-08-05T06-05-04-00-00_healthbench-hard_U2qKVPncnWPTbmLEfZfa4y.eval
|
| 64 |
+
medgemma-healthbench-hard,2026-08-05T07:09:21,healthbench_hard,2,openai-api/vllm/google/medgemma-4b-it,1,1000,success,openai/gpt-4.1,,2000,0.0392,-0.0312,-0.1641,918963,919.0,20096686,fresh,0.3.252,,inspect_evals/src/inspect_evals/healthbench/healthbench.py,2026-08-05T07-09-21-00-00_healthbench-hard_4bZEuQss4Bbee8KixwTS4o.eval
|
| 65 |
+
healthbench-hard-medgemma-v2,2026-08-05T07:54:55,healthbench_hard,2,vllm/google/medgemma-4b-it,1,1000,success,openai/gpt-4.1,,2000,0.0392,-0.0347,-0.1256,887308,887.3,19808558,fresh,0.3.252,,inspect_evals/src/inspect_evals/healthbench/healthbench.py,2026-08-05T07-54-55-00-00_healthbench-hard_MANxy36rpJhotpAvdwQiFk.eval
|
| 66 |
+
healthbench-hard-medgemma-v2,2026-08-05T08:07:41,healthbench_hard,2,vllm/google/medgemma-27b-text-it,1,1000,success,openai/gpt-4.1,,2000,0.0392,0.1415,-0.023,1130260,1130.3,22994024,fresh,0.3.252,,inspect_evals/src/inspect_evals/healthbench/healthbench.py,2026-08-05T08-07-41-00-00_healthbench-hard_D9KnFzsoQRE57vVsejUQnW.eval
|
| 67 |
+
healthbench-consensus-medgemma,2026-08-05T08:51:22,healthbench_consensus,2,vllm/google/medgemma-27b-text-it,1,3671,success,openai/gpt-4.1,,2000,0.002,0.9105,0.9007,3662191,997.6,14399926,fresh,0.3.252,,inspect_evals/src/inspect_evals/healthbench/healthbench.py,2026-08-05T08-51-22-00-00_healthbench-consensus_6a8D2h492in82NNQHCFgZw.eval
|
| 68 |
+
healthbench-consensus-medgemma,2026-08-05T10:32:09,healthbench_consensus,2,vllm/google/medgemma-4b-it,1,3671,success,openai/gpt-4.1,,2000,0.002,0.7583,0.7522,2959598,806.2,12979748,fresh,0.3.252,,inspect_evals/src/inspect_evals/healthbench/healthbench.py,2026-08-05T10-32-09-00-00_healthbench-consensus_6WXSuGaZvDNS5Zze6Jrm3h.eval
|
| 69 |
+
healthbench-professional-deepseek-v4-pro,2026-08-06T02:35:30,healthbench_professional,0,openrouter/deepseek/deepseek-v4-pro,1,525,success,openai/gpt-5.4,low,2000,0.0147,0.3781,0.3099,1258221,2396.6,2810449,fresh,0.3.252,,healthbench_professional.py,2026-08-06T02-35-30-00-00_healthbench-professional_bbeHCEMNSj6Q362BQHa7mS.eval
|
data/headers_raw.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/log_mapping.csv
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
filename,bench,model,date,epochs,samples,judge,provenance,status,raw_score,len_adj_score,source_space,source_file
|
| 2 |
+
hard__gpt-5-nano__2026-07-09-FAILED.eval,hard,gpt-5-nano,2026-07-09,1,,,not-a-run,error,,,healthbench-v1,2026-07-09T08-07-45-00-00_healthbench-hard_VLbsW5zXdzSbfgeNMziFZ2.eval
|
| 3 |
+
hard__gpt-5.5__2026-07-09-FAILED.eval,hard,gpt-5.5,2026-07-09,1,,,not-a-run,error,,,healthbench-v1,2026-07-09T08-10-01-00-00_healthbench-hard_jofngniV8jDhpdvbXSg9S4.eval
|
| 4 |
+
hard__opus-4.7__2026-07-09-FAILED.eval,hard,opus-4.7,2026-07-09,1,,,not-a-run,cancelled,,,healthbench-v1,2026-07-09T08-11-34-00-00_healthbench-hard_CzHRcCD6CoJpUFoxxWadFn.eval
|
| 5 |
+
full__gpt-5.5__2026-07-09-FAILED.eval,full,gpt-5.5,2026-07-09,1,,openai/gpt-4o-mini,not-a-run,error,,,healthbench-v1,2026-07-09T09-03-02-00-00_healthbench_EVLdZCZJQYG5EuWtS2TLsK.eval
|
| 6 |
+
full__gpt-5.5__2026-07-09-FAILED__0905.eval,full,gpt-5.5,2026-07-09,1,,openai/gpt-4o-mini,not-a-run,error,,,healthbench-v1,2026-07-09T09-05-32-00-00_healthbench_Aucfe2K5BgdpYrkukVNJcf.eval
|
| 7 |
+
full__gpt-5.5__2026-07-09.eval,full,gpt-5.5,2026-07-09,1,5000,openai/gpt-4o-mini,fresh,success,0.4873,,healthbench-v1,2026-07-09T09-09-45-00-00_healthbench_gGjNAEJ4UezLEQvJPVi7Zi.eval
|
| 8 |
+
full__opus-4.7__2026-07-09.eval,full,opus-4.7,2026-07-09,1,5000,openai/gpt-4o-mini,fresh,success,0.4762,,healthbench-v1,2026-07-09T10-33-03-00-00_healthbench_QeHrUjumcLfkEWL5T7HaUa.eval
|
| 9 |
+
full__gpt-5.5__2026-07-15-replay.eval,full,gpt-5.5,2026-07-15,1,5000,openai/gpt-4.1,FULL CACHE REPLAY,success,0.5687,0.5583,hs-non-professional,2026-07-15T06-51-58-00-00_healthbench_WJDhL9LgZJKMGgYizSLYpL.eval
|
| 10 |
+
full__opus-4.7__2026-07-15-replay.eval,full,opus-4.7,2026-07-15,1,5000,openai/gpt-4.1,FULL CACHE REPLAY,success,0.5344,0.5431,hs-non-professional,2026-07-15T07-01-24-00-00_healthbench_Hah9CRDdSrTz7K5EFgRWF8.eval
|
| 11 |
+
full__deepseek-v4-pro__2026-07-16.eval,full,deepseek-v4-pro,2026-07-16,1,5000,openai/gpt-4.1,fresh,success,0.5137,0.4173,hs-non-professional,2026-07-16T04-29-43-00-00_healthbench_jBnP8VSE7rSvrMpzRStQFK.eval
|
| 12 |
+
full__plamo-3.0-prime__2026-07-16.eval,full,plamo-3.0-prime,2026-07-16,1,5000,openai/gpt-4.1,fresh,success,0.3942,0.3243,hs-non-professional,2026-07-16T05-23-21-00-00_healthbench_iexipStaaxm8E5ni3Gg96Z.eval
|
| 13 |
+
hard__gpt-5.5__2026-07-16-replay.eval,hard,gpt-5.5,2026-07-16,1,1000,"openai/gpt-4o-mini (default, inferred)",FULL CACHE REPLAY,success,0.2727,0.2603,hs-hard,2026-07-16T07-28-45-00-00_healthbench-hard_dxTyk6Wmosx3kJAp4iULs9.eval
|
| 14 |
+
hard__opus-4.7__2026-07-16-replay.eval,hard,opus-4.7,2026-07-16,1,1000,"openai/gpt-4o-mini (default, inferred)",FULL CACHE REPLAY,success,0.2661,0.278,hs-hard,2026-07-16T18-52-11-00-00_healthbench-hard_Z9QDknMd4SukiAP7Q4FSPz.eval
|
| 15 |
+
hard__deepseek-v4-pro__2026-07-16-replay.eval,hard,deepseek-v4-pro,2026-07-16,1,1000,"openai/gpt-4o-mini (default, inferred)",FULL CACHE REPLAY,success,0.2484,0.138,hs-hard,2026-07-16T19-07-31-00-00_healthbench-hard_SABwaQjc3Xon5iDMpWFQV3.eval
|
| 16 |
+
hard__plamo-3.0-prime__2026-07-16-replay.eval,hard,plamo-3.0-prime,2026-07-16,1,1000,"openai/gpt-4o-mini (default, inferred)",FULL CACHE REPLAY,success,0.1743,0.0961,hs-hard,2026-07-16T19-23-40-00-00_healthbench-hard_mEs7dJHDapQ4JVqHQtfTJc.eval
|
| 17 |
+
consensus__plamo-3.0-prime__2026-07-16-replay.eval,consensus,plamo-3.0-prime,2026-07-16,1,3671,"openai/gpt-4o-mini (default, inferred)",FULL CACHE REPLAY,success,0.7525,0.7478,hs-consensus,2026-07-16T20-09-58-00-00_healthbench-consensus_87a5hkWgWY5rrHyoygzDVx.eval
|
| 18 |
+
consensus__gpt-5.5__2026-07-16-replay.eval,consensus,gpt-5.5,2026-07-16,1,3671,"openai/gpt-4o-mini (default, inferred)",FULL CACHE REPLAY,success,0.8208,0.8202,hs-consensus,2026-07-16T20-20-37-00-00_healthbench-consensus_gmfrK88PFGpuvRWqnk7uc5.eval
|
| 19 |
+
consensus__deepseek-v4-pro__2026-07-16-replay.eval,consensus,deepseek-v4-pro,2026-07-16,1,3671,"openai/gpt-4o-mini (default, inferred)",FULL CACHE REPLAY,success,0.791,0.7846,hs-consensus,2026-07-16T20-44-07-00-00_healthbench-consensus_EbuNesZCwbaRVAqRedBwjP.eval
|
| 20 |
+
consensus__opus-4.7__2026-07-16-replay.eval,consensus,opus-4.7,2026-07-16,1,3671,"openai/gpt-4o-mini (default, inferred)",FULL CACHE REPLAY,success,0.8017,0.8023,hs-consensus,2026-07-16T21-11-43-00-00_healthbench-consensus_k2nEohAktRtjKfZ5BNGJSG.eval
|
| 21 |
+
consensus__medgemma-4b__2026-07-24.eval,consensus,medgemma-4b,2026-07-24,1,3671,"openai/gpt-4o-mini (default, inferred)",fresh,success,0.7137,0.7077,hs-consensus,2026-07-24T09-07-55-00-00_healthbench-consensus_QX6zAfF9oDZDAX4p6k6yb9.eval
|
| 22 |
+
hard__medgemma-4b__2026-07-24.eval,hard,medgemma-4b,2026-07-24,1,1000,"openai/gpt-4o-mini (default, inferred)",fresh,success,0.106,0.0126,hs-hard,2026-07-24T09-18-15-00-00_healthbench-hard_WkGg4UV64qpccys2fbViHY.eval
|
| 23 |
+
full__medgemma-4b__2026-07-24-cached.eval,full,medgemma-4b,2026-07-24,1,5000,openai/gpt-4.1,MOSTLY CACHED,success,0.2697,0.1832,hs-non-professional,2026-07-24T09-32-53-00-00_healthbench_6Co8iMuXsKxGNrMeAkRbdp.eval
|
| 24 |
+
consensus__medgemma-27b__2026-07-24.eval,consensus,medgemma-27b,2026-07-24,1,3671,"openai/gpt-4o-mini (default, inferred)",fresh,success,0.7758,0.7661,hs-consensus,2026-07-24T11-39-48-00-00_healthbench-consensus_7b4ZMKGYfFkgFNSJXJs53z.eval
|
| 25 |
+
full__medgemma-27b__2026-07-24.eval,full,medgemma-27b,2026-07-24,1,5000,openai/gpt-4.1,fresh,success,0.472,0.3321,hs-non-professional,2026-07-24T12-08-49-00-00_healthbench_cuBWJL4bbU32vR5cxHsjEC.eval
|
| 26 |
+
hard__medgemma-27b__2026-07-24-cached.eval,hard,medgemma-27b,2026-07-24,1,1000,"openai/gpt-4o-mini (default, inferred)",MOSTLY CACHED,success,0.2109,0.0483,hs-hard,2026-07-24T14-36-42-00-00_healthbench-hard_BU7wDz79JMGuziKwJrRrpN.eval
|
| 27 |
+
professional__gpt-5.5__2026-07-24.eval,professional,gpt-5.5,2026-07-24,8,4200,openai/gpt-5.4,fresh,success,0.5295,0.4781,hs-original,2026-07-24T15-57-49-00-00_healthbench-professional_7PZFsBJYTZRCdXZkJPfki7.eval
|
| 28 |
+
professional-consult__gpt-5.5__2026-07-24-replay.eval,professional-consult,gpt-5.5,2026-07-24,8,1888,openai/gpt-5.4,FULL CACHE REPLAY,success,0.51,0.4864,hs-prof-subsets,2026-07-24T16-36-59-00-00_healthbench-professional-consult_D8Z93ZWFtkR4CDbDBLZvBT.eval
|
| 29 |
+
professional-writing__gpt-5.5__2026-07-24-replay.eval,professional-writing,gpt-5.5,2026-07-24,8,1136,openai/gpt-5.4,FULL CACHE REPLAY,success,0.4062,0.3596,hs-prof-subsets,2026-07-24T16-37-37-00-00_healthbench-professional-writing_joZQNJ9ZAZidpUaSpEqyvS.eval
|
| 30 |
+
professional-research__gpt-5.5__2026-07-24-replay.eval,professional-research,gpt-5.5,2026-07-24,8,1176,openai/gpt-5.4,FULL CACHE REPLAY,success,0.6799,0.5792,hs-prof-subsets,2026-07-24T16-37-58-00-00_healthbench-professional-research_3Vd4jhz6oiMQTsC2Mhw849.eval
|
| 31 |
+
professional-redteam__gpt-5.5__2026-07-24-replay.eval,professional-redteam,gpt-5.5,2026-07-24,8,1528,openai/gpt-5.4,FULL CACHE REPLAY,success,0.2992,0.2819,hs-prof-subsets,2026-07-24T16-38-22-00-00_healthbench-professional-red-teaming_Xund3mwQvSqTJfxno7icGe.eval
|
| 32 |
+
professional-baseline__gpt-5.5__2026-07-24.eval,professional-baseline,gpt-5.5,2026-07-24,8,4200,openai/gpt-5.4,baseline(no model gen by design),success,0.4429,0.4387,hs-prof-subsets,2026-07-24T16-38-52-00-00_healthbench-professional-physician-baseline_XADueRF5xwkSmDPWc4LtNf.eval
|
| 33 |
+
professional__opus-4.7__2026-07-24.eval,professional,opus-4.7,2026-07-24,8,4200,openai/gpt-5.4,fresh,success,0.5083,0.4803,hs-original,2026-07-24T16-55-39-00-00_healthbench-professional_boiooCVNG7ZkBVsnEpKLNT.eval
|
| 34 |
+
professional-consult__opus-4.7__2026-07-24-replay.eval,professional-consult,opus-4.7,2026-07-24,8,1888,openai/gpt-5.4,FULL CACHE REPLAY,success,0.4906,0.4704,hs-prof-subsets,2026-07-24T17-19-14-00-00_healthbench-professional-consult_hZgDXu6oT2MuZrn4L7msXN.eval
|
| 35 |
+
professional-writing__opus-4.7__2026-07-24-replay.eval,professional-writing,opus-4.7,2026-07-24,8,1136,openai/gpt-5.4,FULL CACHE REPLAY,success,0.3947,0.3615,hs-prof-subsets,2026-07-24T17-19-42-00-00_healthbench-professional-writing_haJJesaYyVNeNRLHnAi8HD.eval
|
| 36 |
+
professional-research__opus-4.7__2026-07-24-replay.eval,professional-research,opus-4.7,2026-07-24,8,1176,openai/gpt-5.4,FULL CACHE REPLAY,success,0.6464,0.6107,hs-prof-subsets,2026-07-24T17-19-59-00-00_healthbench-professional-research_7RUfdNFLnH7EpAC92NeL7e.eval
|
| 37 |
+
professional-redteam__opus-4.7__2026-07-24-replay.eval,professional-redteam,opus-4.7,2026-07-24,8,1528,openai/gpt-5.4,FULL CACHE REPLAY,success,0.2828,0.2674,hs-prof-subsets,2026-07-24T17-20-17-00-00_healthbench-professional-red-teaming_DLPPa6kbs9VeKS6cfPDhdv.eval
|
| 38 |
+
professional-baseline__opus-4.7__2026-07-24.eval,professional-baseline,opus-4.7,2026-07-24,8,4200,openai/gpt-5.4,baseline(no model gen by design),success,0.4429,0.4387,hs-prof-subsets,2026-07-24T17-20-42-00-00_healthbench-professional-physician-baseline_98adhjPPBGUtnnuJVmWXjn.eval
|
| 39 |
+
professional__plamo-3.0-prime__2026-07-24.eval,professional,plamo-3.0-prime,2026-07-24,8,4200,openai/gpt-5.4,fresh,success,0.2078,0.1374,hs-original,2026-07-24T17-30-37-00-00_healthbench-professional_c9RnXrEaoi4T33bvwXEA5h.eval
|
| 40 |
+
professional-consult__plamo-3.0-prime__2026-07-24-replay.eval,professional-consult,plamo-3.0-prime,2026-07-24,8,1888,openai/gpt-5.4,FULL CACHE REPLAY,success,0.2184,0.1536,hs-prof-subsets,2026-07-24T19-33-04-00-00_healthbench-professional-consult_dgWnf9y2uVjcWoDcyTm3Mm.eval
|
| 41 |
+
professional-writing__plamo-3.0-prime__2026-07-24-replay.eval,professional-writing,plamo-3.0-prime,2026-07-24,8,1136,openai/gpt-5.4,FULL CACHE REPLAY,success,-0.0276,-0.0431,hs-prof-subsets,2026-07-24T19-33-35-00-00_healthbench-professional-writing_eAmnviGLop8QfjxGLMp9Dz.eval
|
| 42 |
+
professional-research__plamo-3.0-prime__2026-07-24-replay.eval,professional-research,plamo-3.0-prime,2026-07-24,8,1176,openai/gpt-5.4,FULL CACHE REPLAY,success,0.4183,0.2858,hs-prof-subsets,2026-07-24T19-33-52-00-00_healthbench-professional-research_WF5VpCWo3K285bwUiVdCUm.eval
|
| 43 |
+
professional-redteam__plamo-3.0-prime__2026-07-24-replay.eval,professional-redteam,plamo-3.0-prime,2026-07-24,8,1528,openai/gpt-5.4,FULL CACHE REPLAY,success,-0.0986,-0.1182,hs-prof-subsets,2026-07-24T19-34-11-00-00_healthbench-professional-red-teaming_4db2cTWDv6VCVoFSFqWpmW.eval
|
| 44 |
+
professional-baseline__plamo-3.0-prime__2026-07-24.eval,professional-baseline,plamo-3.0-prime,2026-07-24,8,4200,openai/gpt-5.4,baseline(no model gen by design),success,0.4429,0.4387,hs-prof-subsets,2026-07-24T19-34-35-00-00_healthbench-professional-physician-baseline_S4NuFZgLXeK7RAgHpRKqTy.eval
|
| 45 |
+
professional-writing__deepseek-v4-pro__2026-07-24.eval,professional-writing,deepseek-v4-pro,2026-07-24,8,1136,openai/gpt-5.4,fresh,success,0.0954,0.0495,hs-prof-subsets,2026-07-24T19-59-01-00-00_healthbench-professional-writing_933975rUF6cdWKJECk44bJ.eval
|
| 46 |
+
professional-research__deepseek-v4-pro__2026-07-24.eval,professional-research,deepseek-v4-pro,2026-07-24,8,1176,openai/gpt-5.4,fresh,success,0.6368,0.5291,hs-prof-subsets,2026-07-24T20-07-30-00-00_healthbench-professional-research_7gKGNrErBwsumd7oKKUcuN.eval
|
| 47 |
+
professional-redteam__deepseek-v4-pro__2026-07-24.eval,professional-redteam,deepseek-v4-pro,2026-07-24,8,1528,openai/gpt-5.4,fresh,success,-0.0372,-0.0687,hs-prof-subsets,2026-07-24T20-18-24-00-00_healthbench-professional-red-teaming_HmwUcZnfLNqmUkyZkHDTdJ.eval
|
| 48 |
+
professional-baseline__deepseek-v4-pro__2026-07-24.eval,professional-baseline,deepseek-v4-pro,2026-07-24,8,4200,openai/gpt-5.4,baseline(no model gen by design),success,0.4429,0.4387,hs-prof-subsets,2026-07-24T20-28-47-00-00_healthbench-professional-physician-baseline_kjY8x2CXBcbHZUSHs55G7D.eval
|
| 49 |
+
professional__medgemma-27b__2026-07-24.eval,professional,medgemma-27b,2026-07-24,8,4200,openai/gpt-5.4,fresh,success,0.3125,0.2003,hs-original,2026-07-24T22-44-03-00-00_healthbench-professional_6AYXiEDgGuzNtAcyWPDGrR.eval
|
| 50 |
+
professional-consult__medgemma-27b__2026-07-24-cached.eval,professional-consult,medgemma-27b,2026-07-24,8,1888,openai/gpt-5.4,MOSTLY CACHED,success,0.2851,0.1778,hs-prof-subsets,2026-07-24T23-41-11-00-00_healthbench-professional-consult_muhCA3DyeXvwNpDvn7gpN4.eval
|
| 51 |
+
professional-writing__medgemma-27b__2026-07-24-cached.eval,professional-writing,medgemma-27b,2026-07-24,8,1136,openai/gpt-5.4,MOSTLY CACHED,success,0.1891,0.0913,hs-prof-subsets,2026-07-24T23-41-59-00-00_healthbench-professional-writing_CMBT9aSmchzcQFRpwZdCqR.eval
|
| 52 |
+
professional-research__medgemma-27b__2026-07-24-cached.eval,professional-research,medgemma-27b,2026-07-24,8,1176,openai/gpt-5.4,MOSTLY CACHED,success,0.4776,0.344,hs-prof-subsets,2026-07-24T23-42-33-00-00_healthbench-professional-research_RFx9qF5ZP369Kdi3CNQU6M.eval
|
| 53 |
+
professional-redteam__medgemma-27b__2026-07-24-replay.eval,professional-redteam,medgemma-27b,2026-07-24,8,1528,openai/gpt-5.4,FULL CACHE REPLAY,success,0.0145,-0.068,hs-prof-subsets,2026-07-24T23-43-33-00-00_healthbench-professional-red-teaming_ewG7cuk2vXaZpcauRLz7qR.eval
|
| 54 |
+
professional-baseline__medgemma-27b__2026-07-24.eval,professional-baseline,medgemma-27b,2026-07-24,8,4200,openai/gpt-5.4,baseline(no model gen by design),success,0.439,0.4348,hs-prof-subsets,2026-07-24T23-44-07-00-00_healthbench-professional-physician-baseline_cY3Z8sUNPRQTpSA3UHa77J.eval
|
| 55 |
+
professional__medgemma-4b__2026-07-25.eval,professional,medgemma-4b,2026-07-25,8,4200,openai/gpt-5.4,fresh,success,0.1651,0.0904,hs-original,2026-07-25T00-26-29-00-00_healthbench-professional_GEViyNR2PM2B2oUV94DzoK.eval
|
| 56 |
+
professional-consult__medgemma-4b__2026-07-25-cached.eval,professional-consult,medgemma-4b,2026-07-25,8,1888,openai/gpt-5.4,MOSTLY CACHED,success,0.152,0.0819,hs-prof-subsets,2026-07-25T00-59-37-00-00_healthbench-professional-consult_ffSg7GfyxjArrdwu7fSrBa.eval
|
| 57 |
+
professional__deepseek-v4-pro__2026-07-25-cached.eval,professional,deepseek-v4-pro,2026-07-25,1,525,openai/gpt-5.4,MOSTLY CACHED,success,0.343,0.2742,hs-original,2026-07-25T18-24-55-00-00_healthbench-professional_HaKmMaK4Q6JCLuX2RLCPnc.eval
|
| 58 |
+
professional-consult__deepseek-v4-pro__2026-07-25-replay.eval,professional-consult,deepseek-v4-pro,2026-07-25,1,236,openai/gpt-5.4,FULL CACHE REPLAY,success,0.3123,0.2559,hs-prof-subsets,2026-07-25T18-26-20-00-00_healthbench-professional-consult_3DSH4qRFzYfb27rH9Z9RqP.eval
|
| 59 |
+
professional-writing__deepseek-v4-pro__2026-07-25-replay.eval,professional-writing,deepseek-v4-pro,2026-07-25,1,142,openai/gpt-5.4,FULL CACHE REPLAY,success,0.0973,0.0516,hs-prof-subsets,2026-07-25T18-26-25-00-00_healthbench-professional-writing_2LJ8vJpJXUX2TbtokQzbxp.eval
|
| 60 |
+
professional-research__deepseek-v4-pro__2026-07-25-replay.eval,professional-research,deepseek-v4-pro,2026-07-25,1,147,openai/gpt-5.4,FULL CACHE REPLAY,success,0.6298,0.5185,hs-prof-subsets,2026-07-25T18-26-28-00-00_healthbench-professional-research_9Pb5iwuDu8dmuFzs5FnmBw.eval
|
| 61 |
+
professional-redteam__deepseek-v4-pro__2026-07-25-replay.eval,professional-redteam,deepseek-v4-pro,2026-07-25,1,191,openai/gpt-5.4,FULL CACHE REPLAY,success,-0.0532,-0.0829,hs-prof-subsets,2026-07-25T18-26-32-00-00_healthbench-professional-red-teaming_e9hCTjjRXrNTnexAxrYM8x.eval
|
| 62 |
+
professional-baseline__deepseek-v4-pro__2026-07-25.eval,professional-baseline,deepseek-v4-pro,2026-07-25,1,525,openai/gpt-5.4,baseline(no model gen by design),success,0.4331,0.4289,hs-prof-subsets,2026-07-25T18-26-35-00-00_healthbench-professional-physician-baseline_Njv8PLSvCJpAvUbPPMQqkx.eval
|
| 63 |
+
hard__medgemma-27b__2026-08-05.eval,hard,medgemma-27b,2026-08-05,1,1000,openai/gpt-4.1,fresh,success,0.1332,-0.0442,medgemma-healthbench-hard,2026-08-05T06-05-04-00-00_healthbench-hard_U2qKVPncnWPTbmLEfZfa4y.eval
|
| 64 |
+
hard__medgemma-4b__2026-08-05.eval,hard,medgemma-4b,2026-08-05,1,1000,openai/gpt-4.1,fresh,success,-0.0312,-0.1641,medgemma-healthbench-hard,2026-08-05T07-09-21-00-00_healthbench-hard_4bZEuQss4Bbee8KixwTS4o.eval
|
| 65 |
+
hard__medgemma-4b__2026-08-05__0754.eval,hard,medgemma-4b,2026-08-05,1,1000,openai/gpt-4.1,fresh,success,-0.0347,-0.1256,healthbench-hard-medgemma-v2,2026-08-05T07-54-55-00-00_healthbench-hard_MANxy36rpJhotpAvdwQiFk.eval
|
| 66 |
+
hard__medgemma-27b__2026-08-05__0807.eval,hard,medgemma-27b,2026-08-05,1,1000,openai/gpt-4.1,fresh,success,0.1415,-0.023,healthbench-hard-medgemma-v2,2026-08-05T08-07-41-00-00_healthbench-hard_D9KnFzsoQRE57vVsejUQnW.eval
|
| 67 |
+
consensus__medgemma-27b__2026-08-05.eval,consensus,medgemma-27b,2026-08-05,1,3671,openai/gpt-4.1,fresh,success,0.9105,0.9007,healthbench-consensus-medgemma,2026-08-05T08-51-22-00-00_healthbench-consensus_6a8D2h492in82NNQHCFgZw.eval
|
| 68 |
+
consensus__medgemma-4b__2026-08-05.eval,consensus,medgemma-4b,2026-08-05,1,3671,openai/gpt-4.1,fresh,success,0.7583,0.7522,healthbench-consensus-medgemma,2026-08-05T10-32-09-00-00_healthbench-consensus_6WXSuGaZvDNS5Zze6Jrm3h.eval
|
| 69 |
+
professional__deepseek-v4-pro__2026-08-06.eval,professional,deepseek-v4-pro,2026-08-06,1,525,openai/gpt-5.4,fresh,success,0.3781,0.3099,healthbench-professional-deepseek-v4-pro,2026-08-06T02-35-30-00-00_healthbench-professional_bbeHCEMNSj6Q362BQHa7mS.eval
|
favicon.svg
ADDED
|
|
index.html
CHANGED
|
@@ -1,19 +1,378 @@
|
|
| 1 |
<!doctype html>
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 19 |
</html>
|
|
|
|
| 1 |
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8">
|
| 5 |
+
<link rel="icon" href="favicon.svg">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 7 |
+
<title>HealthBench eval logs: 68 runs, 6 models, 8 benches</title>
|
| 8 |
+
<style>
|
| 9 |
+
:root{--ivory:#FAF9F5;--slate:#141413;--clay:#D97757;--oat:#E3DACC;--olive:#788C5D;
|
| 10 |
+
--gray-150:#F0EEE6;--gray-300:#D1CFC5;--gray-500:#87867F;--gray-700:#3D3D3A;
|
| 11 |
+
--serif:ui-serif,Georgia,"Times New Roman",serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
|
| 12 |
+
--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace}
|
| 13 |
+
*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}
|
| 14 |
+
body{background:var(--ivory);color:var(--gray-700);font-family:var(--sans);font-size:15px;line-height:1.65;
|
| 15 |
+
-webkit-font-smoothing:antialiased;padding:56px 24px 120px}
|
| 16 |
+
.page{max-width:1160px;margin:0 auto;display:grid;grid-template-columns:210px minmax(0,1fr);gap:44px}
|
| 17 |
+
@media(max-width:920px){.page{grid-template-columns:1fr}nav{display:none}}
|
| 18 |
+
nav{position:sticky;top:32px;align-self:start;font-size:13px}
|
| 19 |
+
nav .label{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--gray-500);margin-bottom:12px}
|
| 20 |
+
nav a{display:block;padding:5px 0 5px 12px;border-left:2px solid var(--gray-300);color:var(--gray-700);text-decoration:none}
|
| 21 |
+
nav a:hover{color:var(--slate);border-color:var(--slate)}
|
| 22 |
+
nav a.l2{padding-left:20px;font-size:12px;color:var(--gray-500)}
|
| 23 |
+
nav a .ct{font-family:var(--mono);font-size:10px;color:var(--gray-300)}
|
| 24 |
+
nav .files{margin-top:26px;border-top:1px solid var(--gray-300);padding-top:14px}
|
| 25 |
+
header{margin-bottom:12px}
|
| 26 |
+
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--gray-500);margin-bottom:10px}
|
| 27 |
+
h1{font-family:var(--serif);font-weight:500;font-size:32px;color:var(--slate);letter-spacing:-.01em;margin-bottom:14px}
|
| 28 |
+
.dateline{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--gray-500);margin-top:-4px}
|
| 29 |
+
h2{font-family:var(--serif);font-weight:500;font-size:22px;color:var(--slate);margin:40px 0 14px;scroll-margin-top:24px}
|
| 30 |
+
h3{font-family:var(--serif);font-weight:500;font-size:16px;color:var(--slate);margin:26px 0 2px;scroll-margin-top:24px}
|
| 31 |
+
h3 .cnt{font-family:var(--mono);font-size:11px;color:var(--gray-500);font-weight:400;margin-left:6px}
|
| 32 |
+
p{margin-bottom:12px;max-width:680px}
|
| 33 |
+
p.blurb{font-size:13px;color:var(--gray-500);margin-bottom:8px}
|
| 34 |
+
ul{margin:0 0 12px 22px;max-width:680px}li{margin-bottom:6px}
|
| 35 |
+
code{font-family:var(--mono);font-size:13px}
|
| 36 |
+
a{color:var(--slate);text-decoration:underline;text-decoration-color:var(--gray-300)}
|
| 37 |
+
a:hover{text-decoration-color:var(--clay)}
|
| 38 |
+
.cards{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0;max-width:760px}
|
| 39 |
+
@media(max-width:640px){.cards{grid-template-columns:1fr}}
|
| 40 |
+
.card{border:1.5px solid var(--gray-300);border-radius:10px;background:#fff;padding:16px 18px;text-decoration:none;display:block}
|
| 41 |
+
.card:hover{border-color:var(--clay)}
|
| 42 |
+
.card .k{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--gray-500);margin-bottom:6px}
|
| 43 |
+
.card .t{font-family:var(--serif);font-size:18px;color:var(--slate);margin-bottom:6px}
|
| 44 |
+
.card .b{font-size:13px;color:var(--gray-700)}
|
| 45 |
+
.callout{display:flex;gap:12px;border:1.5px solid var(--oat);background:rgba(227,218,204,.35);border-radius:10px;
|
| 46 |
+
padding:14px 16px;margin:18px 0;font-size:14px;max-width:760px}
|
| 47 |
+
.callout .ico{color:var(--clay);font-weight:600}
|
| 48 |
+
.callout p{margin-bottom:6px}.callout p:last-child{margin-bottom:0}
|
| 49 |
+
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:16px 0;max-width:600px}
|
| 50 |
+
@media(max-width:640px){.stats{grid-template-columns:repeat(2,1fr)}}
|
| 51 |
+
.stat{border:1px solid var(--gray-300);border-radius:8px;background:#fff;padding:10px 12px}
|
| 52 |
+
.stat .v{font-family:var(--serif);font-size:22px;color:var(--slate);line-height:1.2}
|
| 53 |
+
.stat .l{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--gray-500)}
|
| 54 |
+
#filter{font-family:var(--mono);font-size:13px;padding:9px 12px;border:1.5px solid var(--gray-300);border-radius:8px;
|
| 55 |
+
background:#fff;width:100%;max-width:420px;color:var(--slate)}
|
| 56 |
+
#filter:focus{outline:none;border-color:var(--clay)}
|
| 57 |
+
.fcount{font-family:var(--mono);font-size:11px;color:var(--gray-500);margin-top:6px}
|
| 58 |
+
table.logs{border-collapse:collapse;width:100%;max-width:900px;margin:6px 0 4px;font-size:13px;
|
| 59 |
+
border:1.5px solid var(--gray-300);border-radius:8px;background:#fff}
|
| 60 |
+
table.logs th,table.logs td{padding:6px 9px;border-bottom:1px solid var(--gray-300);text-align:left;white-space:nowrap}
|
| 61 |
+
table.logs thead th{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;
|
| 62 |
+
color:var(--gray-500);background:var(--gray-150)}
|
| 63 |
+
table.logs th.n,table.logs td.n{text-align:right;font-variant-numeric:tabular-nums}
|
| 64 |
+
table.logs tbody tr:last-child td{border-bottom:none}
|
| 65 |
+
table.logs td.m{font-weight:500;color:var(--slate)}
|
| 66 |
+
table.logs td.d,table.logs td.j,table.logs td.n{font-family:var(--mono);font-size:12px}
|
| 67 |
+
table.logs td.f a{font-family:var(--mono);font-size:11.5px;color:var(--clay);text-decoration:none;
|
| 68 |
+
border:1px solid var(--gray-300);border-radius:5px;padding:2px 7px}
|
| 69 |
+
table.logs td.f a:hover{border-color:var(--clay);background:rgba(217,119,87,.08)}
|
| 70 |
+
.tag{font-family:var(--mono);font-size:10px;padding:2px 6px;border-radius:4px;border:1px solid var(--gray-300);color:var(--gray-500)}
|
| 71 |
+
.t-ok{border-color:var(--olive);color:#5d6e47;background:rgba(120,140,93,.1)}
|
| 72 |
+
.t-warn{border-color:var(--clay);color:#b0533a;background:rgba(217,119,87,.1)}
|
| 73 |
+
.t-bad{border-color:#B0533A;color:#B0533A;background:rgba(176,83,58,.14)}
|
| 74 |
+
.t-neutral{background:var(--gray-150)}
|
| 75 |
+
.inf{color:var(--clay);font-size:10px}
|
| 76 |
+
table.plain{border-collapse:collapse;width:100%;max-width:760px;margin:14px 0;font-size:14px}
|
| 77 |
+
table.plain th,table.plain td{padding:8px 12px;border-bottom:1px solid var(--gray-300);text-align:left;vertical-align:top}
|
| 78 |
+
table.plain th{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--gray-500);
|
| 79 |
+
font-weight:600;border-bottom:1.5px solid var(--gray-300)}
|
| 80 |
+
.legend{font-family:var(--mono);font-size:11px;color:var(--gray-500);margin:10px 0 0;max-width:900px;line-height:1.9}
|
| 81 |
+
</style>
|
| 82 |
+
</head>
|
| 83 |
+
<body>
|
| 84 |
+
<div class="page">
|
| 85 |
+
<nav>
|
| 86 |
+
<div class="label">On this page</div>
|
| 87 |
+
<a href="#start">Start here</a>
|
| 88 |
+
<a href="#logs">All 68 logs</a>
|
| 89 |
+
<a href="#full" class="l2">HealthBench full <span class="ct">10</span></a>
|
| 90 |
+
<a href="#consensus" class="l2">HealthBench consensus <span class="ct">8</span></a>
|
| 91 |
+
<a href="#hard" class="l2">HealthBench hard <span class="ct">13</span></a>
|
| 92 |
+
<a href="#professional" class="l2">HealthBench Professional <span class="ct">7</span></a>
|
| 93 |
+
<a href="#professional-consult" class="l2">Professional: consult <span class="ct">6</span></a>
|
| 94 |
+
<a href="#professional-writing" class="l2">Professional: writing <span class="ct">6</span></a>
|
| 95 |
+
<a href="#professional-research" class="l2">Professional: research <span class="ct">6</span></a>
|
| 96 |
+
<a href="#professional-redteam" class="l2">Professional: red-teaming <span class="ct">6</span></a>
|
| 97 |
+
<a href="#professional-baseline" class="l2">Professional: physician baseline <span class="ct">6</span></a>
|
| 98 |
+
<a href="#reports">Analysis</a>
|
| 99 |
+
<a href="#trust">Before you quote a number</a>
|
| 100 |
+
<a href="#how">How this was assembled</a>
|
| 101 |
+
<div class="files">
|
| 102 |
+
<div class="label">Data files</div>
|
| 103 |
+
<a href="data/log_mapping.csv">log_mapping.csv</a>
|
| 104 |
+
<a href="data/MANIFEST.csv">MANIFEST.csv</a>
|
| 105 |
+
<a href="data/INDEX.md">INDEX.md</a>
|
| 106 |
+
</div>
|
| 107 |
+
</nav>
|
| 108 |
+
|
| 109 |
+
<main>
|
| 110 |
+
<header>
|
| 111 |
+
<div class="eyebrow">HealthBench · Inspect eval logs</div>
|
| 112 |
+
<h1>HealthBench eval logs: 68 runs, 6 models, 8 benches</h1>
|
| 113 |
+
<div class="dateline">Created 2026-08-07</div>
|
| 114 |
+
</header>
|
| 115 |
+
|
| 116 |
+
<h2 id="start">Start here</h2>
|
| 117 |
+
|
| 118 |
+
<p>Every HealthBench run we have, as Inspect <code>.eval</code> logs, in one place. Six models
|
| 119 |
+
(GPT-5.5, Claude Opus 4.7, DeepSeek-V4-Pro, PLaMo-3.0-Prime, MedGemma-27B, MedGemma-4B) across
|
| 120 |
+
HealthBench full, consensus, hard, and Professional with its four use-case slices.</p>
|
| 121 |
+
|
| 122 |
+
<div class="stats">
|
| 123 |
+
<div class="stat"><div class="v">68</div><div class="l">eval logs</div></div>
|
| 124 |
+
<div class="stat"><div class="v">2.3 GB</div><div class="l">total size</div></div>
|
| 125 |
+
<div class="stat"><div class="v">23</div><div class="l">fresh runs</div></div>
|
| 126 |
+
<div class="stat"><div class="v">34</div><div class="l">cache replays</div></div>
|
| 127 |
+
</div>
|
| 128 |
+
|
| 129 |
+
<div class="cards">
|
| 130 |
+
<a class="card" href="viewer/index.html">
|
| 131 |
+
<div class="k">browse in-browser</div>
|
| 132 |
+
<div class="t">Open the log viewer →</div>
|
| 133 |
+
<div class="b">The Inspect viewer, loaded with the 7 Professional whole-set runs (Spaces cap out at 1 GB, so the full 2.1 GB set lives in the dataset). Click any run to read
|
| 134 |
+
individual samples, the model's answer, and every rubric verdict the judge made.</div>
|
| 135 |
+
</a>
|
| 136 |
+
<a class="card" href="matrix.html">
|
| 137 |
+
<div class="k">what exists, what does not</div>
|
| 138 |
+
<div class="t">Coverage matrix →</div>
|
| 139 |
+
<div class="b">Model × bench grid: which cells are complete, which are off-config, and
|
| 140 |
+
the 5 runs still missing. Read this before comparing any two numbers.</div>
|
| 141 |
+
</a>
|
| 142 |
+
</div>
|
| 143 |
+
|
| 144 |
+
<p>To pull a single log straight down, use the <code>.eval</code> button in the tables below, or
|
| 145 |
+
fetch it directly:</p>
|
| 146 |
+
|
| 147 |
+
<table class="plain">
|
| 148 |
+
<tbody>
|
| 149 |
+
<tr><td><code>huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/<bench>__<model>__<date>.eval</code></td></tr>
|
| 150 |
+
</tbody>
|
| 151 |
+
</table>
|
| 152 |
+
|
| 153 |
+
<p>Filenames carry the config, so <code>professional__gpt-5.5__2026-07-24.eval</code> needs no
|
| 154 |
+
lookup. A <code>-replay</code> or <code>-cached</code> suffix means the model responses came from
|
| 155 |
+
Inspect's cache rather than a fresh generation; <code>-FAILED</code> means the run errored and is
|
| 156 |
+
kept only for provenance.</p>
|
| 157 |
+
|
| 158 |
+
<h2 id="logs">All 68 logs</h2>
|
| 159 |
+
|
| 160 |
+
<p>Scores are ×100. <code>raw</code> is the HealthBench score, <code>adj</code> is the
|
| 161 |
+
length-adjusted one. Grouped by bench, sorted by model.</p>
|
| 162 |
+
|
| 163 |
+
<input id="filter" type="search" placeholder="filter: try "professional medgemma" or "replay"" autocomplete="off">
|
| 164 |
+
<div class="fcount" id="fcount">68 logs</div>
|
| 165 |
+
|
| 166 |
+
<h3 id="full">HealthBench full <span class="cnt">10 logs</span></h3>
|
| 167 |
+
<p class="blurb">5000 samples, the whole open-ended set</p>
|
| 168 |
+
<table class="logs"><thead><tr><th>Model</th><th>Date</th><th class="n">ep</th><th class="n">n</th><th>Judge</th><th class="n">raw</th><th class="n">adj</th><th>Provenance</th><th>File</th></tr></thead><tbody>
|
| 169 |
+
<tr data-s="gpt-5.5 full 2026-07-09 openai/gpt-4o-mini not-a-run"><td class="m">gpt-5.5</td><td class="d">2026-07-09</td><td class="n">1</td><td class="n">—</td><td class="j">openai/gpt-4o-mini</td><td class="n">—</td><td class="n">—</td><td><span class="tag t-bad">failed</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__gpt-5.5__2026-07-09-FAILED.eval" download>.eval</a></td></tr>
|
| 170 |
+
<tr data-s="gpt-5.5 full 2026-07-09 openai/gpt-4o-mini not-a-run"><td class="m">gpt-5.5</td><td class="d">2026-07-09</td><td class="n">1</td><td class="n">—</td><td class="j">openai/gpt-4o-mini</td><td class="n">—</td><td class="n">—</td><td><span class="tag t-bad">failed</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__gpt-5.5__2026-07-09-FAILED__0905.eval" download>.eval</a></td></tr>
|
| 171 |
+
<tr data-s="gpt-5.5 full 2026-07-09 openai/gpt-4o-mini fresh"><td class="m">gpt-5.5</td><td class="d">2026-07-09</td><td class="n">1</td><td class="n">5000</td><td class="j">openai/gpt-4o-mini</td><td class="n">48.7</td><td class="n">—</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__gpt-5.5__2026-07-09.eval" download>.eval</a></td></tr>
|
| 172 |
+
<tr data-s="gpt-5.5 full 2026-07-15 gpt-4.1 full cache replay"><td class="m">gpt-5.5</td><td class="d">2026-07-15</td><td class="n">1</td><td class="n">5000</td><td class="j">gpt-4.1</td><td class="n">56.9</td><td class="n">55.8</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__gpt-5.5__2026-07-15-replay.eval" download>.eval</a></td></tr>
|
| 173 |
+
<tr data-s="opus-4.7 full 2026-07-09 openai/gpt-4o-mini fresh"><td class="m">opus-4.7</td><td class="d">2026-07-09</td><td class="n">1</td><td class="n">5000</td><td class="j">openai/gpt-4o-mini</td><td class="n">47.6</td><td class="n">—</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__opus-4.7__2026-07-09.eval" download>.eval</a></td></tr>
|
| 174 |
+
<tr data-s="opus-4.7 full 2026-07-15 gpt-4.1 full cache replay"><td class="m">opus-4.7</td><td class="d">2026-07-15</td><td class="n">1</td><td class="n">5000</td><td class="j">gpt-4.1</td><td class="n">53.4</td><td class="n">54.3</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__opus-4.7__2026-07-15-replay.eval" download>.eval</a></td></tr>
|
| 175 |
+
<tr data-s="deepseek-v4-pro full 2026-07-16 gpt-4.1 fresh"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">5000</td><td class="j">gpt-4.1</td><td class="n">51.4</td><td class="n">41.7</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__deepseek-v4-pro__2026-07-16.eval" download>.eval</a></td></tr>
|
| 176 |
+
<tr data-s="plamo-3.0-prime full 2026-07-16 gpt-4.1 fresh"><td class="m">plamo-3.0-prime</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">5000</td><td class="j">gpt-4.1</td><td class="n">39.4</td><td class="n">32.4</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__plamo-3.0-prime__2026-07-16.eval" download>.eval</a></td></tr>
|
| 177 |
+
<tr data-s="medgemma-27b full 2026-07-24 gpt-4.1 fresh"><td class="m">medgemma-27b</td><td class="d">2026-07-24</td><td class="n">1</td><td class="n">5000</td><td class="j">gpt-4.1</td><td class="n">47.2</td><td class="n">33.2</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__medgemma-27b__2026-07-24.eval" download>.eval</a></td></tr>
|
| 178 |
+
<tr data-s="medgemma-4b full 2026-07-24 gpt-4.1 mostly cached"><td class="m">medgemma-4b</td><td class="d">2026-07-24</td><td class="n">1</td><td class="n">5000</td><td class="j">gpt-4.1</td><td class="n">27.0</td><td class="n">18.3</td><td><span class="tag t-warn">cached</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/full__medgemma-4b__2026-07-24-cached.eval" download>.eval</a></td></tr>
|
| 179 |
+
</tbody></table>
|
| 180 |
+
<h3 id="consensus">HealthBench consensus <span class="cnt">8 logs</span></h3>
|
| 181 |
+
<p class="blurb">3671 samples, criteria physicians agreed on</p>
|
| 182 |
+
<table class="logs"><thead><tr><th>Model</th><th>Date</th><th class="n">ep</th><th class="n">n</th><th>Judge</th><th class="n">raw</th><th class="n">adj</th><th>Provenance</th><th>File</th></tr></thead><tbody>
|
| 183 |
+
<tr data-s="gpt-5.5 consensus 2026-07-16 gpt-4o-mini full cache replay"><td class="m">gpt-5.5</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">3671</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">82.1</td><td class="n">82.0</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/consensus__gpt-5.5__2026-07-16-replay.eval" download>.eval</a></td></tr>
|
| 184 |
+
<tr data-s="opus-4.7 consensus 2026-07-16 gpt-4o-mini full cache replay"><td class="m">opus-4.7</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">3671</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">80.2</td><td class="n">80.2</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/consensus__opus-4.7__2026-07-16-replay.eval" download>.eval</a></td></tr>
|
| 185 |
+
<tr data-s="deepseek-v4-pro consensus 2026-07-16 gpt-4o-mini full cache replay"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">3671</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">79.1</td><td class="n">78.5</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/consensus__deepseek-v4-pro__2026-07-16-replay.eval" download>.eval</a></td></tr>
|
| 186 |
+
<tr data-s="plamo-3.0-prime consensus 2026-07-16 gpt-4o-mini full cache replay"><td class="m">plamo-3.0-prime</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">3671</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">75.2</td><td class="n">74.8</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/consensus__plamo-3.0-prime__2026-07-16-replay.eval" download>.eval</a></td></tr>
|
| 187 |
+
<tr data-s="medgemma-27b consensus 2026-07-24 gpt-4o-mini fresh"><td class="m">medgemma-27b</td><td class="d">2026-07-24</td><td class="n">1</td><td class="n">3671</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">77.6</td><td class="n">76.6</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/consensus__medgemma-27b__2026-07-24.eval" download>.eval</a></td></tr>
|
| 188 |
+
<tr data-s="medgemma-27b consensus 2026-08-05 gpt-4.1 fresh"><td class="m">medgemma-27b</td><td class="d">2026-08-05</td><td class="n">1</td><td class="n">3671</td><td class="j">gpt-4.1</td><td class="n">91.0</td><td class="n">90.1</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/consensus__medgemma-27b__2026-08-05.eval" download>.eval</a></td></tr>
|
| 189 |
+
<tr data-s="medgemma-4b consensus 2026-07-24 gpt-4o-mini fresh"><td class="m">medgemma-4b</td><td class="d">2026-07-24</td><td class="n">1</td><td class="n">3671</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">71.4</td><td class="n">70.8</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/consensus__medgemma-4b__2026-07-24.eval" download>.eval</a></td></tr>
|
| 190 |
+
<tr data-s="medgemma-4b consensus 2026-08-05 gpt-4.1 fresh"><td class="m">medgemma-4b</td><td class="d">2026-08-05</td><td class="n">1</td><td class="n">3671</td><td class="j">gpt-4.1</td><td class="n">75.8</td><td class="n">75.2</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/consensus__medgemma-4b__2026-08-05.eval" download>.eval</a></td></tr>
|
| 191 |
+
</tbody></table>
|
| 192 |
+
<h3 id="hard">HealthBench hard <span class="cnt">13 logs</span></h3>
|
| 193 |
+
<p class="blurb">1000 samples, the hardest slice</p>
|
| 194 |
+
<table class="logs"><thead><tr><th>Model</th><th>Date</th><th class="n">ep</th><th class="n">n</th><th>Judge</th><th class="n">raw</th><th class="n">adj</th><th>Provenance</th><th>File</th></tr></thead><tbody>
|
| 195 |
+
<tr data-s="gpt-5.5 hard 2026-07-09 &mdash; not-a-run"><td class="m">gpt-5.5</td><td class="d">2026-07-09</td><td class="n">1</td><td class="n">—</td><td class="j">—</td><td class="n">—</td><td class="n">—</td><td><span class="tag t-bad">failed</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__gpt-5.5__2026-07-09-FAILED.eval" download>.eval</a></td></tr>
|
| 196 |
+
<tr data-s="gpt-5.5 hard 2026-07-16 gpt-4o-mini full cache replay"><td class="m">gpt-5.5</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">27.3</td><td class="n">26.0</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__gpt-5.5__2026-07-16-replay.eval" download>.eval</a></td></tr>
|
| 197 |
+
<tr data-s="opus-4.7 hard 2026-07-09 &mdash; not-a-run"><td class="m">opus-4.7</td><td class="d">2026-07-09</td><td class="n">1</td><td class="n">—</td><td class="j">—</td><td class="n">—</td><td class="n">—</td><td><span class="tag t-bad">failed</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__opus-4.7__2026-07-09-FAILED.eval" download>.eval</a></td></tr>
|
| 198 |
+
<tr data-s="opus-4.7 hard 2026-07-16 gpt-4o-mini full cache replay"><td class="m">opus-4.7</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">26.6</td><td class="n">27.8</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__opus-4.7__2026-07-16-replay.eval" download>.eval</a></td></tr>
|
| 199 |
+
<tr data-s="deepseek-v4-pro hard 2026-07-16 gpt-4o-mini full cache replay"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">24.8</td><td class="n">13.8</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__deepseek-v4-pro__2026-07-16-replay.eval" download>.eval</a></td></tr>
|
| 200 |
+
<tr data-s="plamo-3.0-prime hard 2026-07-16 gpt-4o-mini full cache replay"><td class="m">plamo-3.0-prime</td><td class="d">2026-07-16</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">17.4</td><td class="n">9.6</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__plamo-3.0-prime__2026-07-16-replay.eval" download>.eval</a></td></tr>
|
| 201 |
+
<tr data-s="medgemma-27b hard 2026-07-24 gpt-4o-mini mostly cached"><td class="m">medgemma-27b</td><td class="d">2026-07-24</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">21.1</td><td class="n">4.8</td><td><span class="tag t-warn">cached</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__medgemma-27b__2026-07-24-cached.eval" download>.eval</a></td></tr>
|
| 202 |
+
<tr data-s="medgemma-27b hard 2026-08-05 gpt-4.1 fresh"><td class="m">medgemma-27b</td><td class="d">2026-08-05</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4.1</td><td class="n">13.3</td><td class="n">-4.4</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__medgemma-27b__2026-08-05.eval" download>.eval</a></td></tr>
|
| 203 |
+
<tr data-s="medgemma-27b hard 2026-08-05 gpt-4.1 fresh"><td class="m">medgemma-27b</td><td class="d">2026-08-05</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4.1</td><td class="n">14.1</td><td class="n">-2.3</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__medgemma-27b__2026-08-05__0807.eval" download>.eval</a></td></tr>
|
| 204 |
+
<tr data-s="medgemma-4b hard 2026-07-24 gpt-4o-mini fresh"><td class="m">medgemma-4b</td><td class="d">2026-07-24</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4o-mini <span class="inf">?</span></td><td class="n">10.6</td><td class="n">1.3</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__medgemma-4b__2026-07-24.eval" download>.eval</a></td></tr>
|
| 205 |
+
<tr data-s="medgemma-4b hard 2026-08-05 gpt-4.1 fresh"><td class="m">medgemma-4b</td><td class="d">2026-08-05</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4.1</td><td class="n">-3.1</td><td class="n">-16.4</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__medgemma-4b__2026-08-05.eval" download>.eval</a></td></tr>
|
| 206 |
+
<tr data-s="medgemma-4b hard 2026-08-05 gpt-4.1 fresh"><td class="m">medgemma-4b</td><td class="d">2026-08-05</td><td class="n">1</td><td class="n">1000</td><td class="j">gpt-4.1</td><td class="n">-3.5</td><td class="n">-12.6</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__medgemma-4b__2026-08-05__0754.eval" download>.eval</a></td></tr>
|
| 207 |
+
<tr data-s="gpt-5-nano hard 2026-07-09 &mdash; not-a-run"><td class="m">gpt-5-nano</td><td class="d">2026-07-09</td><td class="n">1</td><td class="n">—</td><td class="j">—</td><td class="n">—</td><td class="n">—</td><td><span class="tag t-bad">failed</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/hard__gpt-5-nano__2026-07-09-FAILED.eval" download>.eval</a></td></tr>
|
| 208 |
+
</tbody></table>
|
| 209 |
+
<h3 id="professional">HealthBench Professional <span class="cnt">7 logs</span></h3>
|
| 210 |
+
<p class="blurb">525 samples, physician-written, has a human baseline</p>
|
| 211 |
+
<table class="logs"><thead><tr><th>Model</th><th>Date</th><th class="n">ep</th><th class="n">n</th><th>Judge</th><th class="n">raw</th><th class="n">adj</th><th>Provenance</th><th>File</th></tr></thead><tbody>
|
| 212 |
+
<tr data-s="gpt-5.5 professional 2026-07-24 gpt-5.4 fresh"><td class="m">gpt-5.5</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">52.9</td><td class="n">47.8</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional__gpt-5.5__2026-07-24.eval" download>.eval</a></td></tr>
|
| 213 |
+
<tr data-s="opus-4.7 professional 2026-07-24 gpt-5.4 fresh"><td class="m">opus-4.7</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">50.8</td><td class="n">48.0</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional__opus-4.7__2026-07-24.eval" download>.eval</a></td></tr>
|
| 214 |
+
<tr data-s="deepseek-v4-pro professional 2026-07-25 gpt-5.4 mostly cached"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-25</td><td class="n">1</td><td class="n">525</td><td class="j">gpt-5.4</td><td class="n">34.3</td><td class="n">27.4</td><td><span class="tag t-warn">cached</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional__deepseek-v4-pro__2026-07-25-cached.eval" download>.eval</a></td></tr>
|
| 215 |
+
<tr data-s="deepseek-v4-pro professional 2026-08-06 gpt-5.4 fresh"><td class="m">deepseek-v4-pro</td><td class="d">2026-08-06</td><td class="n">1</td><td class="n">525</td><td class="j">gpt-5.4</td><td class="n">37.8</td><td class="n">31.0</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional__deepseek-v4-pro__2026-08-06.eval" download>.eval</a></td></tr>
|
| 216 |
+
<tr data-s="plamo-3.0-prime professional 2026-07-24 gpt-5.4 fresh"><td class="m">plamo-3.0-prime</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">20.8</td><td class="n">13.7</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional__plamo-3.0-prime__2026-07-24.eval" download>.eval</a></td></tr>
|
| 217 |
+
<tr data-s="medgemma-27b professional 2026-07-24 gpt-5.4 fresh"><td class="m">medgemma-27b</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">31.2</td><td class="n">20.0</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional__medgemma-27b__2026-07-24.eval" download>.eval</a></td></tr>
|
| 218 |
+
<tr data-s="medgemma-4b professional 2026-07-25 gpt-5.4 fresh"><td class="m">medgemma-4b</td><td class="d">2026-07-25</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">16.5</td><td class="n">9.0</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional__medgemma-4b__2026-07-25.eval" download>.eval</a></td></tr>
|
| 219 |
+
</tbody></table>
|
| 220 |
+
<h3 id="professional-consult">Professional: consult <span class="cnt">6 logs</span></h3>
|
| 221 |
+
<p class="blurb">236 samples</p>
|
| 222 |
+
<table class="logs"><thead><tr><th>Model</th><th>Date</th><th class="n">ep</th><th class="n">n</th><th>Judge</th><th class="n">raw</th><th class="n">adj</th><th>Provenance</th><th>File</th></tr></thead><tbody>
|
| 223 |
+
<tr data-s="gpt-5.5 professional-consult 2026-07-24 gpt-5.4 full cache replay"><td class="m">gpt-5.5</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1888</td><td class="j">gpt-5.4</td><td class="n">51.0</td><td class="n">48.6</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-consult__gpt-5.5__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 224 |
+
<tr data-s="opus-4.7 professional-consult 2026-07-24 gpt-5.4 full cache replay"><td class="m">opus-4.7</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1888</td><td class="j">gpt-5.4</td><td class="n">49.1</td><td class="n">47.0</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-consult__opus-4.7__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 225 |
+
<tr data-s="deepseek-v4-pro professional-consult 2026-07-25 gpt-5.4 full cache replay"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-25</td><td class="n">1</td><td class="n">236</td><td class="j">gpt-5.4</td><td class="n">31.2</td><td class="n">25.6</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-consult__deepseek-v4-pro__2026-07-25-replay.eval" download>.eval</a></td></tr>
|
| 226 |
+
<tr data-s="plamo-3.0-prime professional-consult 2026-07-24 gpt-5.4 full cache replay"><td class="m">plamo-3.0-prime</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1888</td><td class="j">gpt-5.4</td><td class="n">21.8</td><td class="n">15.4</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-consult__plamo-3.0-prime__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 227 |
+
<tr data-s="medgemma-27b professional-consult 2026-07-24 gpt-5.4 mostly cached"><td class="m">medgemma-27b</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1888</td><td class="j">gpt-5.4</td><td class="n">28.5</td><td class="n">17.8</td><td><span class="tag t-warn">cached</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-consult__medgemma-27b__2026-07-24-cached.eval" download>.eval</a></td></tr>
|
| 228 |
+
<tr data-s="medgemma-4b professional-consult 2026-07-25 gpt-5.4 mostly cached"><td class="m">medgemma-4b</td><td class="d">2026-07-25</td><td class="n">8</td><td class="n">1888</td><td class="j">gpt-5.4</td><td class="n">15.2</td><td class="n">8.2</td><td><span class="tag t-warn">cached</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-consult__medgemma-4b__2026-07-25-cached.eval" download>.eval</a></td></tr>
|
| 229 |
+
</tbody></table>
|
| 230 |
+
<h3 id="professional-writing">Professional: writing <span class="cnt">6 logs</span></h3>
|
| 231 |
+
<p class="blurb">142 samples</p>
|
| 232 |
+
<table class="logs"><thead><tr><th>Model</th><th>Date</th><th class="n">ep</th><th class="n">n</th><th>Judge</th><th class="n">raw</th><th class="n">adj</th><th>Provenance</th><th>File</th></tr></thead><tbody>
|
| 233 |
+
<tr data-s="gpt-5.5 professional-writing 2026-07-24 gpt-5.4 full cache replay"><td class="m">gpt-5.5</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1136</td><td class="j">gpt-5.4</td><td class="n">40.6</td><td class="n">36.0</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-writing__gpt-5.5__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 234 |
+
<tr data-s="opus-4.7 professional-writing 2026-07-24 gpt-5.4 full cache replay"><td class="m">opus-4.7</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1136</td><td class="j">gpt-5.4</td><td class="n">39.5</td><td class="n">36.1</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-writing__opus-4.7__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 235 |
+
<tr data-s="deepseek-v4-pro professional-writing 2026-07-24 gpt-5.4 fresh"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1136</td><td class="j">gpt-5.4</td><td class="n">9.5</td><td class="n">5.0</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-writing__deepseek-v4-pro__2026-07-24.eval" download>.eval</a></td></tr>
|
| 236 |
+
<tr data-s="deepseek-v4-pro professional-writing 2026-07-25 gpt-5.4 full cache replay"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-25</td><td class="n">1</td><td class="n">142</td><td class="j">gpt-5.4</td><td class="n">9.7</td><td class="n">5.2</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-writing__deepseek-v4-pro__2026-07-25-replay.eval" download>.eval</a></td></tr>
|
| 237 |
+
<tr data-s="plamo-3.0-prime professional-writing 2026-07-24 gpt-5.4 full cache replay"><td class="m">plamo-3.0-prime</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1136</td><td class="j">gpt-5.4</td><td class="n">-2.8</td><td class="n">-4.3</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-writing__plamo-3.0-prime__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 238 |
+
<tr data-s="medgemma-27b professional-writing 2026-07-24 gpt-5.4 mostly cached"><td class="m">medgemma-27b</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1136</td><td class="j">gpt-5.4</td><td class="n">18.9</td><td class="n">9.1</td><td><span class="tag t-warn">cached</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-writing__medgemma-27b__2026-07-24-cached.eval" download>.eval</a></td></tr>
|
| 239 |
+
</tbody></table>
|
| 240 |
+
<h3 id="professional-research">Professional: research <span class="cnt">6 logs</span></h3>
|
| 241 |
+
<p class="blurb">147 samples</p>
|
| 242 |
+
<table class="logs"><thead><tr><th>Model</th><th>Date</th><th class="n">ep</th><th class="n">n</th><th>Judge</th><th class="n">raw</th><th class="n">adj</th><th>Provenance</th><th>File</th></tr></thead><tbody>
|
| 243 |
+
<tr data-s="gpt-5.5 professional-research 2026-07-24 gpt-5.4 full cache replay"><td class="m">gpt-5.5</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1176</td><td class="j">gpt-5.4</td><td class="n">68.0</td><td class="n">57.9</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-research__gpt-5.5__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 244 |
+
<tr data-s="opus-4.7 professional-research 2026-07-24 gpt-5.4 full cache replay"><td class="m">opus-4.7</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1176</td><td class="j">gpt-5.4</td><td class="n">64.6</td><td class="n">61.1</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-research__opus-4.7__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 245 |
+
<tr data-s="deepseek-v4-pro professional-research 2026-07-24 gpt-5.4 fresh"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1176</td><td class="j">gpt-5.4</td><td class="n">63.7</td><td class="n">52.9</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-research__deepseek-v4-pro__2026-07-24.eval" download>.eval</a></td></tr>
|
| 246 |
+
<tr data-s="deepseek-v4-pro professional-research 2026-07-25 gpt-5.4 full cache replay"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-25</td><td class="n">1</td><td class="n">147</td><td class="j">gpt-5.4</td><td class="n">63.0</td><td class="n">51.8</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-research__deepseek-v4-pro__2026-07-25-replay.eval" download>.eval</a></td></tr>
|
| 247 |
+
<tr data-s="plamo-3.0-prime professional-research 2026-07-24 gpt-5.4 full cache replay"><td class="m">plamo-3.0-prime</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1176</td><td class="j">gpt-5.4</td><td class="n">41.8</td><td class="n">28.6</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-research__plamo-3.0-prime__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 248 |
+
<tr data-s="medgemma-27b professional-research 2026-07-24 gpt-5.4 mostly cached"><td class="m">medgemma-27b</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1176</td><td class="j">gpt-5.4</td><td class="n">47.8</td><td class="n">34.4</td><td><span class="tag t-warn">cached</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-research__medgemma-27b__2026-07-24-cached.eval" download>.eval</a></td></tr>
|
| 249 |
+
</tbody></table>
|
| 250 |
+
<h3 id="professional-redteam">Professional: red-teaming <span class="cnt">6 logs</span></h3>
|
| 251 |
+
<p class="blurb">191 samples</p>
|
| 252 |
+
<table class="logs"><thead><tr><th>Model</th><th>Date</th><th class="n">ep</th><th class="n">n</th><th>Judge</th><th class="n">raw</th><th class="n">adj</th><th>Provenance</th><th>File</th></tr></thead><tbody>
|
| 253 |
+
<tr data-s="gpt-5.5 professional-redteam 2026-07-24 gpt-5.4 full cache replay"><td class="m">gpt-5.5</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1528</td><td class="j">gpt-5.4</td><td class="n">29.9</td><td class="n">28.2</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-redteam__gpt-5.5__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 254 |
+
<tr data-s="opus-4.7 professional-redteam 2026-07-24 gpt-5.4 full cache replay"><td class="m">opus-4.7</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1528</td><td class="j">gpt-5.4</td><td class="n">28.3</td><td class="n">26.7</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-redteam__opus-4.7__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 255 |
+
<tr data-s="deepseek-v4-pro professional-redteam 2026-07-24 gpt-5.4 fresh"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1528</td><td class="j">gpt-5.4</td><td class="n">-3.7</td><td class="n">-6.9</td><td><span class="tag t-ok">fresh</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-redteam__deepseek-v4-pro__2026-07-24.eval" download>.eval</a></td></tr>
|
| 256 |
+
<tr data-s="deepseek-v4-pro professional-redteam 2026-07-25 gpt-5.4 full cache replay"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-25</td><td class="n">1</td><td class="n">191</td><td class="j">gpt-5.4</td><td class="n">-5.3</td><td class="n">-8.3</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-redteam__deepseek-v4-pro__2026-07-25-replay.eval" download>.eval</a></td></tr>
|
| 257 |
+
<tr data-s="plamo-3.0-prime professional-redteam 2026-07-24 gpt-5.4 full cache replay"><td class="m">plamo-3.0-prime</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1528</td><td class="j">gpt-5.4</td><td class="n">-9.9</td><td class="n">-11.8</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-redteam__plamo-3.0-prime__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 258 |
+
<tr data-s="medgemma-27b professional-redteam 2026-07-24 gpt-5.4 full cache replay"><td class="m">medgemma-27b</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">1528</td><td class="j">gpt-5.4</td><td class="n">1.5</td><td class="n">-6.8</td><td><span class="tag t-warn">replay</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-redteam__medgemma-27b__2026-07-24-replay.eval" download>.eval</a></td></tr>
|
| 259 |
+
</tbody></table>
|
| 260 |
+
<h3 id="professional-baseline">Professional: physician baseline <span class="cnt">6 logs</span></h3>
|
| 261 |
+
<p class="blurb">the human reference, model-independent</p>
|
| 262 |
+
<table class="logs"><thead><tr><th>Model</th><th>Date</th><th class="n">ep</th><th class="n">n</th><th>Judge</th><th class="n">raw</th><th class="n">adj</th><th>Provenance</th><th>File</th></tr></thead><tbody>
|
| 263 |
+
<tr data-s="gpt-5.5 professional-baseline 2026-07-24 gpt-5.4 baseline(no model gen by design)"><td class="m">gpt-5.5</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">44.3</td><td class="n">43.9</td><td><span class="tag t-neutral">baseline</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-baseline__gpt-5.5__2026-07-24.eval" download>.eval</a></td></tr>
|
| 264 |
+
<tr data-s="opus-4.7 professional-baseline 2026-07-24 gpt-5.4 baseline(no model gen by design)"><td class="m">opus-4.7</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">44.3</td><td class="n">43.9</td><td><span class="tag t-neutral">baseline</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-baseline__opus-4.7__2026-07-24.eval" download>.eval</a></td></tr>
|
| 265 |
+
<tr data-s="deepseek-v4-pro professional-baseline 2026-07-24 gpt-5.4 baseline(no model gen by design)"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">44.3</td><td class="n">43.9</td><td><span class="tag t-neutral">baseline</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-baseline__deepseek-v4-pro__2026-07-24.eval" download>.eval</a></td></tr>
|
| 266 |
+
<tr data-s="deepseek-v4-pro professional-baseline 2026-07-25 gpt-5.4 baseline(no model gen by design)"><td class="m">deepseek-v4-pro</td><td class="d">2026-07-25</td><td class="n">1</td><td class="n">525</td><td class="j">gpt-5.4</td><td class="n">43.3</td><td class="n">42.9</td><td><span class="tag t-neutral">baseline</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-baseline__deepseek-v4-pro__2026-07-25.eval" download>.eval</a></td></tr>
|
| 267 |
+
<tr data-s="plamo-3.0-prime professional-baseline 2026-07-24 gpt-5.4 baseline(no model gen by design)"><td class="m">plamo-3.0-prime</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">44.3</td><td class="n">43.9</td><td><span class="tag t-neutral">baseline</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-baseline__plamo-3.0-prime__2026-07-24.eval" download>.eval</a></td></tr>
|
| 268 |
+
<tr data-s="medgemma-27b professional-baseline 2026-07-24 gpt-5.4 baseline(no model gen by design)"><td class="m">medgemma-27b</td><td class="d">2026-07-24</td><td class="n">8</td><td class="n">4200</td><td class="j">gpt-5.4</td><td class="n">43.9</td><td class="n">43.5</td><td><span class="tag t-neutral">baseline</span></td><td class="f"><a href="https://huggingface.co/datasets/kirby44/healthbench-eval-logs/resolve/main/logs/professional-baseline__medgemma-27b__2026-07-24.eval" download>.eval</a></td></tr>
|
| 269 |
+
</tbody></table>
|
| 270 |
+
|
| 271 |
+
<p class="legend">
|
| 272 |
+
<span class="tag t-ok">fresh</span> model responses generated in this run
|
| 273 |
+
<span class="tag t-warn">replay</span> every call served from cache
|
| 274 |
+
<span class="tag t-warn">cached</span> under 200 candidate tokens per sample
|
| 275 |
+
<span class="tag t-neutral">baseline</span> human responses, no generation by design
|
| 276 |
+
<span class="tag t-bad">failed</span> errored or cancelled<br>
|
| 277 |
+
<span class="inf">?</span> judge not recorded in <code>task_args</code>, inferred from the
|
| 278 |
+
scorer default and confirmed against <code>stats.model_usage</code>
|
| 279 |
+
</p>
|
| 280 |
+
|
| 281 |
+
<h2 id="reports">Analysis</h2>
|
| 282 |
+
|
| 283 |
+
<table class="plain">
|
| 284 |
+
<thead><tr><th>Document</th><th>What it answers</th></tr></thead>
|
| 285 |
+
<tbody>
|
| 286 |
+
<tr>
|
| 287 |
+
<td><a href="matrix.html">Coverage matrix</a></td>
|
| 288 |
+
<td>Which model ran which bench, which cells are comparable, and what is still missing.</td>
|
| 289 |
+
</tr>
|
| 290 |
+
<tr>
|
| 291 |
+
<td><a href="config-check-v2.html">Config check v2</a></td>
|
| 292 |
+
<td>Do our numbers reproduce OpenAI's published HealthBench results? Anchored on the
|
| 293 |
+
physician baseline (ours 43.9 against their 43.7).</td>
|
| 294 |
+
</tr>
|
| 295 |
+
<tr>
|
| 296 |
+
<td><a href="config-check-v1.html">Config check v1</a></td>
|
| 297 |
+
<td>The earlier pass over the first four spaces. Superseded by v2, kept for history.</td>
|
| 298 |
+
</tr>
|
| 299 |
+
</tbody>
|
| 300 |
+
</table>
|
| 301 |
+
|
| 302 |
+
<h2 id="trust">Before you quote a number</h2>
|
| 303 |
+
|
| 304 |
+
<p>Four things will bite you if you take a score straight out of a log.</p>
|
| 305 |
+
|
| 306 |
+
<table class="plain">
|
| 307 |
+
<thead><tr><th>Issue</th><th>What to do</th></tr></thead>
|
| 308 |
+
<tbody>
|
| 309 |
+
<tr>
|
| 310 |
+
<td><b>The judge is not constant.</b> Three graders are in play: <code>gpt-4o-mini</code>
|
| 311 |
+
(hard, consensus), <code>gpt-4.1</code> (full, and the Aug-05 MedGemma re-runs),
|
| 312 |
+
<code>gpt-5.4</code> (all Professional). Swapping the judge moves a score by up to 14
|
| 313 |
+
points, and not always in the same direction.</td>
|
| 314 |
+
<td>Only compare runs sharing a judge. The <code>Judge</code> column above is the check.</td>
|
| 315 |
+
</tr>
|
| 316 |
+
<tr>
|
| 317 |
+
<td><b>Professional epochs are inconsistent.</b> 8 epochs for most models, 1 for DeepSeek.</td>
|
| 318 |
+
<td>Check the <code>ep</code> column before putting two Professional rows side by side.</td>
|
| 319 |
+
</tr>
|
| 320 |
+
<tr>
|
| 321 |
+
<td><b>In-log subset metrics are wrong.</b> <code>use_case_*_score</code>,
|
| 322 |
+
<code>specialty_*_score</code>, <code>difficulty_*_score</code> and
|
| 323 |
+
<code>source_slice_*_score</code> drop the length adjustment and clip each sample to
|
| 324 |
+
[0,1] first. Errors run up to +32 points, always upward.</td>
|
| 325 |
+
<td>Use the standalone <code>professional-*</code> logs above for the four use-case
|
| 326 |
+
slices. For specialty and difficulty, re-aggregate from per-sample scores yourself.</td>
|
| 327 |
+
</tr>
|
| 328 |
+
<tr>
|
| 329 |
+
<td><b><code>cache=true</code> on every run.</b> 34 of 68 logs served some
|
| 330 |
+
or all calls from cache, so an empty <code>stats.model_usage</code> is a replay, not a run.</td>
|
| 331 |
+
<td>The <code>Provenance</code> column above already classifies this.</td>
|
| 332 |
+
</tr>
|
| 333 |
+
</tbody>
|
| 334 |
+
</table>
|
| 335 |
+
|
| 336 |
+
<div class="callout">
|
| 337 |
+
<span class="ico">★</span>
|
| 338 |
+
<div>
|
| 339 |
+
<p>The pipeline itself is validated: the physician baseline on Professional lands at
|
| 340 |
+
<b>43.9</b> against OpenAI's published <b>43.7</b>. Discrepancies in the model numbers are
|
| 341 |
+
config drift, not a broken harness.</p>
|
| 342 |
+
</div>
|
| 343 |
+
</div>
|
| 344 |
+
|
| 345 |
+
<h2 id="how">How this was assembled</h2>
|
| 346 |
+
|
| 347 |
+
<p>The runs were executed by Ajay between 2026-07-09 and 2026-08-06 and originally published as
|
| 348 |
+
ten separate HuggingFace Spaces under <code>ajay-citadel</code>. This Space consolidates all of
|
| 349 |
+
them into one viewer, renames the logs so the config is legible from the filename, and adds the
|
| 350 |
+
provenance classification that the raw logs do not carry.</p>
|
| 351 |
+
|
| 352 |
+
<p><code>data/log_mapping.csv</code> maps every renamed file back to its original space and
|
| 353 |
+
filename, so nothing here is a dead end. <code>data/MANIFEST.csv</code> is the full per-run
|
| 354 |
+
header dump: judge, epochs, token counts, package versions.
|
| 355 |
+
<code>data/INDEX.md</code> is the short version of the traps list.</p>
|
| 356 |
+
|
| 357 |
+
<p>The original spaces remain the upstream source. If a number here disagrees with one there,
|
| 358 |
+
the logs are byte-identical, so the difference is in which run you are reading, not in the data.</p>
|
| 359 |
+
</main>
|
| 360 |
+
</div>
|
| 361 |
+
<script>
|
| 362 |
+
const f=document.getElementById('filter'),rows=[...document.querySelectorAll('table.logs tbody tr')],
|
| 363 |
+
cnt=document.getElementById('fcount');
|
| 364 |
+
f.addEventListener('input',()=>{
|
| 365 |
+
const q=f.value.trim().toLowerCase().split(/\s+/).filter(Boolean);
|
| 366 |
+
let shown=0;
|
| 367 |
+
rows.forEach(r=>{const s=r.dataset.s,hit=q.every(t=>s.includes(t));r.style.display=hit?'':'none';if(hit)shown++;});
|
| 368 |
+
document.querySelectorAll('table.logs').forEach(t=>{
|
| 369 |
+
const any=[...t.querySelectorAll('tbody tr')].some(r=>r.style.display!=='none');
|
| 370 |
+
const h3=t.previousElementSibling.previousElementSibling;
|
| 371 |
+
t.style.display=any?'':'none';
|
| 372 |
+
if(h3&&h3.tagName==='H3'){h3.style.display=any?'':'none';t.previousElementSibling.style.display=any?'':'none';}
|
| 373 |
+
});
|
| 374 |
+
cnt.textContent=q.length?shown+' of '+rows.length+' logs match':rows.length+' logs';
|
| 375 |
+
});
|
| 376 |
+
</script>
|
| 377 |
+
</body>
|
| 378 |
</html>
|
matrix.html
ADDED
|
@@ -0,0 +1,583 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8">
|
| 5 |
+
<link rel="icon" href="favicon.svg">
|
| 6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
| 7 |
+
<title>HealthBench coverage: which model ran which bench</title>
|
| 8 |
+
<style>
|
| 9 |
+
:root {
|
| 10 |
+
--ivory: #FAF9F5;
|
| 11 |
+
--slate: #141413;
|
| 12 |
+
--clay: #D97757;
|
| 13 |
+
--oat: #E3DACC;
|
| 14 |
+
--olive: #788C5D;
|
| 15 |
+
--gray-150:#F0EEE6;
|
| 16 |
+
--gray-300:#D1CFC5;
|
| 17 |
+
--gray-500:#87867F;
|
| 18 |
+
--gray-700:#3D3D3A;
|
| 19 |
+
--serif: ui-serif, Georgia, "Times New Roman", serif;
|
| 20 |
+
--sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
|
| 21 |
+
--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
|
| 22 |
+
}
|
| 23 |
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
| 24 |
+
html { scroll-behavior: smooth; }
|
| 25 |
+
body {
|
| 26 |
+
background: var(--ivory);
|
| 27 |
+
color: var(--gray-700);
|
| 28 |
+
font-family: var(--sans);
|
| 29 |
+
font-size: 15px;
|
| 30 |
+
line-height: 1.65;
|
| 31 |
+
-webkit-font-smoothing: antialiased;
|
| 32 |
+
padding: 56px 24px 120px;
|
| 33 |
+
}
|
| 34 |
+
.page { max-width: 1160px; margin: 0 auto; display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 48px; }
|
| 35 |
+
@media (max-width: 920px) { .page { grid-template-columns: 1fr; } nav { display: none; } }
|
| 36 |
+
|
| 37 |
+
nav { position: sticky; top: 32px; align-self: start; font-size: 13px; }
|
| 38 |
+
nav .label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gray-500); margin-bottom: 12px; }
|
| 39 |
+
nav a { display: block; padding: 5px 0 5px 12px; border-left: 2px solid var(--gray-300); color: var(--gray-700); text-decoration: none; }
|
| 40 |
+
nav a:hover { color: var(--slate); border-color: var(--slate); }
|
| 41 |
+
nav a.l2 { padding-left: 24px; font-size: 12.5px; color: var(--gray-500); }
|
| 42 |
+
nav .files { margin-top: 28px; border-top: 1px solid var(--gray-300); padding-top: 16px; }
|
| 43 |
+
nav .files a { text-decoration: none; }
|
| 44 |
+
nav .files code { display: block; font-family: var(--mono); font-size: 11px; color: var(--gray-500); padding: 3px 0; }
|
| 45 |
+
|
| 46 |
+
header { margin-bottom: 12px; }
|
| 47 |
+
.eyebrow { font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--gray-500); margin-bottom: 10px; }
|
| 48 |
+
h1 { font-family: var(--serif); font-weight: 500; font-size: 32px; color: var(--slate); letter-spacing: -0.01em; margin-bottom: 14px; }
|
| 49 |
+
.dateline { font-family: var(--mono); font-size: 11px; letter-spacing: 0.04em; color: var(--gray-500); margin-top: -4px; }
|
| 50 |
+
|
| 51 |
+
h2 { font-family: var(--serif); font-weight: 500; font-size: 22px; color: var(--slate); margin: 40px 0 14px; scroll-margin-top: 24px; }
|
| 52 |
+
h3 { font-family: var(--serif); font-weight: 500; font-size: 17px; color: var(--slate); margin: 22px 0 8px; }
|
| 53 |
+
p { margin-bottom: 12px; max-width: 680px; }
|
| 54 |
+
ul, ol { margin: 0 0 12px 22px; max-width: 680px; }
|
| 55 |
+
li { margin-bottom: 6px; }
|
| 56 |
+
code { font-family: var(--mono); font-size: 13px; }
|
| 57 |
+
a { color: var(--slate); text-decoration: underline; text-decoration-color: var(--gray-300); }
|
| 58 |
+
a:hover { text-decoration-color: var(--clay); }
|
| 59 |
+
|
| 60 |
+
details { border: 1.5px solid var(--gray-300); border-radius: 10px; background: #fff; margin: 14px 0; overflow: hidden; }
|
| 61 |
+
summary { list-style: none; cursor: pointer; padding: 14px 16px; font-family: var(--serif); font-size: 16px; color: var(--slate); display: flex; align-items: baseline; gap: 10px; }
|
| 62 |
+
summary::-webkit-details-marker { display: none; }
|
| 63 |
+
summary::before { content: "\25B8"; color: var(--clay); font-family: var(--sans); font-size: 12px; transition: transform 120ms; }
|
| 64 |
+
details[open] summary::before { transform: rotate(90deg); }
|
| 65 |
+
summary .where { font-family: var(--mono); font-size: 11px; color: var(--gray-500); margin-left: auto; }
|
| 66 |
+
details .body { padding: 0 16px 16px; }
|
| 67 |
+
details .body p { font-size: 14px; }
|
| 68 |
+
details .body pre { background: var(--gray-150); padding: 12px 14px; border-radius: 6px; font-family: var(--mono); font-size: 12px; line-height: 1.55; overflow-x: auto; margin-top: 8px; }
|
| 69 |
+
|
| 70 |
+
.callout { display: flex; gap: 12px; border: 1.5px solid var(--oat); background: rgba(227,218,204,0.35); border-radius: 10px; padding: 14px 16px; margin: 18px 0; font-size: 14px; max-width: 760px; }
|
| 71 |
+
.callout .ico { color: var(--clay); font-weight: 600; }
|
| 72 |
+
.callout p { margin-bottom: 6px; }
|
| 73 |
+
.callout p:last-child { margin-bottom: 0; }
|
| 74 |
+
|
| 75 |
+
table { border-collapse: collapse; width: 100%; max-width: 760px; margin: 14px 0; font-size: 14px; }
|
| 76 |
+
th, td { padding: 8px 12px; border-bottom: 1px solid var(--gray-300); text-align: left; vertical-align: top; }
|
| 77 |
+
th { font-family: var(--mono); font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--gray-500); font-weight: 600; border-bottom: 1.5px solid var(--gray-300); }
|
| 78 |
+
td.num { text-align: right; font-variant-numeric: tabular-nums; }
|
| 79 |
+
|
| 80 |
+
/* the coverage matrix */
|
| 81 |
+
.mwrap { overflow-x: auto; margin: 16px 0 6px; border: 1.5px solid var(--gray-300); border-radius: 10px; background: #fff; }
|
| 82 |
+
table.matrix { max-width: none; width: 100%; margin: 0; font-size: 13px; }
|
| 83 |
+
table.matrix th, table.matrix td { border-bottom: 1px solid var(--gray-300); padding: 6px 7px; }
|
| 84 |
+
table.matrix thead th { background: var(--gray-150); text-align: right; font-size: 10px; letter-spacing: 0.02em; white-space: nowrap; }
|
| 85 |
+
table.matrix thead th.rowhead { text-align: left; }
|
| 86 |
+
table.matrix thead th .jd { display: block; font-family: var(--mono); font-size: 9px; letter-spacing: 0; text-transform: none; color: var(--gray-500); font-weight: 400; }
|
| 87 |
+
table.matrix tbody th { font-family: var(--sans); font-size: 12.5px; font-weight: 500; color: var(--slate); text-transform: none; letter-spacing: 0; white-space: nowrap; }
|
| 88 |
+
table.matrix td { text-align: right; font-family: var(--mono); font-variant-numeric: tabular-nums; font-size: 12px; white-space: nowrap; }
|
| 89 |
+
table.matrix tbody tr:last-child th, table.matrix tbody tr:last-child td { border-bottom: none; }
|
| 90 |
+
td.st-ok { background: rgba(120,140,93,0.11); color: var(--slate); }
|
| 91 |
+
td.st-off { background: rgba(217,119,87,0.13); color: var(--slate); }
|
| 92 |
+
td.st-gap { background: repeating-linear-gradient(135deg, transparent, transparent 4px, rgba(135,134,127,0.14) 4px, rgba(135,134,127,0.14) 5px); color: var(--gray-500); text-align: center; }
|
| 93 |
+
td .mk { color: var(--clay); font-size: 10px; vertical-align: super; }
|
| 94 |
+
td .mkc { color: var(--gray-500); font-size: 10px; vertical-align: super; }
|
| 95 |
+
tr.baseline th, tr.baseline td { background: var(--gray-150); color: var(--gray-500); font-style: normal; }
|
| 96 |
+
.mlegend { font-family: var(--mono); font-size: 11px; color: var(--gray-500); margin: 0 0 4px; max-width: none; line-height: 1.9; }
|
| 97 |
+
.sw { display: inline-block; width: 10px; height: 10px; border-radius: 2px; vertical-align: -1px; margin-right: 4px; }
|
| 98 |
+
.sw-ok { background: rgba(120,140,93,0.5); }
|
| 99 |
+
.sw-off { background: rgba(217,119,87,0.55); }
|
| 100 |
+
.sw-gap { background: repeating-linear-gradient(135deg, transparent, transparent 3px, rgba(135,134,127,0.5) 3px, rgba(135,134,127,0.5) 4px); border: 1px solid var(--gray-300); }
|
| 101 |
+
|
| 102 |
+
.ok { color: var(--olive); font-weight: 600; }
|
| 103 |
+
.warn { color: var(--clay); font-weight: 600; }
|
| 104 |
+
.bad { color: #B0533A; font-weight: 600; }
|
| 105 |
+
|
| 106 |
+
.ladder { display: grid; grid-template-columns: repeat(8, 1fr); gap: 6px; margin: 14px 0 4px; max-width: 760px; }
|
| 107 |
+
.ladder .chip { border: 1px solid var(--gray-300); border-radius: 6px; background: #fff; padding: 8px 0; text-align: center; font-family: var(--mono); font-size: 10.5px; color: var(--gray-500); }
|
| 108 |
+
.ladder .chip.hit { border-color: var(--olive); color: var(--slate); background: rgba(120,140,93,0.10); font-weight: 600; }
|
| 109 |
+
.ladder-legend { font-family: var(--mono); font-size: 11px; color: var(--gray-500); margin-top: 2px; }
|
| 110 |
+
@media (max-width: 720px) { .ladder { grid-template-columns: repeat(4, 1fr); } }
|
| 111 |
+
|
| 112 |
+
dl.faq { margin-top: 8px; }
|
| 113 |
+
dl.faq dt { font-family: var(--serif); font-size: 16px; color: var(--slate); margin-top: 18px; }
|
| 114 |
+
dl.faq dd { font-size: 14px; margin: 4px 0 0; max-width: 640px; }
|
| 115 |
+
</style>
|
| 116 |
+
|
| 117 |
+
<style id="hbnav-css">
|
| 118 |
+
.hbnav{position:sticky;top:0;z-index:50;display:flex;flex-wrap:wrap;align-items:center;gap:4px;
|
| 119 |
+
padding:8px 16px;margin:-56px -24px 40px;background:rgba(250,249,245,.94);
|
| 120 |
+
backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid #D1CFC5;
|
| 121 |
+
font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:11.5px}
|
| 122 |
+
.hbnav .home{color:#87867F;margin-right:6px;text-decoration:none}
|
| 123 |
+
.hbnav .home:hover{color:#141413}
|
| 124 |
+
.hbnav a.pill{color:#3D3D3A;text-decoration:none;padding:3px 9px;border:1px solid #D1CFC5;border-radius:6px}
|
| 125 |
+
.hbnav a.pill:hover{border-color:#D97757;color:#141413}
|
| 126 |
+
.hbnav a.pill.here{background:#141413;border-color:#141413;color:#FAF9F5}
|
| 127 |
+
.hbnav .sp{flex:1}
|
| 128 |
+
@media(max-width:640px){.hbnav{margin:-56px -24px 28px}}
|
| 129 |
+
</style>
|
| 130 |
+
</head>
|
| 131 |
+
<body>
|
| 132 |
+
<div class="hbnav"><a class="home" href="index.html">← HealthBench logs</a><a class="pill here" href="matrix.html">Coverage matrix</a><a class="pill" href="config-check-v2.html">Config check v2</a><a class="pill" href="config-check-v1.html">Config check v1</a><span class="sp"></span><a class="pill" href="viewer/index.html">Log viewer →</a></div>
|
| 133 |
+
<div class="page">
|
| 134 |
+
|
| 135 |
+
<nav>
|
| 136 |
+
<div class="label">On this page</div>
|
| 137 |
+
<a href="#picture">The coverage picture</a>
|
| 138 |
+
<a href="#matrix">Model × bench matrix</a>
|
| 139 |
+
<a href="#matrix" class="l2">Reading the cells</a>
|
| 140 |
+
<a href="#complete">What is already complete</a>
|
| 141 |
+
<a href="#todo">What to run next</a>
|
| 142 |
+
<a href="#todo" class="l2">5 required runs</a>
|
| 143 |
+
<a href="#todo" class="l2">The gpt-4.1 decision</a>
|
| 144 |
+
<a href="#axes">Slices with no clean data</a>
|
| 145 |
+
<a href="#why">Why cells disagree</a>
|
| 146 |
+
<a href="#noise">How big is a real gap</a>
|
| 147 |
+
<a href="#files">Where everything lives</a>
|
| 148 |
+
<a href="#faq">Questions</a>
|
| 149 |
+
<div class="files">
|
| 150 |
+
<div class="label">Run artifacts</div>
|
| 151 |
+
<a href="data/MANIFEST.csv"><code>data/MANIFEST.csv</code></a>
|
| 152 |
+
<a href="data/log_mapping.csv"><code>data/log_mapping.csv</code></a>
|
| 153 |
+
<a href="data/INDEX.md"><code>data/INDEX.md</code></a>
|
| 154 |
+
<a href="data/headers_raw.json"><code>data/headers_raw.json</code></a>
|
| 155 |
+
<a href="viewer/index.html"><code>viewer/logs/*.eval</code></a>
|
| 156 |
+
</div>
|
| 157 |
+
</nav>
|
| 158 |
+
|
| 159 |
+
<main>
|
| 160 |
+
<header>
|
| 161 |
+
<div class="eyebrow">HealthBench · model coverage audit</div>
|
| 162 |
+
<h1>Which model ran which bench, and what is still missing</h1>
|
| 163 |
+
<div class="dateline">Created 2026-08-07</div>
|
| 164 |
+
</header>
|
| 165 |
+
|
| 166 |
+
<h2 id="picture">The coverage picture</h2>
|
| 167 |
+
|
| 168 |
+
<p><b>Nominally the matrix is nearly full: 45 of 48 model × bench cells have a run.
|
| 169 |
+
Usably, only 3 of the 8 benches have a complete, apples-to-apples set of all 6 models.</b>
|
| 170 |
+
The blockers are not missing runs, they are config drift: the grader model changes between
|
| 171 |
+
benches, and <code>epochs</code> changes between models on the same bench.</p>
|
| 172 |
+
|
| 173 |
+
<p>Six models were evaluated: GPT-5.5, Claude Opus 4.7, DeepSeek-V4-Pro, PLaMo-3.0-Prime,
|
| 174 |
+
MedGemma-27B-text-it and MedGemma-4B-it. Eight benches: HealthBench full, consensus and hard,
|
| 175 |
+
plus HealthBench Professional whole-set and its four use-case slices (consult, writing,
|
| 176 |
+
research, red-teaming). 68 logs across 10 HuggingFace spaces.</p>
|
| 177 |
+
|
| 178 |
+
<p>The good news for a comprehensive story: only <b>5 runs</b> are strictly required to close
|
| 179 |
+
every real gap, and 3 of those 5 are grader-only passes that reuse cached model responses, so
|
| 180 |
+
they are cheap. One further decision (what to do about a half-finished
|
| 181 |
+
<code>gpt-4.1</code> re-grade) is worth 8 more runs or a deletion, your call.</p>
|
| 182 |
+
|
| 183 |
+
<h2 id="matrix">Model × bench matrix</h2>
|
| 184 |
+
|
| 185 |
+
<p>Scores are the <b>length-adjusted</b> HealthBench score × 100, which is the headline
|
| 186 |
+
metric OpenAI reports. The last four columns are the Professional use-case slices. Each column
|
| 187 |
+
header carries its judge model (<code>4.1</code> = <code>openai/gpt-4.1</code>,
|
| 188 |
+
<code>4o-mini</code> = <code>openai/gpt-4o-mini</code>, <code>5.4</code> =
|
| 189 |
+
<code>openai/gpt-5.4</code>) and sample count: columns are internally consistent but
|
| 190 |
+
<b>not comparable to each other</b>.</p>
|
| 191 |
+
|
| 192 |
+
<div class="mwrap">
|
| 193 |
+
<table class="matrix">
|
| 194 |
+
<thead>
|
| 195 |
+
<tr>
|
| 196 |
+
<th class="rowhead">Model</th>
|
| 197 |
+
<th>full<span class="jd">4.1 · 5000</span></th>
|
| 198 |
+
<th>consens.<span class="jd">4o-mini · 3671</span></th>
|
| 199 |
+
<th>hard<span class="jd">4o-mini · 1000</span></th>
|
| 200 |
+
<th>prof<span class="jd">5.4 · 525</span></th>
|
| 201 |
+
<th>consult<span class="jd">5.4 · 236</span></th>
|
| 202 |
+
<th>writing<span class="jd">5.4 · 142</span></th>
|
| 203 |
+
<th>research<span class="jd">5.4 · 147</span></th>
|
| 204 |
+
<th>red‑team<span class="jd">5.4 · 191</span></th>
|
| 205 |
+
</tr>
|
| 206 |
+
</thead>
|
| 207 |
+
<tbody>
|
| 208 |
+
<tr>
|
| 209 |
+
<th>GPT-5.5</th>
|
| 210 |
+
<td class="st-ok">55.8<span class="mkc">c</span></td>
|
| 211 |
+
<td class="st-ok">82.0<span class="mkc">c</span></td>
|
| 212 |
+
<td class="st-ok">26.0<span class="mkc">c</span></td>
|
| 213 |
+
<td class="st-ok">47.8</td>
|
| 214 |
+
<td class="st-ok">48.6<span class="mkc">c</span></td>
|
| 215 |
+
<td class="st-ok">36.0<span class="mkc">c</span></td>
|
| 216 |
+
<td class="st-ok">57.9<span class="mkc">c</span></td>
|
| 217 |
+
<td class="st-ok">28.2<span class="mkc">c</span></td>
|
| 218 |
+
</tr>
|
| 219 |
+
<tr>
|
| 220 |
+
<th>Opus 4.7</th>
|
| 221 |
+
<td class="st-ok">54.3<span class="mkc">c</span></td>
|
| 222 |
+
<td class="st-ok">80.2<span class="mkc">c</span></td>
|
| 223 |
+
<td class="st-ok">27.8<span class="mkc">c</span></td>
|
| 224 |
+
<td class="st-ok">48.0</td>
|
| 225 |
+
<td class="st-ok">47.0<span class="mkc">c</span></td>
|
| 226 |
+
<td class="st-ok">36.2<span class="mkc">c</span></td>
|
| 227 |
+
<td class="st-ok">61.1<span class="mkc">c</span></td>
|
| 228 |
+
<td class="st-ok">26.7<span class="mkc">c</span></td>
|
| 229 |
+
</tr>
|
| 230 |
+
<tr>
|
| 231 |
+
<th>DeepSeek-V4-Pro</th>
|
| 232 |
+
<td class="st-ok">41.7</td>
|
| 233 |
+
<td class="st-ok">78.5<span class="mkc">c</span></td>
|
| 234 |
+
<td class="st-ok">13.8<span class="mkc">c</span></td>
|
| 235 |
+
<td class="st-off">31.0<span class="mk">*</span></td>
|
| 236 |
+
<td class="st-off">25.6<span class="mk">*</span><span class="mkc">c</span></td>
|
| 237 |
+
<td class="st-ok">5.0</td>
|
| 238 |
+
<td class="st-ok">52.9</td>
|
| 239 |
+
<td class="st-ok">−6.9</td>
|
| 240 |
+
</tr>
|
| 241 |
+
<tr>
|
| 242 |
+
<th>PLaMo 3.0 Prime</th>
|
| 243 |
+
<td class="st-ok">32.4</td>
|
| 244 |
+
<td class="st-ok">74.8<span class="mkc">c</span></td>
|
| 245 |
+
<td class="st-ok">9.6<span class="mkc">c</span></td>
|
| 246 |
+
<td class="st-ok">13.7</td>
|
| 247 |
+
<td class="st-ok">15.4<span class="mkc">c</span></td>
|
| 248 |
+
<td class="st-ok">−4.3<span class="mkc">c</span></td>
|
| 249 |
+
<td class="st-ok">28.6<span class="mkc">c</span></td>
|
| 250 |
+
<td class="st-ok">−11.8<span class="mkc">c</span></td>
|
| 251 |
+
</tr>
|
| 252 |
+
<tr>
|
| 253 |
+
<th>MedGemma 27B</th>
|
| 254 |
+
<td class="st-ok">33.2</td>
|
| 255 |
+
<td class="st-ok">76.6</td>
|
| 256 |
+
<td class="st-ok">4.8<span class="mkc">p</span></td>
|
| 257 |
+
<td class="st-ok">20.0</td>
|
| 258 |
+
<td class="st-ok">17.8<span class="mkc">p</span></td>
|
| 259 |
+
<td class="st-ok">9.1<span class="mkc">p</span></td>
|
| 260 |
+
<td class="st-ok">34.4<span class="mkc">p</span></td>
|
| 261 |
+
<td class="st-ok">−6.8<span class="mkc">c</span></td>
|
| 262 |
+
</tr>
|
| 263 |
+
<tr>
|
| 264 |
+
<th>MedGemma 4B</th>
|
| 265 |
+
<td class="st-ok">18.3<span class="mkc">p</span></td>
|
| 266 |
+
<td class="st-ok">70.8</td>
|
| 267 |
+
<td class="st-ok">1.3</td>
|
| 268 |
+
<td class="st-ok">9.0</td>
|
| 269 |
+
<td class="st-ok">8.2<span class="mkc">p</span></td>
|
| 270 |
+
<td class="st-gap">GAP</td>
|
| 271 |
+
<td class="st-gap">GAP</td>
|
| 272 |
+
<td class="st-gap">GAP</td>
|
| 273 |
+
</tr>
|
| 274 |
+
<tr class="baseline">
|
| 275 |
+
<th>physician baseline</th>
|
| 276 |
+
<td class="st-gap">—</td>
|
| 277 |
+
<td class="st-gap">—</td>
|
| 278 |
+
<td class="st-gap">—</td>
|
| 279 |
+
<td>43.9</td>
|
| 280 |
+
<td class="st-gap">—</td>
|
| 281 |
+
<td class="st-gap">—</td>
|
| 282 |
+
<td class="st-gap">—</td>
|
| 283 |
+
<td class="st-gap">—</td>
|
| 284 |
+
</tr>
|
| 285 |
+
</tbody>
|
| 286 |
+
</table>
|
| 287 |
+
</div>
|
| 288 |
+
<p class="mlegend">
|
| 289 |
+
<span class="sw sw-ok"></span>in the comparable set for that column
|
| 290 |
+
<span class="sw sw-off"></span>present but off-config
|
| 291 |
+
<span class="sw sw-gap"></span>no run exists<br>
|
| 292 |
+
<span class="mk">*</span> ran at <code>epochs=1</code> where the rest of the column ran <code>epochs=8</code>
|
| 293 |
+
· <span class="mkc">c</span> score comes from a full cache replay (no model generation)
|
| 294 |
+
· <span class="mkc">p</span> mostly cached (<200 candidate tokens per sample)
|
| 295 |
+
</p>
|
| 296 |
+
|
| 297 |
+
<h3>Reading the cells</h3>
|
| 298 |
+
|
| 299 |
+
<p>The <code>c</code> and <code>p</code> markers matter less than they look. Caching a model's
|
| 300 |
+
<em>response</em> and re-grading it is legitimate reuse: the response does not depend on the
|
| 301 |
+
judge. What the markers tell you is that the number cannot be independently reproduced from
|
| 302 |
+
the published log alone, because the generation happened in some earlier run. 27 of 68 logs
|
| 303 |
+
are full replays; only 23 generated fresh candidate responses.</p>
|
| 304 |
+
|
| 305 |
+
<p>The <span class="warn">*</span> marker is the one that breaks a table. DeepSeek's
|
| 306 |
+
Professional runs used <code>epochs=1</code> (525 samples) while every other model used
|
| 307 |
+
<code>epochs=8</code> (4200 samples). More epochs shrinks per-sample judge noise, so DeepSeek's
|
| 308 |
+
31.0 carries visibly more error than GPT-5.5's 47.8 next to it.</p>
|
| 309 |
+
|
| 310 |
+
<h2 id="complete">What is already complete</h2>
|
| 311 |
+
|
| 312 |
+
<p>Three benches have all six models under one judge and one epoch setting. These you can
|
| 313 |
+
publish today without caveats beyond the usual judge disclosure.</p>
|
| 314 |
+
|
| 315 |
+
<div class="ladder">
|
| 316 |
+
<div class="chip hit">full 6/6</div>
|
| 317 |
+
<div class="chip hit">consensus 6/6</div>
|
| 318 |
+
<div class="chip hit">hard 6/6</div>
|
| 319 |
+
<div class="chip">prof 5/6</div>
|
| 320 |
+
<div class="chip">consult 5/6</div>
|
| 321 |
+
<div class="chip">writing 5/6</div>
|
| 322 |
+
<div class="chip">research 5/6</div>
|
| 323 |
+
<div class="chip">red-team 5/6</div>
|
| 324 |
+
</div>
|
| 325 |
+
<div class="ladder-legend">olive = complete 6-model comparable set · outline = incomplete</div>
|
| 326 |
+
|
| 327 |
+
<p>Model rankings are stable across every bench, which is the reassuring part: GPT-5.5 and
|
| 328 |
+
Opus 4.7 lead and are within noise of each other, DeepSeek is third, then MedGemma-27B and
|
| 329 |
+
PLaMo trade places depending on the bench, and MedGemma-4B is last everywhere. Whatever you
|
| 330 |
+
fix in the gaps below is very unlikely to reorder the leaderboard.</p>
|
| 331 |
+
|
| 332 |
+
<div class="callout">
|
| 333 |
+
<span class="ico">★</span>
|
| 334 |
+
<div>
|
| 335 |
+
<p>The harness itself is validated. The physician baseline on Professional comes out at
|
| 336 |
+
<b>43.9</b> against OpenAI's published <b>43.7</b>. That is the anchor that says the
|
| 337 |
+
scoring pipeline is correct, so the gaps below are coverage problems, not correctness
|
| 338 |
+
problems.</p>
|
| 339 |
+
</div>
|
| 340 |
+
</div>
|
| 341 |
+
|
| 342 |
+
<h2 id="todo">What to run next</h2>
|
| 343 |
+
|
| 344 |
+
<h3>5 required runs</h3>
|
| 345 |
+
|
| 346 |
+
<p>These five close every genuine hole in the matrix. Ordered by how much they buy you.</p>
|
| 347 |
+
|
| 348 |
+
<details open>
|
| 349 |
+
<summary>1 · DeepSeek-V4-Pro, Professional whole-set at <code>epochs=8</code> <span class="where">fixes the * on prof</span></summary>
|
| 350 |
+
<div class="body">
|
| 351 |
+
<p>The only run here that needs fresh generation, so it is the expensive one:
|
| 352 |
+
roughly 1.3M candidate tokens × 8 epochs plus about 22M judge tokens, by analogy with
|
| 353 |
+
the other <code>epochs=8</code> Professional runs. Everything else in the column already
|
| 354 |
+
ran at 8 epochs, so this single run makes the Professional table uniform.</p>
|
| 355 |
+
<pre>inspect eval healthbench_professional.py \
|
| 356 |
+
--model openrouter/deepseek/deepseek-v4-pro \
|
| 357 |
+
--epochs 8 \
|
| 358 |
+
-T judge_model=openai/gpt-5.4 -T judge_reasoning_effort=low</pre>
|
| 359 |
+
</div>
|
| 360 |
+
</details>
|
| 361 |
+
|
| 362 |
+
<details>
|
| 363 |
+
<summary>2 · DeepSeek-V4-Pro, <code>consult</code> slice at <code>epochs=8</code> <span class="where">fixes the * on consult</span></summary>
|
| 364 |
+
<div class="body">
|
| 365 |
+
<p>Once run 1 is in the cache, this is a grader-only pass over the same responses. It is the
|
| 366 |
+
one slice DeepSeek never got at 8 epochs (writing, research and red-teaming already exist).</p>
|
| 367 |
+
</div>
|
| 368 |
+
</details>
|
| 369 |
+
|
| 370 |
+
<details>
|
| 371 |
+
<summary>3–5 · MedGemma-4B, the three missing Professional slices <span class="where">writing, research, red-teaming</span></summary>
|
| 372 |
+
<div class="body">
|
| 373 |
+
<p>MedGemma-4B has <code>consult</code> but not the other three. Its <code>epochs=8</code>
|
| 374 |
+
whole-set Professional responses are already cached from the <code>hs-original</code> run on
|
| 375 |
+
2026-07-25, so all three are grader-only passes. Cheapest wins in the list.</p>
|
| 376 |
+
<pre>for uc in writing research red_teaming; do
|
| 377 |
+
inspect eval healthbench_professional.py@healthbench_professional_$uc \
|
| 378 |
+
--model vllm/google/medgemma-4b-it --epochs 8 \
|
| 379 |
+
-T judge_model=openai/gpt-5.4 -T judge_reasoning_effort=low
|
| 380 |
+
done</pre>
|
| 381 |
+
</div>
|
| 382 |
+
</details>
|
| 383 |
+
|
| 384 |
+
<h3>The gpt-4.1 decision</h3>
|
| 385 |
+
|
| 386 |
+
<p>On 2026-08-05 the two MedGemma models were re-run on <code>hard</code> and
|
| 387 |
+
<code>consensus</code> with the judge switched from <code>gpt-4o-mini</code> to
|
| 388 |
+
<code>gpt-4.1</code>. Nothing else was re-run. That leaves a half-populated second column on
|
| 389 |
+
both benches: 2 of 6 models have a gpt-4.1 number, 6 of 6 have a gpt-4o-mini number.</p>
|
| 390 |
+
|
| 391 |
+
<p>Two clean options, and you should pick one explicitly rather than let both sit in the folder:</p>
|
| 392 |
+
|
| 393 |
+
<table>
|
| 394 |
+
<thead><tr><th>Option</th><th>Cost</th><th>Result</th></tr></thead>
|
| 395 |
+
<tbody>
|
| 396 |
+
<tr>
|
| 397 |
+
<td><b>Drop the Aug-05 runs</b> from the reported set, keep gpt-4o-mini for hard and consensus.</td>
|
| 398 |
+
<td>free</td>
|
| 399 |
+
<td>Consistent today. But <code>full</code> stays on gpt-4.1 while hard and consensus stay on gpt-4o-mini, so the three non-professional benches still use two judges.</td>
|
| 400 |
+
</tr>
|
| 401 |
+
<tr>
|
| 402 |
+
<td><b>Finish the gpt-4.1 column</b>: re-grade GPT-5.5, Opus 4.7, DeepSeek and PLaMo on hard and consensus.</td>
|
| 403 |
+
<td>8 grader-only runs, roughly 140M judge tokens</td>
|
| 404 |
+
<td>All three non-professional benches on gpt-4.1, matching <code>full</code>. This is the version worth publishing if the audience compares across benches.</td>
|
| 405 |
+
</tr>
|
| 406 |
+
</tbody>
|
| 407 |
+
</table>
|
| 408 |
+
|
| 409 |
+
<p>The candidate responses for all 8 of those are already cached from July, so option 2 needs no
|
| 410 |
+
model generation at all, only judge spend.</p>
|
| 411 |
+
|
| 412 |
+
<h2 id="axes">Slices with no clean data at all</h2>
|
| 413 |
+
|
| 414 |
+
<p>Beyond the four use-case slices, HealthBench Professional carries three more breakdown axes:
|
| 415 |
+
<b>difficulty</b> (2 levels), <b>source slice</b> (3), and <b>specialty</b> (36). None of these
|
| 416 |
+
has a usable number for any model, because they exist only as in-log metrics and those metrics
|
| 417 |
+
are computed wrongly.</p>
|
| 418 |
+
|
| 419 |
+
<p>The in-log subset metrics (<code>use_case_*_score</code>, <code>type_*_score</code>,
|
| 420 |
+
<code>difficulty_*_score</code>, <code>source_slice_*_score</code>, <code>specialty_*_score</code>)
|
| 421 |
+
discard the length adjustment and clip each sample to [0, 1] before averaging. Comparing them
|
| 422 |
+
against the standalone slice runs in <code>hs-prof-subsets</code> shows how far off that is:</p>
|
| 423 |
+
|
| 424 |
+
<table>
|
| 425 |
+
<thead>
|
| 426 |
+
<tr><th>Model · slice</th><th class="num">in-log metric</th><th class="num">standalone run</th><th class="num">error</th></tr>
|
| 427 |
+
</thead>
|
| 428 |
+
<tbody>
|
| 429 |
+
<tr><td>PLaMo · red-teaming</td><td class="num">16.88</td><td class="num">−11.82</td><td class="num bad">+28.7</td></tr>
|
| 430 |
+
<tr><td>PLaMo · writing</td><td class="num">19.77</td><td class="num">−4.31</td><td class="num bad">+24.1</td></tr>
|
| 431 |
+
<tr><td>MedGemma-27B · red-teaming</td><td class="num">25.29</td><td class="num">−6.80</td><td class="num bad">+32.1</td></tr>
|
| 432 |
+
<tr><td>MedGemma-27B · writing</td><td class="num">38.79</td><td class="num">9.13</td><td class="num bad">+29.7</td></tr>
|
| 433 |
+
<tr><td>GPT-5.5 · red-teaming</td><td class="num">45.80</td><td class="num">28.19</td><td class="num bad">+17.6</td></tr>
|
| 434 |
+
<tr><td>GPT-5.5 · consult</td><td class="num">60.58</td><td class="num">48.64</td><td class="num bad">+11.9</td></tr>
|
| 435 |
+
<tr><td>Opus 4.7 · research</td><td class="num">67.39</td><td class="num">61.07</td><td class="num warn">+6.3</td></tr>
|
| 436 |
+
</tbody>
|
| 437 |
+
</table>
|
| 438 |
+
|
| 439 |
+
<p>Every error is positive, and the worst cases are the slices where models score near zero,
|
| 440 |
+
which is exactly where per-sample clipping does the most damage. The four use-case slices are
|
| 441 |
+
safe only because Ajay built <code>hs-prof-subsets</code> to recompute them as standalone task
|
| 442 |
+
runs. <b>Difficulty, source slice and specialty have no equivalent</b>, so if you need those
|
| 443 |
+
breakdowns they must be re-aggregated from per-sample scores, or run as standalone filtered
|
| 444 |
+
tasks the way the use-case slices were.</p>
|
| 445 |
+
|
| 446 |
+
<div class="callout">
|
| 447 |
+
<span class="ico">★</span>
|
| 448 |
+
<div>
|
| 449 |
+
<p>Practical rule: never quote a <code>_scorer/<axis>_score</code> value out of a
|
| 450 |
+
Professional log. Use <code>hs-prof-subsets</code> for the four use-case slices, and
|
| 451 |
+
recompute anything else yourself.</p>
|
| 452 |
+
</div>
|
| 453 |
+
</div>
|
| 454 |
+
|
| 455 |
+
<h2 id="why">Why cells disagree</h2>
|
| 456 |
+
|
| 457 |
+
<p>Three sources of drift, in descending order of how much they move a number.</p>
|
| 458 |
+
|
| 459 |
+
<details>
|
| 460 |
+
<summary>Judge model, worth up to 14 points <span class="where">3 judges across the set</span></summary>
|
| 461 |
+
<div class="body">
|
| 462 |
+
<p>Raw <code>healthbench_score</code> is just achieved points over possible points
|
| 463 |
+
(<code>scorer.py:524</code>), so it is fully determined by the judge's rubric verdicts and is
|
| 464 |
+
untouched by the length-adjustment arguments. That makes these clean single-variable
|
| 465 |
+
comparisons: same model, same task code, judge swapped.</p>
|
| 466 |
+
<pre> gpt-4o-mini gpt-4.1 delta
|
| 467 |
+
consensus, MedGemma-27B 0.7758 0.9105 +13.5
|
| 468 |
+
full, GPT-5.5 0.4873 0.5687 +8.1
|
| 469 |
+
full, Opus-4.7 0.4762 0.5344 +5.8
|
| 470 |
+
consensus, MedGemma-4B 0.7137 0.7583 +4.5
|
| 471 |
+
hard, MedGemma-27B 0.2109 0.1415 -6.9
|
| 472 |
+
hard, MedGemma-4B 0.1060 -0.0347 -14.1</pre>
|
| 473 |
+
<p>gpt-4.1 is <em>more</em> generous than gpt-4o-mini on consensus and <em>harsher</em> on
|
| 474 |
+
hard, so you cannot even predict the direction of the shift, let alone correct for it. Three
|
| 475 |
+
judges are in play across the set: gpt-4o-mini (healthbench-v1, all of hs-hard, all of
|
| 476 |
+
hs-consensus), gpt-4.1 (all of hs-non-professional, plus the Aug-05 re-runs), and gpt-5.4 at
|
| 477 |
+
<code>reasoning_effort=low</code> for every Professional run.</p>
|
| 478 |
+
</div>
|
| 479 |
+
</details>
|
| 480 |
+
|
| 481 |
+
<details>
|
| 482 |
+
<summary>Epochs, worth a couple of points of extra noise <span class="where">8 vs 1 on Professional</span></summary>
|
| 483 |
+
<div class="body">
|
| 484 |
+
<p>Professional ran at <code>epochs=8</code> for five models and <code>epochs=1</code> for
|
| 485 |
+
DeepSeek. Every other bench ran at <code>epochs=1</code> for everyone, so no repeat-epoch
|
| 486 |
+
variance estimate exists for full, consensus or hard at all.</p>
|
| 487 |
+
</div>
|
| 488 |
+
</details>
|
| 489 |
+
|
| 490 |
+
<details>
|
| 491 |
+
<summary>Cache reuse, worth about 3.5 points on one measured pair <span class="where">cache=true everywhere</span></summary>
|
| 492 |
+
<div class="body">
|
| 493 |
+
<p>DeepSeek has two Professional runs with identical nominal config. The 2026-07-25 one in
|
| 494 |
+
<code>hs-original</code> spent 10 candidate tokens per sample (a replay) and scored 34.30 raw;
|
| 495 |
+
the 2026-08-06 one in <code>healthbench-professional-deepseek-v4-pro</code> generated 1.26M
|
| 496 |
+
tokens fresh and scored 37.81 raw. Use the fresh one. The 3.5-point gap is about 1.5 standard
|
| 497 |
+
errors, so it is plausibly just resampling, but it is the only direct measurement of
|
| 498 |
+
cached-versus-fresh drift in the whole set.</p>
|
| 499 |
+
</div>
|
| 500 |
+
</details>
|
| 501 |
+
|
| 502 |
+
<h2 id="noise">How big does a gap have to be to matter</h2>
|
| 503 |
+
|
| 504 |
+
<p>Bootstrap standard errors from the logs, so you can tell a real difference from resampling
|
| 505 |
+
noise before commissioning a re-run:</p>
|
| 506 |
+
|
| 507 |
+
<table>
|
| 508 |
+
<thead><tr><th>Bench</th><th class="num">n</th><th class="num">std error</th><th>reads as</th></tr></thead>
|
| 509 |
+
<tbody>
|
| 510 |
+
<tr><td>full</td><td class="num">5000</td><td class="num">0.005</td><td>differences under 1 point are noise</td></tr>
|
| 511 |
+
<tr><td>consensus</td><td class="num">3671</td><td class="num">0.005</td><td>same</td></tr>
|
| 512 |
+
<tr><td>hard</td><td class="num">1000</td><td class="num">0.010</td><td>differences under 2 points are noise</td></tr>
|
| 513 |
+
<tr><td>professional</td><td class="num">525</td><td class="num">0.023</td><td>differences under 4.5 points are noise</td></tr>
|
| 514 |
+
</tbody>
|
| 515 |
+
</table>
|
| 516 |
+
|
| 517 |
+
<p>This is why GPT-5.5 at 47.8 and Opus 4.7 at 48.0 on Professional should be reported as tied,
|
| 518 |
+
and why the judge-swap effects above (up to 14 points) are unambiguously real rather than noise.</p>
|
| 519 |
+
|
| 520 |
+
<p>One footnote: the Aug-05 MedGemma-4B <code>hard</code> runs report a standard error of exactly
|
| 521 |
+
<code>0.0</code>. That is a clipping artifact, not precision. The bootstrap clamps the mean to
|
| 522 |
+
[0, 1], and since that run's mean is negative every resample clamps to 0, collapsing the spread.
|
| 523 |
+
Treat the std error as unknown for any run with a negative mean.</p>
|
| 524 |
+
|
| 525 |
+
<h2 id="files">Where everything lives</h2>
|
| 526 |
+
|
| 527 |
+
<p>All ten HealthBench spaces are mirrored locally, 68 logs. <code>healthbench-v1</code> is a
|
| 528 |
+
symlink into the inspect_ai sandbox where it already lived.</p>
|
| 529 |
+
|
| 530 |
+
<table>
|
| 531 |
+
<thead><tr><th>Directory</th><th class="num">runs</th><th>Contents</th></tr></thead>
|
| 532 |
+
<tbody>
|
| 533 |
+
<tr><td><code>healthbench-v1</code></td><td class="num">7</td><td>first attempt, 2 usable, gpt-4o-mini judge, no length adjustment</td></tr>
|
| 534 |
+
<tr><td><code>hs-non-professional</code></td><td class="num">6</td><td>the <code>full</code> column</td></tr>
|
| 535 |
+
<tr><td><code>hs-consensus</code></td><td class="num">6</td><td>the <code>consensus</code> column</td></tr>
|
| 536 |
+
<tr><td><code>hs-hard</code></td><td class="num">6</td><td>the <code>hard</code> column</td></tr>
|
| 537 |
+
<tr><td><code>hs-original</code></td><td class="num">6</td><td>the <code>professional</code> column</td></tr>
|
| 538 |
+
<tr><td><code>hs-prof-subsets</code></td><td class="num">26</td><td>the four use-case slices plus physician baseline</td></tr>
|
| 539 |
+
<tr><td><code>medgemma-healthbench-hard</code></td><td class="num">2</td><td>Aug-05 gpt-4.1 re-grade, hard</td></tr>
|
| 540 |
+
<tr><td><code>healthbench-hard-medgemma-v2</code></td><td class="num">2</td><td>same experiment, different provider prefix</td></tr>
|
| 541 |
+
<tr><td><code>healthbench-consensus-medgemma</code></td><td class="num">2</td><td>Aug-05 gpt-4.1 re-grade, consensus</td></tr>
|
| 542 |
+
<tr><td><code>healthbench-professional-deepseek-v4-pro</code></td><td class="num">1</td><td>the fresh DeepSeek Professional run</td></tr>
|
| 543 |
+
</tbody>
|
| 544 |
+
</table>
|
| 545 |
+
|
| 546 |
+
<p>Per-run detail with judge, epochs, token counts and a provenance classification is in
|
| 547 |
+
<code>hb-spaces/MANIFEST.csv</code>, one row per log. <code>hb-spaces/INDEX.md</code> carries the
|
| 548 |
+
trap list. On HuggingFace, <code>healthbench-profes</code> and
|
| 549 |
+
<code>healthbench-prof-part1</code> exist but hold no logs, so there is nothing to mirror.</p>
|
| 550 |
+
|
| 551 |
+
<h2 id="faq">Questions this raises</h2>
|
| 552 |
+
|
| 553 |
+
<dl class="faq">
|
| 554 |
+
<dt>If I only have budget for one thing, what is it?</dt>
|
| 555 |
+
<dd>The DeepSeek Professional <code>epochs=8</code> run. It is the single cell that breaks the
|
| 556 |
+
Professional table, and Professional is the bench with the physician baseline, so it is the one
|
| 557 |
+
you would actually put in front of someone.</dd>
|
| 558 |
+
|
| 559 |
+
<dt>Can I merge the four use-case slices back into a whole-set Professional score?</dt>
|
| 560 |
+
<dd>No. 236 + 142 + 147 + 191 = 716 against 525 total samples, so samples carry multiple
|
| 561 |
+
use-case tags and the slices overlap. Use the whole-set run for the headline and the slices
|
| 562 |
+
only as breakdowns.</dd>
|
| 563 |
+
|
| 564 |
+
<dt>Are the two MedGemma hard spaces duplicates?</dt>
|
| 565 |
+
<dd>Effectively yes. <code>medgemma-healthbench-hard</code> and
|
| 566 |
+
<code>healthbench-hard-medgemma-v2</code> are the same experiment run two hours apart, differing
|
| 567 |
+
only in whether the model was addressed as <code>openai-api/vllm/google/…</code> or
|
| 568 |
+
<code>vllm/google/…</code>. The 0.8-point spread between them is vLLM sampling noise, which
|
| 569 |
+
incidentally gives you a free repeatability estimate for the local models.</dd>
|
| 570 |
+
|
| 571 |
+
<dt>Was gpt-5-nano ever evaluated?</dt>
|
| 572 |
+
<dd>One attempt on 2026-07-09, which died on a 401. It is not part of the model set.</dd>
|
| 573 |
+
|
| 574 |
+
<dt>Why do so many runs show zero token usage?</dt>
|
| 575 |
+
<dd><code>cache=true</code> was set on every run, and Inspect does not count cache hits toward
|
| 576 |
+
<code>stats.model_usage</code>. An empty <code>model_usage</code> means every call was served
|
| 577 |
+
from cache, which is the fastest way to spot a replay masquerading as a re-run.</dd>
|
| 578 |
+
</dl>
|
| 579 |
+
|
| 580 |
+
</main>
|
| 581 |
+
</div>
|
| 582 |
+
</body>
|
| 583 |
+
</html>
|
robots.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
User-agent: *
|
| 2 |
+
Disallow: /
|
viewer/assets/chunk-DfAF0w94.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//#region ../../node_modules/.pnpm/mathxyjax3@0.8.3/node_modules/mathxyjax3/dist/chunk-DfAF0w94.js
|
| 2 |
+
var e = Object.create, t = Object.defineProperty, n = Object.getOwnPropertyDescriptor, r = Object.getOwnPropertyNames, i = Object.getPrototypeOf, a = Object.prototype.hasOwnProperty, o = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), s = (e, i, o, s) => {
|
| 3 |
+
if (i && typeof i == `object` || typeof i == `function`) for (var c = r(i), l = 0, u = c.length, d; l < u; l++) d = c[l], !a.call(e, d) && d !== o && t(e, d, {
|
| 4 |
+
get: ((e) => i[e]).bind(null, d),
|
| 5 |
+
enumerable: !(s = n(i, d)) || s.enumerable
|
| 6 |
+
});
|
| 7 |
+
return e;
|
| 8 |
+
}, c = (n, r, a) => (a = n == null ? {} : e(i(n)), s(r || !n || !n.__esModule ? t(a, `default`, {
|
| 9 |
+
value: n,
|
| 10 |
+
enumerable: !0
|
| 11 |
+
}) : a, n)), l = (e) => (t) => c(t.default, e);
|
| 12 |
+
//#endregion
|
| 13 |
+
export { o as n, l as t };
|
| 14 |
+
|
| 15 |
+
//# sourceMappingURL=chunk-DfAF0w94.js.map
|
viewer/assets/favicon.svg
ADDED
|
|
viewer/assets/index.css
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
viewer/assets/index.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
viewer/assets/lib-CBtriEt5.js
ADDED
|
@@ -0,0 +1,3317 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { n as o$1 } from "./chunk-DfAF0w94.js";
|
| 2 |
+
//#region ../../node_modules/.pnpm/mathxyjax3@0.8.3/node_modules/mathxyjax3/dist/lib-CBtriEt5.js
|
| 3 |
+
var t = o$1(((exports) => {
|
| 4 |
+
function t(e, t, n) {
|
| 5 |
+
if (n === void 0 && (n = Array.prototype), e && typeof n.find == `function`) return n.find.call(e, t);
|
| 6 |
+
for (var r = 0; r < e.length; r++) if (Object.prototype.hasOwnProperty.call(e, r)) {
|
| 7 |
+
var i = e[r];
|
| 8 |
+
if (t.call(void 0, i, r, e)) return i;
|
| 9 |
+
}
|
| 10 |
+
}
|
| 11 |
+
function n(e, t) {
|
| 12 |
+
return t === void 0 && (t = Object), t && typeof t.freeze == `function` ? t.freeze(e) : e;
|
| 13 |
+
}
|
| 14 |
+
function r(e, t) {
|
| 15 |
+
if (typeof e != `object` || !e) throw TypeError(`target is not an object`);
|
| 16 |
+
for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
|
| 17 |
+
return e;
|
| 18 |
+
}
|
| 19 |
+
var i = n({
|
| 20 |
+
HTML: `text/html`,
|
| 21 |
+
isHTML: function(e) {
|
| 22 |
+
return e === i.HTML;
|
| 23 |
+
},
|
| 24 |
+
XML_APPLICATION: `application/xml`,
|
| 25 |
+
XML_TEXT: `text/xml`,
|
| 26 |
+
XML_XHTML_APPLICATION: `application/xhtml+xml`,
|
| 27 |
+
XML_SVG_IMAGE: `image/svg+xml`
|
| 28 |
+
}), a = n({
|
| 29 |
+
HTML: `http://www.w3.org/1999/xhtml`,
|
| 30 |
+
isHTML: function(e) {
|
| 31 |
+
return e === a.HTML;
|
| 32 |
+
},
|
| 33 |
+
SVG: `http://www.w3.org/2000/svg`,
|
| 34 |
+
XML: `http://www.w3.org/XML/1998/namespace`,
|
| 35 |
+
XMLNS: `http://www.w3.org/2000/xmlns/`
|
| 36 |
+
});
|
| 37 |
+
exports.assign = r, exports.find = t, exports.freeze = n, exports.MIME_TYPE = i, exports.NAMESPACE = a;
|
| 38 |
+
})), n = o$1(((exports) => {
|
| 39 |
+
var n = t(), r = n.find, i = n.NAMESPACE;
|
| 40 |
+
function a(e) {
|
| 41 |
+
return e !== ``;
|
| 42 |
+
}
|
| 43 |
+
function o(e) {
|
| 44 |
+
return e ? e.split(/[\t\n\f\r ]+/).filter(a) : [];
|
| 45 |
+
}
|
| 46 |
+
function s(e, t) {
|
| 47 |
+
return e.hasOwnProperty(t) || (e[t] = !0), e;
|
| 48 |
+
}
|
| 49 |
+
function c(e) {
|
| 50 |
+
if (!e) return [];
|
| 51 |
+
var t = o(e);
|
| 52 |
+
return Object.keys(t.reduce(s, {}));
|
| 53 |
+
}
|
| 54 |
+
function l(e) {
|
| 55 |
+
return function(t) {
|
| 56 |
+
return e && e.indexOf(t) !== -1;
|
| 57 |
+
};
|
| 58 |
+
}
|
| 59 |
+
function u(e, t) {
|
| 60 |
+
for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
|
| 61 |
+
}
|
| 62 |
+
function d(e, t) {
|
| 63 |
+
var n = e.prototype;
|
| 64 |
+
if (!(n instanceof t)) {
|
| 65 |
+
function r() {}
|
| 66 |
+
r.prototype = t.prototype, r = new r(), u(n, r), e.prototype = n = r;
|
| 67 |
+
}
|
| 68 |
+
n.constructor != e && (typeof e != `function` && console.error(`unknown Class:` + e), n.constructor = e);
|
| 69 |
+
}
|
| 70 |
+
var f = {}, p = f.ELEMENT_NODE = 1, m = f.ATTRIBUTE_NODE = 2, h = f.TEXT_NODE = 3, g = f.CDATA_SECTION_NODE = 4, _ = f.ENTITY_REFERENCE_NODE = 5, v = f.ENTITY_NODE = 6, y = f.PROCESSING_INSTRUCTION_NODE = 7, b = f.COMMENT_NODE = 8, x = f.DOCUMENT_NODE = 9, S = f.DOCUMENT_TYPE_NODE = 10, C = f.DOCUMENT_FRAGMENT_NODE = 11, w = f.NOTATION_NODE = 12, T = {}, E = {};
|
| 71 |
+
T.INDEX_SIZE_ERR = (E[1] = `Index size error`, 1), T.DOMSTRING_SIZE_ERR = (E[2] = `DOMString size error`, 2);
|
| 72 |
+
var D = T.HIERARCHY_REQUEST_ERR = (E[3] = `Hierarchy request error`, 3);
|
| 73 |
+
T.WRONG_DOCUMENT_ERR = (E[4] = `Wrong document`, 4), T.INVALID_CHARACTER_ERR = (E[5] = `Invalid character`, 5), T.NO_DATA_ALLOWED_ERR = (E[6] = `No data allowed`, 6), T.NO_MODIFICATION_ALLOWED_ERR = (E[7] = `No modification allowed`, 7);
|
| 74 |
+
var O = T.NOT_FOUND_ERR = (E[8] = `Not found`, 8);
|
| 75 |
+
T.NOT_SUPPORTED_ERR = (E[9] = `Not supported`, 9);
|
| 76 |
+
var k = T.INUSE_ATTRIBUTE_ERR = (E[10] = `Attribute in use`, 10);
|
| 77 |
+
T.INVALID_STATE_ERR = (E[11] = `Invalid state`, 11), T.SYNTAX_ERR = (E[12] = `Syntax error`, 12), T.INVALID_MODIFICATION_ERR = (E[13] = `Invalid modification`, 13), T.NAMESPACE_ERR = (E[14] = `Invalid namespace`, 14), T.INVALID_ACCESS_ERR = (E[15] = `Invalid access`, 15);
|
| 78 |
+
function A(e, t) {
|
| 79 |
+
if (t instanceof Error) var n = t;
|
| 80 |
+
else n = this, Error.call(this, E[e]), this.message = E[e], Error.captureStackTrace && Error.captureStackTrace(this, A);
|
| 81 |
+
return n.code = e, t && (this.message = this.message + `: ` + t), n;
|
| 82 |
+
}
|
| 83 |
+
A.prototype = Error.prototype, u(T, A);
|
| 84 |
+
function j() {}
|
| 85 |
+
j.prototype = {
|
| 86 |
+
length: 0,
|
| 87 |
+
item: function(e) {
|
| 88 |
+
return e >= 0 && e < this.length ? this[e] : null;
|
| 89 |
+
},
|
| 90 |
+
toString: function(e, t) {
|
| 91 |
+
for (var n = [], r = 0; r < this.length; r++) $(this[r], n, e, t);
|
| 92 |
+
return n.join(``);
|
| 93 |
+
},
|
| 94 |
+
filter: function(e) {
|
| 95 |
+
return Array.prototype.filter.call(this, e);
|
| 96 |
+
},
|
| 97 |
+
indexOf: function(e) {
|
| 98 |
+
return Array.prototype.indexOf.call(this, e);
|
| 99 |
+
}
|
| 100 |
+
};
|
| 101 |
+
function M(e, t) {
|
| 102 |
+
this._node = e, this._refresh = t, N(this);
|
| 103 |
+
}
|
| 104 |
+
function N(e) {
|
| 105 |
+
var t = e._node._inc || e._node.ownerDocument._inc;
|
| 106 |
+
if (e._inc !== t) {
|
| 107 |
+
var n = e._refresh(e._node);
|
| 108 |
+
if (Te(e, `length`, n.length), !e.$$length || n.length < e.$$length) for (var r = n.length; r in e; r++) Object.prototype.hasOwnProperty.call(e, r) && delete e[r];
|
| 109 |
+
u(n, e), e._inc = t;
|
| 110 |
+
}
|
| 111 |
+
}
|
| 112 |
+
M.prototype.item = function(e) {
|
| 113 |
+
return N(this), this[e] || null;
|
| 114 |
+
}, d(M, j);
|
| 115 |
+
function P() {}
|
| 116 |
+
function F(e, t) {
|
| 117 |
+
for (var n = e.length; n--;) if (e[n] === t) return n;
|
| 118 |
+
}
|
| 119 |
+
function I(e, t, n, r) {
|
| 120 |
+
if (r ? t[F(t, r)] = n : t[t.length++] = n, e) {
|
| 121 |
+
n.ownerElement = e;
|
| 122 |
+
var i = e.ownerDocument;
|
| 123 |
+
i && (r && te(i, e, r), ee(i, e, n));
|
| 124 |
+
}
|
| 125 |
+
}
|
| 126 |
+
function L(e, t, n) {
|
| 127 |
+
var r = F(t, n);
|
| 128 |
+
if (r >= 0) {
|
| 129 |
+
for (var i = t.length - 1; r < i;) t[r] = t[++r];
|
| 130 |
+
if (t.length = i, e) {
|
| 131 |
+
var a = e.ownerDocument;
|
| 132 |
+
a && (te(a, e, n), n.ownerElement = null);
|
| 133 |
+
}
|
| 134 |
+
} else throw new A(O, Error(e.tagName + `@` + n));
|
| 135 |
+
}
|
| 136 |
+
P.prototype = {
|
| 137 |
+
length: 0,
|
| 138 |
+
item: j.prototype.item,
|
| 139 |
+
getNamedItem: function(e) {
|
| 140 |
+
for (var t = this.length; t--;) {
|
| 141 |
+
var n = this[t];
|
| 142 |
+
if (n.nodeName == e) return n;
|
| 143 |
+
}
|
| 144 |
+
},
|
| 145 |
+
setNamedItem: function(e) {
|
| 146 |
+
var t = e.ownerElement;
|
| 147 |
+
if (t && t != this._ownerElement) throw new A(k);
|
| 148 |
+
var n = this.getNamedItem(e.nodeName);
|
| 149 |
+
return I(this._ownerElement, this, e, n), n;
|
| 150 |
+
},
|
| 151 |
+
setNamedItemNS: function(e) {
|
| 152 |
+
var t = e.ownerElement, n;
|
| 153 |
+
if (t && t != this._ownerElement) throw new A(k);
|
| 154 |
+
return n = this.getNamedItemNS(e.namespaceURI, e.localName), I(this._ownerElement, this, e, n), n;
|
| 155 |
+
},
|
| 156 |
+
removeNamedItem: function(e) {
|
| 157 |
+
var t = this.getNamedItem(e);
|
| 158 |
+
return L(this._ownerElement, this, t), t;
|
| 159 |
+
},
|
| 160 |
+
removeNamedItemNS: function(e, t) {
|
| 161 |
+
var n = this.getNamedItemNS(e, t);
|
| 162 |
+
return L(this._ownerElement, this, n), n;
|
| 163 |
+
},
|
| 164 |
+
getNamedItemNS: function(e, t) {
|
| 165 |
+
for (var n = this.length; n--;) {
|
| 166 |
+
var r = this[n];
|
| 167 |
+
if (r.localName == t && r.namespaceURI == e) return r;
|
| 168 |
+
}
|
| 169 |
+
return null;
|
| 170 |
+
}
|
| 171 |
+
};
|
| 172 |
+
function R() {}
|
| 173 |
+
R.prototype = {
|
| 174 |
+
hasFeature: function(e, t) {
|
| 175 |
+
return !0;
|
| 176 |
+
},
|
| 177 |
+
createDocument: function(e, t, n) {
|
| 178 |
+
var r = new H();
|
| 179 |
+
if (r.implementation = this, r.childNodes = new j(), r.doctype = n || null, n && r.appendChild(n), t) {
|
| 180 |
+
var i = r.createElementNS(e, t);
|
| 181 |
+
r.appendChild(i);
|
| 182 |
+
}
|
| 183 |
+
return r;
|
| 184 |
+
},
|
| 185 |
+
createDocumentType: function(e, t, n) {
|
| 186 |
+
var r = new Z();
|
| 187 |
+
return r.name = e, r.nodeName = e, r.publicId = t || ``, r.systemId = n || ``, r;
|
| 188 |
+
}
|
| 189 |
+
};
|
| 190 |
+
function z() {}
|
| 191 |
+
z.prototype = {
|
| 192 |
+
firstChild: null,
|
| 193 |
+
lastChild: null,
|
| 194 |
+
previousSibling: null,
|
| 195 |
+
nextSibling: null,
|
| 196 |
+
attributes: null,
|
| 197 |
+
parentNode: null,
|
| 198 |
+
childNodes: null,
|
| 199 |
+
ownerDocument: null,
|
| 200 |
+
nodeValue: null,
|
| 201 |
+
namespaceURI: null,
|
| 202 |
+
prefix: null,
|
| 203 |
+
localName: null,
|
| 204 |
+
insertBefore: function(e, t) {
|
| 205 |
+
return K(this, e, t);
|
| 206 |
+
},
|
| 207 |
+
replaceChild: function(e, t) {
|
| 208 |
+
K(this, e, t, ue), t && this.removeChild(t);
|
| 209 |
+
},
|
| 210 |
+
removeChild: function(e) {
|
| 211 |
+
return ne(this, e);
|
| 212 |
+
},
|
| 213 |
+
appendChild: function(e) {
|
| 214 |
+
return this.insertBefore(e, null);
|
| 215 |
+
},
|
| 216 |
+
hasChildNodes: function() {
|
| 217 |
+
return this.firstChild != null;
|
| 218 |
+
},
|
| 219 |
+
cloneNode: function(e) {
|
| 220 |
+
return we(this.ownerDocument || this, this, e);
|
| 221 |
+
},
|
| 222 |
+
normalize: function() {
|
| 223 |
+
for (var e = this.firstChild; e;) {
|
| 224 |
+
var t = e.nextSibling;
|
| 225 |
+
t && t.nodeType == h && e.nodeType == h ? (this.removeChild(t), e.appendData(t.data)) : (e.normalize(), e = t);
|
| 226 |
+
}
|
| 227 |
+
},
|
| 228 |
+
isSupported: function(e, t) {
|
| 229 |
+
return this.ownerDocument.implementation.hasFeature(e, t);
|
| 230 |
+
},
|
| 231 |
+
hasAttributes: function() {
|
| 232 |
+
return this.attributes.length > 0;
|
| 233 |
+
},
|
| 234 |
+
lookupPrefix: function(e) {
|
| 235 |
+
for (var t = this; t;) {
|
| 236 |
+
var n = t._nsMap;
|
| 237 |
+
if (n) {
|
| 238 |
+
for (var r in n) if (Object.prototype.hasOwnProperty.call(n, r) && n[r] === e) return r;
|
| 239 |
+
}
|
| 240 |
+
t = t.nodeType == m ? t.ownerDocument : t.parentNode;
|
| 241 |
+
}
|
| 242 |
+
return null;
|
| 243 |
+
},
|
| 244 |
+
lookupNamespaceURI: function(e) {
|
| 245 |
+
for (var t = this; t;) {
|
| 246 |
+
var n = t._nsMap;
|
| 247 |
+
if (n && Object.prototype.hasOwnProperty.call(n, e)) return n[e];
|
| 248 |
+
t = t.nodeType == m ? t.ownerDocument : t.parentNode;
|
| 249 |
+
}
|
| 250 |
+
return null;
|
| 251 |
+
},
|
| 252 |
+
isDefaultNamespace: function(e) {
|
| 253 |
+
return this.lookupPrefix(e) == null;
|
| 254 |
+
}
|
| 255 |
+
};
|
| 256 |
+
function B(e) {
|
| 257 |
+
return e == `<` && `<` || e == `>` && `>` || e == `&` && `&` || e == `"` && `"` || `&#` + e.charCodeAt() + `;`;
|
| 258 |
+
}
|
| 259 |
+
u(f, z), u(f, z.prototype);
|
| 260 |
+
function V(e, t) {
|
| 261 |
+
if (t(e)) return !0;
|
| 262 |
+
if (e = e.firstChild) do
|
| 263 |
+
if (V(e, t)) return !0;
|
| 264 |
+
while (e = e.nextSibling);
|
| 265 |
+
}
|
| 266 |
+
function H() {
|
| 267 |
+
this.ownerDocument = this;
|
| 268 |
+
}
|
| 269 |
+
function ee(e, t, n) {
|
| 270 |
+
e && e._inc++, n.namespaceURI === i.XMLNS && (t._nsMap[n.prefix ? n.localName : ``] = n.value);
|
| 271 |
+
}
|
| 272 |
+
function te(e, t, n, r) {
|
| 273 |
+
e && e._inc++, n.namespaceURI === i.XMLNS && delete t._nsMap[n.prefix ? n.localName : ``];
|
| 274 |
+
}
|
| 275 |
+
function U(e, t, n) {
|
| 276 |
+
if (e && e._inc) {
|
| 277 |
+
e._inc++;
|
| 278 |
+
var r = t.childNodes;
|
| 279 |
+
if (n) r[r.length++] = n;
|
| 280 |
+
else {
|
| 281 |
+
for (var i = t.firstChild, a = 0; i;) r[a++] = i, i = i.nextSibling;
|
| 282 |
+
r.length = a, delete r[r.length];
|
| 283 |
+
}
|
| 284 |
+
}
|
| 285 |
+
}
|
| 286 |
+
function ne(e, t) {
|
| 287 |
+
var n = t.previousSibling, r = t.nextSibling;
|
| 288 |
+
return n ? n.nextSibling = r : e.firstChild = r, r ? r.previousSibling = n : e.lastChild = n, t.parentNode = null, t.previousSibling = null, t.nextSibling = null, U(e.ownerDocument, e), t;
|
| 289 |
+
}
|
| 290 |
+
function re(e) {
|
| 291 |
+
return e && (e.nodeType === z.DOCUMENT_NODE || e.nodeType === z.DOCUMENT_FRAGMENT_NODE || e.nodeType === z.ELEMENT_NODE);
|
| 292 |
+
}
|
| 293 |
+
function ie(e) {
|
| 294 |
+
return e && (G(e) || ae(e) || W(e) || e.nodeType === z.DOCUMENT_FRAGMENT_NODE || e.nodeType === z.COMMENT_NODE || e.nodeType === z.PROCESSING_INSTRUCTION_NODE);
|
| 295 |
+
}
|
| 296 |
+
function W(e) {
|
| 297 |
+
return e && e.nodeType === z.DOCUMENT_TYPE_NODE;
|
| 298 |
+
}
|
| 299 |
+
function G(e) {
|
| 300 |
+
return e && e.nodeType === z.ELEMENT_NODE;
|
| 301 |
+
}
|
| 302 |
+
function ae(e) {
|
| 303 |
+
return e && e.nodeType === z.TEXT_NODE;
|
| 304 |
+
}
|
| 305 |
+
function oe(e, t) {
|
| 306 |
+
var n = e.childNodes || [];
|
| 307 |
+
if (r(n, G) || W(t)) return !1;
|
| 308 |
+
var i = r(n, W);
|
| 309 |
+
return !(t && i && n.indexOf(i) > n.indexOf(t));
|
| 310 |
+
}
|
| 311 |
+
function se(e, t) {
|
| 312 |
+
var n = e.childNodes || [];
|
| 313 |
+
function i(e) {
|
| 314 |
+
return G(e) && e !== t;
|
| 315 |
+
}
|
| 316 |
+
if (r(n, i)) return !1;
|
| 317 |
+
var a = r(n, W);
|
| 318 |
+
return !(t && a && n.indexOf(a) > n.indexOf(t));
|
| 319 |
+
}
|
| 320 |
+
function ce(e, t, n) {
|
| 321 |
+
if (!re(e)) throw new A(D, `Unexpected parent node type ` + e.nodeType);
|
| 322 |
+
if (n && n.parentNode !== e) throw new A(O, `child not in parent`);
|
| 323 |
+
if (!ie(t) || W(t) && e.nodeType !== z.DOCUMENT_NODE) throw new A(D, `Unexpected node type ` + t.nodeType + ` for parent node type ` + e.nodeType);
|
| 324 |
+
}
|
| 325 |
+
function le(e, t, n) {
|
| 326 |
+
var i = e.childNodes || [], a = t.childNodes || [];
|
| 327 |
+
if (t.nodeType === z.DOCUMENT_FRAGMENT_NODE) {
|
| 328 |
+
var o = a.filter(G);
|
| 329 |
+
if (o.length > 1 || r(a, ae)) throw new A(D, `More than one element or text in fragment`);
|
| 330 |
+
if (o.length === 1 && !oe(e, n)) throw new A(D, `Element in fragment can not be inserted before doctype`);
|
| 331 |
+
}
|
| 332 |
+
if (G(t) && !oe(e, n)) throw new A(D, `Only one element can be added and only after doctype`);
|
| 333 |
+
if (W(t)) {
|
| 334 |
+
if (r(i, W)) throw new A(D, `Only one doctype is allowed`);
|
| 335 |
+
var s = r(i, G);
|
| 336 |
+
if (n && i.indexOf(s) < i.indexOf(n)) throw new A(D, `Doctype can only be inserted before an element`);
|
| 337 |
+
if (!n && s) throw new A(D, `Doctype can not be appended since element is present`);
|
| 338 |
+
}
|
| 339 |
+
}
|
| 340 |
+
function ue(e, t, n) {
|
| 341 |
+
var i = e.childNodes || [], a = t.childNodes || [];
|
| 342 |
+
if (t.nodeType === z.DOCUMENT_FRAGMENT_NODE) {
|
| 343 |
+
var o = a.filter(G);
|
| 344 |
+
if (o.length > 1 || r(a, ae)) throw new A(D, `More than one element or text in fragment`);
|
| 345 |
+
if (o.length === 1 && !se(e, n)) throw new A(D, `Element in fragment can not be inserted before doctype`);
|
| 346 |
+
}
|
| 347 |
+
if (G(t) && !se(e, n)) throw new A(D, `Only one element can be added and only after doctype`);
|
| 348 |
+
if (W(t)) {
|
| 349 |
+
function e(e) {
|
| 350 |
+
return W(e) && e !== n;
|
| 351 |
+
}
|
| 352 |
+
if (r(i, e)) throw new A(D, `Only one doctype is allowed`);
|
| 353 |
+
var s = r(i, G);
|
| 354 |
+
if (n && i.indexOf(s) < i.indexOf(n)) throw new A(D, `Doctype can only be inserted before an element`);
|
| 355 |
+
}
|
| 356 |
+
}
|
| 357 |
+
function K(e, t, n, r) {
|
| 358 |
+
ce(e, t, n), e.nodeType === z.DOCUMENT_NODE && (r || le)(e, t, n);
|
| 359 |
+
var i = t.parentNode;
|
| 360 |
+
if (i && i.removeChild(t), t.nodeType === C) {
|
| 361 |
+
var a = t.firstChild;
|
| 362 |
+
if (a == null) return t;
|
| 363 |
+
var o = t.lastChild;
|
| 364 |
+
} else a = o = t;
|
| 365 |
+
var s = n ? n.previousSibling : e.lastChild;
|
| 366 |
+
a.previousSibling = s, o.nextSibling = n, s ? s.nextSibling = a : e.firstChild = a, n == null ? e.lastChild = o : n.previousSibling = o;
|
| 367 |
+
do {
|
| 368 |
+
a.parentNode = e;
|
| 369 |
+
var c = e.ownerDocument || e;
|
| 370 |
+
q(a, c);
|
| 371 |
+
} while (a !== o && (a = a.nextSibling));
|
| 372 |
+
return U(e.ownerDocument || e, e), t.nodeType == C && (t.firstChild = t.lastChild = null), t;
|
| 373 |
+
}
|
| 374 |
+
function q(e, t) {
|
| 375 |
+
if (e.ownerDocument !== t) {
|
| 376 |
+
if (e.ownerDocument = t, e.nodeType === p && e.attributes) for (var n = 0; n < e.attributes.length; n++) {
|
| 377 |
+
var r = e.attributes.item(n);
|
| 378 |
+
r && (r.ownerDocument = t);
|
| 379 |
+
}
|
| 380 |
+
for (var i = e.firstChild; i;) q(i, t), i = i.nextSibling;
|
| 381 |
+
}
|
| 382 |
+
}
|
| 383 |
+
function de(e, t) {
|
| 384 |
+
t.parentNode && t.parentNode.removeChild(t), t.parentNode = e, t.previousSibling = e.lastChild, t.nextSibling = null, t.previousSibling ? t.previousSibling.nextSibling = t : e.firstChild = t, e.lastChild = t, U(e.ownerDocument, e, t);
|
| 385 |
+
return q(t, e.ownerDocument || e), t;
|
| 386 |
+
}
|
| 387 |
+
H.prototype = {
|
| 388 |
+
nodeName: `#document`,
|
| 389 |
+
nodeType: x,
|
| 390 |
+
doctype: null,
|
| 391 |
+
documentElement: null,
|
| 392 |
+
_inc: 1,
|
| 393 |
+
insertBefore: function(e, t) {
|
| 394 |
+
if (e.nodeType == C) {
|
| 395 |
+
for (var n = e.firstChild; n;) {
|
| 396 |
+
var r = n.nextSibling;
|
| 397 |
+
this.insertBefore(n, t), n = r;
|
| 398 |
+
}
|
| 399 |
+
return e;
|
| 400 |
+
}
|
| 401 |
+
return K(this, e, t), q(e, this), this.documentElement === null && e.nodeType === p && (this.documentElement = e), e;
|
| 402 |
+
},
|
| 403 |
+
removeChild: function(e) {
|
| 404 |
+
return this.documentElement == e && (this.documentElement = null), ne(this, e);
|
| 405 |
+
},
|
| 406 |
+
replaceChild: function(e, t) {
|
| 407 |
+
K(this, e, t, ue), q(e, this), t && this.removeChild(t), G(e) && (this.documentElement = e);
|
| 408 |
+
},
|
| 409 |
+
importNode: function(e, t) {
|
| 410 |
+
return Ce(this, e, t);
|
| 411 |
+
},
|
| 412 |
+
getElementById: function(e) {
|
| 413 |
+
var t = null;
|
| 414 |
+
return V(this.documentElement, function(n) {
|
| 415 |
+
if (n.nodeType == p && n.getAttribute(`id`) == e) return t = n, !0;
|
| 416 |
+
}), t;
|
| 417 |
+
},
|
| 418 |
+
getElementsByClassName: function(e) {
|
| 419 |
+
var t = c(e);
|
| 420 |
+
return new M(this, function(n) {
|
| 421 |
+
var r = [];
|
| 422 |
+
return t.length > 0 && V(n.documentElement, function(i) {
|
| 423 |
+
if (i !== n && i.nodeType === p) {
|
| 424 |
+
var a = i.getAttribute(`class`);
|
| 425 |
+
if (a) {
|
| 426 |
+
var o = e === a;
|
| 427 |
+
if (!o) {
|
| 428 |
+
var s = c(a);
|
| 429 |
+
o = t.every(l(s));
|
| 430 |
+
}
|
| 431 |
+
o && r.push(i);
|
| 432 |
+
}
|
| 433 |
+
}
|
| 434 |
+
}), r;
|
| 435 |
+
});
|
| 436 |
+
},
|
| 437 |
+
createElement: function(e) {
|
| 438 |
+
var t = new J();
|
| 439 |
+
t.ownerDocument = this, t.nodeName = e, t.tagName = e, t.localName = e, t.childNodes = new j();
|
| 440 |
+
var n = t.attributes = new P();
|
| 441 |
+
return n._ownerElement = t, t;
|
| 442 |
+
},
|
| 443 |
+
createDocumentFragment: function() {
|
| 444 |
+
var e = new Q();
|
| 445 |
+
return e.ownerDocument = this, e.childNodes = new j(), e;
|
| 446 |
+
},
|
| 447 |
+
createTextNode: function(e) {
|
| 448 |
+
var t = new fe();
|
| 449 |
+
return t.ownerDocument = this, t.appendData(e), t;
|
| 450 |
+
},
|
| 451 |
+
createComment: function(e) {
|
| 452 |
+
var t = new pe();
|
| 453 |
+
return t.ownerDocument = this, t.appendData(e), t;
|
| 454 |
+
},
|
| 455 |
+
createCDATASection: function(e) {
|
| 456 |
+
var t = new me();
|
| 457 |
+
return t.ownerDocument = this, t.appendData(e), t;
|
| 458 |
+
},
|
| 459 |
+
createProcessingInstruction: function(e, t) {
|
| 460 |
+
var n = new ve();
|
| 461 |
+
return n.ownerDocument = this, n.tagName = n.nodeName = n.target = e, n.nodeValue = n.data = t, n;
|
| 462 |
+
},
|
| 463 |
+
createAttribute: function(e) {
|
| 464 |
+
var t = new Y();
|
| 465 |
+
return t.ownerDocument = this, t.name = e, t.nodeName = e, t.localName = e, t.specified = !0, t;
|
| 466 |
+
},
|
| 467 |
+
createEntityReference: function(e) {
|
| 468 |
+
var t = new _e();
|
| 469 |
+
return t.ownerDocument = this, t.nodeName = e, t;
|
| 470 |
+
},
|
| 471 |
+
createElementNS: function(e, t) {
|
| 472 |
+
var n = new J(), r = t.split(`:`), i = n.attributes = new P();
|
| 473 |
+
return n.childNodes = new j(), n.ownerDocument = this, n.nodeName = t, n.tagName = t, n.namespaceURI = e, r.length == 2 ? (n.prefix = r[0], n.localName = r[1]) : n.localName = t, i._ownerElement = n, n;
|
| 474 |
+
},
|
| 475 |
+
createAttributeNS: function(e, t) {
|
| 476 |
+
var n = new Y(), r = t.split(`:`);
|
| 477 |
+
return n.ownerDocument = this, n.nodeName = t, n.name = t, n.namespaceURI = e, n.specified = !0, r.length == 2 ? (n.prefix = r[0], n.localName = r[1]) : n.localName = t, n;
|
| 478 |
+
}
|
| 479 |
+
}, d(H, z);
|
| 480 |
+
function J() {
|
| 481 |
+
this._nsMap = {};
|
| 482 |
+
}
|
| 483 |
+
J.prototype = {
|
| 484 |
+
nodeType: p,
|
| 485 |
+
hasAttribute: function(e) {
|
| 486 |
+
return this.getAttributeNode(e) != null;
|
| 487 |
+
},
|
| 488 |
+
getAttribute: function(e) {
|
| 489 |
+
var t = this.getAttributeNode(e);
|
| 490 |
+
return t && t.value || ``;
|
| 491 |
+
},
|
| 492 |
+
getAttributeNode: function(e) {
|
| 493 |
+
return this.attributes.getNamedItem(e);
|
| 494 |
+
},
|
| 495 |
+
setAttribute: function(e, t) {
|
| 496 |
+
var n = this.ownerDocument.createAttribute(e);
|
| 497 |
+
n.value = n.nodeValue = `` + t, this.setAttributeNode(n);
|
| 498 |
+
},
|
| 499 |
+
removeAttribute: function(e) {
|
| 500 |
+
var t = this.getAttributeNode(e);
|
| 501 |
+
t && this.removeAttributeNode(t);
|
| 502 |
+
},
|
| 503 |
+
appendChild: function(e) {
|
| 504 |
+
return e.nodeType === C ? this.insertBefore(e, null) : de(this, e);
|
| 505 |
+
},
|
| 506 |
+
setAttributeNode: function(e) {
|
| 507 |
+
return this.attributes.setNamedItem(e);
|
| 508 |
+
},
|
| 509 |
+
setAttributeNodeNS: function(e) {
|
| 510 |
+
return this.attributes.setNamedItemNS(e);
|
| 511 |
+
},
|
| 512 |
+
removeAttributeNode: function(e) {
|
| 513 |
+
return this.attributes.removeNamedItem(e.nodeName);
|
| 514 |
+
},
|
| 515 |
+
removeAttributeNS: function(e, t) {
|
| 516 |
+
var n = this.getAttributeNodeNS(e, t);
|
| 517 |
+
n && this.removeAttributeNode(n);
|
| 518 |
+
},
|
| 519 |
+
hasAttributeNS: function(e, t) {
|
| 520 |
+
return this.getAttributeNodeNS(e, t) != null;
|
| 521 |
+
},
|
| 522 |
+
getAttributeNS: function(e, t) {
|
| 523 |
+
var n = this.getAttributeNodeNS(e, t);
|
| 524 |
+
return n && n.value || ``;
|
| 525 |
+
},
|
| 526 |
+
setAttributeNS: function(e, t, n) {
|
| 527 |
+
var r = this.ownerDocument.createAttributeNS(e, t);
|
| 528 |
+
r.value = r.nodeValue = `` + n, this.setAttributeNode(r);
|
| 529 |
+
},
|
| 530 |
+
getAttributeNodeNS: function(e, t) {
|
| 531 |
+
return this.attributes.getNamedItemNS(e, t);
|
| 532 |
+
},
|
| 533 |
+
getElementsByTagName: function(e) {
|
| 534 |
+
return new M(this, function(t) {
|
| 535 |
+
var n = [];
|
| 536 |
+
return V(t, function(r) {
|
| 537 |
+
r !== t && r.nodeType == p && (e === `*` || r.tagName == e) && n.push(r);
|
| 538 |
+
}), n;
|
| 539 |
+
});
|
| 540 |
+
},
|
| 541 |
+
getElementsByTagNameNS: function(e, t) {
|
| 542 |
+
return new M(this, function(n) {
|
| 543 |
+
var r = [];
|
| 544 |
+
return V(n, function(i) {
|
| 545 |
+
i !== n && i.nodeType === p && (e === `*` || i.namespaceURI === e) && (t === `*` || i.localName == t) && r.push(i);
|
| 546 |
+
}), r;
|
| 547 |
+
});
|
| 548 |
+
}
|
| 549 |
+
}, H.prototype.getElementsByTagName = J.prototype.getElementsByTagName, H.prototype.getElementsByTagNameNS = J.prototype.getElementsByTagNameNS, d(J, z);
|
| 550 |
+
function Y() {}
|
| 551 |
+
Y.prototype.nodeType = m, d(Y, z);
|
| 552 |
+
function X() {}
|
| 553 |
+
X.prototype = {
|
| 554 |
+
data: ``,
|
| 555 |
+
substringData: function(e, t) {
|
| 556 |
+
return this.data.substring(e, e + t);
|
| 557 |
+
},
|
| 558 |
+
appendData: function(e) {
|
| 559 |
+
e = this.data + e, this.nodeValue = this.data = e, this.length = e.length;
|
| 560 |
+
},
|
| 561 |
+
insertData: function(e, t) {
|
| 562 |
+
this.replaceData(e, 0, t);
|
| 563 |
+
},
|
| 564 |
+
appendChild: function(e) {
|
| 565 |
+
throw Error(E[D]);
|
| 566 |
+
},
|
| 567 |
+
deleteData: function(e, t) {
|
| 568 |
+
this.replaceData(e, t, ``);
|
| 569 |
+
},
|
| 570 |
+
replaceData: function(e, t, n) {
|
| 571 |
+
var r = this.data.substring(0, e), i = this.data.substring(e + t);
|
| 572 |
+
n = r + n + i, this.nodeValue = this.data = n, this.length = n.length;
|
| 573 |
+
}
|
| 574 |
+
}, d(X, z);
|
| 575 |
+
function fe() {}
|
| 576 |
+
fe.prototype = {
|
| 577 |
+
nodeName: `#text`,
|
| 578 |
+
nodeType: h,
|
| 579 |
+
splitText: function(e) {
|
| 580 |
+
var t = this.data, n = t.substring(e);
|
| 581 |
+
t = t.substring(0, e), this.data = this.nodeValue = t, this.length = t.length;
|
| 582 |
+
var r = this.ownerDocument.createTextNode(n);
|
| 583 |
+
return this.parentNode && this.parentNode.insertBefore(r, this.nextSibling), r;
|
| 584 |
+
}
|
| 585 |
+
}, d(fe, X);
|
| 586 |
+
function pe() {}
|
| 587 |
+
pe.prototype = {
|
| 588 |
+
nodeName: `#comment`,
|
| 589 |
+
nodeType: b
|
| 590 |
+
}, d(pe, X);
|
| 591 |
+
function me() {}
|
| 592 |
+
me.prototype = {
|
| 593 |
+
nodeName: `#cdata-section`,
|
| 594 |
+
nodeType: g
|
| 595 |
+
}, d(me, X);
|
| 596 |
+
function Z() {}
|
| 597 |
+
Z.prototype.nodeType = S, d(Z, z);
|
| 598 |
+
function he() {}
|
| 599 |
+
he.prototype.nodeType = w, d(he, z);
|
| 600 |
+
function ge() {}
|
| 601 |
+
ge.prototype.nodeType = v, d(ge, z);
|
| 602 |
+
function _e() {}
|
| 603 |
+
_e.prototype.nodeType = _, d(_e, z);
|
| 604 |
+
function Q() {}
|
| 605 |
+
Q.prototype.nodeName = `#document-fragment`, Q.prototype.nodeType = C, d(Q, z);
|
| 606 |
+
function ve() {}
|
| 607 |
+
ve.prototype.nodeType = y, d(ve, z);
|
| 608 |
+
function ye() {}
|
| 609 |
+
ye.prototype.serializeToString = function(e, t, n) {
|
| 610 |
+
return be.call(e, t, n);
|
| 611 |
+
}, z.prototype.toString = be;
|
| 612 |
+
function be(e, t) {
|
| 613 |
+
var n = [], r = this.nodeType == 9 && this.documentElement || this, i = r.prefix, a = r.namespaceURI;
|
| 614 |
+
if (a && i == null) {
|
| 615 |
+
var i = r.lookupPrefix(a);
|
| 616 |
+
if (i == null) var o = [{
|
| 617 |
+
namespace: a,
|
| 618 |
+
prefix: null
|
| 619 |
+
}];
|
| 620 |
+
}
|
| 621 |
+
return $(this, n, e, t, o), n.join(``);
|
| 622 |
+
}
|
| 623 |
+
function xe(e, t, n) {
|
| 624 |
+
var r = e.prefix || ``, a = e.namespaceURI;
|
| 625 |
+
if (!a || r === `xml` && a === i.XML || a === i.XMLNS) return !1;
|
| 626 |
+
for (var o = n.length; o--;) {
|
| 627 |
+
var s = n[o];
|
| 628 |
+
if (s.prefix === r) return s.namespace !== a;
|
| 629 |
+
}
|
| 630 |
+
return !0;
|
| 631 |
+
}
|
| 632 |
+
function Se(e, t, n) {
|
| 633 |
+
e.push(` `, t, `="`, n.replace(/[<>&"\t\n\r]/g, B), `"`);
|
| 634 |
+
}
|
| 635 |
+
function $(e, t, n, r, a) {
|
| 636 |
+
if (a ||= [], r) if (e = r(e), e) {
|
| 637 |
+
if (typeof e == `string`) {
|
| 638 |
+
t.push(e);
|
| 639 |
+
return;
|
| 640 |
+
}
|
| 641 |
+
} else return;
|
| 642 |
+
switch (e.nodeType) {
|
| 643 |
+
case p:
|
| 644 |
+
var o = e.attributes, s = o.length, c = e.firstChild, l = e.tagName;
|
| 645 |
+
n = i.isHTML(e.namespaceURI) || n;
|
| 646 |
+
var u = l;
|
| 647 |
+
if (!n && !e.prefix && e.namespaceURI) {
|
| 648 |
+
for (var d, f = 0; f < o.length; f++) if (o.item(f).name === `xmlns`) {
|
| 649 |
+
d = o.item(f).value;
|
| 650 |
+
break;
|
| 651 |
+
}
|
| 652 |
+
if (!d) for (var v = a.length - 1; v >= 0; v--) {
|
| 653 |
+
var w = a[v];
|
| 654 |
+
if (w.prefix === `` && w.namespace === e.namespaceURI) {
|
| 655 |
+
d = w.namespace;
|
| 656 |
+
break;
|
| 657 |
+
}
|
| 658 |
+
}
|
| 659 |
+
if (d !== e.namespaceURI) for (var v = a.length - 1; v >= 0; v--) {
|
| 660 |
+
var w = a[v];
|
| 661 |
+
if (w.namespace === e.namespaceURI) {
|
| 662 |
+
w.prefix && (u = w.prefix + `:` + l);
|
| 663 |
+
break;
|
| 664 |
+
}
|
| 665 |
+
}
|
| 666 |
+
}
|
| 667 |
+
t.push(`<`, u);
|
| 668 |
+
for (var T = 0; T < s; T++) {
|
| 669 |
+
var E = o.item(T);
|
| 670 |
+
E.prefix == `xmlns` ? a.push({
|
| 671 |
+
prefix: E.localName,
|
| 672 |
+
namespace: E.value
|
| 673 |
+
}) : E.nodeName == `xmlns` && a.push({
|
| 674 |
+
prefix: ``,
|
| 675 |
+
namespace: E.value
|
| 676 |
+
});
|
| 677 |
+
}
|
| 678 |
+
for (var T = 0; T < s; T++) {
|
| 679 |
+
var E = o.item(T);
|
| 680 |
+
if (xe(E, n, a)) {
|
| 681 |
+
var D = E.prefix || ``, O = E.namespaceURI;
|
| 682 |
+
Se(t, D ? `xmlns:` + D : `xmlns`, O), a.push({
|
| 683 |
+
prefix: D,
|
| 684 |
+
namespace: O
|
| 685 |
+
});
|
| 686 |
+
}
|
| 687 |
+
$(E, t, n, r, a);
|
| 688 |
+
}
|
| 689 |
+
if (l === u && xe(e, n, a)) {
|
| 690 |
+
var D = e.prefix || ``, O = e.namespaceURI;
|
| 691 |
+
Se(t, D ? `xmlns:` + D : `xmlns`, O), a.push({
|
| 692 |
+
prefix: D,
|
| 693 |
+
namespace: O
|
| 694 |
+
});
|
| 695 |
+
}
|
| 696 |
+
if (c || n && !/^(?:meta|link|img|br|hr|input)$/i.test(l)) {
|
| 697 |
+
if (t.push(`>`), n && /^script$/i.test(l)) for (; c;) c.data ? t.push(c.data) : $(c, t, n, r, a.slice()), c = c.nextSibling;
|
| 698 |
+
else for (; c;) $(c, t, n, r, a.slice()), c = c.nextSibling;
|
| 699 |
+
t.push(`</`, u, `>`);
|
| 700 |
+
} else t.push(`/>`);
|
| 701 |
+
return;
|
| 702 |
+
case x:
|
| 703 |
+
case C:
|
| 704 |
+
for (var c = e.firstChild; c;) $(c, t, n, r, a.slice()), c = c.nextSibling;
|
| 705 |
+
return;
|
| 706 |
+
case m: return Se(t, e.name, e.value);
|
| 707 |
+
case h: return t.push(e.data.replace(/[<&>]/g, B));
|
| 708 |
+
case g: return t.push(`<![CDATA[`, e.data, `]]>`);
|
| 709 |
+
case b: return t.push(`<!--`, e.data, `-->`);
|
| 710 |
+
case S:
|
| 711 |
+
var k = e.publicId, A = e.systemId;
|
| 712 |
+
if (t.push(`<!DOCTYPE `, e.name), k) t.push(` PUBLIC `, k), A && A != `.` && t.push(` `, A), t.push(`>`);
|
| 713 |
+
else if (A && A != `.`) t.push(` SYSTEM `, A, `>`);
|
| 714 |
+
else {
|
| 715 |
+
var j = e.internalSubset;
|
| 716 |
+
j && t.push(` [`, j, `]`), t.push(`>`);
|
| 717 |
+
}
|
| 718 |
+
return;
|
| 719 |
+
case y: return t.push(`<?`, e.target, ` `, e.data, `?>`);
|
| 720 |
+
case _: return t.push(`&`, e.nodeName, `;`);
|
| 721 |
+
default: t.push(`??`, e.nodeName);
|
| 722 |
+
}
|
| 723 |
+
}
|
| 724 |
+
function Ce(e, t, n) {
|
| 725 |
+
var r;
|
| 726 |
+
switch (t.nodeType) {
|
| 727 |
+
case p: r = t.cloneNode(!1), r.ownerDocument = e;
|
| 728 |
+
case C: break;
|
| 729 |
+
case m:
|
| 730 |
+
n = !0;
|
| 731 |
+
break;
|
| 732 |
+
}
|
| 733 |
+
if (r ||= t.cloneNode(!1), r.ownerDocument = e, r.parentNode = null, n) for (var i = t.firstChild; i;) r.appendChild(Ce(e, i, n)), i = i.nextSibling;
|
| 734 |
+
return r;
|
| 735 |
+
}
|
| 736 |
+
function we(e, t, n) {
|
| 737 |
+
var r = new t.constructor();
|
| 738 |
+
for (var i in t) if (Object.prototype.hasOwnProperty.call(t, i)) {
|
| 739 |
+
var a = t[i];
|
| 740 |
+
typeof a != `object` && a != r[i] && (r[i] = a);
|
| 741 |
+
}
|
| 742 |
+
switch (t.childNodes && (r.childNodes = new j()), r.ownerDocument = e, r.nodeType) {
|
| 743 |
+
case p:
|
| 744 |
+
var o = t.attributes, s = r.attributes = new P(), c = o.length;
|
| 745 |
+
s._ownerElement = r;
|
| 746 |
+
for (var l = 0; l < c; l++) r.setAttributeNode(we(e, o.item(l), !0));
|
| 747 |
+
break;
|
| 748 |
+
case m: n = !0;
|
| 749 |
+
}
|
| 750 |
+
if (n) for (var u = t.firstChild; u;) r.appendChild(we(e, u, n)), u = u.nextSibling;
|
| 751 |
+
return r;
|
| 752 |
+
}
|
| 753 |
+
function Te(e, t, n) {
|
| 754 |
+
e[t] = n;
|
| 755 |
+
}
|
| 756 |
+
try {
|
| 757 |
+
if (Object.defineProperty) {
|
| 758 |
+
Object.defineProperty(M.prototype, `length`, { get: function() {
|
| 759 |
+
return N(this), this.$$length;
|
| 760 |
+
} }), Object.defineProperty(z.prototype, `textContent`, {
|
| 761 |
+
get: function() {
|
| 762 |
+
return e(this);
|
| 763 |
+
},
|
| 764 |
+
set: function(e) {
|
| 765 |
+
switch (this.nodeType) {
|
| 766 |
+
case p:
|
| 767 |
+
case C:
|
| 768 |
+
for (; this.firstChild;) this.removeChild(this.firstChild);
|
| 769 |
+
(e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e));
|
| 770 |
+
break;
|
| 771 |
+
default: this.data = e, this.value = e, this.nodeValue = e;
|
| 772 |
+
}
|
| 773 |
+
}
|
| 774 |
+
});
|
| 775 |
+
function e(t) {
|
| 776 |
+
switch (t.nodeType) {
|
| 777 |
+
case p:
|
| 778 |
+
case C:
|
| 779 |
+
var n = [];
|
| 780 |
+
for (t = t.firstChild; t;) t.nodeType !== 7 && t.nodeType !== 8 && n.push(e(t)), t = t.nextSibling;
|
| 781 |
+
return n.join(``);
|
| 782 |
+
default: return t.nodeValue;
|
| 783 |
+
}
|
| 784 |
+
}
|
| 785 |
+
Te = function(e, t, n) {
|
| 786 |
+
e[`$$` + t] = n;
|
| 787 |
+
};
|
| 788 |
+
}
|
| 789 |
+
} catch {}
|
| 790 |
+
exports.DocumentType = Z, exports.DOMException = A, exports.DOMImplementation = R, exports.Element = J, exports.Node = z, exports.NodeList = j, exports.XMLSerializer = ye;
|
| 791 |
+
})), r = o$1(((exports) => {
|
| 792 |
+
var n = t().freeze;
|
| 793 |
+
exports.XML_ENTITIES = n({
|
| 794 |
+
amp: `&`,
|
| 795 |
+
apos: `'`,
|
| 796 |
+
gt: `>`,
|
| 797 |
+
lt: `<`,
|
| 798 |
+
quot: `"`
|
| 799 |
+
}), exports.HTML_ENTITIES = n({
|
| 800 |
+
Aacute: `Á`,
|
| 801 |
+
aacute: `á`,
|
| 802 |
+
Abreve: `Ă`,
|
| 803 |
+
abreve: `ă`,
|
| 804 |
+
ac: `∾`,
|
| 805 |
+
acd: `∿`,
|
| 806 |
+
acE: `∾̳`,
|
| 807 |
+
Acirc: `Â`,
|
| 808 |
+
acirc: `â`,
|
| 809 |
+
acute: `´`,
|
| 810 |
+
Acy: `А`,
|
| 811 |
+
acy: `а`,
|
| 812 |
+
AElig: `Æ`,
|
| 813 |
+
aelig: `æ`,
|
| 814 |
+
af: ``,
|
| 815 |
+
Afr: `𝔄`,
|
| 816 |
+
afr: `𝔞`,
|
| 817 |
+
Agrave: `À`,
|
| 818 |
+
agrave: `à`,
|
| 819 |
+
alefsym: `ℵ`,
|
| 820 |
+
aleph: `ℵ`,
|
| 821 |
+
Alpha: `Α`,
|
| 822 |
+
alpha: `α`,
|
| 823 |
+
Amacr: `Ā`,
|
| 824 |
+
amacr: `ā`,
|
| 825 |
+
amalg: `⨿`,
|
| 826 |
+
AMP: `&`,
|
| 827 |
+
amp: `&`,
|
| 828 |
+
And: `⩓`,
|
| 829 |
+
and: `∧`,
|
| 830 |
+
andand: `⩕`,
|
| 831 |
+
andd: `⩜`,
|
| 832 |
+
andslope: `⩘`,
|
| 833 |
+
andv: `⩚`,
|
| 834 |
+
ang: `∠`,
|
| 835 |
+
ange: `⦤`,
|
| 836 |
+
angle: `∠`,
|
| 837 |
+
angmsd: `∡`,
|
| 838 |
+
angmsdaa: `⦨`,
|
| 839 |
+
angmsdab: `⦩`,
|
| 840 |
+
angmsdac: `⦪`,
|
| 841 |
+
angmsdad: `⦫`,
|
| 842 |
+
angmsdae: `⦬`,
|
| 843 |
+
angmsdaf: `⦭`,
|
| 844 |
+
angmsdag: `⦮`,
|
| 845 |
+
angmsdah: `⦯`,
|
| 846 |
+
angrt: `∟`,
|
| 847 |
+
angrtvb: `⊾`,
|
| 848 |
+
angrtvbd: `⦝`,
|
| 849 |
+
angsph: `∢`,
|
| 850 |
+
angst: `Å`,
|
| 851 |
+
angzarr: `⍼`,
|
| 852 |
+
Aogon: `Ą`,
|
| 853 |
+
aogon: `ą`,
|
| 854 |
+
Aopf: `𝔸`,
|
| 855 |
+
aopf: `𝕒`,
|
| 856 |
+
ap: `≈`,
|
| 857 |
+
apacir: `⩯`,
|
| 858 |
+
apE: `⩰`,
|
| 859 |
+
ape: `≊`,
|
| 860 |
+
apid: `≋`,
|
| 861 |
+
apos: `'`,
|
| 862 |
+
ApplyFunction: ``,
|
| 863 |
+
approx: `≈`,
|
| 864 |
+
approxeq: `≊`,
|
| 865 |
+
Aring: `Å`,
|
| 866 |
+
aring: `å`,
|
| 867 |
+
Ascr: `𝒜`,
|
| 868 |
+
ascr: `𝒶`,
|
| 869 |
+
Assign: `≔`,
|
| 870 |
+
ast: `*`,
|
| 871 |
+
asymp: `≈`,
|
| 872 |
+
asympeq: `≍`,
|
| 873 |
+
Atilde: `Ã`,
|
| 874 |
+
atilde: `ã`,
|
| 875 |
+
Auml: `Ä`,
|
| 876 |
+
auml: `ä`,
|
| 877 |
+
awconint: `∳`,
|
| 878 |
+
awint: `⨑`,
|
| 879 |
+
backcong: `≌`,
|
| 880 |
+
backepsilon: `϶`,
|
| 881 |
+
backprime: `‵`,
|
| 882 |
+
backsim: `∽`,
|
| 883 |
+
backsimeq: `⋍`,
|
| 884 |
+
Backslash: `∖`,
|
| 885 |
+
Barv: `⫧`,
|
| 886 |
+
barvee: `⊽`,
|
| 887 |
+
Barwed: `⌆`,
|
| 888 |
+
barwed: `⌅`,
|
| 889 |
+
barwedge: `⌅`,
|
| 890 |
+
bbrk: `⎵`,
|
| 891 |
+
bbrktbrk: `⎶`,
|
| 892 |
+
bcong: `≌`,
|
| 893 |
+
Bcy: `Б`,
|
| 894 |
+
bcy: `б`,
|
| 895 |
+
bdquo: `„`,
|
| 896 |
+
becaus: `∵`,
|
| 897 |
+
Because: `∵`,
|
| 898 |
+
because: `∵`,
|
| 899 |
+
bemptyv: `⦰`,
|
| 900 |
+
bepsi: `϶`,
|
| 901 |
+
bernou: `ℬ`,
|
| 902 |
+
Bernoullis: `ℬ`,
|
| 903 |
+
Beta: `Β`,
|
| 904 |
+
beta: `β`,
|
| 905 |
+
beth: `ℶ`,
|
| 906 |
+
between: `≬`,
|
| 907 |
+
Bfr: `𝔅`,
|
| 908 |
+
bfr: `𝔟`,
|
| 909 |
+
bigcap: `⋂`,
|
| 910 |
+
bigcirc: `◯`,
|
| 911 |
+
bigcup: `⋃`,
|
| 912 |
+
bigodot: `⨀`,
|
| 913 |
+
bigoplus: `⨁`,
|
| 914 |
+
bigotimes: `⨂`,
|
| 915 |
+
bigsqcup: `⨆`,
|
| 916 |
+
bigstar: `★`,
|
| 917 |
+
bigtriangledown: `▽`,
|
| 918 |
+
bigtriangleup: `△`,
|
| 919 |
+
biguplus: `⨄`,
|
| 920 |
+
bigvee: `⋁`,
|
| 921 |
+
bigwedge: `⋀`,
|
| 922 |
+
bkarow: `⤍`,
|
| 923 |
+
blacklozenge: `⧫`,
|
| 924 |
+
blacksquare: `▪`,
|
| 925 |
+
blacktriangle: `▴`,
|
| 926 |
+
blacktriangledown: `▾`,
|
| 927 |
+
blacktriangleleft: `◂`,
|
| 928 |
+
blacktriangleright: `▸`,
|
| 929 |
+
blank: `␣`,
|
| 930 |
+
blk12: `▒`,
|
| 931 |
+
blk14: `░`,
|
| 932 |
+
blk34: `▓`,
|
| 933 |
+
block: `█`,
|
| 934 |
+
bne: `=⃥`,
|
| 935 |
+
bnequiv: `≡⃥`,
|
| 936 |
+
bNot: `⫭`,
|
| 937 |
+
bnot: `⌐`,
|
| 938 |
+
Bopf: `𝔹`,
|
| 939 |
+
bopf: `𝕓`,
|
| 940 |
+
bot: `⊥`,
|
| 941 |
+
bottom: `⊥`,
|
| 942 |
+
bowtie: `⋈`,
|
| 943 |
+
boxbox: `⧉`,
|
| 944 |
+
boxDL: `╗`,
|
| 945 |
+
boxDl: `╖`,
|
| 946 |
+
boxdL: `╕`,
|
| 947 |
+
boxdl: `┐`,
|
| 948 |
+
boxDR: `╔`,
|
| 949 |
+
boxDr: `╓`,
|
| 950 |
+
boxdR: `╒`,
|
| 951 |
+
boxdr: `┌`,
|
| 952 |
+
boxH: `═`,
|
| 953 |
+
boxh: `─`,
|
| 954 |
+
boxHD: `╦`,
|
| 955 |
+
boxHd: `╤`,
|
| 956 |
+
boxhD: `╥`,
|
| 957 |
+
boxhd: `┬`,
|
| 958 |
+
boxHU: `╩`,
|
| 959 |
+
boxHu: `╧`,
|
| 960 |
+
boxhU: `╨`,
|
| 961 |
+
boxhu: `┴`,
|
| 962 |
+
boxminus: `⊟`,
|
| 963 |
+
boxplus: `⊞`,
|
| 964 |
+
boxtimes: `⊠`,
|
| 965 |
+
boxUL: `╝`,
|
| 966 |
+
boxUl: `╜`,
|
| 967 |
+
boxuL: `╛`,
|
| 968 |
+
boxul: `┘`,
|
| 969 |
+
boxUR: `╚`,
|
| 970 |
+
boxUr: `╙`,
|
| 971 |
+
boxuR: `╘`,
|
| 972 |
+
boxur: `└`,
|
| 973 |
+
boxV: `║`,
|
| 974 |
+
boxv: `│`,
|
| 975 |
+
boxVH: `╬`,
|
| 976 |
+
boxVh: `╫`,
|
| 977 |
+
boxvH: `╪`,
|
| 978 |
+
boxvh: `┼`,
|
| 979 |
+
boxVL: `╣`,
|
| 980 |
+
boxVl: `╢`,
|
| 981 |
+
boxvL: `╡`,
|
| 982 |
+
boxvl: `┤`,
|
| 983 |
+
boxVR: `╠`,
|
| 984 |
+
boxVr: `╟`,
|
| 985 |
+
boxvR: `╞`,
|
| 986 |
+
boxvr: `├`,
|
| 987 |
+
bprime: `‵`,
|
| 988 |
+
Breve: `˘`,
|
| 989 |
+
breve: `˘`,
|
| 990 |
+
brvbar: `¦`,
|
| 991 |
+
Bscr: `ℬ`,
|
| 992 |
+
bscr: `𝒷`,
|
| 993 |
+
bsemi: `⁏`,
|
| 994 |
+
bsim: `∽`,
|
| 995 |
+
bsime: `⋍`,
|
| 996 |
+
bsol: `\\`,
|
| 997 |
+
bsolb: `⧅`,
|
| 998 |
+
bsolhsub: `⟈`,
|
| 999 |
+
bull: `•`,
|
| 1000 |
+
bullet: `•`,
|
| 1001 |
+
bump: `≎`,
|
| 1002 |
+
bumpE: `⪮`,
|
| 1003 |
+
bumpe: `≏`,
|
| 1004 |
+
Bumpeq: `≎`,
|
| 1005 |
+
bumpeq: `≏`,
|
| 1006 |
+
Cacute: `Ć`,
|
| 1007 |
+
cacute: `ć`,
|
| 1008 |
+
Cap: `⋒`,
|
| 1009 |
+
cap: `∩`,
|
| 1010 |
+
capand: `⩄`,
|
| 1011 |
+
capbrcup: `⩉`,
|
| 1012 |
+
capcap: `⩋`,
|
| 1013 |
+
capcup: `⩇`,
|
| 1014 |
+
capdot: `⩀`,
|
| 1015 |
+
CapitalDifferentialD: `ⅅ`,
|
| 1016 |
+
caps: `∩︀`,
|
| 1017 |
+
caret: `⁁`,
|
| 1018 |
+
caron: `ˇ`,
|
| 1019 |
+
Cayleys: `ℭ`,
|
| 1020 |
+
ccaps: `⩍`,
|
| 1021 |
+
Ccaron: `Č`,
|
| 1022 |
+
ccaron: `č`,
|
| 1023 |
+
Ccedil: `Ç`,
|
| 1024 |
+
ccedil: `ç`,
|
| 1025 |
+
Ccirc: `Ĉ`,
|
| 1026 |
+
ccirc: `ĉ`,
|
| 1027 |
+
Cconint: `∰`,
|
| 1028 |
+
ccups: `⩌`,
|
| 1029 |
+
ccupssm: `⩐`,
|
| 1030 |
+
Cdot: `Ċ`,
|
| 1031 |
+
cdot: `ċ`,
|
| 1032 |
+
cedil: `¸`,
|
| 1033 |
+
Cedilla: `¸`,
|
| 1034 |
+
cemptyv: `⦲`,
|
| 1035 |
+
cent: `¢`,
|
| 1036 |
+
CenterDot: `·`,
|
| 1037 |
+
centerdot: `·`,
|
| 1038 |
+
Cfr: `ℭ`,
|
| 1039 |
+
cfr: `𝔠`,
|
| 1040 |
+
CHcy: `Ч`,
|
| 1041 |
+
chcy: `ч`,
|
| 1042 |
+
check: `✓`,
|
| 1043 |
+
checkmark: `✓`,
|
| 1044 |
+
Chi: `Χ`,
|
| 1045 |
+
chi: `χ`,
|
| 1046 |
+
cir: `○`,
|
| 1047 |
+
circ: `ˆ`,
|
| 1048 |
+
circeq: `≗`,
|
| 1049 |
+
circlearrowleft: `↺`,
|
| 1050 |
+
circlearrowright: `↻`,
|
| 1051 |
+
circledast: `⊛`,
|
| 1052 |
+
circledcirc: `⊚`,
|
| 1053 |
+
circleddash: `⊝`,
|
| 1054 |
+
CircleDot: `⊙`,
|
| 1055 |
+
circledR: `®`,
|
| 1056 |
+
circledS: `Ⓢ`,
|
| 1057 |
+
CircleMinus: `⊖`,
|
| 1058 |
+
CirclePlus: `⊕`,
|
| 1059 |
+
CircleTimes: `⊗`,
|
| 1060 |
+
cirE: `⧃`,
|
| 1061 |
+
cire: `≗`,
|
| 1062 |
+
cirfnint: `⨐`,
|
| 1063 |
+
cirmid: `⫯`,
|
| 1064 |
+
cirscir: `⧂`,
|
| 1065 |
+
ClockwiseContourIntegral: `∲`,
|
| 1066 |
+
CloseCurlyDoubleQuote: `”`,
|
| 1067 |
+
CloseCurlyQuote: `’`,
|
| 1068 |
+
clubs: `♣`,
|
| 1069 |
+
clubsuit: `♣`,
|
| 1070 |
+
Colon: `∷`,
|
| 1071 |
+
colon: `:`,
|
| 1072 |
+
Colone: `⩴`,
|
| 1073 |
+
colone: `≔`,
|
| 1074 |
+
coloneq: `≔`,
|
| 1075 |
+
comma: `,`,
|
| 1076 |
+
commat: `@`,
|
| 1077 |
+
comp: `∁`,
|
| 1078 |
+
compfn: `∘`,
|
| 1079 |
+
complement: `∁`,
|
| 1080 |
+
complexes: `ℂ`,
|
| 1081 |
+
cong: `≅`,
|
| 1082 |
+
congdot: `⩭`,
|
| 1083 |
+
Congruent: `≡`,
|
| 1084 |
+
Conint: `∯`,
|
| 1085 |
+
conint: `∮`,
|
| 1086 |
+
ContourIntegral: `∮`,
|
| 1087 |
+
Copf: `ℂ`,
|
| 1088 |
+
copf: `𝕔`,
|
| 1089 |
+
coprod: `∐`,
|
| 1090 |
+
Coproduct: `∐`,
|
| 1091 |
+
COPY: `©`,
|
| 1092 |
+
copy: `©`,
|
| 1093 |
+
copysr: `℗`,
|
| 1094 |
+
CounterClockwiseContourIntegral: `∳`,
|
| 1095 |
+
crarr: `↵`,
|
| 1096 |
+
Cross: `⨯`,
|
| 1097 |
+
cross: `✗`,
|
| 1098 |
+
Cscr: `𝒞`,
|
| 1099 |
+
cscr: `𝒸`,
|
| 1100 |
+
csub: `⫏`,
|
| 1101 |
+
csube: `⫑`,
|
| 1102 |
+
csup: `⫐`,
|
| 1103 |
+
csupe: `⫒`,
|
| 1104 |
+
ctdot: `⋯`,
|
| 1105 |
+
cudarrl: `⤸`,
|
| 1106 |
+
cudarrr: `⤵`,
|
| 1107 |
+
cuepr: `⋞`,
|
| 1108 |
+
cuesc: `⋟`,
|
| 1109 |
+
cularr: `↶`,
|
| 1110 |
+
cularrp: `⤽`,
|
| 1111 |
+
Cup: `⋓`,
|
| 1112 |
+
cup: `∪`,
|
| 1113 |
+
cupbrcap: `⩈`,
|
| 1114 |
+
CupCap: `≍`,
|
| 1115 |
+
cupcap: `⩆`,
|
| 1116 |
+
cupcup: `⩊`,
|
| 1117 |
+
cupdot: `⊍`,
|
| 1118 |
+
cupor: `⩅`,
|
| 1119 |
+
cups: `∪︀`,
|
| 1120 |
+
curarr: `↷`,
|
| 1121 |
+
curarrm: `⤼`,
|
| 1122 |
+
curlyeqprec: `⋞`,
|
| 1123 |
+
curlyeqsucc: `⋟`,
|
| 1124 |
+
curlyvee: `⋎`,
|
| 1125 |
+
curlywedge: `⋏`,
|
| 1126 |
+
curren: `¤`,
|
| 1127 |
+
curvearrowleft: `↶`,
|
| 1128 |
+
curvearrowright: `↷`,
|
| 1129 |
+
cuvee: `⋎`,
|
| 1130 |
+
cuwed: `⋏`,
|
| 1131 |
+
cwconint: `∲`,
|
| 1132 |
+
cwint: `∱`,
|
| 1133 |
+
cylcty: `⌭`,
|
| 1134 |
+
Dagger: `‡`,
|
| 1135 |
+
dagger: `†`,
|
| 1136 |
+
daleth: `ℸ`,
|
| 1137 |
+
Darr: `↡`,
|
| 1138 |
+
dArr: `⇓`,
|
| 1139 |
+
darr: `↓`,
|
| 1140 |
+
dash: `‐`,
|
| 1141 |
+
Dashv: `⫤`,
|
| 1142 |
+
dashv: `⊣`,
|
| 1143 |
+
dbkarow: `⤏`,
|
| 1144 |
+
dblac: `˝`,
|
| 1145 |
+
Dcaron: `Ď`,
|
| 1146 |
+
dcaron: `ď`,
|
| 1147 |
+
Dcy: `Д`,
|
| 1148 |
+
dcy: `д`,
|
| 1149 |
+
DD: `ⅅ`,
|
| 1150 |
+
dd: `ⅆ`,
|
| 1151 |
+
ddagger: `‡`,
|
| 1152 |
+
ddarr: `⇊`,
|
| 1153 |
+
DDotrahd: `⤑`,
|
| 1154 |
+
ddotseq: `⩷`,
|
| 1155 |
+
deg: `°`,
|
| 1156 |
+
Del: `∇`,
|
| 1157 |
+
Delta: `Δ`,
|
| 1158 |
+
delta: `δ`,
|
| 1159 |
+
demptyv: `⦱`,
|
| 1160 |
+
dfisht: `⥿`,
|
| 1161 |
+
Dfr: `𝔇`,
|
| 1162 |
+
dfr: `𝔡`,
|
| 1163 |
+
dHar: `⥥`,
|
| 1164 |
+
dharl: `⇃`,
|
| 1165 |
+
dharr: `⇂`,
|
| 1166 |
+
DiacriticalAcute: `´`,
|
| 1167 |
+
DiacriticalDot: `˙`,
|
| 1168 |
+
DiacriticalDoubleAcute: `˝`,
|
| 1169 |
+
DiacriticalGrave: "`",
|
| 1170 |
+
DiacriticalTilde: `˜`,
|
| 1171 |
+
diam: `⋄`,
|
| 1172 |
+
Diamond: `⋄`,
|
| 1173 |
+
diamond: `⋄`,
|
| 1174 |
+
diamondsuit: `♦`,
|
| 1175 |
+
diams: `♦`,
|
| 1176 |
+
die: `¨`,
|
| 1177 |
+
DifferentialD: `ⅆ`,
|
| 1178 |
+
digamma: `ϝ`,
|
| 1179 |
+
disin: `⋲`,
|
| 1180 |
+
div: `÷`,
|
| 1181 |
+
divide: `÷`,
|
| 1182 |
+
divideontimes: `⋇`,
|
| 1183 |
+
divonx: `⋇`,
|
| 1184 |
+
DJcy: `Ђ`,
|
| 1185 |
+
djcy: `ђ`,
|
| 1186 |
+
dlcorn: `⌞`,
|
| 1187 |
+
dlcrop: `⌍`,
|
| 1188 |
+
dollar: `$`,
|
| 1189 |
+
Dopf: `𝔻`,
|
| 1190 |
+
dopf: `𝕕`,
|
| 1191 |
+
Dot: `¨`,
|
| 1192 |
+
dot: `˙`,
|
| 1193 |
+
DotDot: `⃜`,
|
| 1194 |
+
doteq: `≐`,
|
| 1195 |
+
doteqdot: `≑`,
|
| 1196 |
+
DotEqual: `≐`,
|
| 1197 |
+
dotminus: `∸`,
|
| 1198 |
+
dotplus: `∔`,
|
| 1199 |
+
dotsquare: `⊡`,
|
| 1200 |
+
doublebarwedge: `⌆`,
|
| 1201 |
+
DoubleContourIntegral: `∯`,
|
| 1202 |
+
DoubleDot: `¨`,
|
| 1203 |
+
DoubleDownArrow: `⇓`,
|
| 1204 |
+
DoubleLeftArrow: `⇐`,
|
| 1205 |
+
DoubleLeftRightArrow: `⇔`,
|
| 1206 |
+
DoubleLeftTee: `⫤`,
|
| 1207 |
+
DoubleLongLeftArrow: `⟸`,
|
| 1208 |
+
DoubleLongLeftRightArrow: `⟺`,
|
| 1209 |
+
DoubleLongRightArrow: `⟹`,
|
| 1210 |
+
DoubleRightArrow: `⇒`,
|
| 1211 |
+
DoubleRightTee: `⊨`,
|
| 1212 |
+
DoubleUpArrow: `⇑`,
|
| 1213 |
+
DoubleUpDownArrow: `⇕`,
|
| 1214 |
+
DoubleVerticalBar: `∥`,
|
| 1215 |
+
DownArrow: `↓`,
|
| 1216 |
+
Downarrow: `⇓`,
|
| 1217 |
+
downarrow: `↓`,
|
| 1218 |
+
DownArrowBar: `⤓`,
|
| 1219 |
+
DownArrowUpArrow: `⇵`,
|
| 1220 |
+
DownBreve: `̑`,
|
| 1221 |
+
downdownarrows: `⇊`,
|
| 1222 |
+
downharpoonleft: `⇃`,
|
| 1223 |
+
downharpoonright: `⇂`,
|
| 1224 |
+
DownLeftRightVector: `⥐`,
|
| 1225 |
+
DownLeftTeeVector: `⥞`,
|
| 1226 |
+
DownLeftVector: `↽`,
|
| 1227 |
+
DownLeftVectorBar: `⥖`,
|
| 1228 |
+
DownRightTeeVector: `⥟`,
|
| 1229 |
+
DownRightVector: `⇁`,
|
| 1230 |
+
DownRightVectorBar: `⥗`,
|
| 1231 |
+
DownTee: `⊤`,
|
| 1232 |
+
DownTeeArrow: `↧`,
|
| 1233 |
+
drbkarow: `⤐`,
|
| 1234 |
+
drcorn: `⌟`,
|
| 1235 |
+
drcrop: `⌌`,
|
| 1236 |
+
Dscr: `𝒟`,
|
| 1237 |
+
dscr: `𝒹`,
|
| 1238 |
+
DScy: `Ѕ`,
|
| 1239 |
+
dscy: `ѕ`,
|
| 1240 |
+
dsol: `⧶`,
|
| 1241 |
+
Dstrok: `Đ`,
|
| 1242 |
+
dstrok: `đ`,
|
| 1243 |
+
dtdot: `⋱`,
|
| 1244 |
+
dtri: `▿`,
|
| 1245 |
+
dtrif: `▾`,
|
| 1246 |
+
duarr: `⇵`,
|
| 1247 |
+
duhar: `⥯`,
|
| 1248 |
+
dwangle: `⦦`,
|
| 1249 |
+
DZcy: `Џ`,
|
| 1250 |
+
dzcy: `џ`,
|
| 1251 |
+
dzigrarr: `⟿`,
|
| 1252 |
+
Eacute: `É`,
|
| 1253 |
+
eacute: `é`,
|
| 1254 |
+
easter: `⩮`,
|
| 1255 |
+
Ecaron: `Ě`,
|
| 1256 |
+
ecaron: `ě`,
|
| 1257 |
+
ecir: `≖`,
|
| 1258 |
+
Ecirc: `Ê`,
|
| 1259 |
+
ecirc: `ê`,
|
| 1260 |
+
ecolon: `≕`,
|
| 1261 |
+
Ecy: `Э`,
|
| 1262 |
+
ecy: `э`,
|
| 1263 |
+
eDDot: `⩷`,
|
| 1264 |
+
Edot: `Ė`,
|
| 1265 |
+
eDot: `≑`,
|
| 1266 |
+
edot: `ė`,
|
| 1267 |
+
ee: `ⅇ`,
|
| 1268 |
+
efDot: `≒`,
|
| 1269 |
+
Efr: `𝔈`,
|
| 1270 |
+
efr: `𝔢`,
|
| 1271 |
+
eg: `⪚`,
|
| 1272 |
+
Egrave: `È`,
|
| 1273 |
+
egrave: `è`,
|
| 1274 |
+
egs: `⪖`,
|
| 1275 |
+
egsdot: `⪘`,
|
| 1276 |
+
el: `⪙`,
|
| 1277 |
+
Element: `∈`,
|
| 1278 |
+
elinters: `⏧`,
|
| 1279 |
+
ell: `ℓ`,
|
| 1280 |
+
els: `⪕`,
|
| 1281 |
+
elsdot: `⪗`,
|
| 1282 |
+
Emacr: `Ē`,
|
| 1283 |
+
emacr: `ē`,
|
| 1284 |
+
empty: `∅`,
|
| 1285 |
+
emptyset: `∅`,
|
| 1286 |
+
EmptySmallSquare: `◻`,
|
| 1287 |
+
emptyv: `∅`,
|
| 1288 |
+
EmptyVerySmallSquare: `▫`,
|
| 1289 |
+
emsp: ` `,
|
| 1290 |
+
emsp13: ` `,
|
| 1291 |
+
emsp14: ` `,
|
| 1292 |
+
ENG: `Ŋ`,
|
| 1293 |
+
eng: `ŋ`,
|
| 1294 |
+
ensp: ` `,
|
| 1295 |
+
Eogon: `Ę`,
|
| 1296 |
+
eogon: `ę`,
|
| 1297 |
+
Eopf: `𝔼`,
|
| 1298 |
+
eopf: `𝕖`,
|
| 1299 |
+
epar: `⋕`,
|
| 1300 |
+
eparsl: `⧣`,
|
| 1301 |
+
eplus: `⩱`,
|
| 1302 |
+
epsi: `ε`,
|
| 1303 |
+
Epsilon: `Ε`,
|
| 1304 |
+
epsilon: `ε`,
|
| 1305 |
+
epsiv: `ϵ`,
|
| 1306 |
+
eqcirc: `≖`,
|
| 1307 |
+
eqcolon: `≕`,
|
| 1308 |
+
eqsim: `≂`,
|
| 1309 |
+
eqslantgtr: `⪖`,
|
| 1310 |
+
eqslantless: `⪕`,
|
| 1311 |
+
Equal: `⩵`,
|
| 1312 |
+
equals: `=`,
|
| 1313 |
+
EqualTilde: `≂`,
|
| 1314 |
+
equest: `≟`,
|
| 1315 |
+
Equilibrium: `⇌`,
|
| 1316 |
+
equiv: `≡`,
|
| 1317 |
+
equivDD: `⩸`,
|
| 1318 |
+
eqvparsl: `⧥`,
|
| 1319 |
+
erarr: `⥱`,
|
| 1320 |
+
erDot: `≓`,
|
| 1321 |
+
Escr: `ℰ`,
|
| 1322 |
+
escr: `ℯ`,
|
| 1323 |
+
esdot: `≐`,
|
| 1324 |
+
Esim: `⩳`,
|
| 1325 |
+
esim: `≂`,
|
| 1326 |
+
Eta: `Η`,
|
| 1327 |
+
eta: `η`,
|
| 1328 |
+
ETH: `Ð`,
|
| 1329 |
+
eth: `ð`,
|
| 1330 |
+
Euml: `Ë`,
|
| 1331 |
+
euml: `ë`,
|
| 1332 |
+
euro: `€`,
|
| 1333 |
+
excl: `!`,
|
| 1334 |
+
exist: `∃`,
|
| 1335 |
+
Exists: `∃`,
|
| 1336 |
+
expectation: `ℰ`,
|
| 1337 |
+
ExponentialE: `ⅇ`,
|
| 1338 |
+
exponentiale: `ⅇ`,
|
| 1339 |
+
fallingdotseq: `≒`,
|
| 1340 |
+
Fcy: `Ф`,
|
| 1341 |
+
fcy: `ф`,
|
| 1342 |
+
female: `♀`,
|
| 1343 |
+
ffilig: `ffi`,
|
| 1344 |
+
fflig: `ff`,
|
| 1345 |
+
ffllig: `ffl`,
|
| 1346 |
+
Ffr: `𝔉`,
|
| 1347 |
+
ffr: `𝔣`,
|
| 1348 |
+
filig: `fi`,
|
| 1349 |
+
FilledSmallSquare: `◼`,
|
| 1350 |
+
FilledVerySmallSquare: `▪`,
|
| 1351 |
+
fjlig: `fj`,
|
| 1352 |
+
flat: `♭`,
|
| 1353 |
+
fllig: `fl`,
|
| 1354 |
+
fltns: `▱`,
|
| 1355 |
+
fnof: `ƒ`,
|
| 1356 |
+
Fopf: `𝔽`,
|
| 1357 |
+
fopf: `𝕗`,
|
| 1358 |
+
ForAll: `∀`,
|
| 1359 |
+
forall: `∀`,
|
| 1360 |
+
fork: `⋔`,
|
| 1361 |
+
forkv: `⫙`,
|
| 1362 |
+
Fouriertrf: `ℱ`,
|
| 1363 |
+
fpartint: `⨍`,
|
| 1364 |
+
frac12: `½`,
|
| 1365 |
+
frac13: `⅓`,
|
| 1366 |
+
frac14: `¼`,
|
| 1367 |
+
frac15: `⅕`,
|
| 1368 |
+
frac16: `⅙`,
|
| 1369 |
+
frac18: `⅛`,
|
| 1370 |
+
frac23: `⅔`,
|
| 1371 |
+
frac25: `⅖`,
|
| 1372 |
+
frac34: `¾`,
|
| 1373 |
+
frac35: `⅗`,
|
| 1374 |
+
frac38: `⅜`,
|
| 1375 |
+
frac45: `⅘`,
|
| 1376 |
+
frac56: `⅚`,
|
| 1377 |
+
frac58: `⅝`,
|
| 1378 |
+
frac78: `⅞`,
|
| 1379 |
+
frasl: `⁄`,
|
| 1380 |
+
frown: `⌢`,
|
| 1381 |
+
Fscr: `ℱ`,
|
| 1382 |
+
fscr: `𝒻`,
|
| 1383 |
+
gacute: `ǵ`,
|
| 1384 |
+
Gamma: `Γ`,
|
| 1385 |
+
gamma: `γ`,
|
| 1386 |
+
Gammad: `Ϝ`,
|
| 1387 |
+
gammad: `ϝ`,
|
| 1388 |
+
gap: `⪆`,
|
| 1389 |
+
Gbreve: `Ğ`,
|
| 1390 |
+
gbreve: `ğ`,
|
| 1391 |
+
Gcedil: `Ģ`,
|
| 1392 |
+
Gcirc: `Ĝ`,
|
| 1393 |
+
gcirc: `ĝ`,
|
| 1394 |
+
Gcy: `Г`,
|
| 1395 |
+
gcy: `г`,
|
| 1396 |
+
Gdot: `Ġ`,
|
| 1397 |
+
gdot: `ġ`,
|
| 1398 |
+
gE: `≧`,
|
| 1399 |
+
ge: `≥`,
|
| 1400 |
+
gEl: `⪌`,
|
| 1401 |
+
gel: `⋛`,
|
| 1402 |
+
geq: `≥`,
|
| 1403 |
+
geqq: `≧`,
|
| 1404 |
+
geqslant: `⩾`,
|
| 1405 |
+
ges: `⩾`,
|
| 1406 |
+
gescc: `⪩`,
|
| 1407 |
+
gesdot: `⪀`,
|
| 1408 |
+
gesdoto: `⪂`,
|
| 1409 |
+
gesdotol: `⪄`,
|
| 1410 |
+
gesl: `⋛︀`,
|
| 1411 |
+
gesles: `⪔`,
|
| 1412 |
+
Gfr: `𝔊`,
|
| 1413 |
+
gfr: `𝔤`,
|
| 1414 |
+
Gg: `⋙`,
|
| 1415 |
+
gg: `≫`,
|
| 1416 |
+
ggg: `⋙`,
|
| 1417 |
+
gimel: `ℷ`,
|
| 1418 |
+
GJcy: `Ѓ`,
|
| 1419 |
+
gjcy: `ѓ`,
|
| 1420 |
+
gl: `≷`,
|
| 1421 |
+
gla: `⪥`,
|
| 1422 |
+
glE: `⪒`,
|
| 1423 |
+
glj: `⪤`,
|
| 1424 |
+
gnap: `⪊`,
|
| 1425 |
+
gnapprox: `⪊`,
|
| 1426 |
+
gnE: `≩`,
|
| 1427 |
+
gne: `⪈`,
|
| 1428 |
+
gneq: `⪈`,
|
| 1429 |
+
gneqq: `≩`,
|
| 1430 |
+
gnsim: `⋧`,
|
| 1431 |
+
Gopf: `𝔾`,
|
| 1432 |
+
gopf: `𝕘`,
|
| 1433 |
+
grave: "`",
|
| 1434 |
+
GreaterEqual: `≥`,
|
| 1435 |
+
GreaterEqualLess: `⋛`,
|
| 1436 |
+
GreaterFullEqual: `≧`,
|
| 1437 |
+
GreaterGreater: `⪢`,
|
| 1438 |
+
GreaterLess: `≷`,
|
| 1439 |
+
GreaterSlantEqual: `⩾`,
|
| 1440 |
+
GreaterTilde: `≳`,
|
| 1441 |
+
Gscr: `𝒢`,
|
| 1442 |
+
gscr: `ℊ`,
|
| 1443 |
+
gsim: `≳`,
|
| 1444 |
+
gsime: `⪎`,
|
| 1445 |
+
gsiml: `⪐`,
|
| 1446 |
+
Gt: `≫`,
|
| 1447 |
+
GT: `>`,
|
| 1448 |
+
gt: `>`,
|
| 1449 |
+
gtcc: `⪧`,
|
| 1450 |
+
gtcir: `⩺`,
|
| 1451 |
+
gtdot: `⋗`,
|
| 1452 |
+
gtlPar: `⦕`,
|
| 1453 |
+
gtquest: `⩼`,
|
| 1454 |
+
gtrapprox: `⪆`,
|
| 1455 |
+
gtrarr: `⥸`,
|
| 1456 |
+
gtrdot: `⋗`,
|
| 1457 |
+
gtreqless: `⋛`,
|
| 1458 |
+
gtreqqless: `⪌`,
|
| 1459 |
+
gtrless: `≷`,
|
| 1460 |
+
gtrsim: `≳`,
|
| 1461 |
+
gvertneqq: `≩︀`,
|
| 1462 |
+
gvnE: `≩︀`,
|
| 1463 |
+
Hacek: `ˇ`,
|
| 1464 |
+
hairsp: ` `,
|
| 1465 |
+
half: `½`,
|
| 1466 |
+
hamilt: `ℋ`,
|
| 1467 |
+
HARDcy: `Ъ`,
|
| 1468 |
+
hardcy: `ъ`,
|
| 1469 |
+
hArr: `⇔`,
|
| 1470 |
+
harr: `↔`,
|
| 1471 |
+
harrcir: `⥈`,
|
| 1472 |
+
harrw: `↭`,
|
| 1473 |
+
Hat: `^`,
|
| 1474 |
+
hbar: `ℏ`,
|
| 1475 |
+
Hcirc: `Ĥ`,
|
| 1476 |
+
hcirc: `ĥ`,
|
| 1477 |
+
hearts: `♥`,
|
| 1478 |
+
heartsuit: `♥`,
|
| 1479 |
+
hellip: `…`,
|
| 1480 |
+
hercon: `⊹`,
|
| 1481 |
+
Hfr: `ℌ`,
|
| 1482 |
+
hfr: `𝔥`,
|
| 1483 |
+
HilbertSpace: `ℋ`,
|
| 1484 |
+
hksearow: `⤥`,
|
| 1485 |
+
hkswarow: `⤦`,
|
| 1486 |
+
hoarr: `⇿`,
|
| 1487 |
+
homtht: `∻`,
|
| 1488 |
+
hookleftarrow: `↩`,
|
| 1489 |
+
hookrightarrow: `↪`,
|
| 1490 |
+
Hopf: `ℍ`,
|
| 1491 |
+
hopf: `𝕙`,
|
| 1492 |
+
horbar: `―`,
|
| 1493 |
+
HorizontalLine: `─`,
|
| 1494 |
+
Hscr: `ℋ`,
|
| 1495 |
+
hscr: `𝒽`,
|
| 1496 |
+
hslash: `ℏ`,
|
| 1497 |
+
Hstrok: `Ħ`,
|
| 1498 |
+
hstrok: `ħ`,
|
| 1499 |
+
HumpDownHump: `≎`,
|
| 1500 |
+
HumpEqual: `≏`,
|
| 1501 |
+
hybull: `⁃`,
|
| 1502 |
+
hyphen: `‐`,
|
| 1503 |
+
Iacute: `Í`,
|
| 1504 |
+
iacute: `í`,
|
| 1505 |
+
ic: ``,
|
| 1506 |
+
Icirc: `Î`,
|
| 1507 |
+
icirc: `î`,
|
| 1508 |
+
Icy: `И`,
|
| 1509 |
+
icy: `и`,
|
| 1510 |
+
Idot: `İ`,
|
| 1511 |
+
IEcy: `Е`,
|
| 1512 |
+
iecy: `е`,
|
| 1513 |
+
iexcl: `¡`,
|
| 1514 |
+
iff: `⇔`,
|
| 1515 |
+
Ifr: `ℑ`,
|
| 1516 |
+
ifr: `𝔦`,
|
| 1517 |
+
Igrave: `Ì`,
|
| 1518 |
+
igrave: `ì`,
|
| 1519 |
+
ii: `ⅈ`,
|
| 1520 |
+
iiiint: `⨌`,
|
| 1521 |
+
iiint: `∭`,
|
| 1522 |
+
iinfin: `⧜`,
|
| 1523 |
+
iiota: `℩`,
|
| 1524 |
+
IJlig: `IJ`,
|
| 1525 |
+
ijlig: `ij`,
|
| 1526 |
+
Im: `ℑ`,
|
| 1527 |
+
Imacr: `Ī`,
|
| 1528 |
+
imacr: `ī`,
|
| 1529 |
+
image: `ℑ`,
|
| 1530 |
+
ImaginaryI: `ⅈ`,
|
| 1531 |
+
imagline: `ℐ`,
|
| 1532 |
+
imagpart: `ℑ`,
|
| 1533 |
+
imath: `ı`,
|
| 1534 |
+
imof: `⊷`,
|
| 1535 |
+
imped: `Ƶ`,
|
| 1536 |
+
Implies: `⇒`,
|
| 1537 |
+
in: `∈`,
|
| 1538 |
+
incare: `℅`,
|
| 1539 |
+
infin: `∞`,
|
| 1540 |
+
infintie: `⧝`,
|
| 1541 |
+
inodot: `ı`,
|
| 1542 |
+
Int: `∬`,
|
| 1543 |
+
int: `∫`,
|
| 1544 |
+
intcal: `⊺`,
|
| 1545 |
+
integers: `ℤ`,
|
| 1546 |
+
Integral: `∫`,
|
| 1547 |
+
intercal: `⊺`,
|
| 1548 |
+
Intersection: `⋂`,
|
| 1549 |
+
intlarhk: `⨗`,
|
| 1550 |
+
intprod: `⨼`,
|
| 1551 |
+
InvisibleComma: ``,
|
| 1552 |
+
InvisibleTimes: ``,
|
| 1553 |
+
IOcy: `Ё`,
|
| 1554 |
+
iocy: `ё`,
|
| 1555 |
+
Iogon: `Į`,
|
| 1556 |
+
iogon: `į`,
|
| 1557 |
+
Iopf: `𝕀`,
|
| 1558 |
+
iopf: `𝕚`,
|
| 1559 |
+
Iota: `Ι`,
|
| 1560 |
+
iota: `ι`,
|
| 1561 |
+
iprod: `⨼`,
|
| 1562 |
+
iquest: `¿`,
|
| 1563 |
+
Iscr: `ℐ`,
|
| 1564 |
+
iscr: `𝒾`,
|
| 1565 |
+
isin: `∈`,
|
| 1566 |
+
isindot: `⋵`,
|
| 1567 |
+
isinE: `⋹`,
|
| 1568 |
+
isins: `⋴`,
|
| 1569 |
+
isinsv: `⋳`,
|
| 1570 |
+
isinv: `∈`,
|
| 1571 |
+
it: ``,
|
| 1572 |
+
Itilde: `Ĩ`,
|
| 1573 |
+
itilde: `ĩ`,
|
| 1574 |
+
Iukcy: `І`,
|
| 1575 |
+
iukcy: `і`,
|
| 1576 |
+
Iuml: `Ï`,
|
| 1577 |
+
iuml: `ï`,
|
| 1578 |
+
Jcirc: `Ĵ`,
|
| 1579 |
+
jcirc: `ĵ`,
|
| 1580 |
+
Jcy: `Й`,
|
| 1581 |
+
jcy: `й`,
|
| 1582 |
+
Jfr: `𝔍`,
|
| 1583 |
+
jfr: `𝔧`,
|
| 1584 |
+
jmath: `ȷ`,
|
| 1585 |
+
Jopf: `𝕁`,
|
| 1586 |
+
jopf: `𝕛`,
|
| 1587 |
+
Jscr: `𝒥`,
|
| 1588 |
+
jscr: `𝒿`,
|
| 1589 |
+
Jsercy: `Ј`,
|
| 1590 |
+
jsercy: `ј`,
|
| 1591 |
+
Jukcy: `Є`,
|
| 1592 |
+
jukcy: `є`,
|
| 1593 |
+
Kappa: `Κ`,
|
| 1594 |
+
kappa: `κ`,
|
| 1595 |
+
kappav: `ϰ`,
|
| 1596 |
+
Kcedil: `Ķ`,
|
| 1597 |
+
kcedil: `ķ`,
|
| 1598 |
+
Kcy: `К`,
|
| 1599 |
+
kcy: `к`,
|
| 1600 |
+
Kfr: `𝔎`,
|
| 1601 |
+
kfr: `𝔨`,
|
| 1602 |
+
kgreen: `ĸ`,
|
| 1603 |
+
KHcy: `Х`,
|
| 1604 |
+
khcy: `х`,
|
| 1605 |
+
KJcy: `Ќ`,
|
| 1606 |
+
kjcy: `ќ`,
|
| 1607 |
+
Kopf: `𝕂`,
|
| 1608 |
+
kopf: `𝕜`,
|
| 1609 |
+
Kscr: `𝒦`,
|
| 1610 |
+
kscr: `𝓀`,
|
| 1611 |
+
lAarr: `⇚`,
|
| 1612 |
+
Lacute: `Ĺ`,
|
| 1613 |
+
lacute: `ĺ`,
|
| 1614 |
+
laemptyv: `⦴`,
|
| 1615 |
+
lagran: `ℒ`,
|
| 1616 |
+
Lambda: `Λ`,
|
| 1617 |
+
lambda: `λ`,
|
| 1618 |
+
Lang: `⟪`,
|
| 1619 |
+
lang: `⟨`,
|
| 1620 |
+
langd: `⦑`,
|
| 1621 |
+
langle: `⟨`,
|
| 1622 |
+
lap: `⪅`,
|
| 1623 |
+
Laplacetrf: `ℒ`,
|
| 1624 |
+
laquo: `«`,
|
| 1625 |
+
Larr: `↞`,
|
| 1626 |
+
lArr: `⇐`,
|
| 1627 |
+
larr: `←`,
|
| 1628 |
+
larrb: `⇤`,
|
| 1629 |
+
larrbfs: `⤟`,
|
| 1630 |
+
larrfs: `⤝`,
|
| 1631 |
+
larrhk: `↩`,
|
| 1632 |
+
larrlp: `↫`,
|
| 1633 |
+
larrpl: `⤹`,
|
| 1634 |
+
larrsim: `⥳`,
|
| 1635 |
+
larrtl: `↢`,
|
| 1636 |
+
lat: `⪫`,
|
| 1637 |
+
lAtail: `⤛`,
|
| 1638 |
+
latail: `⤙`,
|
| 1639 |
+
late: `⪭`,
|
| 1640 |
+
lates: `⪭︀`,
|
| 1641 |
+
lBarr: `⤎`,
|
| 1642 |
+
lbarr: `⤌`,
|
| 1643 |
+
lbbrk: `❲`,
|
| 1644 |
+
lbrace: `{`,
|
| 1645 |
+
lbrack: `[`,
|
| 1646 |
+
lbrke: `⦋`,
|
| 1647 |
+
lbrksld: `⦏`,
|
| 1648 |
+
lbrkslu: `⦍`,
|
| 1649 |
+
Lcaron: `Ľ`,
|
| 1650 |
+
lcaron: `ľ`,
|
| 1651 |
+
Lcedil: `Ļ`,
|
| 1652 |
+
lcedil: `ļ`,
|
| 1653 |
+
lceil: `⌈`,
|
| 1654 |
+
lcub: `{`,
|
| 1655 |
+
Lcy: `Л`,
|
| 1656 |
+
lcy: `л`,
|
| 1657 |
+
ldca: `⤶`,
|
| 1658 |
+
ldquo: `“`,
|
| 1659 |
+
ldquor: `„`,
|
| 1660 |
+
ldrdhar: `⥧`,
|
| 1661 |
+
ldrushar: `⥋`,
|
| 1662 |
+
ldsh: `↲`,
|
| 1663 |
+
lE: `≦`,
|
| 1664 |
+
le: `≤`,
|
| 1665 |
+
LeftAngleBracket: `⟨`,
|
| 1666 |
+
LeftArrow: `←`,
|
| 1667 |
+
Leftarrow: `⇐`,
|
| 1668 |
+
leftarrow: `←`,
|
| 1669 |
+
LeftArrowBar: `⇤`,
|
| 1670 |
+
LeftArrowRightArrow: `⇆`,
|
| 1671 |
+
leftarrowtail: `↢`,
|
| 1672 |
+
LeftCeiling: `⌈`,
|
| 1673 |
+
LeftDoubleBracket: `⟦`,
|
| 1674 |
+
LeftDownTeeVector: `⥡`,
|
| 1675 |
+
LeftDownVector: `⇃`,
|
| 1676 |
+
LeftDownVectorBar: `⥙`,
|
| 1677 |
+
LeftFloor: `⌊`,
|
| 1678 |
+
leftharpoondown: `↽`,
|
| 1679 |
+
leftharpoonup: `↼`,
|
| 1680 |
+
leftleftarrows: `⇇`,
|
| 1681 |
+
LeftRightArrow: `↔`,
|
| 1682 |
+
Leftrightarrow: `⇔`,
|
| 1683 |
+
leftrightarrow: `↔`,
|
| 1684 |
+
leftrightarrows: `⇆`,
|
| 1685 |
+
leftrightharpoons: `⇋`,
|
| 1686 |
+
leftrightsquigarrow: `↭`,
|
| 1687 |
+
LeftRightVector: `⥎`,
|
| 1688 |
+
LeftTee: `⊣`,
|
| 1689 |
+
LeftTeeArrow: `↤`,
|
| 1690 |
+
LeftTeeVector: `⥚`,
|
| 1691 |
+
leftthreetimes: `⋋`,
|
| 1692 |
+
LeftTriangle: `⊲`,
|
| 1693 |
+
LeftTriangleBar: `⧏`,
|
| 1694 |
+
LeftTriangleEqual: `⊴`,
|
| 1695 |
+
LeftUpDownVector: `⥑`,
|
| 1696 |
+
LeftUpTeeVector: `⥠`,
|
| 1697 |
+
LeftUpVector: `↿`,
|
| 1698 |
+
LeftUpVectorBar: `⥘`,
|
| 1699 |
+
LeftVector: `↼`,
|
| 1700 |
+
LeftVectorBar: `⥒`,
|
| 1701 |
+
lEg: `⪋`,
|
| 1702 |
+
leg: `⋚`,
|
| 1703 |
+
leq: `≤`,
|
| 1704 |
+
leqq: `≦`,
|
| 1705 |
+
leqslant: `⩽`,
|
| 1706 |
+
les: `⩽`,
|
| 1707 |
+
lescc: `⪨`,
|
| 1708 |
+
lesdot: `⩿`,
|
| 1709 |
+
lesdoto: `⪁`,
|
| 1710 |
+
lesdotor: `⪃`,
|
| 1711 |
+
lesg: `⋚︀`,
|
| 1712 |
+
lesges: `⪓`,
|
| 1713 |
+
lessapprox: `⪅`,
|
| 1714 |
+
lessdot: `⋖`,
|
| 1715 |
+
lesseqgtr: `⋚`,
|
| 1716 |
+
lesseqqgtr: `⪋`,
|
| 1717 |
+
LessEqualGreater: `⋚`,
|
| 1718 |
+
LessFullEqual: `≦`,
|
| 1719 |
+
LessGreater: `≶`,
|
| 1720 |
+
lessgtr: `≶`,
|
| 1721 |
+
LessLess: `⪡`,
|
| 1722 |
+
lesssim: `≲`,
|
| 1723 |
+
LessSlantEqual: `⩽`,
|
| 1724 |
+
LessTilde: `≲`,
|
| 1725 |
+
lfisht: `⥼`,
|
| 1726 |
+
lfloor: `⌊`,
|
| 1727 |
+
Lfr: `𝔏`,
|
| 1728 |
+
lfr: `𝔩`,
|
| 1729 |
+
lg: `≶`,
|
| 1730 |
+
lgE: `⪑`,
|
| 1731 |
+
lHar: `⥢`,
|
| 1732 |
+
lhard: `↽`,
|
| 1733 |
+
lharu: `↼`,
|
| 1734 |
+
lharul: `⥪`,
|
| 1735 |
+
lhblk: `▄`,
|
| 1736 |
+
LJcy: `Љ`,
|
| 1737 |
+
ljcy: `љ`,
|
| 1738 |
+
Ll: `⋘`,
|
| 1739 |
+
ll: `≪`,
|
| 1740 |
+
llarr: `⇇`,
|
| 1741 |
+
llcorner: `⌞`,
|
| 1742 |
+
Lleftarrow: `⇚`,
|
| 1743 |
+
llhard: `⥫`,
|
| 1744 |
+
lltri: `◺`,
|
| 1745 |
+
Lmidot: `Ŀ`,
|
| 1746 |
+
lmidot: `ŀ`,
|
| 1747 |
+
lmoust: `⎰`,
|
| 1748 |
+
lmoustache: `⎰`,
|
| 1749 |
+
lnap: `⪉`,
|
| 1750 |
+
lnapprox: `⪉`,
|
| 1751 |
+
lnE: `≨`,
|
| 1752 |
+
lne: `⪇`,
|
| 1753 |
+
lneq: `⪇`,
|
| 1754 |
+
lneqq: `≨`,
|
| 1755 |
+
lnsim: `⋦`,
|
| 1756 |
+
loang: `⟬`,
|
| 1757 |
+
loarr: `⇽`,
|
| 1758 |
+
lobrk: `⟦`,
|
| 1759 |
+
LongLeftArrow: `⟵`,
|
| 1760 |
+
Longleftarrow: `⟸`,
|
| 1761 |
+
longleftarrow: `⟵`,
|
| 1762 |
+
LongLeftRightArrow: `⟷`,
|
| 1763 |
+
Longleftrightarrow: `⟺`,
|
| 1764 |
+
longleftrightarrow: `⟷`,
|
| 1765 |
+
longmapsto: `⟼`,
|
| 1766 |
+
LongRightArrow: `⟶`,
|
| 1767 |
+
Longrightarrow: `⟹`,
|
| 1768 |
+
longrightarrow: `⟶`,
|
| 1769 |
+
looparrowleft: `↫`,
|
| 1770 |
+
looparrowright: `↬`,
|
| 1771 |
+
lopar: `⦅`,
|
| 1772 |
+
Lopf: `𝕃`,
|
| 1773 |
+
lopf: `𝕝`,
|
| 1774 |
+
loplus: `⨭`,
|
| 1775 |
+
lotimes: `⨴`,
|
| 1776 |
+
lowast: `∗`,
|
| 1777 |
+
lowbar: `_`,
|
| 1778 |
+
LowerLeftArrow: `↙`,
|
| 1779 |
+
LowerRightArrow: `↘`,
|
| 1780 |
+
loz: `◊`,
|
| 1781 |
+
lozenge: `◊`,
|
| 1782 |
+
lozf: `⧫`,
|
| 1783 |
+
lpar: `(`,
|
| 1784 |
+
lparlt: `⦓`,
|
| 1785 |
+
lrarr: `⇆`,
|
| 1786 |
+
lrcorner: `⌟`,
|
| 1787 |
+
lrhar: `⇋`,
|
| 1788 |
+
lrhard: `⥭`,
|
| 1789 |
+
lrm: ``,
|
| 1790 |
+
lrtri: `⊿`,
|
| 1791 |
+
lsaquo: `‹`,
|
| 1792 |
+
Lscr: `ℒ`,
|
| 1793 |
+
lscr: `𝓁`,
|
| 1794 |
+
Lsh: `↰`,
|
| 1795 |
+
lsh: `↰`,
|
| 1796 |
+
lsim: `≲`,
|
| 1797 |
+
lsime: `⪍`,
|
| 1798 |
+
lsimg: `⪏`,
|
| 1799 |
+
lsqb: `[`,
|
| 1800 |
+
lsquo: `‘`,
|
| 1801 |
+
lsquor: `‚`,
|
| 1802 |
+
Lstrok: `Ł`,
|
| 1803 |
+
lstrok: `ł`,
|
| 1804 |
+
Lt: `≪`,
|
| 1805 |
+
LT: `<`,
|
| 1806 |
+
lt: `<`,
|
| 1807 |
+
ltcc: `⪦`,
|
| 1808 |
+
ltcir: `⩹`,
|
| 1809 |
+
ltdot: `⋖`,
|
| 1810 |
+
lthree: `⋋`,
|
| 1811 |
+
ltimes: `⋉`,
|
| 1812 |
+
ltlarr: `⥶`,
|
| 1813 |
+
ltquest: `⩻`,
|
| 1814 |
+
ltri: `◃`,
|
| 1815 |
+
ltrie: `⊴`,
|
| 1816 |
+
ltrif: `◂`,
|
| 1817 |
+
ltrPar: `⦖`,
|
| 1818 |
+
lurdshar: `⥊`,
|
| 1819 |
+
luruhar: `⥦`,
|
| 1820 |
+
lvertneqq: `≨︀`,
|
| 1821 |
+
lvnE: `≨︀`,
|
| 1822 |
+
macr: `¯`,
|
| 1823 |
+
male: `♂`,
|
| 1824 |
+
malt: `✠`,
|
| 1825 |
+
maltese: `✠`,
|
| 1826 |
+
Map: `⤅`,
|
| 1827 |
+
map: `↦`,
|
| 1828 |
+
mapsto: `↦`,
|
| 1829 |
+
mapstodown: `↧`,
|
| 1830 |
+
mapstoleft: `↤`,
|
| 1831 |
+
mapstoup: `↥`,
|
| 1832 |
+
marker: `▮`,
|
| 1833 |
+
mcomma: `⨩`,
|
| 1834 |
+
Mcy: `М`,
|
| 1835 |
+
mcy: `м`,
|
| 1836 |
+
mdash: `—`,
|
| 1837 |
+
mDDot: `∺`,
|
| 1838 |
+
measuredangle: `∡`,
|
| 1839 |
+
MediumSpace: ` `,
|
| 1840 |
+
Mellintrf: `ℳ`,
|
| 1841 |
+
Mfr: `𝔐`,
|
| 1842 |
+
mfr: `𝔪`,
|
| 1843 |
+
mho: `℧`,
|
| 1844 |
+
micro: `µ`,
|
| 1845 |
+
mid: `∣`,
|
| 1846 |
+
midast: `*`,
|
| 1847 |
+
midcir: `⫰`,
|
| 1848 |
+
middot: `·`,
|
| 1849 |
+
minus: `−`,
|
| 1850 |
+
minusb: `⊟`,
|
| 1851 |
+
minusd: `∸`,
|
| 1852 |
+
minusdu: `⨪`,
|
| 1853 |
+
MinusPlus: `∓`,
|
| 1854 |
+
mlcp: `⫛`,
|
| 1855 |
+
mldr: `…`,
|
| 1856 |
+
mnplus: `∓`,
|
| 1857 |
+
models: `⊧`,
|
| 1858 |
+
Mopf: `𝕄`,
|
| 1859 |
+
mopf: `𝕞`,
|
| 1860 |
+
mp: `∓`,
|
| 1861 |
+
Mscr: `ℳ`,
|
| 1862 |
+
mscr: `𝓂`,
|
| 1863 |
+
mstpos: `∾`,
|
| 1864 |
+
Mu: `Μ`,
|
| 1865 |
+
mu: `μ`,
|
| 1866 |
+
multimap: `⊸`,
|
| 1867 |
+
mumap: `⊸`,
|
| 1868 |
+
nabla: `∇`,
|
| 1869 |
+
Nacute: `Ń`,
|
| 1870 |
+
nacute: `ń`,
|
| 1871 |
+
nang: `∠⃒`,
|
| 1872 |
+
nap: `≉`,
|
| 1873 |
+
napE: `⩰̸`,
|
| 1874 |
+
napid: `≋̸`,
|
| 1875 |
+
napos: `ʼn`,
|
| 1876 |
+
napprox: `≉`,
|
| 1877 |
+
natur: `♮`,
|
| 1878 |
+
natural: `♮`,
|
| 1879 |
+
naturals: `ℕ`,
|
| 1880 |
+
nbsp: `\xA0`,
|
| 1881 |
+
nbump: `≎̸`,
|
| 1882 |
+
nbumpe: `≏̸`,
|
| 1883 |
+
ncap: `⩃`,
|
| 1884 |
+
Ncaron: `Ň`,
|
| 1885 |
+
ncaron: `ň`,
|
| 1886 |
+
Ncedil: `Ņ`,
|
| 1887 |
+
ncedil: `ņ`,
|
| 1888 |
+
ncong: `≇`,
|
| 1889 |
+
ncongdot: `⩭̸`,
|
| 1890 |
+
ncup: `⩂`,
|
| 1891 |
+
Ncy: `Н`,
|
| 1892 |
+
ncy: `н`,
|
| 1893 |
+
ndash: `–`,
|
| 1894 |
+
ne: `≠`,
|
| 1895 |
+
nearhk: `⤤`,
|
| 1896 |
+
neArr: `⇗`,
|
| 1897 |
+
nearr: `↗`,
|
| 1898 |
+
nearrow: `↗`,
|
| 1899 |
+
nedot: `≐̸`,
|
| 1900 |
+
NegativeMediumSpace: ``,
|
| 1901 |
+
NegativeThickSpace: ``,
|
| 1902 |
+
NegativeThinSpace: ``,
|
| 1903 |
+
NegativeVeryThinSpace: ``,
|
| 1904 |
+
nequiv: `≢`,
|
| 1905 |
+
nesear: `⤨`,
|
| 1906 |
+
nesim: `≂̸`,
|
| 1907 |
+
NestedGreaterGreater: `≫`,
|
| 1908 |
+
NestedLessLess: `≪`,
|
| 1909 |
+
NewLine: `
|
| 1910 |
+
`,
|
| 1911 |
+
nexist: `∄`,
|
| 1912 |
+
nexists: `∄`,
|
| 1913 |
+
Nfr: `𝔑`,
|
| 1914 |
+
nfr: `𝔫`,
|
| 1915 |
+
ngE: `≧̸`,
|
| 1916 |
+
nge: `≱`,
|
| 1917 |
+
ngeq: `≱`,
|
| 1918 |
+
ngeqq: `≧̸`,
|
| 1919 |
+
ngeqslant: `⩾̸`,
|
| 1920 |
+
nges: `⩾̸`,
|
| 1921 |
+
nGg: `⋙̸`,
|
| 1922 |
+
ngsim: `≵`,
|
| 1923 |
+
nGt: `≫⃒`,
|
| 1924 |
+
ngt: `≯`,
|
| 1925 |
+
ngtr: `≯`,
|
| 1926 |
+
nGtv: `≫̸`,
|
| 1927 |
+
nhArr: `⇎`,
|
| 1928 |
+
nharr: `↮`,
|
| 1929 |
+
nhpar: `⫲`,
|
| 1930 |
+
ni: `∋`,
|
| 1931 |
+
nis: `⋼`,
|
| 1932 |
+
nisd: `⋺`,
|
| 1933 |
+
niv: `∋`,
|
| 1934 |
+
NJcy: `Њ`,
|
| 1935 |
+
njcy: `њ`,
|
| 1936 |
+
nlArr: `⇍`,
|
| 1937 |
+
nlarr: `↚`,
|
| 1938 |
+
nldr: `‥`,
|
| 1939 |
+
nlE: `≦̸`,
|
| 1940 |
+
nle: `≰`,
|
| 1941 |
+
nLeftarrow: `⇍`,
|
| 1942 |
+
nleftarrow: `↚`,
|
| 1943 |
+
nLeftrightarrow: `⇎`,
|
| 1944 |
+
nleftrightarrow: `↮`,
|
| 1945 |
+
nleq: `≰`,
|
| 1946 |
+
nleqq: `≦̸`,
|
| 1947 |
+
nleqslant: `⩽̸`,
|
| 1948 |
+
nles: `⩽̸`,
|
| 1949 |
+
nless: `≮`,
|
| 1950 |
+
nLl: `⋘̸`,
|
| 1951 |
+
nlsim: `≴`,
|
| 1952 |
+
nLt: `≪⃒`,
|
| 1953 |
+
nlt: `≮`,
|
| 1954 |
+
nltri: `⋪`,
|
| 1955 |
+
nltrie: `⋬`,
|
| 1956 |
+
nLtv: `≪̸`,
|
| 1957 |
+
nmid: `∤`,
|
| 1958 |
+
NoBreak: ``,
|
| 1959 |
+
NonBreakingSpace: `\xA0`,
|
| 1960 |
+
Nopf: `ℕ`,
|
| 1961 |
+
nopf: `𝕟`,
|
| 1962 |
+
Not: `⫬`,
|
| 1963 |
+
not: `¬`,
|
| 1964 |
+
NotCongruent: `≢`,
|
| 1965 |
+
NotCupCap: `≭`,
|
| 1966 |
+
NotDoubleVerticalBar: `∦`,
|
| 1967 |
+
NotElement: `∉`,
|
| 1968 |
+
NotEqual: `≠`,
|
| 1969 |
+
NotEqualTilde: `≂̸`,
|
| 1970 |
+
NotExists: `∄`,
|
| 1971 |
+
NotGreater: `≯`,
|
| 1972 |
+
NotGreaterEqual: `≱`,
|
| 1973 |
+
NotGreaterFullEqual: `≧̸`,
|
| 1974 |
+
NotGreaterGreater: `≫̸`,
|
| 1975 |
+
NotGreaterLess: `≹`,
|
| 1976 |
+
NotGreaterSlantEqual: `⩾̸`,
|
| 1977 |
+
NotGreaterTilde: `≵`,
|
| 1978 |
+
NotHumpDownHump: `≎̸`,
|
| 1979 |
+
NotHumpEqual: `≏̸`,
|
| 1980 |
+
notin: `∉`,
|
| 1981 |
+
notindot: `⋵̸`,
|
| 1982 |
+
notinE: `⋹̸`,
|
| 1983 |
+
notinva: `∉`,
|
| 1984 |
+
notinvb: `⋷`,
|
| 1985 |
+
notinvc: `⋶`,
|
| 1986 |
+
NotLeftTriangle: `⋪`,
|
| 1987 |
+
NotLeftTriangleBar: `⧏̸`,
|
| 1988 |
+
NotLeftTriangleEqual: `⋬`,
|
| 1989 |
+
NotLess: `≮`,
|
| 1990 |
+
NotLessEqual: `≰`,
|
| 1991 |
+
NotLessGreater: `≸`,
|
| 1992 |
+
NotLessLess: `≪̸`,
|
| 1993 |
+
NotLessSlantEqual: `⩽̸`,
|
| 1994 |
+
NotLessTilde: `≴`,
|
| 1995 |
+
NotNestedGreaterGreater: `⪢̸`,
|
| 1996 |
+
NotNestedLessLess: `⪡̸`,
|
| 1997 |
+
notni: `∌`,
|
| 1998 |
+
notniva: `∌`,
|
| 1999 |
+
notnivb: `⋾`,
|
| 2000 |
+
notnivc: `⋽`,
|
| 2001 |
+
NotPrecedes: `⊀`,
|
| 2002 |
+
NotPrecedesEqual: `⪯̸`,
|
| 2003 |
+
NotPrecedesSlantEqual: `⋠`,
|
| 2004 |
+
NotReverseElement: `∌`,
|
| 2005 |
+
NotRightTriangle: `⋫`,
|
| 2006 |
+
NotRightTriangleBar: `⧐̸`,
|
| 2007 |
+
NotRightTriangleEqual: `⋭`,
|
| 2008 |
+
NotSquareSubset: `⊏̸`,
|
| 2009 |
+
NotSquareSubsetEqual: `⋢`,
|
| 2010 |
+
NotSquareSuperset: `⊐̸`,
|
| 2011 |
+
NotSquareSupersetEqual: `⋣`,
|
| 2012 |
+
NotSubset: `⊂⃒`,
|
| 2013 |
+
NotSubsetEqual: `⊈`,
|
| 2014 |
+
NotSucceeds: `⊁`,
|
| 2015 |
+
NotSucceedsEqual: `⪰̸`,
|
| 2016 |
+
NotSucceedsSlantEqual: `⋡`,
|
| 2017 |
+
NotSucceedsTilde: `≿̸`,
|
| 2018 |
+
NotSuperset: `⊃⃒`,
|
| 2019 |
+
NotSupersetEqual: `⊉`,
|
| 2020 |
+
NotTilde: `≁`,
|
| 2021 |
+
NotTildeEqual: `≄`,
|
| 2022 |
+
NotTildeFullEqual: `≇`,
|
| 2023 |
+
NotTildeTilde: `≉`,
|
| 2024 |
+
NotVerticalBar: `∤`,
|
| 2025 |
+
npar: `∦`,
|
| 2026 |
+
nparallel: `∦`,
|
| 2027 |
+
nparsl: `⫽⃥`,
|
| 2028 |
+
npart: `∂̸`,
|
| 2029 |
+
npolint: `⨔`,
|
| 2030 |
+
npr: `⊀`,
|
| 2031 |
+
nprcue: `⋠`,
|
| 2032 |
+
npre: `⪯̸`,
|
| 2033 |
+
nprec: `⊀`,
|
| 2034 |
+
npreceq: `⪯̸`,
|
| 2035 |
+
nrArr: `⇏`,
|
| 2036 |
+
nrarr: `↛`,
|
| 2037 |
+
nrarrc: `⤳̸`,
|
| 2038 |
+
nrarrw: `↝̸`,
|
| 2039 |
+
nRightarrow: `⇏`,
|
| 2040 |
+
nrightarrow: `↛`,
|
| 2041 |
+
nrtri: `⋫`,
|
| 2042 |
+
nrtrie: `⋭`,
|
| 2043 |
+
nsc: `⊁`,
|
| 2044 |
+
nsccue: `⋡`,
|
| 2045 |
+
nsce: `⪰̸`,
|
| 2046 |
+
Nscr: `𝒩`,
|
| 2047 |
+
nscr: `𝓃`,
|
| 2048 |
+
nshortmid: `∤`,
|
| 2049 |
+
nshortparallel: `∦`,
|
| 2050 |
+
nsim: `≁`,
|
| 2051 |
+
nsime: `≄`,
|
| 2052 |
+
nsimeq: `≄`,
|
| 2053 |
+
nsmid: `∤`,
|
| 2054 |
+
nspar: `∦`,
|
| 2055 |
+
nsqsube: `⋢`,
|
| 2056 |
+
nsqsupe: `⋣`,
|
| 2057 |
+
nsub: `⊄`,
|
| 2058 |
+
nsubE: `⫅̸`,
|
| 2059 |
+
nsube: `⊈`,
|
| 2060 |
+
nsubset: `⊂⃒`,
|
| 2061 |
+
nsubseteq: `⊈`,
|
| 2062 |
+
nsubseteqq: `⫅̸`,
|
| 2063 |
+
nsucc: `⊁`,
|
| 2064 |
+
nsucceq: `⪰̸`,
|
| 2065 |
+
nsup: `⊅`,
|
| 2066 |
+
nsupE: `⫆̸`,
|
| 2067 |
+
nsupe: `⊉`,
|
| 2068 |
+
nsupset: `⊃⃒`,
|
| 2069 |
+
nsupseteq: `⊉`,
|
| 2070 |
+
nsupseteqq: `⫆̸`,
|
| 2071 |
+
ntgl: `≹`,
|
| 2072 |
+
Ntilde: `Ñ`,
|
| 2073 |
+
ntilde: `ñ`,
|
| 2074 |
+
ntlg: `≸`,
|
| 2075 |
+
ntriangleleft: `⋪`,
|
| 2076 |
+
ntrianglelefteq: `⋬`,
|
| 2077 |
+
ntriangleright: `⋫`,
|
| 2078 |
+
ntrianglerighteq: `⋭`,
|
| 2079 |
+
Nu: `Ν`,
|
| 2080 |
+
nu: `ν`,
|
| 2081 |
+
num: `#`,
|
| 2082 |
+
numero: `№`,
|
| 2083 |
+
numsp: ` `,
|
| 2084 |
+
nvap: `≍⃒`,
|
| 2085 |
+
nVDash: `⊯`,
|
| 2086 |
+
nVdash: `⊮`,
|
| 2087 |
+
nvDash: `⊭`,
|
| 2088 |
+
nvdash: `⊬`,
|
| 2089 |
+
nvge: `≥⃒`,
|
| 2090 |
+
nvgt: `>⃒`,
|
| 2091 |
+
nvHarr: `⤄`,
|
| 2092 |
+
nvinfin: `⧞`,
|
| 2093 |
+
nvlArr: `⤂`,
|
| 2094 |
+
nvle: `≤⃒`,
|
| 2095 |
+
nvlt: `<⃒`,
|
| 2096 |
+
nvltrie: `⊴⃒`,
|
| 2097 |
+
nvrArr: `⤃`,
|
| 2098 |
+
nvrtrie: `⊵⃒`,
|
| 2099 |
+
nvsim: `∼⃒`,
|
| 2100 |
+
nwarhk: `⤣`,
|
| 2101 |
+
nwArr: `⇖`,
|
| 2102 |
+
nwarr: `↖`,
|
| 2103 |
+
nwarrow: `↖`,
|
| 2104 |
+
nwnear: `⤧`,
|
| 2105 |
+
Oacute: `Ó`,
|
| 2106 |
+
oacute: `ó`,
|
| 2107 |
+
oast: `⊛`,
|
| 2108 |
+
ocir: `⊚`,
|
| 2109 |
+
Ocirc: `Ô`,
|
| 2110 |
+
ocirc: `ô`,
|
| 2111 |
+
Ocy: `О`,
|
| 2112 |
+
ocy: `о`,
|
| 2113 |
+
odash: `⊝`,
|
| 2114 |
+
Odblac: `Ő`,
|
| 2115 |
+
odblac: `ő`,
|
| 2116 |
+
odiv: `⨸`,
|
| 2117 |
+
odot: `⊙`,
|
| 2118 |
+
odsold: `⦼`,
|
| 2119 |
+
OElig: `Œ`,
|
| 2120 |
+
oelig: `œ`,
|
| 2121 |
+
ofcir: `⦿`,
|
| 2122 |
+
Ofr: `𝔒`,
|
| 2123 |
+
ofr: `𝔬`,
|
| 2124 |
+
ogon: `˛`,
|
| 2125 |
+
Ograve: `Ò`,
|
| 2126 |
+
ograve: `ò`,
|
| 2127 |
+
ogt: `⧁`,
|
| 2128 |
+
ohbar: `⦵`,
|
| 2129 |
+
ohm: `Ω`,
|
| 2130 |
+
oint: `∮`,
|
| 2131 |
+
olarr: `↺`,
|
| 2132 |
+
olcir: `⦾`,
|
| 2133 |
+
olcross: `⦻`,
|
| 2134 |
+
oline: `‾`,
|
| 2135 |
+
olt: `⧀`,
|
| 2136 |
+
Omacr: `Ō`,
|
| 2137 |
+
omacr: `ō`,
|
| 2138 |
+
Omega: `Ω`,
|
| 2139 |
+
omega: `ω`,
|
| 2140 |
+
Omicron: `Ο`,
|
| 2141 |
+
omicron: `ο`,
|
| 2142 |
+
omid: `⦶`,
|
| 2143 |
+
ominus: `⊖`,
|
| 2144 |
+
Oopf: `𝕆`,
|
| 2145 |
+
oopf: `𝕠`,
|
| 2146 |
+
opar: `⦷`,
|
| 2147 |
+
OpenCurlyDoubleQuote: `“`,
|
| 2148 |
+
OpenCurlyQuote: `‘`,
|
| 2149 |
+
operp: `⦹`,
|
| 2150 |
+
oplus: `⊕`,
|
| 2151 |
+
Or: `⩔`,
|
| 2152 |
+
or: `∨`,
|
| 2153 |
+
orarr: `↻`,
|
| 2154 |
+
ord: `⩝`,
|
| 2155 |
+
order: `ℴ`,
|
| 2156 |
+
orderof: `ℴ`,
|
| 2157 |
+
ordf: `ª`,
|
| 2158 |
+
ordm: `º`,
|
| 2159 |
+
origof: `⊶`,
|
| 2160 |
+
oror: `⩖`,
|
| 2161 |
+
orslope: `⩗`,
|
| 2162 |
+
orv: `⩛`,
|
| 2163 |
+
oS: `Ⓢ`,
|
| 2164 |
+
Oscr: `𝒪`,
|
| 2165 |
+
oscr: `ℴ`,
|
| 2166 |
+
Oslash: `Ø`,
|
| 2167 |
+
oslash: `ø`,
|
| 2168 |
+
osol: `⊘`,
|
| 2169 |
+
Otilde: `Õ`,
|
| 2170 |
+
otilde: `õ`,
|
| 2171 |
+
Otimes: `⨷`,
|
| 2172 |
+
otimes: `⊗`,
|
| 2173 |
+
otimesas: `⨶`,
|
| 2174 |
+
Ouml: `Ö`,
|
| 2175 |
+
ouml: `ö`,
|
| 2176 |
+
ovbar: `⌽`,
|
| 2177 |
+
OverBar: `‾`,
|
| 2178 |
+
OverBrace: `⏞`,
|
| 2179 |
+
OverBracket: `⎴`,
|
| 2180 |
+
OverParenthesis: `⏜`,
|
| 2181 |
+
par: `∥`,
|
| 2182 |
+
para: `¶`,
|
| 2183 |
+
parallel: `∥`,
|
| 2184 |
+
parsim: `⫳`,
|
| 2185 |
+
parsl: `⫽`,
|
| 2186 |
+
part: `∂`,
|
| 2187 |
+
PartialD: `∂`,
|
| 2188 |
+
Pcy: `П`,
|
| 2189 |
+
pcy: `п`,
|
| 2190 |
+
percnt: `%`,
|
| 2191 |
+
period: `.`,
|
| 2192 |
+
permil: `‰`,
|
| 2193 |
+
perp: `⊥`,
|
| 2194 |
+
pertenk: `‱`,
|
| 2195 |
+
Pfr: `𝔓`,
|
| 2196 |
+
pfr: `𝔭`,
|
| 2197 |
+
Phi: `Φ`,
|
| 2198 |
+
phi: `φ`,
|
| 2199 |
+
phiv: `ϕ`,
|
| 2200 |
+
phmmat: `ℳ`,
|
| 2201 |
+
phone: `☎`,
|
| 2202 |
+
Pi: `Π`,
|
| 2203 |
+
pi: `π`,
|
| 2204 |
+
pitchfork: `⋔`,
|
| 2205 |
+
piv: `ϖ`,
|
| 2206 |
+
planck: `ℏ`,
|
| 2207 |
+
planckh: `ℎ`,
|
| 2208 |
+
plankv: `ℏ`,
|
| 2209 |
+
plus: `+`,
|
| 2210 |
+
plusacir: `⨣`,
|
| 2211 |
+
plusb: `⊞`,
|
| 2212 |
+
pluscir: `⨢`,
|
| 2213 |
+
plusdo: `∔`,
|
| 2214 |
+
plusdu: `⨥`,
|
| 2215 |
+
pluse: `⩲`,
|
| 2216 |
+
PlusMinus: `±`,
|
| 2217 |
+
plusmn: `±`,
|
| 2218 |
+
plussim: `⨦`,
|
| 2219 |
+
plustwo: `⨧`,
|
| 2220 |
+
pm: `±`,
|
| 2221 |
+
Poincareplane: `ℌ`,
|
| 2222 |
+
pointint: `⨕`,
|
| 2223 |
+
Popf: `ℙ`,
|
| 2224 |
+
popf: `𝕡`,
|
| 2225 |
+
pound: `£`,
|
| 2226 |
+
Pr: `⪻`,
|
| 2227 |
+
pr: `≺`,
|
| 2228 |
+
prap: `⪷`,
|
| 2229 |
+
prcue: `≼`,
|
| 2230 |
+
prE: `⪳`,
|
| 2231 |
+
pre: `⪯`,
|
| 2232 |
+
prec: `≺`,
|
| 2233 |
+
precapprox: `⪷`,
|
| 2234 |
+
preccurlyeq: `≼`,
|
| 2235 |
+
Precedes: `≺`,
|
| 2236 |
+
PrecedesEqual: `⪯`,
|
| 2237 |
+
PrecedesSlantEqual: `≼`,
|
| 2238 |
+
PrecedesTilde: `≾`,
|
| 2239 |
+
preceq: `⪯`,
|
| 2240 |
+
precnapprox: `⪹`,
|
| 2241 |
+
precneqq: `⪵`,
|
| 2242 |
+
precnsim: `⋨`,
|
| 2243 |
+
precsim: `≾`,
|
| 2244 |
+
Prime: `″`,
|
| 2245 |
+
prime: `′`,
|
| 2246 |
+
primes: `ℙ`,
|
| 2247 |
+
prnap: `⪹`,
|
| 2248 |
+
prnE: `⪵`,
|
| 2249 |
+
prnsim: `⋨`,
|
| 2250 |
+
prod: `∏`,
|
| 2251 |
+
Product: `∏`,
|
| 2252 |
+
profalar: `⌮`,
|
| 2253 |
+
profline: `⌒`,
|
| 2254 |
+
profsurf: `⌓`,
|
| 2255 |
+
prop: `∝`,
|
| 2256 |
+
Proportion: `∷`,
|
| 2257 |
+
Proportional: `∝`,
|
| 2258 |
+
propto: `∝`,
|
| 2259 |
+
prsim: `≾`,
|
| 2260 |
+
prurel: `⊰`,
|
| 2261 |
+
Pscr: `𝒫`,
|
| 2262 |
+
pscr: `𝓅`,
|
| 2263 |
+
Psi: `Ψ`,
|
| 2264 |
+
psi: `ψ`,
|
| 2265 |
+
puncsp: ` `,
|
| 2266 |
+
Qfr: `𝔔`,
|
| 2267 |
+
qfr: `𝔮`,
|
| 2268 |
+
qint: `⨌`,
|
| 2269 |
+
Qopf: `ℚ`,
|
| 2270 |
+
qopf: `𝕢`,
|
| 2271 |
+
qprime: `⁗`,
|
| 2272 |
+
Qscr: `𝒬`,
|
| 2273 |
+
qscr: `𝓆`,
|
| 2274 |
+
quaternions: `ℍ`,
|
| 2275 |
+
quatint: `⨖`,
|
| 2276 |
+
quest: `?`,
|
| 2277 |
+
questeq: `≟`,
|
| 2278 |
+
QUOT: `"`,
|
| 2279 |
+
quot: `"`,
|
| 2280 |
+
rAarr: `⇛`,
|
| 2281 |
+
race: `∽̱`,
|
| 2282 |
+
Racute: `Ŕ`,
|
| 2283 |
+
racute: `ŕ`,
|
| 2284 |
+
radic: `√`,
|
| 2285 |
+
raemptyv: `⦳`,
|
| 2286 |
+
Rang: `⟫`,
|
| 2287 |
+
rang: `⟩`,
|
| 2288 |
+
rangd: `⦒`,
|
| 2289 |
+
range: `⦥`,
|
| 2290 |
+
rangle: `⟩`,
|
| 2291 |
+
raquo: `»`,
|
| 2292 |
+
Rarr: `↠`,
|
| 2293 |
+
rArr: `⇒`,
|
| 2294 |
+
rarr: `→`,
|
| 2295 |
+
rarrap: `⥵`,
|
| 2296 |
+
rarrb: `⇥`,
|
| 2297 |
+
rarrbfs: `⤠`,
|
| 2298 |
+
rarrc: `⤳`,
|
| 2299 |
+
rarrfs: `⤞`,
|
| 2300 |
+
rarrhk: `↪`,
|
| 2301 |
+
rarrlp: `↬`,
|
| 2302 |
+
rarrpl: `⥅`,
|
| 2303 |
+
rarrsim: `⥴`,
|
| 2304 |
+
Rarrtl: `⤖`,
|
| 2305 |
+
rarrtl: `↣`,
|
| 2306 |
+
rarrw: `↝`,
|
| 2307 |
+
rAtail: `⤜`,
|
| 2308 |
+
ratail: `⤚`,
|
| 2309 |
+
ratio: `∶`,
|
| 2310 |
+
rationals: `ℚ`,
|
| 2311 |
+
RBarr: `⤐`,
|
| 2312 |
+
rBarr: `⤏`,
|
| 2313 |
+
rbarr: `⤍`,
|
| 2314 |
+
rbbrk: `❳`,
|
| 2315 |
+
rbrace: `}`,
|
| 2316 |
+
rbrack: `]`,
|
| 2317 |
+
rbrke: `⦌`,
|
| 2318 |
+
rbrksld: `⦎`,
|
| 2319 |
+
rbrkslu: `⦐`,
|
| 2320 |
+
Rcaron: `Ř`,
|
| 2321 |
+
rcaron: `ř`,
|
| 2322 |
+
Rcedil: `Ŗ`,
|
| 2323 |
+
rcedil: `ŗ`,
|
| 2324 |
+
rceil: `⌉`,
|
| 2325 |
+
rcub: `}`,
|
| 2326 |
+
Rcy: `Р`,
|
| 2327 |
+
rcy: `р`,
|
| 2328 |
+
rdca: `⤷`,
|
| 2329 |
+
rdldhar: `⥩`,
|
| 2330 |
+
rdquo: `”`,
|
| 2331 |
+
rdquor: `”`,
|
| 2332 |
+
rdsh: `↳`,
|
| 2333 |
+
Re: `ℜ`,
|
| 2334 |
+
real: `ℜ`,
|
| 2335 |
+
realine: `ℛ`,
|
| 2336 |
+
realpart: `ℜ`,
|
| 2337 |
+
reals: `ℝ`,
|
| 2338 |
+
rect: `▭`,
|
| 2339 |
+
REG: `®`,
|
| 2340 |
+
reg: `®`,
|
| 2341 |
+
ReverseElement: `∋`,
|
| 2342 |
+
ReverseEquilibrium: `⇋`,
|
| 2343 |
+
ReverseUpEquilibrium: `⥯`,
|
| 2344 |
+
rfisht: `⥽`,
|
| 2345 |
+
rfloor: `⌋`,
|
| 2346 |
+
Rfr: `ℜ`,
|
| 2347 |
+
rfr: `𝔯`,
|
| 2348 |
+
rHar: `⥤`,
|
| 2349 |
+
rhard: `⇁`,
|
| 2350 |
+
rharu: `⇀`,
|
| 2351 |
+
rharul: `⥬`,
|
| 2352 |
+
Rho: `Ρ`,
|
| 2353 |
+
rho: `ρ`,
|
| 2354 |
+
rhov: `ϱ`,
|
| 2355 |
+
RightAngleBracket: `⟩`,
|
| 2356 |
+
RightArrow: `→`,
|
| 2357 |
+
Rightarrow: `⇒`,
|
| 2358 |
+
rightarrow: `→`,
|
| 2359 |
+
RightArrowBar: `⇥`,
|
| 2360 |
+
RightArrowLeftArrow: `⇄`,
|
| 2361 |
+
rightarrowtail: `↣`,
|
| 2362 |
+
RightCeiling: `⌉`,
|
| 2363 |
+
RightDoubleBracket: `⟧`,
|
| 2364 |
+
RightDownTeeVector: `⥝`,
|
| 2365 |
+
RightDownVector: `⇂`,
|
| 2366 |
+
RightDownVectorBar: `⥕`,
|
| 2367 |
+
RightFloor: `⌋`,
|
| 2368 |
+
rightharpoondown: `⇁`,
|
| 2369 |
+
rightharpoonup: `⇀`,
|
| 2370 |
+
rightleftarrows: `⇄`,
|
| 2371 |
+
rightleftharpoons: `⇌`,
|
| 2372 |
+
rightrightarrows: `⇉`,
|
| 2373 |
+
rightsquigarrow: `↝`,
|
| 2374 |
+
RightTee: `⊢`,
|
| 2375 |
+
RightTeeArrow: `↦`,
|
| 2376 |
+
RightTeeVector: `⥛`,
|
| 2377 |
+
rightthreetimes: `⋌`,
|
| 2378 |
+
RightTriangle: `⊳`,
|
| 2379 |
+
RightTriangleBar: `⧐`,
|
| 2380 |
+
RightTriangleEqual: `⊵`,
|
| 2381 |
+
RightUpDownVector: `⥏`,
|
| 2382 |
+
RightUpTeeVector: `⥜`,
|
| 2383 |
+
RightUpVector: `↾`,
|
| 2384 |
+
RightUpVectorBar: `⥔`,
|
| 2385 |
+
RightVector: `⇀`,
|
| 2386 |
+
RightVectorBar: `⥓`,
|
| 2387 |
+
ring: `˚`,
|
| 2388 |
+
risingdotseq: `≓`,
|
| 2389 |
+
rlarr: `⇄`,
|
| 2390 |
+
rlhar: `⇌`,
|
| 2391 |
+
rlm: ``,
|
| 2392 |
+
rmoust: `⎱`,
|
| 2393 |
+
rmoustache: `⎱`,
|
| 2394 |
+
rnmid: `⫮`,
|
| 2395 |
+
roang: `⟭`,
|
| 2396 |
+
roarr: `⇾`,
|
| 2397 |
+
robrk: `⟧`,
|
| 2398 |
+
ropar: `⦆`,
|
| 2399 |
+
Ropf: `ℝ`,
|
| 2400 |
+
ropf: `𝕣`,
|
| 2401 |
+
roplus: `⨮`,
|
| 2402 |
+
rotimes: `⨵`,
|
| 2403 |
+
RoundImplies: `⥰`,
|
| 2404 |
+
rpar: `)`,
|
| 2405 |
+
rpargt: `⦔`,
|
| 2406 |
+
rppolint: `⨒`,
|
| 2407 |
+
rrarr: `⇉`,
|
| 2408 |
+
Rrightarrow: `⇛`,
|
| 2409 |
+
rsaquo: `›`,
|
| 2410 |
+
Rscr: `ℛ`,
|
| 2411 |
+
rscr: `𝓇`,
|
| 2412 |
+
Rsh: `↱`,
|
| 2413 |
+
rsh: `↱`,
|
| 2414 |
+
rsqb: `]`,
|
| 2415 |
+
rsquo: `’`,
|
| 2416 |
+
rsquor: `’`,
|
| 2417 |
+
rthree: `⋌`,
|
| 2418 |
+
rtimes: `⋊`,
|
| 2419 |
+
rtri: `▹`,
|
| 2420 |
+
rtrie: `⊵`,
|
| 2421 |
+
rtrif: `▸`,
|
| 2422 |
+
rtriltri: `⧎`,
|
| 2423 |
+
RuleDelayed: `⧴`,
|
| 2424 |
+
ruluhar: `⥨`,
|
| 2425 |
+
rx: `℞`,
|
| 2426 |
+
Sacute: `Ś`,
|
| 2427 |
+
sacute: `ś`,
|
| 2428 |
+
sbquo: `‚`,
|
| 2429 |
+
Sc: `⪼`,
|
| 2430 |
+
sc: `≻`,
|
| 2431 |
+
scap: `⪸`,
|
| 2432 |
+
Scaron: `Š`,
|
| 2433 |
+
scaron: `š`,
|
| 2434 |
+
sccue: `≽`,
|
| 2435 |
+
scE: `⪴`,
|
| 2436 |
+
sce: `⪰`,
|
| 2437 |
+
Scedil: `Ş`,
|
| 2438 |
+
scedil: `ş`,
|
| 2439 |
+
Scirc: `Ŝ`,
|
| 2440 |
+
scirc: `ŝ`,
|
| 2441 |
+
scnap: `⪺`,
|
| 2442 |
+
scnE: `⪶`,
|
| 2443 |
+
scnsim: `⋩`,
|
| 2444 |
+
scpolint: `⨓`,
|
| 2445 |
+
scsim: `≿`,
|
| 2446 |
+
Scy: `С`,
|
| 2447 |
+
scy: `с`,
|
| 2448 |
+
sdot: `⋅`,
|
| 2449 |
+
sdotb: `⊡`,
|
| 2450 |
+
sdote: `⩦`,
|
| 2451 |
+
searhk: `⤥`,
|
| 2452 |
+
seArr: `⇘`,
|
| 2453 |
+
searr: `↘`,
|
| 2454 |
+
searrow: `↘`,
|
| 2455 |
+
sect: `§`,
|
| 2456 |
+
semi: `;`,
|
| 2457 |
+
seswar: `⤩`,
|
| 2458 |
+
setminus: `∖`,
|
| 2459 |
+
setmn: `∖`,
|
| 2460 |
+
sext: `✶`,
|
| 2461 |
+
Sfr: `𝔖`,
|
| 2462 |
+
sfr: `𝔰`,
|
| 2463 |
+
sfrown: `⌢`,
|
| 2464 |
+
sharp: `♯`,
|
| 2465 |
+
SHCHcy: `Щ`,
|
| 2466 |
+
shchcy: `щ`,
|
| 2467 |
+
SHcy: `Ш`,
|
| 2468 |
+
shcy: `ш`,
|
| 2469 |
+
ShortDownArrow: `↓`,
|
| 2470 |
+
ShortLeftArrow: `←`,
|
| 2471 |
+
shortmid: `∣`,
|
| 2472 |
+
shortparallel: `∥`,
|
| 2473 |
+
ShortRightArrow: `→`,
|
| 2474 |
+
ShortUpArrow: `↑`,
|
| 2475 |
+
shy: ``,
|
| 2476 |
+
Sigma: `Σ`,
|
| 2477 |
+
sigma: `σ`,
|
| 2478 |
+
sigmaf: `ς`,
|
| 2479 |
+
sigmav: `ς`,
|
| 2480 |
+
sim: `∼`,
|
| 2481 |
+
simdot: `⩪`,
|
| 2482 |
+
sime: `≃`,
|
| 2483 |
+
simeq: `≃`,
|
| 2484 |
+
simg: `⪞`,
|
| 2485 |
+
simgE: `⪠`,
|
| 2486 |
+
siml: `⪝`,
|
| 2487 |
+
simlE: `⪟`,
|
| 2488 |
+
simne: `≆`,
|
| 2489 |
+
simplus: `⨤`,
|
| 2490 |
+
simrarr: `⥲`,
|
| 2491 |
+
slarr: `←`,
|
| 2492 |
+
SmallCircle: `∘`,
|
| 2493 |
+
smallsetminus: `∖`,
|
| 2494 |
+
smashp: `⨳`,
|
| 2495 |
+
smeparsl: `⧤`,
|
| 2496 |
+
smid: `∣`,
|
| 2497 |
+
smile: `⌣`,
|
| 2498 |
+
smt: `⪪`,
|
| 2499 |
+
smte: `⪬`,
|
| 2500 |
+
smtes: `⪬︀`,
|
| 2501 |
+
SOFTcy: `Ь`,
|
| 2502 |
+
softcy: `ь`,
|
| 2503 |
+
sol: `/`,
|
| 2504 |
+
solb: `⧄`,
|
| 2505 |
+
solbar: `⌿`,
|
| 2506 |
+
Sopf: `𝕊`,
|
| 2507 |
+
sopf: `𝕤`,
|
| 2508 |
+
spades: `♠`,
|
| 2509 |
+
spadesuit: `♠`,
|
| 2510 |
+
spar: `∥`,
|
| 2511 |
+
sqcap: `⊓`,
|
| 2512 |
+
sqcaps: `⊓︀`,
|
| 2513 |
+
sqcup: `⊔`,
|
| 2514 |
+
sqcups: `⊔︀`,
|
| 2515 |
+
Sqrt: `√`,
|
| 2516 |
+
sqsub: `⊏`,
|
| 2517 |
+
sqsube: `⊑`,
|
| 2518 |
+
sqsubset: `⊏`,
|
| 2519 |
+
sqsubseteq: `⊑`,
|
| 2520 |
+
sqsup: `⊐`,
|
| 2521 |
+
sqsupe: `⊒`,
|
| 2522 |
+
sqsupset: `⊐`,
|
| 2523 |
+
sqsupseteq: `⊒`,
|
| 2524 |
+
squ: `□`,
|
| 2525 |
+
Square: `□`,
|
| 2526 |
+
square: `□`,
|
| 2527 |
+
SquareIntersection: `⊓`,
|
| 2528 |
+
SquareSubset: `⊏`,
|
| 2529 |
+
SquareSubsetEqual: `⊑`,
|
| 2530 |
+
SquareSuperset: `⊐`,
|
| 2531 |
+
SquareSupersetEqual: `⊒`,
|
| 2532 |
+
SquareUnion: `⊔`,
|
| 2533 |
+
squarf: `▪`,
|
| 2534 |
+
squf: `▪`,
|
| 2535 |
+
srarr: `→`,
|
| 2536 |
+
Sscr: `𝒮`,
|
| 2537 |
+
sscr: `𝓈`,
|
| 2538 |
+
ssetmn: `∖`,
|
| 2539 |
+
ssmile: `⌣`,
|
| 2540 |
+
sstarf: `⋆`,
|
| 2541 |
+
Star: `⋆`,
|
| 2542 |
+
star: `☆`,
|
| 2543 |
+
starf: `★`,
|
| 2544 |
+
straightepsilon: `ϵ`,
|
| 2545 |
+
straightphi: `ϕ`,
|
| 2546 |
+
strns: `¯`,
|
| 2547 |
+
Sub: `⋐`,
|
| 2548 |
+
sub: `⊂`,
|
| 2549 |
+
subdot: `⪽`,
|
| 2550 |
+
subE: `⫅`,
|
| 2551 |
+
sube: `⊆`,
|
| 2552 |
+
subedot: `⫃`,
|
| 2553 |
+
submult: `⫁`,
|
| 2554 |
+
subnE: `⫋`,
|
| 2555 |
+
subne: `⊊`,
|
| 2556 |
+
subplus: `⪿`,
|
| 2557 |
+
subrarr: `⥹`,
|
| 2558 |
+
Subset: `⋐`,
|
| 2559 |
+
subset: `⊂`,
|
| 2560 |
+
subseteq: `⊆`,
|
| 2561 |
+
subseteqq: `⫅`,
|
| 2562 |
+
SubsetEqual: `⊆`,
|
| 2563 |
+
subsetneq: `⊊`,
|
| 2564 |
+
subsetneqq: `⫋`,
|
| 2565 |
+
subsim: `⫇`,
|
| 2566 |
+
subsub: `⫕`,
|
| 2567 |
+
subsup: `⫓`,
|
| 2568 |
+
succ: `≻`,
|
| 2569 |
+
succapprox: `⪸`,
|
| 2570 |
+
succcurlyeq: `≽`,
|
| 2571 |
+
Succeeds: `≻`,
|
| 2572 |
+
SucceedsEqual: `⪰`,
|
| 2573 |
+
SucceedsSlantEqual: `≽`,
|
| 2574 |
+
SucceedsTilde: `≿`,
|
| 2575 |
+
succeq: `⪰`,
|
| 2576 |
+
succnapprox: `⪺`,
|
| 2577 |
+
succneqq: `⪶`,
|
| 2578 |
+
succnsim: `⋩`,
|
| 2579 |
+
succsim: `≿`,
|
| 2580 |
+
SuchThat: `∋`,
|
| 2581 |
+
Sum: `∑`,
|
| 2582 |
+
sum: `∑`,
|
| 2583 |
+
sung: `♪`,
|
| 2584 |
+
Sup: `⋑`,
|
| 2585 |
+
sup: `⊃`,
|
| 2586 |
+
sup1: `¹`,
|
| 2587 |
+
sup2: `²`,
|
| 2588 |
+
sup3: `³`,
|
| 2589 |
+
supdot: `⪾`,
|
| 2590 |
+
supdsub: `⫘`,
|
| 2591 |
+
supE: `⫆`,
|
| 2592 |
+
supe: `⊇`,
|
| 2593 |
+
supedot: `⫄`,
|
| 2594 |
+
Superset: `⊃`,
|
| 2595 |
+
SupersetEqual: `⊇`,
|
| 2596 |
+
suphsol: `⟉`,
|
| 2597 |
+
suphsub: `⫗`,
|
| 2598 |
+
suplarr: `⥻`,
|
| 2599 |
+
supmult: `⫂`,
|
| 2600 |
+
supnE: `⫌`,
|
| 2601 |
+
supne: `⊋`,
|
| 2602 |
+
supplus: `⫀`,
|
| 2603 |
+
Supset: `⋑`,
|
| 2604 |
+
supset: `⊃`,
|
| 2605 |
+
supseteq: `⊇`,
|
| 2606 |
+
supseteqq: `⫆`,
|
| 2607 |
+
supsetneq: `⊋`,
|
| 2608 |
+
supsetneqq: `⫌`,
|
| 2609 |
+
supsim: `⫈`,
|
| 2610 |
+
supsub: `⫔`,
|
| 2611 |
+
supsup: `⫖`,
|
| 2612 |
+
swarhk: `⤦`,
|
| 2613 |
+
swArr: `⇙`,
|
| 2614 |
+
swarr: `↙`,
|
| 2615 |
+
swarrow: `↙`,
|
| 2616 |
+
swnwar: `⤪`,
|
| 2617 |
+
szlig: `ß`,
|
| 2618 |
+
Tab: ` `,
|
| 2619 |
+
target: `⌖`,
|
| 2620 |
+
Tau: `Τ`,
|
| 2621 |
+
tau: `τ`,
|
| 2622 |
+
tbrk: `⎴`,
|
| 2623 |
+
Tcaron: `Ť`,
|
| 2624 |
+
tcaron: `ť`,
|
| 2625 |
+
Tcedil: `Ţ`,
|
| 2626 |
+
tcedil: `ţ`,
|
| 2627 |
+
Tcy: `Т`,
|
| 2628 |
+
tcy: `т`,
|
| 2629 |
+
tdot: `⃛`,
|
| 2630 |
+
telrec: `⌕`,
|
| 2631 |
+
Tfr: `𝔗`,
|
| 2632 |
+
tfr: `𝔱`,
|
| 2633 |
+
there4: `∴`,
|
| 2634 |
+
Therefore: `∴`,
|
| 2635 |
+
therefore: `∴`,
|
| 2636 |
+
Theta: `Θ`,
|
| 2637 |
+
theta: `θ`,
|
| 2638 |
+
thetasym: `ϑ`,
|
| 2639 |
+
thetav: `ϑ`,
|
| 2640 |
+
thickapprox: `≈`,
|
| 2641 |
+
thicksim: `∼`,
|
| 2642 |
+
ThickSpace: ` `,
|
| 2643 |
+
thinsp: ` `,
|
| 2644 |
+
ThinSpace: ` `,
|
| 2645 |
+
thkap: `≈`,
|
| 2646 |
+
thksim: `∼`,
|
| 2647 |
+
THORN: `Þ`,
|
| 2648 |
+
thorn: `þ`,
|
| 2649 |
+
Tilde: `∼`,
|
| 2650 |
+
tilde: `˜`,
|
| 2651 |
+
TildeEqual: `≃`,
|
| 2652 |
+
TildeFullEqual: `≅`,
|
| 2653 |
+
TildeTilde: `≈`,
|
| 2654 |
+
times: `×`,
|
| 2655 |
+
timesb: `⊠`,
|
| 2656 |
+
timesbar: `⨱`,
|
| 2657 |
+
timesd: `⨰`,
|
| 2658 |
+
tint: `∭`,
|
| 2659 |
+
toea: `⤨`,
|
| 2660 |
+
top: `⊤`,
|
| 2661 |
+
topbot: `⌶`,
|
| 2662 |
+
topcir: `⫱`,
|
| 2663 |
+
Topf: `𝕋`,
|
| 2664 |
+
topf: `𝕥`,
|
| 2665 |
+
topfork: `⫚`,
|
| 2666 |
+
tosa: `⤩`,
|
| 2667 |
+
tprime: `‴`,
|
| 2668 |
+
TRADE: `™`,
|
| 2669 |
+
trade: `™`,
|
| 2670 |
+
triangle: `▵`,
|
| 2671 |
+
triangledown: `▿`,
|
| 2672 |
+
triangleleft: `◃`,
|
| 2673 |
+
trianglelefteq: `⊴`,
|
| 2674 |
+
triangleq: `≜`,
|
| 2675 |
+
triangleright: `▹`,
|
| 2676 |
+
trianglerighteq: `⊵`,
|
| 2677 |
+
tridot: `◬`,
|
| 2678 |
+
trie: `≜`,
|
| 2679 |
+
triminus: `⨺`,
|
| 2680 |
+
TripleDot: `⃛`,
|
| 2681 |
+
triplus: `⨹`,
|
| 2682 |
+
trisb: `⧍`,
|
| 2683 |
+
tritime: `⨻`,
|
| 2684 |
+
trpezium: `⏢`,
|
| 2685 |
+
Tscr: `𝒯`,
|
| 2686 |
+
tscr: `𝓉`,
|
| 2687 |
+
TScy: `Ц`,
|
| 2688 |
+
tscy: `ц`,
|
| 2689 |
+
TSHcy: `Ћ`,
|
| 2690 |
+
tshcy: `ћ`,
|
| 2691 |
+
Tstrok: `Ŧ`,
|
| 2692 |
+
tstrok: `ŧ`,
|
| 2693 |
+
twixt: `≬`,
|
| 2694 |
+
twoheadleftarrow: `↞`,
|
| 2695 |
+
twoheadrightarrow: `↠`,
|
| 2696 |
+
Uacute: `Ú`,
|
| 2697 |
+
uacute: `ú`,
|
| 2698 |
+
Uarr: `↟`,
|
| 2699 |
+
uArr: `⇑`,
|
| 2700 |
+
uarr: `↑`,
|
| 2701 |
+
Uarrocir: `⥉`,
|
| 2702 |
+
Ubrcy: `Ў`,
|
| 2703 |
+
ubrcy: `ў`,
|
| 2704 |
+
Ubreve: `Ŭ`,
|
| 2705 |
+
ubreve: `ŭ`,
|
| 2706 |
+
Ucirc: `Û`,
|
| 2707 |
+
ucirc: `û`,
|
| 2708 |
+
Ucy: `У`,
|
| 2709 |
+
ucy: `у`,
|
| 2710 |
+
udarr: `⇅`,
|
| 2711 |
+
Udblac: `Ű`,
|
| 2712 |
+
udblac: `ű`,
|
| 2713 |
+
udhar: `⥮`,
|
| 2714 |
+
ufisht: `⥾`,
|
| 2715 |
+
Ufr: `𝔘`,
|
| 2716 |
+
ufr: `𝔲`,
|
| 2717 |
+
Ugrave: `Ù`,
|
| 2718 |
+
ugrave: `ù`,
|
| 2719 |
+
uHar: `⥣`,
|
| 2720 |
+
uharl: `↿`,
|
| 2721 |
+
uharr: `↾`,
|
| 2722 |
+
uhblk: `▀`,
|
| 2723 |
+
ulcorn: `⌜`,
|
| 2724 |
+
ulcorner: `⌜`,
|
| 2725 |
+
ulcrop: `⌏`,
|
| 2726 |
+
ultri: `◸`,
|
| 2727 |
+
Umacr: `Ū`,
|
| 2728 |
+
umacr: `ū`,
|
| 2729 |
+
uml: `¨`,
|
| 2730 |
+
UnderBar: `_`,
|
| 2731 |
+
UnderBrace: `⏟`,
|
| 2732 |
+
UnderBracket: `⎵`,
|
| 2733 |
+
UnderParenthesis: `⏝`,
|
| 2734 |
+
Union: `⋃`,
|
| 2735 |
+
UnionPlus: `⊎`,
|
| 2736 |
+
Uogon: `Ų`,
|
| 2737 |
+
uogon: `ų`,
|
| 2738 |
+
Uopf: `𝕌`,
|
| 2739 |
+
uopf: `𝕦`,
|
| 2740 |
+
UpArrow: `↑`,
|
| 2741 |
+
Uparrow: `⇑`,
|
| 2742 |
+
uparrow: `↑`,
|
| 2743 |
+
UpArrowBar: `⤒`,
|
| 2744 |
+
UpArrowDownArrow: `⇅`,
|
| 2745 |
+
UpDownArrow: `↕`,
|
| 2746 |
+
Updownarrow: `⇕`,
|
| 2747 |
+
updownarrow: `↕`,
|
| 2748 |
+
UpEquilibrium: `⥮`,
|
| 2749 |
+
upharpoonleft: `↿`,
|
| 2750 |
+
upharpoonright: `↾`,
|
| 2751 |
+
uplus: `⊎`,
|
| 2752 |
+
UpperLeftArrow: `↖`,
|
| 2753 |
+
UpperRightArrow: `↗`,
|
| 2754 |
+
Upsi: `ϒ`,
|
| 2755 |
+
upsi: `υ`,
|
| 2756 |
+
upsih: `ϒ`,
|
| 2757 |
+
Upsilon: `Υ`,
|
| 2758 |
+
upsilon: `υ`,
|
| 2759 |
+
UpTee: `⊥`,
|
| 2760 |
+
UpTeeArrow: `↥`,
|
| 2761 |
+
upuparrows: `⇈`,
|
| 2762 |
+
urcorn: `⌝`,
|
| 2763 |
+
urcorner: `⌝`,
|
| 2764 |
+
urcrop: `⌎`,
|
| 2765 |
+
Uring: `Ů`,
|
| 2766 |
+
uring: `ů`,
|
| 2767 |
+
urtri: `◹`,
|
| 2768 |
+
Uscr: `𝒰`,
|
| 2769 |
+
uscr: `𝓊`,
|
| 2770 |
+
utdot: `⋰`,
|
| 2771 |
+
Utilde: `Ũ`,
|
| 2772 |
+
utilde: `ũ`,
|
| 2773 |
+
utri: `▵`,
|
| 2774 |
+
utrif: `▴`,
|
| 2775 |
+
uuarr: `⇈`,
|
| 2776 |
+
Uuml: `Ü`,
|
| 2777 |
+
uuml: `ü`,
|
| 2778 |
+
uwangle: `⦧`,
|
| 2779 |
+
vangrt: `⦜`,
|
| 2780 |
+
varepsilon: `ϵ`,
|
| 2781 |
+
varkappa: `ϰ`,
|
| 2782 |
+
varnothing: `∅`,
|
| 2783 |
+
varphi: `ϕ`,
|
| 2784 |
+
varpi: `ϖ`,
|
| 2785 |
+
varpropto: `∝`,
|
| 2786 |
+
vArr: `⇕`,
|
| 2787 |
+
varr: `↕`,
|
| 2788 |
+
varrho: `ϱ`,
|
| 2789 |
+
varsigma: `ς`,
|
| 2790 |
+
varsubsetneq: `⊊︀`,
|
| 2791 |
+
varsubsetneqq: `⫋︀`,
|
| 2792 |
+
varsupsetneq: `⊋︀`,
|
| 2793 |
+
varsupsetneqq: `⫌︀`,
|
| 2794 |
+
vartheta: `ϑ`,
|
| 2795 |
+
vartriangleleft: `⊲`,
|
| 2796 |
+
vartriangleright: `⊳`,
|
| 2797 |
+
Vbar: `⫫`,
|
| 2798 |
+
vBar: `⫨`,
|
| 2799 |
+
vBarv: `⫩`,
|
| 2800 |
+
Vcy: `В`,
|
| 2801 |
+
vcy: `в`,
|
| 2802 |
+
VDash: `⊫`,
|
| 2803 |
+
Vdash: `⊩`,
|
| 2804 |
+
vDash: `⊨`,
|
| 2805 |
+
vdash: `⊢`,
|
| 2806 |
+
Vdashl: `⫦`,
|
| 2807 |
+
Vee: `⋁`,
|
| 2808 |
+
vee: `∨`,
|
| 2809 |
+
veebar: `⊻`,
|
| 2810 |
+
veeeq: `≚`,
|
| 2811 |
+
vellip: `⋮`,
|
| 2812 |
+
Verbar: `‖`,
|
| 2813 |
+
verbar: `|`,
|
| 2814 |
+
Vert: `‖`,
|
| 2815 |
+
vert: `|`,
|
| 2816 |
+
VerticalBar: `∣`,
|
| 2817 |
+
VerticalLine: `|`,
|
| 2818 |
+
VerticalSeparator: `❘`,
|
| 2819 |
+
VerticalTilde: `≀`,
|
| 2820 |
+
VeryThinSpace: ` `,
|
| 2821 |
+
Vfr: `𝔙`,
|
| 2822 |
+
vfr: `𝔳`,
|
| 2823 |
+
vltri: `⊲`,
|
| 2824 |
+
vnsub: `⊂⃒`,
|
| 2825 |
+
vnsup: `⊃⃒`,
|
| 2826 |
+
Vopf: `𝕍`,
|
| 2827 |
+
vopf: `𝕧`,
|
| 2828 |
+
vprop: `∝`,
|
| 2829 |
+
vrtri: `⊳`,
|
| 2830 |
+
Vscr: `𝒱`,
|
| 2831 |
+
vscr: `𝓋`,
|
| 2832 |
+
vsubnE: `⫋︀`,
|
| 2833 |
+
vsubne: `⊊︀`,
|
| 2834 |
+
vsupnE: `⫌︀`,
|
| 2835 |
+
vsupne: `⊋︀`,
|
| 2836 |
+
Vvdash: `⊪`,
|
| 2837 |
+
vzigzag: `⦚`,
|
| 2838 |
+
Wcirc: `Ŵ`,
|
| 2839 |
+
wcirc: `ŵ`,
|
| 2840 |
+
wedbar: `⩟`,
|
| 2841 |
+
Wedge: `⋀`,
|
| 2842 |
+
wedge: `∧`,
|
| 2843 |
+
wedgeq: `≙`,
|
| 2844 |
+
weierp: `℘`,
|
| 2845 |
+
Wfr: `𝔚`,
|
| 2846 |
+
wfr: `𝔴`,
|
| 2847 |
+
Wopf: `𝕎`,
|
| 2848 |
+
wopf: `𝕨`,
|
| 2849 |
+
wp: `℘`,
|
| 2850 |
+
wr: `≀`,
|
| 2851 |
+
wreath: `≀`,
|
| 2852 |
+
Wscr: `𝒲`,
|
| 2853 |
+
wscr: `𝓌`,
|
| 2854 |
+
xcap: `⋂`,
|
| 2855 |
+
xcirc: `◯`,
|
| 2856 |
+
xcup: `⋃`,
|
| 2857 |
+
xdtri: `▽`,
|
| 2858 |
+
Xfr: `𝔛`,
|
| 2859 |
+
xfr: `𝔵`,
|
| 2860 |
+
xhArr: `⟺`,
|
| 2861 |
+
xharr: `⟷`,
|
| 2862 |
+
Xi: `Ξ`,
|
| 2863 |
+
xi: `ξ`,
|
| 2864 |
+
xlArr: `⟸`,
|
| 2865 |
+
xlarr: `⟵`,
|
| 2866 |
+
xmap: `⟼`,
|
| 2867 |
+
xnis: `⋻`,
|
| 2868 |
+
xodot: `⨀`,
|
| 2869 |
+
Xopf: `𝕏`,
|
| 2870 |
+
xopf: `𝕩`,
|
| 2871 |
+
xoplus: `⨁`,
|
| 2872 |
+
xotime: `⨂`,
|
| 2873 |
+
xrArr: `⟹`,
|
| 2874 |
+
xrarr: `⟶`,
|
| 2875 |
+
Xscr: `𝒳`,
|
| 2876 |
+
xscr: `𝓍`,
|
| 2877 |
+
xsqcup: `⨆`,
|
| 2878 |
+
xuplus: `⨄`,
|
| 2879 |
+
xutri: `△`,
|
| 2880 |
+
xvee: `⋁`,
|
| 2881 |
+
xwedge: `⋀`,
|
| 2882 |
+
Yacute: `Ý`,
|
| 2883 |
+
yacute: `ý`,
|
| 2884 |
+
YAcy: `Я`,
|
| 2885 |
+
yacy: `я`,
|
| 2886 |
+
Ycirc: `Ŷ`,
|
| 2887 |
+
ycirc: `ŷ`,
|
| 2888 |
+
Ycy: `Ы`,
|
| 2889 |
+
ycy: `ы`,
|
| 2890 |
+
yen: `¥`,
|
| 2891 |
+
Yfr: `𝔜`,
|
| 2892 |
+
yfr: `𝔶`,
|
| 2893 |
+
YIcy: `Ї`,
|
| 2894 |
+
yicy: `ї`,
|
| 2895 |
+
Yopf: `𝕐`,
|
| 2896 |
+
yopf: `𝕪`,
|
| 2897 |
+
Yscr: `𝒴`,
|
| 2898 |
+
yscr: `𝓎`,
|
| 2899 |
+
YUcy: `Ю`,
|
| 2900 |
+
yucy: `ю`,
|
| 2901 |
+
Yuml: `Ÿ`,
|
| 2902 |
+
yuml: `ÿ`,
|
| 2903 |
+
Zacute: `Ź`,
|
| 2904 |
+
zacute: `ź`,
|
| 2905 |
+
Zcaron: `Ž`,
|
| 2906 |
+
zcaron: `ž`,
|
| 2907 |
+
Zcy: `З`,
|
| 2908 |
+
zcy: `з`,
|
| 2909 |
+
Zdot: `Ż`,
|
| 2910 |
+
zdot: `ż`,
|
| 2911 |
+
zeetrf: `ℨ`,
|
| 2912 |
+
ZeroWidthSpace: ``,
|
| 2913 |
+
Zeta: `Ζ`,
|
| 2914 |
+
zeta: `ζ`,
|
| 2915 |
+
Zfr: `ℨ`,
|
| 2916 |
+
zfr: `𝔷`,
|
| 2917 |
+
ZHcy: `Ж`,
|
| 2918 |
+
zhcy: `ж`,
|
| 2919 |
+
zigrarr: `⇝`,
|
| 2920 |
+
Zopf: `ℤ`,
|
| 2921 |
+
zopf: `𝕫`,
|
| 2922 |
+
Zscr: `𝒵`,
|
| 2923 |
+
zscr: `𝓏`,
|
| 2924 |
+
zwj: ``,
|
| 2925 |
+
zwnj: ``
|
| 2926 |
+
}), exports.entityMap = exports.HTML_ENTITIES;
|
| 2927 |
+
})), i = o$1(((exports) => {
|
| 2928 |
+
var n = t().NAMESPACE, r = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, i = RegExp(`[\\-\\.0-9` + r.source.slice(1, -1) + `\\u00B7\\u0300-\\u036F\\u203F-\\u2040]`), a = RegExp(`^` + r.source + i.source + `*(?::` + r.source + i.source + `*)?$`), o = 0, s = 1, c = 2, l = 3, u = 4, d = 5, f = 6, p = 7;
|
| 2929 |
+
function m(e, t) {
|
| 2930 |
+
this.message = e, this.locator = t, Error.captureStackTrace && Error.captureStackTrace(this, m);
|
| 2931 |
+
}
|
| 2932 |
+
m.prototype = Error(), m.prototype.name = m.name;
|
| 2933 |
+
function h() {}
|
| 2934 |
+
h.prototype = { parse: function(e, t, n) {
|
| 2935 |
+
var r = this.domBuilder;
|
| 2936 |
+
r.startDocument(), S(t, t = {}), g(e, t, n, r, this.errorHandler), r.endDocument();
|
| 2937 |
+
} };
|
| 2938 |
+
function g(e, t, r, i, a) {
|
| 2939 |
+
function o(e) {
|
| 2940 |
+
if (e > 65535) {
|
| 2941 |
+
e -= 65536;
|
| 2942 |
+
var t = 55296 + (e >> 10), n = 56320 + (e & 1023);
|
| 2943 |
+
return String.fromCharCode(t, n);
|
| 2944 |
+
} else return String.fromCharCode(e);
|
| 2945 |
+
}
|
| 2946 |
+
function s(e) {
|
| 2947 |
+
var t = e.slice(1, -1);
|
| 2948 |
+
return Object.hasOwnProperty.call(r, t) ? r[t] : t.charAt(0) === `#` ? o(parseInt(t.substr(1).replace(`x`, `0x`))) : (a.error(`entity not found:` + e), e);
|
| 2949 |
+
}
|
| 2950 |
+
function c(t) {
|
| 2951 |
+
if (t > S) {
|
| 2952 |
+
var n = e.substring(S, t).replace(/&#?\w+;/g, s);
|
| 2953 |
+
p && l(S), i.characters(n, 0, t - S), S = t;
|
| 2954 |
+
}
|
| 2955 |
+
}
|
| 2956 |
+
function l(t, n) {
|
| 2957 |
+
for (; t >= d && (n = f.exec(e));) u = n.index, d = u + n[0].length, p.lineNumber++;
|
| 2958 |
+
p.columnNumber = t - u + 1;
|
| 2959 |
+
}
|
| 2960 |
+
for (var u = 0, d = 0, f = /.*(?:\r\n?|\n)|.*$/g, p = i.locator, h = [{ currentNSMap: t }], g = {}, S = 0;;) {
|
| 2961 |
+
try {
|
| 2962 |
+
var E = e.indexOf(`<`, S);
|
| 2963 |
+
if (E < 0) {
|
| 2964 |
+
if (!e.substr(S).match(/^\s*$/)) {
|
| 2965 |
+
var D = i.doc, O = D.createTextNode(e.substr(S));
|
| 2966 |
+
D.appendChild(O), i.currentElement = O;
|
| 2967 |
+
}
|
| 2968 |
+
return;
|
| 2969 |
+
}
|
| 2970 |
+
switch (E > S && c(E), e.charAt(E + 1)) {
|
| 2971 |
+
case `/`:
|
| 2972 |
+
var k = e.indexOf(`>`, E + 3), A = e.substring(E + 2, k).replace(/[ \t\n\r]+$/g, ``), j = h.pop();
|
| 2973 |
+
k < 0 ? (A = e.substring(E + 2).replace(/[\s<].*/, ``), a.error(`end tag name: ` + A + ` is not complete:` + j.tagName), k = E + 1 + A.length) : A.match(/\s</) && (A = A.replace(/[\s<].*/, ``), a.error(`end tag name: ` + A + ` maybe not complete`), k = E + 1 + A.length);
|
| 2974 |
+
var M = j.localNSMap, N = j.tagName == A;
|
| 2975 |
+
if (N || j.tagName && j.tagName.toLowerCase() == A.toLowerCase()) {
|
| 2976 |
+
if (i.endElement(j.uri, j.localName, A), M) for (var P in M) Object.prototype.hasOwnProperty.call(M, P) && i.endPrefixMapping(P);
|
| 2977 |
+
N || a.fatalError(`end tag name: ` + A + ` is not match the current start tagName:` + j.tagName);
|
| 2978 |
+
} else h.push(j);
|
| 2979 |
+
k++;
|
| 2980 |
+
break;
|
| 2981 |
+
case `?`:
|
| 2982 |
+
p && l(E), k = w(e, E, i);
|
| 2983 |
+
break;
|
| 2984 |
+
case `!`:
|
| 2985 |
+
p && l(E), k = C(e, E, i, a);
|
| 2986 |
+
break;
|
| 2987 |
+
default:
|
| 2988 |
+
p && l(E);
|
| 2989 |
+
var F = new T(), I = h[h.length - 1].currentNSMap, k = v(e, E, F, I, s, a), L = F.length;
|
| 2990 |
+
if (!F.closed && x(e, k, F.tagName, g) && (F.closed = !0, r.nbsp || a.warning(`unclosed xml attribute`)), p && L) {
|
| 2991 |
+
for (var R = _(p, {}), z = 0; z < L; z++) {
|
| 2992 |
+
var B = F[z];
|
| 2993 |
+
l(B.offset), B.locator = _(p, {});
|
| 2994 |
+
}
|
| 2995 |
+
i.locator = R, y(F, i, I) && h.push(F), i.locator = p;
|
| 2996 |
+
} else y(F, i, I) && h.push(F);
|
| 2997 |
+
n.isHTML(F.uri) && !F.closed ? k = b(e, k, F.tagName, s, i) : k++;
|
| 2998 |
+
}
|
| 2999 |
+
} catch (e) {
|
| 3000 |
+
if (e instanceof m) throw e;
|
| 3001 |
+
a.error(`element parse error: ` + e), k = -1;
|
| 3002 |
+
}
|
| 3003 |
+
k > S ? S = k : c(Math.max(E, S) + 1);
|
| 3004 |
+
}
|
| 3005 |
+
}
|
| 3006 |
+
function _(e, t) {
|
| 3007 |
+
return t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber, t;
|
| 3008 |
+
}
|
| 3009 |
+
function v(e, t, r, i, a, m) {
|
| 3010 |
+
function h(e, t, n) {
|
| 3011 |
+
r.attributeNames.hasOwnProperty(e) && m.fatalError(`Attribute ` + e + ` redefined`), r.addValue(e, t.replace(/[\t\n\r]/g, ` `).replace(/&#?\w+;/g, a), n);
|
| 3012 |
+
}
|
| 3013 |
+
for (var g, _, v = ++t, y = o;;) {
|
| 3014 |
+
var b = e.charAt(v);
|
| 3015 |
+
switch (b) {
|
| 3016 |
+
case `=`:
|
| 3017 |
+
if (y === s) g = e.slice(t, v), y = l;
|
| 3018 |
+
else if (y === c) y = l;
|
| 3019 |
+
else throw Error(`attribute equal must after attrName`);
|
| 3020 |
+
break;
|
| 3021 |
+
case `'`:
|
| 3022 |
+
case `"`:
|
| 3023 |
+
if (y === l || y === s) if (y === s && (m.warning(`attribute value must after "="`), g = e.slice(t, v)), t = v + 1, v = e.indexOf(b, t), v > 0) _ = e.slice(t, v), h(g, _, t - 1), y = d;
|
| 3024 |
+
else throw Error(`attribute value no end '` + b + `' match`);
|
| 3025 |
+
else if (y == u) _ = e.slice(t, v), h(g, _, t), m.warning(`attribute "` + g + `" missed start quot(` + b + `)!!`), t = v + 1, y = d;
|
| 3026 |
+
else throw Error(`attribute value must after "="`);
|
| 3027 |
+
break;
|
| 3028 |
+
case `/`:
|
| 3029 |
+
switch (y) {
|
| 3030 |
+
case o: r.setTagName(e.slice(t, v));
|
| 3031 |
+
case d:
|
| 3032 |
+
case f:
|
| 3033 |
+
case p: y = p, r.closed = !0;
|
| 3034 |
+
case u:
|
| 3035 |
+
case s: break;
|
| 3036 |
+
case c:
|
| 3037 |
+
r.closed = !0;
|
| 3038 |
+
break;
|
| 3039 |
+
default: throw Error(`attribute invalid close char('/')`);
|
| 3040 |
+
}
|
| 3041 |
+
break;
|
| 3042 |
+
case ``: return m.error(`unexpected end of input`), y == o && r.setTagName(e.slice(t, v)), v;
|
| 3043 |
+
case `>`:
|
| 3044 |
+
switch (y) {
|
| 3045 |
+
case o: r.setTagName(e.slice(t, v));
|
| 3046 |
+
case d:
|
| 3047 |
+
case f:
|
| 3048 |
+
case p: break;
|
| 3049 |
+
case u:
|
| 3050 |
+
case s: _ = e.slice(t, v), _.slice(-1) === `/` && (r.closed = !0, _ = _.slice(0, -1));
|
| 3051 |
+
case c:
|
| 3052 |
+
y === c && (_ = g), y == u ? (m.warning(`attribute "` + _ + `" missed quot(")!`), h(g, _, t)) : ((!n.isHTML(i[``]) || !_.match(/^(?:disabled|checked|selected)$/i)) && m.warning(`attribute "` + _ + `" missed value!! "` + _ + `" instead!!`), h(_, _, t));
|
| 3053 |
+
break;
|
| 3054 |
+
case l: throw Error(`attribute value missed!!`);
|
| 3055 |
+
}
|
| 3056 |
+
return v;
|
| 3057 |
+
case ``: b = ` `;
|
| 3058 |
+
default: if (b <= ` `) switch (y) {
|
| 3059 |
+
case o:
|
| 3060 |
+
r.setTagName(e.slice(t, v)), y = f;
|
| 3061 |
+
break;
|
| 3062 |
+
case s:
|
| 3063 |
+
g = e.slice(t, v), y = c;
|
| 3064 |
+
break;
|
| 3065 |
+
case u:
|
| 3066 |
+
var _ = e.slice(t, v);
|
| 3067 |
+
m.warning(`attribute "` + _ + `" missed quot(")!!`), h(g, _, t);
|
| 3068 |
+
case d:
|
| 3069 |
+
y = f;
|
| 3070 |
+
break;
|
| 3071 |
+
}
|
| 3072 |
+
else switch (y) {
|
| 3073 |
+
case c:
|
| 3074 |
+
r.tagName, (!n.isHTML(i[``]) || !g.match(/^(?:disabled|checked|selected)$/i)) && m.warning(`attribute "` + g + `" missed value!! "` + g + `" instead2!!`), h(g, g, t), t = v, y = s;
|
| 3075 |
+
break;
|
| 3076 |
+
case d: m.warning(`attribute space is required"` + g + `"!!`);
|
| 3077 |
+
case f:
|
| 3078 |
+
y = s, t = v;
|
| 3079 |
+
break;
|
| 3080 |
+
case l:
|
| 3081 |
+
y = u, t = v;
|
| 3082 |
+
break;
|
| 3083 |
+
case p: throw Error(`elements closed character '/' and '>' must be connected to`);
|
| 3084 |
+
}
|
| 3085 |
+
}
|
| 3086 |
+
v++;
|
| 3087 |
+
}
|
| 3088 |
+
}
|
| 3089 |
+
function y(e, t, r) {
|
| 3090 |
+
for (var i = e.tagName, a = null, o = e.length; o--;) {
|
| 3091 |
+
var s = e[o], c = s.qName, l = s.value, u = c.indexOf(`:`);
|
| 3092 |
+
if (u > 0) var d = s.prefix = c.slice(0, u), f = c.slice(u + 1), p = d === `xmlns` && f;
|
| 3093 |
+
else f = c, d = null, p = c === `xmlns` && ``;
|
| 3094 |
+
s.localName = f, p !== !1 && (a ?? (a = {}, S(r, r = {})), r[p] = a[p] = l, s.uri = n.XMLNS, t.startPrefixMapping(p, l));
|
| 3095 |
+
}
|
| 3096 |
+
for (var o = e.length; o--;) {
|
| 3097 |
+
s = e[o];
|
| 3098 |
+
var d = s.prefix;
|
| 3099 |
+
d && (d === `xml` && (s.uri = n.XML), d !== `xmlns` && (s.uri = r[d || ``]));
|
| 3100 |
+
}
|
| 3101 |
+
var u = i.indexOf(`:`);
|
| 3102 |
+
u > 0 ? (d = e.prefix = i.slice(0, u), f = e.localName = i.slice(u + 1)) : (d = null, f = e.localName = i);
|
| 3103 |
+
var m = e.uri = r[d || ``];
|
| 3104 |
+
if (t.startElement(m, f, i, e), e.closed) {
|
| 3105 |
+
if (t.endElement(m, f, i), a) for (d in a) Object.prototype.hasOwnProperty.call(a, d) && t.endPrefixMapping(d);
|
| 3106 |
+
} else return e.currentNSMap = r, e.localNSMap = a, !0;
|
| 3107 |
+
}
|
| 3108 |
+
function b(e, t, n, r, i) {
|
| 3109 |
+
if (/^(?:script|textarea)$/i.test(n)) {
|
| 3110 |
+
var a = e.indexOf(`</` + n + `>`, t), o = e.substring(t + 1, a);
|
| 3111 |
+
if (/[&<]/.test(o)) return /^script$/i.test(n) ? (i.characters(o, 0, o.length), a) : (o = o.replace(/&#?\w+;/g, r), i.characters(o, 0, o.length), a);
|
| 3112 |
+
}
|
| 3113 |
+
return t + 1;
|
| 3114 |
+
}
|
| 3115 |
+
function x(e, t, n, r) {
|
| 3116 |
+
var i = r[n];
|
| 3117 |
+
return i ?? (i = e.lastIndexOf(`</` + n + `>`), i < t && (i = e.lastIndexOf(`</` + n)), r[n] = i), i < t;
|
| 3118 |
+
}
|
| 3119 |
+
function S(e, t) {
|
| 3120 |
+
for (var n in e) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]);
|
| 3121 |
+
}
|
| 3122 |
+
function C(e, t, n, r) {
|
| 3123 |
+
switch (e.charAt(t + 2)) {
|
| 3124 |
+
case `-`: if (e.charAt(t + 3) === `-`) {
|
| 3125 |
+
var i = e.indexOf(`-->`, t + 4);
|
| 3126 |
+
return i > t ? (n.comment(e, t + 4, i - t - 4), i + 3) : (r.error(`Unclosed comment`), -1);
|
| 3127 |
+
} else return -1;
|
| 3128 |
+
default:
|
| 3129 |
+
if (e.substr(t + 3, 6) == `CDATA[`) {
|
| 3130 |
+
var i = e.indexOf(`]]>`, t + 9);
|
| 3131 |
+
return n.startCDATA(), n.characters(e, t + 9, i - t - 9), n.endCDATA(), i + 3;
|
| 3132 |
+
}
|
| 3133 |
+
var a = E(e, t), o = a.length;
|
| 3134 |
+
if (o > 1 && /!doctype/i.test(a[0][0])) {
|
| 3135 |
+
var s = a[1][0], c = !1, l = !1;
|
| 3136 |
+
o > 3 && (/^public$/i.test(a[2][0]) ? (c = a[3][0], l = o > 4 && a[4][0]) : /^system$/i.test(a[2][0]) && (l = a[3][0]));
|
| 3137 |
+
var u = a[o - 1];
|
| 3138 |
+
return n.startDTD(s, c, l), n.endDTD(), u.index + u[0].length;
|
| 3139 |
+
}
|
| 3140 |
+
}
|
| 3141 |
+
return -1;
|
| 3142 |
+
}
|
| 3143 |
+
function w(e, t, n) {
|
| 3144 |
+
var r = e.indexOf(`?>`, t);
|
| 3145 |
+
if (r) {
|
| 3146 |
+
var i = e.substring(t, r).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);
|
| 3147 |
+
return i ? (i[0].length, n.processingInstruction(i[1], i[2]), r + 2) : -1;
|
| 3148 |
+
}
|
| 3149 |
+
return -1;
|
| 3150 |
+
}
|
| 3151 |
+
function T() {
|
| 3152 |
+
this.attributeNames = {};
|
| 3153 |
+
}
|
| 3154 |
+
T.prototype = {
|
| 3155 |
+
setTagName: function(e) {
|
| 3156 |
+
if (!a.test(e)) throw Error(`invalid tagName:` + e);
|
| 3157 |
+
this.tagName = e;
|
| 3158 |
+
},
|
| 3159 |
+
addValue: function(e, t, n) {
|
| 3160 |
+
if (!a.test(e)) throw Error(`invalid attribute:` + e);
|
| 3161 |
+
this.attributeNames[e] = this.length, this[this.length++] = {
|
| 3162 |
+
qName: e,
|
| 3163 |
+
value: t,
|
| 3164 |
+
offset: n
|
| 3165 |
+
};
|
| 3166 |
+
},
|
| 3167 |
+
length: 0,
|
| 3168 |
+
getLocalName: function(e) {
|
| 3169 |
+
return this[e].localName;
|
| 3170 |
+
},
|
| 3171 |
+
getLocator: function(e) {
|
| 3172 |
+
return this[e].locator;
|
| 3173 |
+
},
|
| 3174 |
+
getQName: function(e) {
|
| 3175 |
+
return this[e].qName;
|
| 3176 |
+
},
|
| 3177 |
+
getURI: function(e) {
|
| 3178 |
+
return this[e].uri;
|
| 3179 |
+
},
|
| 3180 |
+
getValue: function(e) {
|
| 3181 |
+
return this[e].value;
|
| 3182 |
+
}
|
| 3183 |
+
};
|
| 3184 |
+
function E(e, t) {
|
| 3185 |
+
var n, r = [], i = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;
|
| 3186 |
+
for (i.lastIndex = t, i.exec(e); n = i.exec(e);) if (r.push(n), n[1]) return r;
|
| 3187 |
+
}
|
| 3188 |
+
exports.XMLReader = h, exports.ParseError = m;
|
| 3189 |
+
})), a = o$1(((exports) => {
|
| 3190 |
+
var a = t(), o = n(), s = r(), c = i(), l = o.DOMImplementation, u = a.NAMESPACE, d = c.ParseError, f = c.XMLReader;
|
| 3191 |
+
function p(e) {
|
| 3192 |
+
return e.replace(/\r[\n\u0085]/g, `
|
| 3193 |
+
`).replace(/[\r\u0085\u2028]/g, `
|
| 3194 |
+
`);
|
| 3195 |
+
}
|
| 3196 |
+
function m(e) {
|
| 3197 |
+
this.options = e || { locator: {} };
|
| 3198 |
+
}
|
| 3199 |
+
m.prototype.parseFromString = function(e, t) {
|
| 3200 |
+
var n = this.options, r = new f(), i = n.domBuilder || new g(), a = n.errorHandler, o = n.locator, c = n.xmlns || {}, l = /\/x?html?$/.test(t), d = l ? s.HTML_ENTITIES : s.XML_ENTITIES;
|
| 3201 |
+
o && i.setDocumentLocator(o), r.errorHandler = h(a, i, o), r.domBuilder = n.domBuilder || i, l && (c[``] = u.HTML), c.xml = c.xml || u.XML;
|
| 3202 |
+
var m = n.normalizeLineEndings || p;
|
| 3203 |
+
return e && typeof e == `string` ? r.parse(m(e), c, d) : r.errorHandler.error(`invalid doc source`), i.doc;
|
| 3204 |
+
};
|
| 3205 |
+
function h(e, t, n) {
|
| 3206 |
+
if (!e) {
|
| 3207 |
+
if (t instanceof g) return t;
|
| 3208 |
+
e = t;
|
| 3209 |
+
}
|
| 3210 |
+
var r = {}, i = e instanceof Function;
|
| 3211 |
+
n ||= {};
|
| 3212 |
+
function a(t) {
|
| 3213 |
+
var a = e[t];
|
| 3214 |
+
!a && i && (a = e.length == 2 ? function(n) {
|
| 3215 |
+
e(t, n);
|
| 3216 |
+
} : e), r[t] = a && function(e) {
|
| 3217 |
+
a(`[xmldom ` + t + `] ` + e + v(n));
|
| 3218 |
+
} || function() {};
|
| 3219 |
+
}
|
| 3220 |
+
return a(`warning`), a(`error`), a(`fatalError`), r;
|
| 3221 |
+
}
|
| 3222 |
+
function g() {
|
| 3223 |
+
this.cdata = !1;
|
| 3224 |
+
}
|
| 3225 |
+
function _(e, t) {
|
| 3226 |
+
t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber;
|
| 3227 |
+
}
|
| 3228 |
+
g.prototype = {
|
| 3229 |
+
startDocument: function() {
|
| 3230 |
+
this.doc = new l().createDocument(null, null, null), this.locator && (this.doc.documentURI = this.locator.systemId);
|
| 3231 |
+
},
|
| 3232 |
+
startElement: function(e, t, n, r) {
|
| 3233 |
+
var i = this.doc, a = i.createElementNS(e, n || t), o = r.length;
|
| 3234 |
+
b(this, a), this.currentElement = a, this.locator && _(this.locator, a);
|
| 3235 |
+
for (var s = 0; s < o; s++) {
|
| 3236 |
+
var e = r.getURI(s), c = r.getValue(s), n = r.getQName(s), l = i.createAttributeNS(e, n);
|
| 3237 |
+
this.locator && _(r.getLocator(s), l), l.value = l.nodeValue = c, a.setAttributeNode(l);
|
| 3238 |
+
}
|
| 3239 |
+
},
|
| 3240 |
+
endElement: function(e, t, n) {
|
| 3241 |
+
var r = this.currentElement;
|
| 3242 |
+
r.tagName, this.currentElement = r.parentNode;
|
| 3243 |
+
},
|
| 3244 |
+
startPrefixMapping: function(e, t) {},
|
| 3245 |
+
endPrefixMapping: function(e) {},
|
| 3246 |
+
processingInstruction: function(e, t) {
|
| 3247 |
+
var n = this.doc.createProcessingInstruction(e, t);
|
| 3248 |
+
this.locator && _(this.locator, n), b(this, n);
|
| 3249 |
+
},
|
| 3250 |
+
ignorableWhitespace: function(e, t, n) {},
|
| 3251 |
+
characters: function(e, t, n) {
|
| 3252 |
+
if (e = y.apply(this, arguments), e) {
|
| 3253 |
+
if (this.cdata) var r = this.doc.createCDATASection(e);
|
| 3254 |
+
else var r = this.doc.createTextNode(e);
|
| 3255 |
+
this.currentElement ? this.currentElement.appendChild(r) : /^\s*$/.test(e) && this.doc.appendChild(r), this.locator && _(this.locator, r);
|
| 3256 |
+
}
|
| 3257 |
+
},
|
| 3258 |
+
skippedEntity: function(e) {},
|
| 3259 |
+
endDocument: function() {
|
| 3260 |
+
this.doc.normalize();
|
| 3261 |
+
},
|
| 3262 |
+
setDocumentLocator: function(e) {
|
| 3263 |
+
(this.locator = e) && (e.lineNumber = 0);
|
| 3264 |
+
},
|
| 3265 |
+
comment: function(e, t, n) {
|
| 3266 |
+
e = y.apply(this, arguments);
|
| 3267 |
+
var r = this.doc.createComment(e);
|
| 3268 |
+
this.locator && _(this.locator, r), b(this, r);
|
| 3269 |
+
},
|
| 3270 |
+
startCDATA: function() {
|
| 3271 |
+
this.cdata = !0;
|
| 3272 |
+
},
|
| 3273 |
+
endCDATA: function() {
|
| 3274 |
+
this.cdata = !1;
|
| 3275 |
+
},
|
| 3276 |
+
startDTD: function(e, t, n) {
|
| 3277 |
+
var r = this.doc.implementation;
|
| 3278 |
+
if (r && r.createDocumentType) {
|
| 3279 |
+
var i = r.createDocumentType(e, t, n);
|
| 3280 |
+
this.locator && _(this.locator, i), b(this, i), this.doc.doctype = i;
|
| 3281 |
+
}
|
| 3282 |
+
},
|
| 3283 |
+
warning: function(e) {
|
| 3284 |
+
console.warn(`[xmldom warning] ` + e, v(this.locator));
|
| 3285 |
+
},
|
| 3286 |
+
error: function(e) {
|
| 3287 |
+
console.error(`[xmldom error] ` + e, v(this.locator));
|
| 3288 |
+
},
|
| 3289 |
+
fatalError: function(e) {
|
| 3290 |
+
throw new d(e, this.locator);
|
| 3291 |
+
}
|
| 3292 |
+
};
|
| 3293 |
+
function v(e) {
|
| 3294 |
+
if (e) return `
|
| 3295 |
+
@` + (e.systemId || ``) + `#[line:` + e.lineNumber + `,col:` + e.columnNumber + `]`;
|
| 3296 |
+
}
|
| 3297 |
+
function y(e, t, n) {
|
| 3298 |
+
return typeof e == `string` ? e.substr(t, n) : e.length >= t + n || t ? new java.lang.String(e, t, n) + `` : e;
|
| 3299 |
+
}
|
| 3300 |
+
`endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl`.replace(/\w+/g, function(e) {
|
| 3301 |
+
g.prototype[e] = function() {
|
| 3302 |
+
return null;
|
| 3303 |
+
};
|
| 3304 |
+
});
|
| 3305 |
+
function b(e, t) {
|
| 3306 |
+
e.currentElement ? e.currentElement.appendChild(t) : e.doc.appendChild(t);
|
| 3307 |
+
}
|
| 3308 |
+
exports.__DOMHandler = g, exports.normalizeLineEndings = p, exports.DOMParser = m;
|
| 3309 |
+
}));
|
| 3310 |
+
var lib_CBtriEt5_default = o$1(((exports) => {
|
| 3311 |
+
var t = n();
|
| 3312 |
+
exports.DOMImplementation = t.DOMImplementation, exports.XMLSerializer = t.XMLSerializer, exports.DOMParser = a().DOMParser;
|
| 3313 |
+
}))();
|
| 3314 |
+
//#endregion
|
| 3315 |
+
export { lib_CBtriEt5_default as default };
|
| 3316 |
+
|
| 3317 |
+
//# sourceMappingURL=lib-CBtriEt5.js.map
|
viewer/assets/liteDOM-Cp0aN3bP.js
ADDED
|
@@ -0,0 +1,747 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//#region ../../node_modules/.pnpm/mathxyjax3@0.8.3/node_modules/mathxyjax3/dist/liteDOM-Cp0aN3bP.js
|
| 2 |
+
(function() {
|
| 3 |
+
var e, t, n, r, i, a, o, s, c, l = {
|
| 4 |
+
244: function(e, t, n) {
|
| 5 |
+
var r, i = this && this.__extends || (r = function(e, t) {
|
| 6 |
+
return r = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, t) {
|
| 7 |
+
e.__proto__ = t;
|
| 8 |
+
} || function(e, t) {
|
| 9 |
+
for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
|
| 10 |
+
}, r(e, t);
|
| 11 |
+
}, function(e, t) {
|
| 12 |
+
if (typeof t != `function` && t !== null) throw TypeError(`Class extends value ` + String(t) + ` is not a constructor or null`);
|
| 13 |
+
function n() {
|
| 14 |
+
this.constructor = e;
|
| 15 |
+
}
|
| 16 |
+
r(e, t), e.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n());
|
| 17 |
+
}), a = this && this.__assign || function() {
|
| 18 |
+
return a = Object.assign || function(e) {
|
| 19 |
+
for (var t, n = 1, r = arguments.length; n < r; n++) for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
|
| 20 |
+
return e;
|
| 21 |
+
}, a.apply(this, arguments);
|
| 22 |
+
};
|
| 23 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.NodeMixin = t.NodeMixinOptions = void 0;
|
| 24 |
+
var o = n(77);
|
| 25 |
+
t.NodeMixinOptions = {
|
| 26 |
+
badCSS: !0,
|
| 27 |
+
badSizes: !0
|
| 28 |
+
}, t.NodeMixin = function(e, n) {
|
| 29 |
+
var r;
|
| 30 |
+
return n === void 0 && (n = {}), n = (0, o.userOptions)((0, o.defaultOptions)({}, t.NodeMixinOptions), n), r = function(e) {
|
| 31 |
+
function t() {
|
| 32 |
+
var t = [...arguments], n = e.call(this, t[0]) || this, r = n.constructor;
|
| 33 |
+
return n.options = (0, o.userOptions)((0, o.defaultOptions)({}, r.OPTIONS), t[1]), n;
|
| 34 |
+
}
|
| 35 |
+
return i(t, e), t.prototype.fontSize = function(t) {
|
| 36 |
+
return n.badCSS ? this.options.fontSize : e.prototype.fontSize.call(this, t);
|
| 37 |
+
}, t.prototype.fontFamily = function(t) {
|
| 38 |
+
return n.badCSS ? this.options.fontFamily : e.prototype.fontFamily.call(this, t);
|
| 39 |
+
}, t.prototype.nodeSize = function(r, i, a) {
|
| 40 |
+
if (i === void 0 && (i = 1), a === void 0 && (a = null), !n.badSizes) return e.prototype.nodeSize.call(this, r, i, a);
|
| 41 |
+
var o = this.textContent(r), s = Array.from(o.replace(t.cjkPattern, ``)).length;
|
| 42 |
+
return [(Array.from(o).length - s) * this.options.cjkCharWidth + s * this.options.unknownCharWidth, this.options.unknownCharHeight];
|
| 43 |
+
}, t.prototype.nodeBBox = function(t) {
|
| 44 |
+
return n.badSizes ? {
|
| 45 |
+
left: 0,
|
| 46 |
+
right: 0,
|
| 47 |
+
top: 0,
|
| 48 |
+
bottom: 0
|
| 49 |
+
} : e.prototype.nodeBBox.call(this, t);
|
| 50 |
+
}, t;
|
| 51 |
+
}(e), r.OPTIONS = a(a({}, n.badCSS ? {
|
| 52 |
+
fontSize: 16,
|
| 53 |
+
fontFamily: `Times`
|
| 54 |
+
} : {}), n.badSizes ? {
|
| 55 |
+
cjkCharWidth: 1,
|
| 56 |
+
unknownCharWidth: .6,
|
| 57 |
+
unknownCharHeight: .8
|
| 58 |
+
} : {}), r.cjkPattern = new RegExp([
|
| 59 |
+
`[`,
|
| 60 |
+
`ᄀ-ᅟ`,
|
| 61 |
+
`〈〉`,
|
| 62 |
+
`⺀-〾`,
|
| 63 |
+
`-㉇`,
|
| 64 |
+
`㉐-䶿`,
|
| 65 |
+
`一-꓆`,
|
| 66 |
+
`ꥠ-ꥼ`,
|
| 67 |
+
`가-힣`,
|
| 68 |
+
`豈-`,
|
| 69 |
+
`︐-︙`,
|
| 70 |
+
`︰-﹫`,
|
| 71 |
+
`!-⦆¢-₩`,
|
| 72 |
+
`𛀀-𛀁`,
|
| 73 |
+
`🈀-🉑`,
|
| 74 |
+
`𠀀-`,
|
| 75 |
+
`]`
|
| 76 |
+
].join(``), `gu`), r;
|
| 77 |
+
};
|
| 78 |
+
},
|
| 79 |
+
877: function(e, t, n) {
|
| 80 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.LiteDocument = void 0;
|
| 81 |
+
var r = n(946);
|
| 82 |
+
t.LiteDocument = function() {
|
| 83 |
+
function e() {
|
| 84 |
+
this.root = new r.LiteElement(`html`, {}, [this.head = new r.LiteElement(`head`), this.body = new r.LiteElement(`body`)]), this.type = ``;
|
| 85 |
+
}
|
| 86 |
+
return Object.defineProperty(e.prototype, `kind`, {
|
| 87 |
+
get: function() {
|
| 88 |
+
return `#document`;
|
| 89 |
+
},
|
| 90 |
+
enumerable: !1,
|
| 91 |
+
configurable: !0
|
| 92 |
+
}), e;
|
| 93 |
+
}();
|
| 94 |
+
},
|
| 95 |
+
946: function(e, t) {
|
| 96 |
+
var n = this && this.__assign || function() {
|
| 97 |
+
return n = Object.assign || function(e) {
|
| 98 |
+
for (var t, n = 1, r = arguments.length; n < r; n++) for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
|
| 99 |
+
return e;
|
| 100 |
+
}, n.apply(this, arguments);
|
| 101 |
+
}, r = this && this.__read || function(e, t) {
|
| 102 |
+
var n = typeof Symbol == `function` && e[Symbol.iterator];
|
| 103 |
+
if (!n) return e;
|
| 104 |
+
var r, i, a = n.call(e), o = [];
|
| 105 |
+
try {
|
| 106 |
+
for (; (t === void 0 || t-- > 0) && !(r = a.next()).done;) o.push(r.value);
|
| 107 |
+
} catch (e) {
|
| 108 |
+
i = { error: e };
|
| 109 |
+
} finally {
|
| 110 |
+
try {
|
| 111 |
+
r && !r.done && (n = a.return) && n.call(a);
|
| 112 |
+
} finally {
|
| 113 |
+
if (i) throw i.error;
|
| 114 |
+
}
|
| 115 |
+
}
|
| 116 |
+
return o;
|
| 117 |
+
}, i = this && this.__spreadArray || function(e, t, n) {
|
| 118 |
+
if (n || arguments.length === 2) for (var r, i = 0, a = t.length; i < a; i++) !r && i in t || (r ||= Array.prototype.slice.call(t, 0, i), r[i] = t[i]);
|
| 119 |
+
return e.concat(r || Array.prototype.slice.call(t));
|
| 120 |
+
}, a = this && this.__values || function(e) {
|
| 121 |
+
var t = typeof Symbol == `function` && Symbol.iterator, n = t && e[t], r = 0;
|
| 122 |
+
if (n) return n.call(e);
|
| 123 |
+
if (e && typeof e.length == `number`) return { next: function() {
|
| 124 |
+
return e && r >= e.length && (e = void 0), {
|
| 125 |
+
value: e && e[r++],
|
| 126 |
+
done: !e
|
| 127 |
+
};
|
| 128 |
+
} };
|
| 129 |
+
throw TypeError(t ? `Object is not iterable.` : `Symbol.iterator is not defined.`);
|
| 130 |
+
};
|
| 131 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.LiteElement = void 0, t.LiteElement = function(e, t, o) {
|
| 132 |
+
var s, c;
|
| 133 |
+
t === void 0 && (t = {}), o === void 0 && (o = []), this.kind = e, this.attributes = n({}, t), this.children = i([], r(o), !1);
|
| 134 |
+
try {
|
| 135 |
+
for (var l = a(this.children), u = l.next(); !u.done; u = l.next()) u.value.parent = this;
|
| 136 |
+
} catch (e) {
|
| 137 |
+
s = { error: e };
|
| 138 |
+
} finally {
|
| 139 |
+
try {
|
| 140 |
+
u && !u.done && (c = l.return) && c.call(l);
|
| 141 |
+
} finally {
|
| 142 |
+
if (s) throw s.error;
|
| 143 |
+
}
|
| 144 |
+
}
|
| 145 |
+
this.styles = null;
|
| 146 |
+
};
|
| 147 |
+
},
|
| 148 |
+
6: function(e, t) {
|
| 149 |
+
var n = this && this.__read || function(e, t) {
|
| 150 |
+
var n = typeof Symbol == `function` && e[Symbol.iterator];
|
| 151 |
+
if (!n) return e;
|
| 152 |
+
var r, i, a = n.call(e), o = [];
|
| 153 |
+
try {
|
| 154 |
+
for (; (t === void 0 || t-- > 0) && !(r = a.next()).done;) o.push(r.value);
|
| 155 |
+
} catch (e) {
|
| 156 |
+
i = { error: e };
|
| 157 |
+
} finally {
|
| 158 |
+
try {
|
| 159 |
+
r && !r.done && (n = a.return) && n.call(a);
|
| 160 |
+
} finally {
|
| 161 |
+
if (i) throw i.error;
|
| 162 |
+
}
|
| 163 |
+
}
|
| 164 |
+
return o;
|
| 165 |
+
}, r = this && this.__spreadArray || function(e, t, n) {
|
| 166 |
+
if (n || arguments.length === 2) for (var r, i = 0, a = t.length; i < a; i++) !r && i in t || (r ||= Array.prototype.slice.call(t, 0, i), r[i] = t[i]);
|
| 167 |
+
return e.concat(r || Array.prototype.slice.call(t));
|
| 168 |
+
};
|
| 169 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.LiteList = void 0, t.LiteList = function() {
|
| 170 |
+
function e(e) {
|
| 171 |
+
this.nodes = [], this.nodes = r([], n(e), !1);
|
| 172 |
+
}
|
| 173 |
+
return e.prototype.append = function(e) {
|
| 174 |
+
this.nodes.push(e);
|
| 175 |
+
}, e.prototype[Symbol.iterator] = function() {
|
| 176 |
+
var e = 0;
|
| 177 |
+
return { next: function() {
|
| 178 |
+
return e === this.nodes.length ? {
|
| 179 |
+
value: null,
|
| 180 |
+
done: !0
|
| 181 |
+
} : {
|
| 182 |
+
value: this.nodes[e++],
|
| 183 |
+
done: !1
|
| 184 |
+
};
|
| 185 |
+
} };
|
| 186 |
+
}, e;
|
| 187 |
+
}();
|
| 188 |
+
},
|
| 189 |
+
246: function(e, t, n) {
|
| 190 |
+
var r = this && this.__createBinding || (Object.create ? function(e, t, n, r) {
|
| 191 |
+
r === void 0 && (r = n);
|
| 192 |
+
var i = Object.getOwnPropertyDescriptor(t, n);
|
| 193 |
+
i && !(`get` in i ? !t.__esModule : i.writable || i.configurable) || (i = {
|
| 194 |
+
enumerable: !0,
|
| 195 |
+
get: function() {
|
| 196 |
+
return t[n];
|
| 197 |
+
}
|
| 198 |
+
}), Object.defineProperty(e, r, i);
|
| 199 |
+
} : function(e, t, n, r) {
|
| 200 |
+
r === void 0 && (r = n), e[r] = t[n];
|
| 201 |
+
}), i = this && this.__setModuleDefault || (Object.create ? function(e, t) {
|
| 202 |
+
Object.defineProperty(e, `default`, {
|
| 203 |
+
enumerable: !0,
|
| 204 |
+
value: t
|
| 205 |
+
});
|
| 206 |
+
} : function(e, t) {
|
| 207 |
+
e.default = t;
|
| 208 |
+
}), a = this && this.__importStar || function(e) {
|
| 209 |
+
if (e && e.__esModule) return e;
|
| 210 |
+
var t = {};
|
| 211 |
+
if (e != null) for (var n in e) n !== `default` && Object.prototype.hasOwnProperty.call(e, n) && r(t, e, n);
|
| 212 |
+
return i(t, e), t;
|
| 213 |
+
}, o = this && this.__read || function(e, t) {
|
| 214 |
+
var n = typeof Symbol == `function` && e[Symbol.iterator];
|
| 215 |
+
if (!n) return e;
|
| 216 |
+
var r, i, a = n.call(e), o = [];
|
| 217 |
+
try {
|
| 218 |
+
for (; (t === void 0 || t-- > 0) && !(r = a.next()).done;) o.push(r.value);
|
| 219 |
+
} catch (e) {
|
| 220 |
+
i = { error: e };
|
| 221 |
+
} finally {
|
| 222 |
+
try {
|
| 223 |
+
r && !r.done && (n = a.return) && n.call(a);
|
| 224 |
+
} finally {
|
| 225 |
+
if (i) throw i.error;
|
| 226 |
+
}
|
| 227 |
+
}
|
| 228 |
+
return o;
|
| 229 |
+
}, s = this && this.__values || function(e) {
|
| 230 |
+
var t = typeof Symbol == `function` && Symbol.iterator, n = t && e[t], r = 0;
|
| 231 |
+
if (n) return n.call(e);
|
| 232 |
+
if (e && typeof e.length == `number`) return { next: function() {
|
| 233 |
+
return e && r >= e.length && (e = void 0), {
|
| 234 |
+
value: e && e[r++],
|
| 235 |
+
done: !e
|
| 236 |
+
};
|
| 237 |
+
} };
|
| 238 |
+
throw TypeError(t ? `Object is not iterable.` : `Symbol.iterator is not defined.`);
|
| 239 |
+
};
|
| 240 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.LiteParser = t.PATTERNS = void 0;
|
| 241 |
+
var c, l = a(n(29)), u = n(946), d = n(735);
|
| 242 |
+
(function(e) {
|
| 243 |
+
e.TAGNAME = `[a-z][^\\s\\n>]*`, e.ATTNAME = `[a-z][^\\s\\n>=]*`, e.VALUE = `(?:'[^']*'|"[^"]*"|[^\\s\\n]+)`, e.VALUESPLIT = `(?:'([^']*)'|"([^"]*)"|([^\\s\\n]+))`, e.SPACE = `(?:\\s|\\n)+`, e.OPTIONALSPACE = `(?:\\s|\\n)*`, e.ATTRIBUTE = e.ATTNAME + `(?:` + e.OPTIONALSPACE + `=` + e.OPTIONALSPACE + e.VALUE + `)?`, e.ATTRIBUTESPLIT = `(` + e.ATTNAME + `)(?:` + e.OPTIONALSPACE + `=` + e.OPTIONALSPACE + e.VALUESPLIT + `)?`, e.TAG = `(<(?:` + e.TAGNAME + `(?:` + e.SPACE + e.ATTRIBUTE + `)*` + e.OPTIONALSPACE + `/?|/` + e.TAGNAME + `|!--[^]*?--|![^]*?)(?:>|$))`, e.tag = new RegExp(e.TAG, `i`), e.attr = new RegExp(e.ATTRIBUTE, `i`), e.attrsplit = new RegExp(e.ATTRIBUTESPLIT, `i`);
|
| 244 |
+
})(c = t.PATTERNS ||= {}), t.LiteParser = function() {
|
| 245 |
+
function e() {}
|
| 246 |
+
return e.prototype.parseFromString = function(e, t, n) {
|
| 247 |
+
t === void 0 && (t = `text/html`), n === void 0 && (n = null);
|
| 248 |
+
for (var r = n.createDocument(), i = n.body(r), a = e.replace(/<\?.*?\?>/g, ``).split(c.tag); a.length;) {
|
| 249 |
+
var o = a.shift(), s = a.shift();
|
| 250 |
+
o && this.addText(n, i, o), s && s.charAt(s.length - 1) === `>` && (s.charAt(1) === `!` ? this.addComment(n, i, s) : i = s.charAt(1) === `/` ? this.closeTag(n, i, s) : this.openTag(n, i, s, a));
|
| 251 |
+
}
|
| 252 |
+
return this.checkDocument(n, r), r;
|
| 253 |
+
}, e.prototype.addText = function(e, t, n) {
|
| 254 |
+
return n = l.translate(n), e.append(t, e.text(n));
|
| 255 |
+
}, e.prototype.addComment = function(e, t, n) {
|
| 256 |
+
return e.append(t, new d.LiteComment(n));
|
| 257 |
+
}, e.prototype.closeTag = function(e, t, n) {
|
| 258 |
+
for (var r = n.slice(2, n.length - 1).toLowerCase(); e.parent(t) && e.kind(t) !== r;) t = e.parent(t);
|
| 259 |
+
return e.parent(t);
|
| 260 |
+
}, e.prototype.openTag = function(e, t, n, r) {
|
| 261 |
+
var i = this.constructor.PCDATA, a = this.constructor.SELF_CLOSING, o = n.match(/<(.*?)[\s\n>\/]/)[1].toLowerCase(), s = e.node(o), l = n.replace(/^<.*?[\s\n>]/, ``).split(c.attrsplit);
|
| 262 |
+
return (l.pop().match(/>$/) || l.length < 5) && (this.addAttributes(e, s, l), e.append(t, s), a[o] || n.match(/\/>$/) || (i[o] ? this.handlePCDATA(e, s, o, r) : t = s)), t;
|
| 263 |
+
}, e.prototype.addAttributes = function(e, t, n) {
|
| 264 |
+
for (var r = this.constructor.CDATA_ATTR; n.length;) {
|
| 265 |
+
var i = o(n.splice(0, 5), 5), a = i[1], s = i[2], c = i[3], u = i[4], d = s || c || u || ``;
|
| 266 |
+
r[a] || (d = l.translate(d)), e.setAttribute(t, a, d);
|
| 267 |
+
}
|
| 268 |
+
}, e.prototype.handlePCDATA = function(e, t, n, r) {
|
| 269 |
+
for (var i = [], a = `</` + n + `>`, o = ``; r.length && o !== a;) i.push(o), i.push(r.shift()), o = r.shift();
|
| 270 |
+
e.append(t, e.text(i.join(``)));
|
| 271 |
+
}, e.prototype.checkDocument = function(e, t) {
|
| 272 |
+
var n, r, i, a, o = this.getOnlyChild(e, e.body(t));
|
| 273 |
+
if (o) {
|
| 274 |
+
try {
|
| 275 |
+
for (var c = s(e.childNodes(e.body(t))), l = c.next(); !l.done && (p = l.value) !== o; l = c.next()) p instanceof d.LiteComment && p.value.match(/^<!DOCTYPE/) && (t.type = p.value);
|
| 276 |
+
} catch (e) {
|
| 277 |
+
n = { error: e };
|
| 278 |
+
} finally {
|
| 279 |
+
try {
|
| 280 |
+
l && !l.done && (r = c.return) && r.call(c);
|
| 281 |
+
} finally {
|
| 282 |
+
if (n) throw n.error;
|
| 283 |
+
}
|
| 284 |
+
}
|
| 285 |
+
switch (e.kind(o)) {
|
| 286 |
+
case `html`:
|
| 287 |
+
try {
|
| 288 |
+
for (var u = s(o.children), f = u.next(); !f.done; f = u.next()) {
|
| 289 |
+
var p = f.value;
|
| 290 |
+
switch (e.kind(p)) {
|
| 291 |
+
case `head`:
|
| 292 |
+
t.head = p;
|
| 293 |
+
break;
|
| 294 |
+
case `body`: t.body = p;
|
| 295 |
+
}
|
| 296 |
+
}
|
| 297 |
+
} catch (e) {
|
| 298 |
+
i = { error: e };
|
| 299 |
+
} finally {
|
| 300 |
+
try {
|
| 301 |
+
f && !f.done && (a = u.return) && a.call(u);
|
| 302 |
+
} finally {
|
| 303 |
+
if (i) throw i.error;
|
| 304 |
+
}
|
| 305 |
+
}
|
| 306 |
+
t.root = o, e.remove(o), e.parent(t.body) !== o && e.append(o, t.body), e.parent(t.head) !== o && e.insert(t.head, t.body);
|
| 307 |
+
break;
|
| 308 |
+
case `head`:
|
| 309 |
+
t.head = e.replace(o, t.head);
|
| 310 |
+
break;
|
| 311 |
+
case `body`: t.body = e.replace(o, t.body);
|
| 312 |
+
}
|
| 313 |
+
}
|
| 314 |
+
}, e.prototype.getOnlyChild = function(e, t) {
|
| 315 |
+
var n, r, i = null;
|
| 316 |
+
try {
|
| 317 |
+
for (var a = s(e.childNodes(t)), o = a.next(); !o.done; o = a.next()) {
|
| 318 |
+
var c = o.value;
|
| 319 |
+
if (c instanceof u.LiteElement) {
|
| 320 |
+
if (i) return null;
|
| 321 |
+
i = c;
|
| 322 |
+
}
|
| 323 |
+
}
|
| 324 |
+
} catch (e) {
|
| 325 |
+
n = { error: e };
|
| 326 |
+
} finally {
|
| 327 |
+
try {
|
| 328 |
+
o && !o.done && (r = a.return) && r.call(a);
|
| 329 |
+
} finally {
|
| 330 |
+
if (n) throw n.error;
|
| 331 |
+
}
|
| 332 |
+
}
|
| 333 |
+
return i;
|
| 334 |
+
}, e.prototype.serialize = function(e, t, n) {
|
| 335 |
+
var r = this;
|
| 336 |
+
n === void 0 && (n = !1);
|
| 337 |
+
var i = this.constructor.SELF_CLOSING, a = this.constructor.CDATA_ATTR, o = e.kind(t), s = e.allAttributes(t).map((function(e) {
|
| 338 |
+
return e.name + `="` + (a[e.name] ? e.value : r.protectAttribute(e.value)) + `"`;
|
| 339 |
+
})).join(` `), c = this.serializeInner(e, t, n);
|
| 340 |
+
return `<` + o + (s ? ` ` + s : ``) + (n && !c || i[o] ? n ? `/>` : `>` : `>${c}</${o}>`);
|
| 341 |
+
}, e.prototype.serializeInner = function(e, t, n) {
|
| 342 |
+
var r = this;
|
| 343 |
+
return n === void 0 && (n = !1), this.constructor.PCDATA.hasOwnProperty(t.kind) ? e.childNodes(t).map((function(t) {
|
| 344 |
+
return e.value(t);
|
| 345 |
+
})).join(``) : e.childNodes(t).map((function(t) {
|
| 346 |
+
var i = e.kind(t);
|
| 347 |
+
return i === `#text` ? r.protectHTML(e.value(t)) : i === `#comment` ? t.value : r.serialize(e, t, n);
|
| 348 |
+
})).join(``);
|
| 349 |
+
}, e.prototype.protectAttribute = function(e) {
|
| 350 |
+
return typeof e != `string` && (e = String(e)), e.replace(/"/g, `"`);
|
| 351 |
+
}, e.prototype.protectHTML = function(e) {
|
| 352 |
+
return e.replace(/&/g, `&`).replace(/</g, `<`).replace(/>/g, `>`);
|
| 353 |
+
}, e.SELF_CLOSING = {
|
| 354 |
+
area: !0,
|
| 355 |
+
base: !0,
|
| 356 |
+
br: !0,
|
| 357 |
+
col: !0,
|
| 358 |
+
command: !0,
|
| 359 |
+
embed: !0,
|
| 360 |
+
hr: !0,
|
| 361 |
+
img: !0,
|
| 362 |
+
input: !0,
|
| 363 |
+
keygen: !0,
|
| 364 |
+
link: !0,
|
| 365 |
+
menuitem: !0,
|
| 366 |
+
meta: !0,
|
| 367 |
+
param: !0,
|
| 368 |
+
source: !0,
|
| 369 |
+
track: !0,
|
| 370 |
+
wbr: !0
|
| 371 |
+
}, e.PCDATA = {
|
| 372 |
+
option: !0,
|
| 373 |
+
textarea: !0,
|
| 374 |
+
fieldset: !0,
|
| 375 |
+
title: !0,
|
| 376 |
+
style: !0,
|
| 377 |
+
script: !0
|
| 378 |
+
}, e.CDATA_ATTR = {
|
| 379 |
+
style: !0,
|
| 380 |
+
datafld: !0,
|
| 381 |
+
datasrc: !0,
|
| 382 |
+
href: !0,
|
| 383 |
+
src: !0,
|
| 384 |
+
longdesc: !0,
|
| 385 |
+
usemap: !0,
|
| 386 |
+
cite: !0,
|
| 387 |
+
datetime: !0,
|
| 388 |
+
action: !0,
|
| 389 |
+
axis: !0,
|
| 390 |
+
profile: !0,
|
| 391 |
+
content: !0,
|
| 392 |
+
scheme: !0
|
| 393 |
+
}, e;
|
| 394 |
+
}();
|
| 395 |
+
},
|
| 396 |
+
735: function(e, t) {
|
| 397 |
+
var n, r = this && this.__extends || (n = function(e, t) {
|
| 398 |
+
return n = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, t) {
|
| 399 |
+
e.__proto__ = t;
|
| 400 |
+
} || function(e, t) {
|
| 401 |
+
for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
|
| 402 |
+
}, n(e, t);
|
| 403 |
+
}, function(e, t) {
|
| 404 |
+
if (typeof t != `function` && t !== null) throw TypeError(`Class extends value ` + String(t) + ` is not a constructor or null`);
|
| 405 |
+
function r() {
|
| 406 |
+
this.constructor = e;
|
| 407 |
+
}
|
| 408 |
+
n(e, t), e.prototype = t === null ? Object.create(t) : (r.prototype = t.prototype, new r());
|
| 409 |
+
});
|
| 410 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.LiteComment = t.LiteText = void 0;
|
| 411 |
+
var i = function() {
|
| 412 |
+
function e(e) {
|
| 413 |
+
e === void 0 && (e = ``), this.value = e;
|
| 414 |
+
}
|
| 415 |
+
return Object.defineProperty(e.prototype, `kind`, {
|
| 416 |
+
get: function() {
|
| 417 |
+
return `#text`;
|
| 418 |
+
},
|
| 419 |
+
enumerable: !1,
|
| 420 |
+
configurable: !0
|
| 421 |
+
}), e;
|
| 422 |
+
}();
|
| 423 |
+
t.LiteText = i, t.LiteComment = function(e) {
|
| 424 |
+
function t() {
|
| 425 |
+
return e !== null && e.apply(this, arguments) || this;
|
| 426 |
+
}
|
| 427 |
+
return r(t, e), Object.defineProperty(t.prototype, `kind`, {
|
| 428 |
+
get: function() {
|
| 429 |
+
return `#comment`;
|
| 430 |
+
},
|
| 431 |
+
enumerable: !1,
|
| 432 |
+
configurable: !0
|
| 433 |
+
}), t;
|
| 434 |
+
}(i);
|
| 435 |
+
},
|
| 436 |
+
492: function(e, t, n) {
|
| 437 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.LiteWindow = void 0;
|
| 438 |
+
var r = n(946), i = n(877), a = n(6), o = n(246);
|
| 439 |
+
t.LiteWindow = function() {
|
| 440 |
+
this.DOMParser = o.LiteParser, this.NodeList = a.LiteList, this.HTMLCollection = a.LiteList, this.HTMLElement = r.LiteElement, this.DocumentFragment = a.LiteList, this.Document = i.LiteDocument, this.document = new i.LiteDocument();
|
| 441 |
+
};
|
| 442 |
+
},
|
| 443 |
+
250: function(e, t, n) {
|
| 444 |
+
var r, i = this && this.__extends || (r = function(e, t) {
|
| 445 |
+
return r = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(e, t) {
|
| 446 |
+
e.__proto__ = t;
|
| 447 |
+
} || function(e, t) {
|
| 448 |
+
for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
|
| 449 |
+
}, r(e, t);
|
| 450 |
+
}, function(e, t) {
|
| 451 |
+
if (typeof t != `function` && t !== null) throw TypeError(`Class extends value ` + String(t) + ` is not a constructor or null`);
|
| 452 |
+
function n() {
|
| 453 |
+
this.constructor = e;
|
| 454 |
+
}
|
| 455 |
+
r(e, t), e.prototype = t === null ? Object.create(t) : (n.prototype = t.prototype, new n());
|
| 456 |
+
}), a = this && this.__assign || function() {
|
| 457 |
+
return a = Object.assign || function(e) {
|
| 458 |
+
for (var t, n = 1, r = arguments.length; n < r; n++) for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
|
| 459 |
+
return e;
|
| 460 |
+
}, a.apply(this, arguments);
|
| 461 |
+
}, o = this && this.__values || function(e) {
|
| 462 |
+
var t = typeof Symbol == `function` && Symbol.iterator, n = t && e[t], r = 0;
|
| 463 |
+
if (n) return n.call(e);
|
| 464 |
+
if (e && typeof e.length == `number`) return { next: function() {
|
| 465 |
+
return e && r >= e.length && (e = void 0), {
|
| 466 |
+
value: e && e[r++],
|
| 467 |
+
done: !e
|
| 468 |
+
};
|
| 469 |
+
} };
|
| 470 |
+
throw TypeError(t ? `Object is not iterable.` : `Symbol.iterator is not defined.`);
|
| 471 |
+
}, s = this && this.__read || function(e, t) {
|
| 472 |
+
var n = typeof Symbol == `function` && e[Symbol.iterator];
|
| 473 |
+
if (!n) return e;
|
| 474 |
+
var r, i, a = n.call(e), o = [];
|
| 475 |
+
try {
|
| 476 |
+
for (; (t === void 0 || t-- > 0) && !(r = a.next()).done;) o.push(r.value);
|
| 477 |
+
} catch (e) {
|
| 478 |
+
i = { error: e };
|
| 479 |
+
} finally {
|
| 480 |
+
try {
|
| 481 |
+
r && !r.done && (n = a.return) && n.call(a);
|
| 482 |
+
} finally {
|
| 483 |
+
if (i) throw i.error;
|
| 484 |
+
}
|
| 485 |
+
}
|
| 486 |
+
return o;
|
| 487 |
+
}, c = this && this.__spreadArray || function(e, t, n) {
|
| 488 |
+
if (n || arguments.length === 2) for (var r, i = 0, a = t.length; i < a; i++) !r && i in t || (r ||= Array.prototype.slice.call(t, 0, i), r[i] = t[i]);
|
| 489 |
+
return e.concat(r || Array.prototype.slice.call(t));
|
| 490 |
+
};
|
| 491 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.liteAdaptor = t.LiteAdaptor = t.LiteBase = void 0;
|
| 492 |
+
var l = n(857), u = n(244), d = n(877), f = n(946), p = n(735), m = n(492), h = n(246), g = n(878), _ = function(e) {
|
| 493 |
+
function t() {
|
| 494 |
+
var t = e.call(this) || this;
|
| 495 |
+
return t.parser = new h.LiteParser(), t.window = new m.LiteWindow(), t;
|
| 496 |
+
}
|
| 497 |
+
return i(t, e), t.prototype.parse = function(e, t) {
|
| 498 |
+
return this.parser.parseFromString(e, t, this);
|
| 499 |
+
}, t.prototype.create = function(e, t) {
|
| 500 |
+
return t === void 0 && (t = null), new f.LiteElement(e);
|
| 501 |
+
}, t.prototype.text = function(e) {
|
| 502 |
+
return new p.LiteText(e);
|
| 503 |
+
}, t.prototype.comment = function(e) {
|
| 504 |
+
return new p.LiteComment(e);
|
| 505 |
+
}, t.prototype.createDocument = function() {
|
| 506 |
+
return new d.LiteDocument();
|
| 507 |
+
}, t.prototype.head = function(e) {
|
| 508 |
+
return e.head;
|
| 509 |
+
}, t.prototype.body = function(e) {
|
| 510 |
+
return e.body;
|
| 511 |
+
}, t.prototype.root = function(e) {
|
| 512 |
+
return e.root;
|
| 513 |
+
}, t.prototype.doctype = function(e) {
|
| 514 |
+
return e.type;
|
| 515 |
+
}, t.prototype.tags = function(e, t, n) {
|
| 516 |
+
n === void 0 && (n = null);
|
| 517 |
+
var r = [], i = [];
|
| 518 |
+
if (n) return i;
|
| 519 |
+
for (var a = e; a;) {
|
| 520 |
+
var o = a.kind;
|
| 521 |
+
o !== `#text` && o !== `#comment` && (a = a, o === t && i.push(a), a.children.length && (r = a.children.concat(r))), a = r.shift();
|
| 522 |
+
}
|
| 523 |
+
return i;
|
| 524 |
+
}, t.prototype.elementById = function(e, t) {
|
| 525 |
+
for (var n = [], r = e; r;) {
|
| 526 |
+
if (r.kind !== `#text` && r.kind !== `#comment`) {
|
| 527 |
+
if ((r = r).attributes.id === t) return r;
|
| 528 |
+
r.children.length && (n = r.children.concat(n));
|
| 529 |
+
}
|
| 530 |
+
r = n.shift();
|
| 531 |
+
}
|
| 532 |
+
return null;
|
| 533 |
+
}, t.prototype.elementsByClass = function(e, t) {
|
| 534 |
+
for (var n = [], r = [], i = e; i;) i.kind !== `#text` && i.kind !== `#comment` && (((i = i).attributes.class || ``).trim().split(/ +/).includes(t) && r.push(i), i.children.length && (n = i.children.concat(n))), i = n.shift();
|
| 535 |
+
return r;
|
| 536 |
+
}, t.prototype.getElements = function(e, t) {
|
| 537 |
+
var n, r, i = [], a = this.body(t);
|
| 538 |
+
try {
|
| 539 |
+
for (var s = o(e), c = s.next(); !c.done; c = s.next()) {
|
| 540 |
+
var l = c.value;
|
| 541 |
+
if (typeof l == `string`) if (l.charAt(0) === `#`) {
|
| 542 |
+
var u = this.elementById(a, l.slice(1));
|
| 543 |
+
u && i.push(u);
|
| 544 |
+
} else l.charAt(0) === `.` ? i = i.concat(this.elementsByClass(a, l.slice(1))) : l.match(/^[-a-z][-a-z0-9]*$/i) && (i = i.concat(this.tags(a, l)));
|
| 545 |
+
else Array.isArray(l) ? i = i.concat(l) : l instanceof this.window.NodeList || l instanceof this.window.HTMLCollection ? i = i.concat(l.nodes) : i.push(l);
|
| 546 |
+
}
|
| 547 |
+
} catch (e) {
|
| 548 |
+
n = { error: e };
|
| 549 |
+
} finally {
|
| 550 |
+
try {
|
| 551 |
+
c && !c.done && (r = s.return) && r.call(s);
|
| 552 |
+
} finally {
|
| 553 |
+
if (n) throw n.error;
|
| 554 |
+
}
|
| 555 |
+
}
|
| 556 |
+
return i;
|
| 557 |
+
}, t.prototype.contains = function(e, t) {
|
| 558 |
+
for (; t && t !== e;) t = this.parent(t);
|
| 559 |
+
return !!t;
|
| 560 |
+
}, t.prototype.parent = function(e) {
|
| 561 |
+
return e.parent;
|
| 562 |
+
}, t.prototype.childIndex = function(e) {
|
| 563 |
+
return e.parent ? e.parent.children.findIndex((function(t) {
|
| 564 |
+
return t === e;
|
| 565 |
+
})) : -1;
|
| 566 |
+
}, t.prototype.append = function(e, t) {
|
| 567 |
+
return t.parent && this.remove(t), e.children.push(t), t.parent = e, t;
|
| 568 |
+
}, t.prototype.insert = function(e, t) {
|
| 569 |
+
if (e.parent && this.remove(e), t && t.parent) {
|
| 570 |
+
var n = this.childIndex(t);
|
| 571 |
+
t.parent.children.splice(n, 0, e), e.parent = t.parent;
|
| 572 |
+
}
|
| 573 |
+
}, t.prototype.remove = function(e) {
|
| 574 |
+
var t = this.childIndex(e);
|
| 575 |
+
return t >= 0 && e.parent.children.splice(t, 1), e.parent = null, e;
|
| 576 |
+
}, t.prototype.replace = function(e, t) {
|
| 577 |
+
var n = this.childIndex(t);
|
| 578 |
+
return n >= 0 && (t.parent.children[n] = e, e.parent = t.parent, t.parent = null), t;
|
| 579 |
+
}, t.prototype.clone = function(e) {
|
| 580 |
+
var t = this, n = new f.LiteElement(e.kind);
|
| 581 |
+
return n.attributes = a({}, e.attributes), n.children = e.children.map((function(e) {
|
| 582 |
+
if (e.kind === `#text`) return new p.LiteText(e.value);
|
| 583 |
+
if (e.kind === `#comment`) return new p.LiteComment(e.value);
|
| 584 |
+
var r = t.clone(e);
|
| 585 |
+
return r.parent = n, r;
|
| 586 |
+
})), n;
|
| 587 |
+
}, t.prototype.split = function(e, t) {
|
| 588 |
+
var n = new p.LiteText(e.value.slice(t));
|
| 589 |
+
return e.value = e.value.slice(0, t), e.parent.children.splice(this.childIndex(e) + 1, 0, n), n.parent = e.parent, n;
|
| 590 |
+
}, t.prototype.next = function(e) {
|
| 591 |
+
var t = e.parent;
|
| 592 |
+
if (!t) return null;
|
| 593 |
+
var n = this.childIndex(e) + 1;
|
| 594 |
+
return n >= 0 && n < t.children.length ? t.children[n] : null;
|
| 595 |
+
}, t.prototype.previous = function(e) {
|
| 596 |
+
var t = e.parent;
|
| 597 |
+
if (!t) return null;
|
| 598 |
+
var n = this.childIndex(e) - 1;
|
| 599 |
+
return n >= 0 ? t.children[n] : null;
|
| 600 |
+
}, t.prototype.firstChild = function(e) {
|
| 601 |
+
return e.children[0];
|
| 602 |
+
}, t.prototype.lastChild = function(e) {
|
| 603 |
+
return e.children[e.children.length - 1];
|
| 604 |
+
}, t.prototype.childNodes = function(e) {
|
| 605 |
+
return c([], s(e.children), !1);
|
| 606 |
+
}, t.prototype.childNode = function(e, t) {
|
| 607 |
+
return e.children[t];
|
| 608 |
+
}, t.prototype.kind = function(e) {
|
| 609 |
+
return e.kind;
|
| 610 |
+
}, t.prototype.value = function(e) {
|
| 611 |
+
return e.kind === `#text` ? e.value : e.kind === `#comment` ? e.value.replace(/^<!(--)?((?:.|\n)*)\1>$/, `$2`) : ``;
|
| 612 |
+
}, t.prototype.textContent = function(e) {
|
| 613 |
+
var t = this;
|
| 614 |
+
return e.children.reduce((function(e, n) {
|
| 615 |
+
return e + (n.kind === `#text` ? n.value : n.kind === `#comment` ? `` : t.textContent(n));
|
| 616 |
+
}), ``);
|
| 617 |
+
}, t.prototype.innerHTML = function(e) {
|
| 618 |
+
return this.parser.serializeInner(this, e);
|
| 619 |
+
}, t.prototype.outerHTML = function(e) {
|
| 620 |
+
return this.parser.serialize(this, e);
|
| 621 |
+
}, t.prototype.serializeXML = function(e) {
|
| 622 |
+
return this.parser.serialize(this, e, !0);
|
| 623 |
+
}, t.prototype.setAttribute = function(e, t, n, r) {
|
| 624 |
+
r === void 0 && (r = null), typeof n != `string` && (n = String(n)), r && (t = r.replace(/.*\//, ``) + `:` + t.replace(/^.*:/, ``)), e.attributes[t] = n, t === `style` && (e.styles = null);
|
| 625 |
+
}, t.prototype.getAttribute = function(e, t) {
|
| 626 |
+
return e.attributes[t];
|
| 627 |
+
}, t.prototype.removeAttribute = function(e, t) {
|
| 628 |
+
delete e.attributes[t];
|
| 629 |
+
}, t.prototype.hasAttribute = function(e, t) {
|
| 630 |
+
return e.attributes.hasOwnProperty(t);
|
| 631 |
+
}, t.prototype.allAttributes = function(e) {
|
| 632 |
+
var t, n, r = e.attributes, i = [];
|
| 633 |
+
try {
|
| 634 |
+
for (var a = o(Object.keys(r)), s = a.next(); !s.done; s = a.next()) {
|
| 635 |
+
var c = s.value;
|
| 636 |
+
i.push({
|
| 637 |
+
name: c,
|
| 638 |
+
value: r[c]
|
| 639 |
+
});
|
| 640 |
+
}
|
| 641 |
+
} catch (e) {
|
| 642 |
+
t = { error: e };
|
| 643 |
+
} finally {
|
| 644 |
+
try {
|
| 645 |
+
s && !s.done && (n = a.return) && n.call(a);
|
| 646 |
+
} finally {
|
| 647 |
+
if (t) throw t.error;
|
| 648 |
+
}
|
| 649 |
+
}
|
| 650 |
+
return i;
|
| 651 |
+
}, t.prototype.addClass = function(e, t) {
|
| 652 |
+
var n = (e.attributes.class || ``).split(/ /);
|
| 653 |
+
n.find((function(e) {
|
| 654 |
+
return e === t;
|
| 655 |
+
})) || (n.push(t), e.attributes.class = n.join(` `));
|
| 656 |
+
}, t.prototype.removeClass = function(e, t) {
|
| 657 |
+
var n = (e.attributes.class || ``).split(/ /), r = n.findIndex((function(e) {
|
| 658 |
+
return e === t;
|
| 659 |
+
}));
|
| 660 |
+
r >= 0 && (n.splice(r, 1), e.attributes.class = n.join(` `));
|
| 661 |
+
}, t.prototype.hasClass = function(e, t) {
|
| 662 |
+
return !!(e.attributes.class || ``).split(/ /).find((function(e) {
|
| 663 |
+
return e === t;
|
| 664 |
+
}));
|
| 665 |
+
}, t.prototype.setStyle = function(e, t, n) {
|
| 666 |
+
e.styles ||= new g.Styles(this.getAttribute(e, `style`)), e.styles.set(t, n), e.attributes.style = e.styles.cssText;
|
| 667 |
+
}, t.prototype.getStyle = function(e, t) {
|
| 668 |
+
if (!e.styles) {
|
| 669 |
+
var n = this.getAttribute(e, `style`);
|
| 670 |
+
if (!n) return ``;
|
| 671 |
+
e.styles = new g.Styles(n);
|
| 672 |
+
}
|
| 673 |
+
return e.styles.get(t);
|
| 674 |
+
}, t.prototype.allStyles = function(e) {
|
| 675 |
+
return this.getAttribute(e, `style`);
|
| 676 |
+
}, t.prototype.insertRules = function(e, t) {
|
| 677 |
+
e.children = [this.text(t.join(`
|
| 678 |
+
|
| 679 |
+
`) + `
|
| 680 |
+
|
| 681 |
+
` + this.textContent(e))];
|
| 682 |
+
}, t.prototype.fontSize = function(e) {
|
| 683 |
+
return 0;
|
| 684 |
+
}, t.prototype.fontFamily = function(e) {
|
| 685 |
+
return ``;
|
| 686 |
+
}, t.prototype.nodeSize = function(e, t, n) {
|
| 687 |
+
return t === void 0 && (t = 1), n === void 0 && (n = null), [0, 0];
|
| 688 |
+
}, t.prototype.nodeBBox = function(e) {
|
| 689 |
+
return {
|
| 690 |
+
left: 0,
|
| 691 |
+
right: 0,
|
| 692 |
+
top: 0,
|
| 693 |
+
bottom: 0
|
| 694 |
+
};
|
| 695 |
+
}, t;
|
| 696 |
+
}(l.AbstractDOMAdaptor);
|
| 697 |
+
t.LiteBase = _;
|
| 698 |
+
var v = function(e) {
|
| 699 |
+
function t() {
|
| 700 |
+
return e !== null && e.apply(this, arguments) || this;
|
| 701 |
+
}
|
| 702 |
+
return i(t, e), t;
|
| 703 |
+
}((0, u.NodeMixin)(_));
|
| 704 |
+
t.LiteAdaptor = v, t.liteAdaptor = function(e) {
|
| 705 |
+
return e === void 0 && (e = null), new v(null, e);
|
| 706 |
+
};
|
| 707 |
+
},
|
| 708 |
+
306: function(e, t) {
|
| 709 |
+
t.q = void 0, t.q = `3.2.2`;
|
| 710 |
+
},
|
| 711 |
+
723: function(e, t) {
|
| 712 |
+
MathJax._.components.global.isObject, MathJax._.components.global.combineConfig, MathJax._.components.global.combineDefaults, t.r8 = MathJax._.components.global.combineWithMathJax, MathJax._.components.global.MathJax;
|
| 713 |
+
},
|
| 714 |
+
857: function(e, t) {
|
| 715 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.AbstractDOMAdaptor = MathJax._.core.DOMAdaptor.AbstractDOMAdaptor;
|
| 716 |
+
},
|
| 717 |
+
29: function(e, t) {
|
| 718 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.options = MathJax._.util.Entities.options, t.entities = MathJax._.util.Entities.entities, t.add = MathJax._.util.Entities.add, t.remove = MathJax._.util.Entities.remove, t.translate = MathJax._.util.Entities.translate, t.numeric = MathJax._.util.Entities.numeric;
|
| 719 |
+
},
|
| 720 |
+
77: function(e, t) {
|
| 721 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.isObject = MathJax._.util.Options.isObject, t.APPEND = MathJax._.util.Options.APPEND, t.REMOVE = MathJax._.util.Options.REMOVE, t.OPTIONS = MathJax._.util.Options.OPTIONS, t.Expandable = MathJax._.util.Options.Expandable, t.expandable = MathJax._.util.Options.expandable, t.makeArray = MathJax._.util.Options.makeArray, t.keys = MathJax._.util.Options.keys, t.copy = MathJax._.util.Options.copy, t.insert = MathJax._.util.Options.insert, t.defaultOptions = MathJax._.util.Options.defaultOptions, t.userOptions = MathJax._.util.Options.userOptions, t.selectOptions = MathJax._.util.Options.selectOptions, t.selectOptionsFromKeys = MathJax._.util.Options.selectOptionsFromKeys, t.separateOptions = MathJax._.util.Options.separateOptions, t.lookup = MathJax._.util.Options.lookup;
|
| 722 |
+
},
|
| 723 |
+
878: function(e, t) {
|
| 724 |
+
Object.defineProperty(t, `__esModule`, { value: !0 }), t.Styles = MathJax._.util.Styles.Styles;
|
| 725 |
+
}
|
| 726 |
+
}, u = {};
|
| 727 |
+
function d(e) {
|
| 728 |
+
var t = u[e];
|
| 729 |
+
if (t !== void 0) return t.exports;
|
| 730 |
+
var n = u[e] = { exports: {} };
|
| 731 |
+
return l[e].call(n.exports, n, n.exports, d), n.exports;
|
| 732 |
+
}
|
| 733 |
+
e = d(723), t = d(306), n = d(250), r = d(877), i = d(946), a = d(6), o = d(246), s = d(735), c = d(492), MathJax.loader && MathJax.loader.checkVersion(`adaptors/liteDOM`, t.q, `adaptors`), (0, e.r8)({ _: { adaptors: {
|
| 734 |
+
liteAdaptor: n,
|
| 735 |
+
lite: {
|
| 736 |
+
Document: r,
|
| 737 |
+
Element: i,
|
| 738 |
+
List: a,
|
| 739 |
+
Parser: o,
|
| 740 |
+
Text: s,
|
| 741 |
+
Window: c
|
| 742 |
+
}
|
| 743 |
+
} } }), MathJax.startup && (MathJax.startup.registerConstructor(`liteAdaptor`, n.liteAdaptor), MathJax.startup.useAdaptor(`liteAdaptor`, !0));
|
| 744 |
+
})();
|
| 745 |
+
//#endregion
|
| 746 |
+
|
| 747 |
+
//# sourceMappingURL=liteDOM-Cp0aN3bP.js.map
|
viewer/assets/tex-svg-full-BI3fonbT.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
viewer/assets/wgxpath.install-node-Csk64Aj9.js
ADDED
|
@@ -0,0 +1,1100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { n as o } from "./chunk-DfAF0w94.js";
|
| 2 |
+
//#region ../../node_modules/.pnpm/mathxyjax3@0.8.3/node_modules/mathxyjax3/dist/wgxpath.install-node-Csk64Aj9.js
|
| 3 |
+
var e = globalThis;
|
| 4 |
+
var wgxpath_install_node_Csk64Aj9_default = o(((exports, n) => {
|
| 5 |
+
(function() {
|
| 6 |
+
var e = this;
|
| 7 |
+
function t(e) {
|
| 8 |
+
var t = typeof e;
|
| 9 |
+
if (t == `object`) if (e) {
|
| 10 |
+
if (e instanceof Array) return `array`;
|
| 11 |
+
if (e instanceof Object) return t;
|
| 12 |
+
var n = Object.prototype.toString.call(e);
|
| 13 |
+
if (n == `[object Window]`) return `object`;
|
| 14 |
+
if (n == `[object Array]` || typeof e.length == `number` && e.splice !== void 0 && e.propertyIsEnumerable !== void 0 && !e.propertyIsEnumerable(`splice`)) return `array`;
|
| 15 |
+
if (n == `[object Function]` || e.call !== void 0 && e.propertyIsEnumerable !== void 0 && !e.propertyIsEnumerable(`call`)) return `function`;
|
| 16 |
+
} else return `null`;
|
| 17 |
+
else if (t == `function` && e.call === void 0) return `object`;
|
| 18 |
+
return t;
|
| 19 |
+
}
|
| 20 |
+
function r(e) {
|
| 21 |
+
return typeof e == `string`;
|
| 22 |
+
}
|
| 23 |
+
function i(e, t, n) {
|
| 24 |
+
return e.call.apply(e.bind, arguments);
|
| 25 |
+
}
|
| 26 |
+
function a(e, t, n) {
|
| 27 |
+
if (!e) throw Error();
|
| 28 |
+
if (2 < arguments.length) {
|
| 29 |
+
var r = Array.prototype.slice.call(arguments, 2);
|
| 30 |
+
return function() {
|
| 31 |
+
var n = Array.prototype.slice.call(arguments);
|
| 32 |
+
return Array.prototype.unshift.apply(n, r), e.apply(t, n);
|
| 33 |
+
};
|
| 34 |
+
}
|
| 35 |
+
return function() {
|
| 36 |
+
return e.apply(t, arguments);
|
| 37 |
+
};
|
| 38 |
+
}
|
| 39 |
+
function o(e, t, n) {
|
| 40 |
+
return o = Function.prototype.bind && Function.prototype.bind.toString().indexOf(`native code`) != -1 ? i : a, o.apply(null, arguments);
|
| 41 |
+
}
|
| 42 |
+
function s(e, t) {
|
| 43 |
+
var n = Array.prototype.slice.call(arguments, 1);
|
| 44 |
+
return function() {
|
| 45 |
+
var t = n.slice();
|
| 46 |
+
return t.push.apply(t, arguments), e.apply(this, t);
|
| 47 |
+
};
|
| 48 |
+
}
|
| 49 |
+
function c(e) {
|
| 50 |
+
var t = D;
|
| 51 |
+
function n() {}
|
| 52 |
+
n.prototype = t.prototype, e.G = t.prototype, e.prototype = new n(), e.prototype.constructor = e, e.F = function(e, n, r) {
|
| 53 |
+
for (var i = Array(arguments.length - 2), a = 2; a < arguments.length; a++) i[a - 2] = arguments[a];
|
| 54 |
+
return t.prototype[n].apply(e, i);
|
| 55 |
+
};
|
| 56 |
+
}
|
| 57 |
+
var l = String.prototype.trim ? function(e) {
|
| 58 |
+
return e.trim();
|
| 59 |
+
} : function(e) {
|
| 60 |
+
return e.replace(/^[\s\xa0]+|[\s\xa0]+$/g, ``);
|
| 61 |
+
};
|
| 62 |
+
function u(e, t) {
|
| 63 |
+
return e.indexOf(t) != -1;
|
| 64 |
+
}
|
| 65 |
+
function ee(e, t) {
|
| 66 |
+
return e < t ? -1 : e > t ? 1 : 0;
|
| 67 |
+
}
|
| 68 |
+
var d = Array.prototype.indexOf ? function(e, t, n) {
|
| 69 |
+
return Array.prototype.indexOf.call(e, t, n);
|
| 70 |
+
} : function(e, t, n) {
|
| 71 |
+
if (n = n == null ? 0 : 0 > n ? Math.max(0, e.length + n) : n, r(e)) return r(t) && t.length == 1 ? e.indexOf(t, n) : -1;
|
| 72 |
+
for (; n < e.length; n++) if (n in e && e[n] === t) return n;
|
| 73 |
+
return -1;
|
| 74 |
+
}, f = Array.prototype.forEach ? function(e, t, n) {
|
| 75 |
+
Array.prototype.forEach.call(e, t, n);
|
| 76 |
+
} : function(e, t, n) {
|
| 77 |
+
for (var i = e.length, a = r(e) ? e.split(``) : e, o = 0; o < i; o++) o in a && t.call(n, a[o], o, e);
|
| 78 |
+
}, te = Array.prototype.filter ? function(e, t, n) {
|
| 79 |
+
return Array.prototype.filter.call(e, t, n);
|
| 80 |
+
} : function(e, t, n) {
|
| 81 |
+
for (var i = e.length, a = [], o = 0, s = r(e) ? e.split(``) : e, c = 0; c < i; c++) if (c in s) {
|
| 82 |
+
var l = s[c];
|
| 83 |
+
t.call(n, l, c, e) && (a[o++] = l);
|
| 84 |
+
}
|
| 85 |
+
return a;
|
| 86 |
+
}, p = Array.prototype.reduce ? function(e, t, n, r) {
|
| 87 |
+
return r && (t = o(t, r)), Array.prototype.reduce.call(e, t, n);
|
| 88 |
+
} : function(e, t, n, r) {
|
| 89 |
+
var i = n;
|
| 90 |
+
return f(e, function(n, a) {
|
| 91 |
+
i = t.call(r, i, n, a, e);
|
| 92 |
+
}), i;
|
| 93 |
+
}, ne = Array.prototype.some ? function(e, t, n) {
|
| 94 |
+
return Array.prototype.some.call(e, t, n);
|
| 95 |
+
} : function(e, t, n) {
|
| 96 |
+
for (var i = e.length, a = r(e) ? e.split(``) : e, o = 0; o < i; o++) if (o in a && t.call(n, a[o], o, e)) return !0;
|
| 97 |
+
return !1;
|
| 98 |
+
};
|
| 99 |
+
function re(e, t) {
|
| 100 |
+
var n;
|
| 101 |
+
a: {
|
| 102 |
+
n = e.length;
|
| 103 |
+
for (var i = r(e) ? e.split(``) : e, a = 0; a < n; a++) if (a in i && t.call(void 0, i[a], a, e)) {
|
| 104 |
+
n = a;
|
| 105 |
+
break a;
|
| 106 |
+
}
|
| 107 |
+
n = -1;
|
| 108 |
+
}
|
| 109 |
+
return 0 > n ? null : r(e) ? e.charAt(n) : e[n];
|
| 110 |
+
}
|
| 111 |
+
function ie(e) {
|
| 112 |
+
return Array.prototype.concat.apply(Array.prototype, arguments);
|
| 113 |
+
}
|
| 114 |
+
function ae(e, t, n) {
|
| 115 |
+
return 2 >= arguments.length ? Array.prototype.slice.call(e, t) : Array.prototype.slice.call(e, t, n);
|
| 116 |
+
}
|
| 117 |
+
var m;
|
| 118 |
+
a: {
|
| 119 |
+
var oe = e.navigator;
|
| 120 |
+
if (oe) {
|
| 121 |
+
var se = oe.userAgent;
|
| 122 |
+
if (se) {
|
| 123 |
+
m = se;
|
| 124 |
+
break a;
|
| 125 |
+
}
|
| 126 |
+
}
|
| 127 |
+
m = ``;
|
| 128 |
+
}
|
| 129 |
+
var ce = u(m, `Opera`) || u(m, `OPR`), h = u(m, `Trident`) || u(m, `MSIE`), le = u(m, `Edge`), ue = u(m, `Gecko`) && !(u(m.toLowerCase(), `webkit`) && !u(m, `Edge`)) && !(u(m, `Trident`) || u(m, `MSIE`)) && !u(m, `Edge`), de = u(m.toLowerCase(), `webkit`) && !u(m, `Edge`);
|
| 130 |
+
function fe() {
|
| 131 |
+
var t = e.document;
|
| 132 |
+
return t ? t.documentMode : void 0;
|
| 133 |
+
}
|
| 134 |
+
var g;
|
| 135 |
+
a: {
|
| 136 |
+
var pe = ``, me = function() {
|
| 137 |
+
var e = m;
|
| 138 |
+
if (ue) return /rv\:([^\);]+)(\)|;)/.exec(e);
|
| 139 |
+
if (le) return /Edge\/([\d\.]+)/.exec(e);
|
| 140 |
+
if (h) return /\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(e);
|
| 141 |
+
if (de) return /WebKit\/(\S+)/.exec(e);
|
| 142 |
+
if (ce) return /(?:Version)[ \/]?(\S+)/.exec(e);
|
| 143 |
+
}();
|
| 144 |
+
if (me && (pe = me ? me[1] : ``), h) {
|
| 145 |
+
var he = fe();
|
| 146 |
+
if (he != null && he > parseFloat(pe)) {
|
| 147 |
+
g = String(he);
|
| 148 |
+
break a;
|
| 149 |
+
}
|
| 150 |
+
}
|
| 151 |
+
g = pe;
|
| 152 |
+
}
|
| 153 |
+
var ge = {};
|
| 154 |
+
function _e(e) {
|
| 155 |
+
if (!ge[e]) {
|
| 156 |
+
for (var t = 0, n = l(String(g)).split(`.`), r = l(String(e)).split(`.`), i = Math.max(n.length, r.length), a = 0; t == 0 && a < i; a++) {
|
| 157 |
+
var o = n[a] || ``, s = r[a] || ``, c = /(\d*)(\D*)/g, u = /(\d*)(\D*)/g;
|
| 158 |
+
do {
|
| 159 |
+
var d = c.exec(o) || [
|
| 160 |
+
``,
|
| 161 |
+
``,
|
| 162 |
+
``
|
| 163 |
+
], f = u.exec(s) || [
|
| 164 |
+
``,
|
| 165 |
+
``,
|
| 166 |
+
``
|
| 167 |
+
];
|
| 168 |
+
if (d[0].length == 0 && f[0].length == 0) break;
|
| 169 |
+
t = ee(d[1].length == 0 ? 0 : parseInt(d[1], 10), f[1].length == 0 ? 0 : parseInt(f[1], 10)) || ee(d[2].length == 0, f[2].length == 0) || ee(d[2], f[2]);
|
| 170 |
+
} while (t == 0);
|
| 171 |
+
}
|
| 172 |
+
ge[e] = 0 <= t;
|
| 173 |
+
}
|
| 174 |
+
}
|
| 175 |
+
var ve = e.document, _ = ve && h ? fe() || (ve.compatMode == `CSS1Compat` ? parseInt(g, 10) : 5) : void 0, v = h && !(9 <= Number(_)), ye = h && !(8 <= Number(_));
|
| 176 |
+
function y(e, t, n, r) {
|
| 177 |
+
this.a = e, this.nodeName = n, this.nodeValue = r, this.nodeType = 2, this.parentNode = this.ownerElement = t;
|
| 178 |
+
}
|
| 179 |
+
function be(e, t) {
|
| 180 |
+
var n = ye && t.nodeName == `href` ? e.getAttribute(t.nodeName, 2) : t.nodeValue;
|
| 181 |
+
return new y(t, e, t.nodeName, n);
|
| 182 |
+
}
|
| 183 |
+
function b(e) {
|
| 184 |
+
var t = null, n = e.nodeType;
|
| 185 |
+
if (n == 1 && (t = e.textContent, t = t == null || t == null ? e.innerText : t, t = t == null || t == null ? `` : t), typeof t != `string`) if (v && e.nodeName.toLowerCase() == `title` && n == 1) t = e.text;
|
| 186 |
+
else if (n == 9 || n == 1) {
|
| 187 |
+
e = n == 9 ? e.documentElement : e.firstChild;
|
| 188 |
+
for (var n = 0, r = [], t = ``; e;) {
|
| 189 |
+
do
|
| 190 |
+
e.nodeType != 1 && (t += e.nodeValue), v && e.nodeName.toLowerCase() == `title` && (t += e.text), r[n++] = e;
|
| 191 |
+
while (e = e.firstChild);
|
| 192 |
+
for (; n && !(e = r[--n].nextSibling););
|
| 193 |
+
}
|
| 194 |
+
} else t = e.nodeValue;
|
| 195 |
+
return `` + t;
|
| 196 |
+
}
|
| 197 |
+
function x(e, t, n) {
|
| 198 |
+
if (t === null) return !0;
|
| 199 |
+
try {
|
| 200 |
+
if (!e.getAttribute) return !1;
|
| 201 |
+
} catch {
|
| 202 |
+
return !1;
|
| 203 |
+
}
|
| 204 |
+
return ye && t == `class` && (t = `className`), n == null ? !!e.getAttribute(t) : e.getAttribute(t, 2) == n;
|
| 205 |
+
}
|
| 206 |
+
function S(e, t, n, i, a) {
|
| 207 |
+
return (v ? xe : Se).call(null, e, t, r(n) ? n : null, r(i) ? i : null, a || new C());
|
| 208 |
+
}
|
| 209 |
+
function xe(e, t, n, r, i) {
|
| 210 |
+
if (e instanceof W || e.b == 8 || n && e.b === null) {
|
| 211 |
+
var a = t.all;
|
| 212 |
+
if (!a || (e = Ee(e), e != `*` && (a = t.getElementsByTagName(e), !a))) return i;
|
| 213 |
+
if (n) {
|
| 214 |
+
for (var o = [], s = 0; t = a[s++];) x(t, n, r) && o.push(t);
|
| 215 |
+
a = o;
|
| 216 |
+
}
|
| 217 |
+
for (s = 0; t = a[s++];) e == `*` && t.tagName == `!` || w(i, t);
|
| 218 |
+
return i;
|
| 219 |
+
}
|
| 220 |
+
return Te(e, t, n, r, i), i;
|
| 221 |
+
}
|
| 222 |
+
function Se(e, t, n, r, i) {
|
| 223 |
+
return t.getElementsByName && r && n == `name` && !h ? (t = t.getElementsByName(r), f(t, function(t) {
|
| 224 |
+
e.a(t) && w(i, t);
|
| 225 |
+
})) : t.getElementsByClassName && r && n == `class` ? (t = t.getElementsByClassName(r), f(t, function(t) {
|
| 226 |
+
t.className == r && e.a(t) && w(i, t);
|
| 227 |
+
})) : e instanceof z ? Te(e, t, n, r, i) : t.getElementsByTagName && (t = t.getElementsByTagName(e.f()), f(t, function(e) {
|
| 228 |
+
x(e, n, r) && w(i, e);
|
| 229 |
+
})), i;
|
| 230 |
+
}
|
| 231 |
+
function Ce(e, t, n, r, i) {
|
| 232 |
+
var a;
|
| 233 |
+
if ((e instanceof W || e.b == 8 || n && e.b === null) && (a = t.childNodes)) {
|
| 234 |
+
var o = Ee(e);
|
| 235 |
+
return o != `*` && (a = te(a, function(e) {
|
| 236 |
+
return e.tagName && e.tagName.toLowerCase() == o;
|
| 237 |
+
}), !a) ? i : (n && (a = te(a, function(e) {
|
| 238 |
+
return x(e, n, r);
|
| 239 |
+
})), f(a, function(e) {
|
| 240 |
+
o == `*` && (e.tagName == `!` || o == `*` && e.nodeType != 1) || w(i, e);
|
| 241 |
+
}), i);
|
| 242 |
+
}
|
| 243 |
+
return we(e, t, n, r, i);
|
| 244 |
+
}
|
| 245 |
+
function we(e, t, n, r, i) {
|
| 246 |
+
for (t = t.firstChild; t; t = t.nextSibling) x(t, n, r) && e.a(t) && w(i, t);
|
| 247 |
+
return i;
|
| 248 |
+
}
|
| 249 |
+
function Te(e, t, n, r, i) {
|
| 250 |
+
for (t = t.firstChild; t; t = t.nextSibling) x(t, n, r) && e.a(t) && w(i, t), Te(e, t, n, r, i);
|
| 251 |
+
}
|
| 252 |
+
function Ee(e) {
|
| 253 |
+
if (e instanceof z) {
|
| 254 |
+
if (e.b == 8) return `!`;
|
| 255 |
+
if (e.b === null) return `*`;
|
| 256 |
+
}
|
| 257 |
+
return e.f();
|
| 258 |
+
}
|
| 259 |
+
!ue && !h || h && 9 <= Number(_) || ue && _e(`1.9.1`), h && _e(`9`);
|
| 260 |
+
function De(e, t) {
|
| 261 |
+
if (!e || !t) return !1;
|
| 262 |
+
if (e.contains && t.nodeType == 1) return e == t || e.contains(t);
|
| 263 |
+
if (e.compareDocumentPosition !== void 0) return e == t || !!(e.compareDocumentPosition(t) & 16);
|
| 264 |
+
for (; t && e != t;) t = t.parentNode;
|
| 265 |
+
return t == e;
|
| 266 |
+
}
|
| 267 |
+
function Oe(t, n) {
|
| 268 |
+
if (t == n) return 0;
|
| 269 |
+
if (t.compareDocumentPosition) return t.compareDocumentPosition(n) & 2 ? 1 : -1;
|
| 270 |
+
if (h && !(9 <= Number(_))) {
|
| 271 |
+
if (t.nodeType == 9) return -1;
|
| 272 |
+
if (n.nodeType == 9) return 1;
|
| 273 |
+
}
|
| 274 |
+
if (`sourceIndex` in t || t.parentNode && `sourceIndex` in t.parentNode) {
|
| 275 |
+
var r = t.nodeType == 1, i = n.nodeType == 1;
|
| 276 |
+
if (r && i) return t.sourceIndex - n.sourceIndex;
|
| 277 |
+
var a = t.parentNode, o = n.parentNode;
|
| 278 |
+
return a == o ? Ae(t, n) : !r && De(a, n) ? -1 * ke(t, n) : !i && De(o, t) ? ke(n, t) : (r ? t.sourceIndex : a.sourceIndex) - (i ? n.sourceIndex : o.sourceIndex);
|
| 279 |
+
}
|
| 280 |
+
return i = t.nodeType == 9 ? t : t.ownerDocument || t.document, r = i.createRange(), r.selectNode(t), r.collapse(!0), i = i.createRange(), i.selectNode(n), i.collapse(!0), r.compareBoundaryPoints(e.Range.START_TO_END, i);
|
| 281 |
+
}
|
| 282 |
+
function ke(e, t) {
|
| 283 |
+
var n = e.parentNode;
|
| 284 |
+
if (n == t) return -1;
|
| 285 |
+
for (var r = t; r.parentNode != n;) r = r.parentNode;
|
| 286 |
+
return Ae(r, e);
|
| 287 |
+
}
|
| 288 |
+
function Ae(e, t) {
|
| 289 |
+
for (var n = t; n = n.previousSibling;) if (n == e) return -1;
|
| 290 |
+
return 1;
|
| 291 |
+
}
|
| 292 |
+
function C() {
|
| 293 |
+
this.b = this.a = null, this.l = 0;
|
| 294 |
+
}
|
| 295 |
+
function je(e) {
|
| 296 |
+
this.node = e, this.a = this.b = null;
|
| 297 |
+
}
|
| 298 |
+
function Me(e, t) {
|
| 299 |
+
if (!e.a) return t;
|
| 300 |
+
if (!t.a) return e;
|
| 301 |
+
for (var n = e.a, r = t.a, i = null, a = null, o = 0; n && r;) {
|
| 302 |
+
var a = n.node, s = r.node;
|
| 303 |
+
a == s || a instanceof y && s instanceof y && a.a == s.a ? (a = n, n = n.a, r = r.a) : 0 < Oe(n.node, r.node) ? (a = r, r = r.a) : (a = n, n = n.a), (a.b = i) ? i.a = a : e.a = a, i = a, o++;
|
| 304 |
+
}
|
| 305 |
+
for (a = n || r; a;) a.b = i, i = i.a = a, o++, a = a.a;
|
| 306 |
+
return e.b = i, e.l = o, e;
|
| 307 |
+
}
|
| 308 |
+
function Ne(e, t) {
|
| 309 |
+
var n = new je(t);
|
| 310 |
+
n.a = e.a, e.b ? e.a.b = n : e.a = e.b = n, e.a = n, e.l++;
|
| 311 |
+
}
|
| 312 |
+
function w(e, t) {
|
| 313 |
+
var n = new je(t);
|
| 314 |
+
n.b = e.b, e.a ? e.b.a = n : e.a = e.b = n, e.b = n, e.l++;
|
| 315 |
+
}
|
| 316 |
+
function Pe(e) {
|
| 317 |
+
return (e = e.a) ? e.node : null;
|
| 318 |
+
}
|
| 319 |
+
function Fe(e) {
|
| 320 |
+
return (e = Pe(e)) ? b(e) : ``;
|
| 321 |
+
}
|
| 322 |
+
function T(e, t) {
|
| 323 |
+
return new Ie(e, !!t);
|
| 324 |
+
}
|
| 325 |
+
function Ie(e, t) {
|
| 326 |
+
this.f = e, this.b = (this.c = t) ? e.b : e.a, this.a = null;
|
| 327 |
+
}
|
| 328 |
+
function E(e) {
|
| 329 |
+
var t = e.b;
|
| 330 |
+
if (t == null) return null;
|
| 331 |
+
var n = e.a = t;
|
| 332 |
+
return e.b = e.c ? t.b : t.a, n.node;
|
| 333 |
+
}
|
| 334 |
+
function D(e) {
|
| 335 |
+
this.i = e, this.b = this.g = !1, this.f = null;
|
| 336 |
+
}
|
| 337 |
+
function O(e) {
|
| 338 |
+
return `
|
| 339 |
+
` + e.toString().split(`
|
| 340 |
+
`).join(`
|
| 341 |
+
`);
|
| 342 |
+
}
|
| 343 |
+
function Le(e, t) {
|
| 344 |
+
e.g = t;
|
| 345 |
+
}
|
| 346 |
+
function Re(e, t) {
|
| 347 |
+
e.b = t;
|
| 348 |
+
}
|
| 349 |
+
function k(e, t) {
|
| 350 |
+
var n = e.a(t);
|
| 351 |
+
return n instanceof C ? +Fe(n) : +n;
|
| 352 |
+
}
|
| 353 |
+
function A(e, t) {
|
| 354 |
+
var n = e.a(t);
|
| 355 |
+
return n instanceof C ? Fe(n) : `` + n;
|
| 356 |
+
}
|
| 357 |
+
function j(e, t) {
|
| 358 |
+
var n = e.a(t);
|
| 359 |
+
return n instanceof C ? !!n.l : !!n;
|
| 360 |
+
}
|
| 361 |
+
function M(e, t, n) {
|
| 362 |
+
D.call(this, e.i), this.c = e, this.h = t, this.o = n, this.g = t.g || n.g, this.b = t.b || n.b, this.c == Ve && (n.b || n.g || n.i == 4 || n.i == 0 || !t.f ? t.b || t.g || t.i == 4 || t.i == 0 || !n.f || (this.f = {
|
| 363 |
+
name: n.f.name,
|
| 364 |
+
s: t
|
| 365 |
+
}) : this.f = {
|
| 366 |
+
name: t.f.name,
|
| 367 |
+
s: n
|
| 368 |
+
});
|
| 369 |
+
}
|
| 370 |
+
c(M);
|
| 371 |
+
function N(e, t, n, r, i) {
|
| 372 |
+
t = t.a(r), n = n.a(r);
|
| 373 |
+
var a;
|
| 374 |
+
if (t instanceof C && n instanceof C) {
|
| 375 |
+
for (t = T(t), r = E(t); r; r = E(t)) for (i = T(n), a = E(i); a; a = E(i)) if (e(b(r), b(a))) return !0;
|
| 376 |
+
return !1;
|
| 377 |
+
}
|
| 378 |
+
if (t instanceof C || n instanceof C) {
|
| 379 |
+
t instanceof C ? (i = t, r = n) : (i = n, r = t), a = T(i);
|
| 380 |
+
for (var o = typeof r, s = E(a); s; s = E(a)) {
|
| 381 |
+
switch (o) {
|
| 382 |
+
case `number`:
|
| 383 |
+
s = +b(s);
|
| 384 |
+
break;
|
| 385 |
+
case `boolean`:
|
| 386 |
+
s = !!b(s);
|
| 387 |
+
break;
|
| 388 |
+
case `string`:
|
| 389 |
+
s = b(s);
|
| 390 |
+
break;
|
| 391 |
+
default: throw Error(`Illegal primitive type for comparison.`);
|
| 392 |
+
}
|
| 393 |
+
if (i == t && e(s, r) || i == n && e(r, s)) return !0;
|
| 394 |
+
}
|
| 395 |
+
return !1;
|
| 396 |
+
}
|
| 397 |
+
return i ? typeof t == `boolean` || typeof n == `boolean` ? e(!!t, !!n) : typeof t == `number` || typeof n == `number` ? e(+t, +n) : e(t, n) : e(+t, +n);
|
| 398 |
+
}
|
| 399 |
+
M.prototype.a = function(e) {
|
| 400 |
+
return this.c.m(this.h, this.o, e);
|
| 401 |
+
}, M.prototype.toString = function() {
|
| 402 |
+
var e = `Binary Expression: ` + this.c, e = e + O(this.h);
|
| 403 |
+
return e += O(this.o);
|
| 404 |
+
};
|
| 405 |
+
function ze(e, t, n, r) {
|
| 406 |
+
this.a = e, this.w = t, this.i = n, this.m = r;
|
| 407 |
+
}
|
| 408 |
+
ze.prototype.toString = function() {
|
| 409 |
+
return this.a;
|
| 410 |
+
};
|
| 411 |
+
var Be = {};
|
| 412 |
+
function P(e, t, n, r) {
|
| 413 |
+
if (Be.hasOwnProperty(e)) throw Error(`Binary operator already created: ` + e);
|
| 414 |
+
return e = new ze(e, t, n, r), Be[e.toString()] = e;
|
| 415 |
+
}
|
| 416 |
+
P(`div`, 6, 1, function(e, t, n) {
|
| 417 |
+
return k(e, n) / k(t, n);
|
| 418 |
+
}), P(`mod`, 6, 1, function(e, t, n) {
|
| 419 |
+
return k(e, n) % k(t, n);
|
| 420 |
+
}), P(`*`, 6, 1, function(e, t, n) {
|
| 421 |
+
return k(e, n) * k(t, n);
|
| 422 |
+
}), P(`+`, 5, 1, function(e, t, n) {
|
| 423 |
+
return k(e, n) + k(t, n);
|
| 424 |
+
}), P(`-`, 5, 1, function(e, t, n) {
|
| 425 |
+
return k(e, n) - k(t, n);
|
| 426 |
+
}), P(`<`, 4, 2, function(e, t, n) {
|
| 427 |
+
return N(function(e, t) {
|
| 428 |
+
return e < t;
|
| 429 |
+
}, e, t, n);
|
| 430 |
+
}), P(`>`, 4, 2, function(e, t, n) {
|
| 431 |
+
return N(function(e, t) {
|
| 432 |
+
return e > t;
|
| 433 |
+
}, e, t, n);
|
| 434 |
+
}), P(`<=`, 4, 2, function(e, t, n) {
|
| 435 |
+
return N(function(e, t) {
|
| 436 |
+
return e <= t;
|
| 437 |
+
}, e, t, n);
|
| 438 |
+
}), P(`>=`, 4, 2, function(e, t, n) {
|
| 439 |
+
return N(function(e, t) {
|
| 440 |
+
return e >= t;
|
| 441 |
+
}, e, t, n);
|
| 442 |
+
});
|
| 443 |
+
var Ve = P(`=`, 3, 2, function(e, t, n) {
|
| 444 |
+
return N(function(e, t) {
|
| 445 |
+
return e == t;
|
| 446 |
+
}, e, t, n, !0);
|
| 447 |
+
});
|
| 448 |
+
P(`!=`, 3, 2, function(e, t, n) {
|
| 449 |
+
return N(function(e, t) {
|
| 450 |
+
return e != t;
|
| 451 |
+
}, e, t, n, !0);
|
| 452 |
+
}), P(`and`, 2, 2, function(e, t, n) {
|
| 453 |
+
return j(e, n) && j(t, n);
|
| 454 |
+
}), P(`or`, 1, 2, function(e, t, n) {
|
| 455 |
+
return j(e, n) || j(t, n);
|
| 456 |
+
});
|
| 457 |
+
function F(e, t, n) {
|
| 458 |
+
this.a = e, this.b = t || 1, this.f = n || 1;
|
| 459 |
+
}
|
| 460 |
+
function I(e, t) {
|
| 461 |
+
if (t.a.length && e.i != 4) throw Error(`Primary expression must evaluate to nodeset if filter has predicate(s).`);
|
| 462 |
+
D.call(this, e.i), this.c = e, this.h = t, this.g = e.g, this.b = e.b;
|
| 463 |
+
}
|
| 464 |
+
c(I), I.prototype.a = function(e) {
|
| 465 |
+
return e = this.c.a(e), et(this.h, e);
|
| 466 |
+
}, I.prototype.toString = function() {
|
| 467 |
+
var e = `Filter:` + O(this.c);
|
| 468 |
+
return e += O(this.h);
|
| 469 |
+
};
|
| 470 |
+
function L(e, t) {
|
| 471 |
+
if (t.length < e.A) throw Error(`Function ` + e.j + ` expects at least` + e.A + ` arguments, ` + t.length + ` given`);
|
| 472 |
+
if (e.v !== null && t.length > e.v) throw Error(`Function ` + e.j + ` expects at most ` + e.v + ` arguments, ` + t.length + ` given`);
|
| 473 |
+
e.B && f(t, function(t, n) {
|
| 474 |
+
if (t.i != 4) throw Error(`Argument ` + n + ` to function ` + e.j + ` is not of type Nodeset: ` + t);
|
| 475 |
+
}), D.call(this, e.i), this.h = e, this.c = t, Le(this, e.g || ne(t, function(e) {
|
| 476 |
+
return e.g;
|
| 477 |
+
})), Re(this, e.D && !t.length || e.C && !!t.length || ne(t, function(e) {
|
| 478 |
+
return e.b;
|
| 479 |
+
}));
|
| 480 |
+
}
|
| 481 |
+
c(L), L.prototype.a = function(e) {
|
| 482 |
+
return this.h.m.apply(null, ie(e, this.c));
|
| 483 |
+
}, L.prototype.toString = function() {
|
| 484 |
+
var e = `Function: ` + this.h;
|
| 485 |
+
if (this.c.length) var t = p(this.c, function(e, t) {
|
| 486 |
+
return e + O(t);
|
| 487 |
+
}, `Arguments:`), e = e + O(t);
|
| 488 |
+
return e;
|
| 489 |
+
};
|
| 490 |
+
function He(e, t, n, r, i, a, o, s, c) {
|
| 491 |
+
this.j = e, this.i = t, this.g = n, this.D = r, this.C = i, this.m = a, this.A = o, this.v = s === void 0 ? o : s, this.B = !!c;
|
| 492 |
+
}
|
| 493 |
+
He.prototype.toString = function() {
|
| 494 |
+
return this.j;
|
| 495 |
+
};
|
| 496 |
+
var Ue = {};
|
| 497 |
+
function R(e, t, n, r, i, a, o, s) {
|
| 498 |
+
if (Ue.hasOwnProperty(e)) throw Error(`Function already created: ` + e + `.`);
|
| 499 |
+
Ue[e] = new He(e, t, n, r, !1, i, a, o, s);
|
| 500 |
+
}
|
| 501 |
+
R(`boolean`, 2, !1, !1, function(e, t) {
|
| 502 |
+
return j(t, e);
|
| 503 |
+
}, 1), R(`ceiling`, 1, !1, !1, function(e, t) {
|
| 504 |
+
return Math.ceil(k(t, e));
|
| 505 |
+
}, 1), R(`concat`, 3, !1, !1, function(e, t) {
|
| 506 |
+
return p(ae(arguments, 1), function(t, n) {
|
| 507 |
+
return t + A(n, e);
|
| 508 |
+
}, ``);
|
| 509 |
+
}, 2, null), R(`contains`, 2, !1, !1, function(e, t, n) {
|
| 510 |
+
return u(A(t, e), A(n, e));
|
| 511 |
+
}, 2), R(`count`, 1, !1, !1, function(e, t) {
|
| 512 |
+
return t.a(e).l;
|
| 513 |
+
}, 1, 1, !0), R(`false`, 2, !1, !1, function() {
|
| 514 |
+
return !1;
|
| 515 |
+
}, 0), R(`floor`, 1, !1, !1, function(e, t) {
|
| 516 |
+
return Math.floor(k(t, e));
|
| 517 |
+
}, 1), R(`id`, 4, !1, !1, function(e, t) {
|
| 518 |
+
function n(e) {
|
| 519 |
+
if (v) {
|
| 520 |
+
var t = i.all[e];
|
| 521 |
+
if (t) {
|
| 522 |
+
if (t.nodeType && e == t.id) return t;
|
| 523 |
+
if (t.length) return re(t, function(t) {
|
| 524 |
+
return e == t.id;
|
| 525 |
+
});
|
| 526 |
+
}
|
| 527 |
+
return null;
|
| 528 |
+
}
|
| 529 |
+
return i.getElementById(e);
|
| 530 |
+
}
|
| 531 |
+
var r = e.a, i = r.nodeType == 9 ? r : r.ownerDocument, r = A(t, e).split(/\s+/), a = [];
|
| 532 |
+
f(r, function(e) {
|
| 533 |
+
e = n(e), !e || 0 <= d(a, e) || a.push(e);
|
| 534 |
+
}), a.sort(Oe);
|
| 535 |
+
var o = new C();
|
| 536 |
+
return f(a, function(e) {
|
| 537 |
+
w(o, e);
|
| 538 |
+
}), o;
|
| 539 |
+
}, 1), R(`lang`, 2, !1, !1, function() {
|
| 540 |
+
return !1;
|
| 541 |
+
}, 1), R(`last`, 1, !0, !1, function(e) {
|
| 542 |
+
if (arguments.length != 1) throw Error(`Function last expects ()`);
|
| 543 |
+
return e.f;
|
| 544 |
+
}, 0), R(`local-name`, 3, !1, !0, function(e, t) {
|
| 545 |
+
var n = t ? Pe(t.a(e)) : e.a;
|
| 546 |
+
return n ? n.localName || n.nodeName.toLowerCase() : ``;
|
| 547 |
+
}, 0, 1, !0), R(`name`, 3, !1, !0, function(e, t) {
|
| 548 |
+
var n = t ? Pe(t.a(e)) : e.a;
|
| 549 |
+
return n ? n.nodeName.toLowerCase() : ``;
|
| 550 |
+
}, 0, 1, !0), R(`namespace-uri`, 3, !0, !1, function() {
|
| 551 |
+
return ``;
|
| 552 |
+
}, 0, 1, !0), R(`normalize-space`, 3, !1, !0, function(e, t) {
|
| 553 |
+
return (t ? A(t, e) : b(e.a)).replace(/[\s\xa0]+/g, ` `).replace(/^\s+|\s+$/g, ``);
|
| 554 |
+
}, 0, 1), R(`not`, 2, !1, !1, function(e, t) {
|
| 555 |
+
return !j(t, e);
|
| 556 |
+
}, 1), R(`number`, 1, !1, !0, function(e, t) {
|
| 557 |
+
return t ? k(t, e) : +b(e.a);
|
| 558 |
+
}, 0, 1), R(`position`, 1, !0, !1, function(e) {
|
| 559 |
+
return e.b;
|
| 560 |
+
}, 0), R(`round`, 1, !1, !1, function(e, t) {
|
| 561 |
+
return Math.round(k(t, e));
|
| 562 |
+
}, 1), R(`starts-with`, 2, !1, !1, function(e, t, n) {
|
| 563 |
+
return t = A(t, e), e = A(n, e), t.lastIndexOf(e, 0) == 0;
|
| 564 |
+
}, 2), R(`string`, 3, !1, !0, function(e, t) {
|
| 565 |
+
return t ? A(t, e) : b(e.a);
|
| 566 |
+
}, 0, 1), R(`string-length`, 1, !1, !0, function(e, t) {
|
| 567 |
+
return (t ? A(t, e) : b(e.a)).length;
|
| 568 |
+
}, 0, 1), R(`substring`, 3, !1, !1, function(e, t, n, r) {
|
| 569 |
+
if (n = k(n, e), isNaN(n) || n == Infinity || n == -Infinity || (r = r ? k(r, e) : Infinity, isNaN(r) || r === -Infinity)) return ``;
|
| 570 |
+
n = Math.round(n) - 1;
|
| 571 |
+
var i = Math.max(n, 0);
|
| 572 |
+
return e = A(t, e), r == Infinity ? e.substring(i) : e.substring(i, n + Math.round(r));
|
| 573 |
+
}, 2, 3), R(`substring-after`, 3, !1, !1, function(e, t, n) {
|
| 574 |
+
return t = A(t, e), e = A(n, e), n = t.indexOf(e), n == -1 ? `` : t.substring(n + e.length);
|
| 575 |
+
}, 2), R(`substring-before`, 3, !1, !1, function(e, t, n) {
|
| 576 |
+
return t = A(t, e), e = A(n, e), e = t.indexOf(e), e == -1 ? `` : t.substring(0, e);
|
| 577 |
+
}, 2), R(`sum`, 1, !1, !1, function(e, t) {
|
| 578 |
+
for (var n = T(t.a(e)), r = 0, i = E(n); i; i = E(n)) r += +b(i);
|
| 579 |
+
return r;
|
| 580 |
+
}, 1, 1, !0), R(`translate`, 3, !1, !1, function(e, t, n, r) {
|
| 581 |
+
t = A(t, e), n = A(n, e);
|
| 582 |
+
var i = A(r, e);
|
| 583 |
+
for (e = {}, r = 0; r < n.length; r++) {
|
| 584 |
+
var a = n.charAt(r);
|
| 585 |
+
a in e || (e[a] = i.charAt(r));
|
| 586 |
+
}
|
| 587 |
+
for (n = ``, r = 0; r < t.length; r++) a = t.charAt(r), n += a in e ? e[a] : a;
|
| 588 |
+
return n;
|
| 589 |
+
}, 3), R(`true`, 2, !1, !1, function() {
|
| 590 |
+
return !0;
|
| 591 |
+
}, 0);
|
| 592 |
+
function z(e, t) {
|
| 593 |
+
switch (this.h = e, this.c = t === void 0 ? null : t, this.b = null, e) {
|
| 594 |
+
case `comment`:
|
| 595 |
+
this.b = 8;
|
| 596 |
+
break;
|
| 597 |
+
case `text`:
|
| 598 |
+
this.b = 3;
|
| 599 |
+
break;
|
| 600 |
+
case `processing-instruction`:
|
| 601 |
+
this.b = 7;
|
| 602 |
+
break;
|
| 603 |
+
case `node`: break;
|
| 604 |
+
default: throw Error(`Unexpected argument`);
|
| 605 |
+
}
|
| 606 |
+
}
|
| 607 |
+
function We(e) {
|
| 608 |
+
return e == `comment` || e == `text` || e == `processing-instruction` || e == `node`;
|
| 609 |
+
}
|
| 610 |
+
z.prototype.a = function(e) {
|
| 611 |
+
return this.b === null || this.b == e.nodeType;
|
| 612 |
+
}, z.prototype.f = function() {
|
| 613 |
+
return this.h;
|
| 614 |
+
}, z.prototype.toString = function() {
|
| 615 |
+
var e = `Kind Test: ` + this.h;
|
| 616 |
+
return this.c === null || (e += O(this.c)), e;
|
| 617 |
+
};
|
| 618 |
+
function Ge(e) {
|
| 619 |
+
this.b = e, this.a = 0;
|
| 620 |
+
}
|
| 621 |
+
function Ke(e) {
|
| 622 |
+
e = e.match(qe);
|
| 623 |
+
for (var t = 0; t < e.length; t++) Je.test(e[t]) && e.splice(t, 1);
|
| 624 |
+
return new Ge(e);
|
| 625 |
+
}
|
| 626 |
+
var qe = /\$?(?:(?![0-9-\.])(?:\*|[\w-\.]+):)?(?![0-9-\.])(?:\*|[\w-\.]+)|\/\/|\.\.|::|\d+(?:\.\d*)?|\.\d+|"[^"]*"|'[^']*'|[!<>]=|\s+|./g, Je = /^\s/;
|
| 627 |
+
function B(e, t) {
|
| 628 |
+
return e.b[e.a + (t || 0)];
|
| 629 |
+
}
|
| 630 |
+
function V(e) {
|
| 631 |
+
return e.b[e.a++];
|
| 632 |
+
}
|
| 633 |
+
function H(e) {
|
| 634 |
+
return e.b.length <= e.a;
|
| 635 |
+
}
|
| 636 |
+
function U(e) {
|
| 637 |
+
D.call(this, 3), this.c = e.substring(1, e.length - 1);
|
| 638 |
+
}
|
| 639 |
+
c(U), U.prototype.a = function() {
|
| 640 |
+
return this.c;
|
| 641 |
+
}, U.prototype.toString = function() {
|
| 642 |
+
return `Literal: ` + this.c;
|
| 643 |
+
};
|
| 644 |
+
function W(e, t) {
|
| 645 |
+
this.j = e.toLowerCase();
|
| 646 |
+
var n = this.j == `*` ? `*` : `http://www.w3.org/1999/xhtml`;
|
| 647 |
+
this.c = t ? t.toLowerCase() : n;
|
| 648 |
+
}
|
| 649 |
+
W.prototype.a = function(e) {
|
| 650 |
+
var t = e.nodeType;
|
| 651 |
+
return t != 1 && t != 2 ? !1 : (t = e.localName === void 0 ? e.nodeName : e.localName, this.j != `*` && this.j != t.toLowerCase() ? !1 : this.c == `*` ? !0 : this.c == (e.namespaceURI ? e.namespaceURI.toLowerCase() : `http://www.w3.org/1999/xhtml`));
|
| 652 |
+
}, W.prototype.f = function() {
|
| 653 |
+
return this.j;
|
| 654 |
+
}, W.prototype.toString = function() {
|
| 655 |
+
return `Name Test: ` + (this.c == `http://www.w3.org/1999/xhtml` ? `` : this.c + `:`) + this.j;
|
| 656 |
+
};
|
| 657 |
+
function Ye(e, t) {
|
| 658 |
+
if (D.call(this, e.i), this.h = e, this.c = t, this.g = e.g, this.b = e.b, this.c.length == 1) {
|
| 659 |
+
var n = this.c[0];
|
| 660 |
+
n.u || n.c != rt || (n = n.o, n.f() != `*` && (this.f = {
|
| 661 |
+
name: n.f(),
|
| 662 |
+
s: null
|
| 663 |
+
}));
|
| 664 |
+
}
|
| 665 |
+
}
|
| 666 |
+
c(Ye);
|
| 667 |
+
function G() {
|
| 668 |
+
D.call(this, 4);
|
| 669 |
+
}
|
| 670 |
+
c(G), G.prototype.a = function(e) {
|
| 671 |
+
var t = new C();
|
| 672 |
+
return e = e.a, e.nodeType == 9 ? w(t, e) : w(t, e.ownerDocument), t;
|
| 673 |
+
}, G.prototype.toString = function() {
|
| 674 |
+
return `Root Helper Expression`;
|
| 675 |
+
};
|
| 676 |
+
function Xe() {
|
| 677 |
+
D.call(this, 4);
|
| 678 |
+
}
|
| 679 |
+
c(Xe), Xe.prototype.a = function(e) {
|
| 680 |
+
var t = new C();
|
| 681 |
+
return w(t, e.a), t;
|
| 682 |
+
}, Xe.prototype.toString = function() {
|
| 683 |
+
return `Context Helper Expression`;
|
| 684 |
+
};
|
| 685 |
+
function Ze(e) {
|
| 686 |
+
return e == `/` || e == `//`;
|
| 687 |
+
}
|
| 688 |
+
Ye.prototype.a = function(e) {
|
| 689 |
+
var t = this.h.a(e);
|
| 690 |
+
if (!(t instanceof C)) throw Error(`Filter expression must evaluate to nodeset.`);
|
| 691 |
+
e = this.c;
|
| 692 |
+
for (var n = 0, r = e.length; n < r && t.l; n++) {
|
| 693 |
+
var i = e[n], a = T(t, i.c.a), o;
|
| 694 |
+
if (i.g || i.c != ot) if (i.g || i.c != ct) for (o = E(a), t = i.a(new F(o)); (o = E(a)) != null;) o = i.a(new F(o)), t = Me(t, o);
|
| 695 |
+
else o = E(a), t = i.a(new F(o));
|
| 696 |
+
else {
|
| 697 |
+
for (o = E(a); (t = E(a)) && (!o.contains || o.contains(t)) && t.compareDocumentPosition(o) & 8; o = t);
|
| 698 |
+
t = i.a(new F(o));
|
| 699 |
+
}
|
| 700 |
+
}
|
| 701 |
+
return t;
|
| 702 |
+
}, Ye.prototype.toString = function() {
|
| 703 |
+
var e = `Path Expression:` + O(this.h);
|
| 704 |
+
if (this.c.length) {
|
| 705 |
+
var t = p(this.c, function(e, t) {
|
| 706 |
+
return e + O(t);
|
| 707 |
+
}, `Steps:`);
|
| 708 |
+
e += O(t);
|
| 709 |
+
}
|
| 710 |
+
return e;
|
| 711 |
+
};
|
| 712 |
+
function Qe(e) {
|
| 713 |
+
D.call(this, 4), this.c = e, Le(this, ne(this.c, function(e) {
|
| 714 |
+
return e.g;
|
| 715 |
+
})), Re(this, ne(this.c, function(e) {
|
| 716 |
+
return e.b;
|
| 717 |
+
}));
|
| 718 |
+
}
|
| 719 |
+
c(Qe), Qe.prototype.a = function(e) {
|
| 720 |
+
var t = new C();
|
| 721 |
+
return f(this.c, function(n) {
|
| 722 |
+
if (n = n.a(e), !(n instanceof C)) throw Error(`Path expression must evaluate to NodeSet.`);
|
| 723 |
+
t = Me(t, n);
|
| 724 |
+
}), t;
|
| 725 |
+
}, Qe.prototype.toString = function() {
|
| 726 |
+
return p(this.c, function(e, t) {
|
| 727 |
+
return e + O(t);
|
| 728 |
+
}, `Union Expression:`);
|
| 729 |
+
};
|
| 730 |
+
function $e(e, t) {
|
| 731 |
+
this.a = e, this.b = !!t;
|
| 732 |
+
}
|
| 733 |
+
function et(e, t, n) {
|
| 734 |
+
for (n ||= 0; n < e.a.length; n++) for (var r = e.a[n], i = T(t), a = t.l, o, s = 0; o = E(i); s++) {
|
| 735 |
+
var c = e.b ? a - s : s + 1;
|
| 736 |
+
if (o = r.a(new F(o, c, a)), typeof o == `number`) c = c == o;
|
| 737 |
+
else if (typeof o == `string` || typeof o == `boolean`) c = !!o;
|
| 738 |
+
else if (o instanceof C) c = 0 < o.l;
|
| 739 |
+
else throw Error(`Predicate.evaluate returned an unexpected type.`);
|
| 740 |
+
if (!c) {
|
| 741 |
+
c = i, o = c.f;
|
| 742 |
+
var l = c.a;
|
| 743 |
+
if (!l) throw Error(`Next must be called at least once before remove.`);
|
| 744 |
+
var u = l.b, l = l.a;
|
| 745 |
+
u ? u.a = l : o.a = l, l ? l.b = u : o.b = u, o.l--, c.a = null;
|
| 746 |
+
}
|
| 747 |
+
}
|
| 748 |
+
return t;
|
| 749 |
+
}
|
| 750 |
+
$e.prototype.toString = function() {
|
| 751 |
+
return p(this.a, function(e, t) {
|
| 752 |
+
return e + O(t);
|
| 753 |
+
}, `Predicates:`);
|
| 754 |
+
};
|
| 755 |
+
function K(e, t, n, r) {
|
| 756 |
+
D.call(this, 4), this.c = e, this.o = t, this.h = n || new $e([]), this.u = !!r, t = this.h, t = 0 < t.a.length ? t.a[0].f : null, e.b && t && (e = t.name, e = v ? e.toLowerCase() : e, this.f = {
|
| 757 |
+
name: e,
|
| 758 |
+
s: t.s
|
| 759 |
+
});
|
| 760 |
+
a: {
|
| 761 |
+
for (e = this.h, t = 0; t < e.a.length; t++) if (n = e.a[t], n.g || n.i == 1 || n.i == 0) {
|
| 762 |
+
e = !0;
|
| 763 |
+
break a;
|
| 764 |
+
}
|
| 765 |
+
e = !1;
|
| 766 |
+
}
|
| 767 |
+
this.g = e;
|
| 768 |
+
}
|
| 769 |
+
c(K), K.prototype.a = function(e) {
|
| 770 |
+
var t = e.a, n = null, n = this.f, r = null, i = null, a = 0;
|
| 771 |
+
if (n && (r = n.name, i = n.s ? A(n.s, e) : null, a = 1), this.u) if (this.g || this.c != it) if (e = T(new K(at, new z(`node`)).a(e)), t = E(e)) for (n = this.m(t, r, i, a); (t = E(e)) != null;) n = Me(n, this.m(t, r, i, a));
|
| 772 |
+
else n = new C();
|
| 773 |
+
else n = S(this.o, t, r, i), n = et(this.h, n, a);
|
| 774 |
+
else n = this.m(e.a, r, i, a);
|
| 775 |
+
return n;
|
| 776 |
+
}, K.prototype.m = function(e, t, n, r) {
|
| 777 |
+
return e = this.c.f(this.o, e, t, n), e = et(this.h, e, r);
|
| 778 |
+
}, K.prototype.toString = function() {
|
| 779 |
+
var e = `Step:` + O(`Operator: ` + (this.u ? `//` : `/`));
|
| 780 |
+
if (this.c.j && (e += O(`Axis: ` + this.c)), e += O(this.o), this.h.a.length) {
|
| 781 |
+
var t = p(this.h.a, function(e, t) {
|
| 782 |
+
return e + O(t);
|
| 783 |
+
}, `Predicates:`);
|
| 784 |
+
e += O(t);
|
| 785 |
+
}
|
| 786 |
+
return e;
|
| 787 |
+
};
|
| 788 |
+
function tt(e, t, n, r) {
|
| 789 |
+
this.j = e, this.f = t, this.a = n, this.b = r;
|
| 790 |
+
}
|
| 791 |
+
tt.prototype.toString = function() {
|
| 792 |
+
return this.j;
|
| 793 |
+
};
|
| 794 |
+
var nt = {};
|
| 795 |
+
function q(e, t, n, r) {
|
| 796 |
+
if (nt.hasOwnProperty(e)) throw Error(`Axis already created: ` + e);
|
| 797 |
+
return t = new tt(e, t, n, !!r), nt[e] = t;
|
| 798 |
+
}
|
| 799 |
+
q(`ancestor`, function(e, t) {
|
| 800 |
+
for (var n = new C(), r = t; r = r.parentNode;) e.a(r) && Ne(n, r);
|
| 801 |
+
return n;
|
| 802 |
+
}, !0), q(`ancestor-or-self`, function(e, t) {
|
| 803 |
+
var n = new C(), r = t;
|
| 804 |
+
do
|
| 805 |
+
e.a(r) && Ne(n, r);
|
| 806 |
+
while (r = r.parentNode);
|
| 807 |
+
return n;
|
| 808 |
+
}, !0);
|
| 809 |
+
var rt = q(`attribute`, function(e, t) {
|
| 810 |
+
var n = new C(), r = e.f();
|
| 811 |
+
if (r == `style` && v && t.style) return w(n, new y(t.style, t, `style`, t.style.cssText)), n;
|
| 812 |
+
var i = t.attributes;
|
| 813 |
+
if (i) if (e instanceof z && e.b === null || r == `*`) for (var r = 0, a; a = i[r]; r++) v ? a.nodeValue && w(n, be(t, a)) : w(n, a);
|
| 814 |
+
else (a = i.getNamedItem(r)) && (v ? a.nodeValue && w(n, be(t, a)) : w(n, a));
|
| 815 |
+
return n;
|
| 816 |
+
}, !1), it = q(`child`, function(e, t, n, i, a) {
|
| 817 |
+
return (v ? Ce : we).call(null, e, t, r(n) ? n : null, r(i) ? i : null, a || new C());
|
| 818 |
+
}, !1, !0);
|
| 819 |
+
q(`descendant`, S, !1, !0);
|
| 820 |
+
var at = q(`descendant-or-self`, function(e, t, n, r) {
|
| 821 |
+
var i = new C();
|
| 822 |
+
return x(t, n, r) && e.a(t) && w(i, t), S(e, t, n, r, i);
|
| 823 |
+
}, !1, !0), ot = q(`following`, function(e, t, n, r) {
|
| 824 |
+
var i = new C();
|
| 825 |
+
do
|
| 826 |
+
for (var a = t; a = a.nextSibling;) x(a, n, r) && e.a(a) && w(i, a), i = S(e, a, n, r, i);
|
| 827 |
+
while (t = t.parentNode);
|
| 828 |
+
return i;
|
| 829 |
+
}, !1, !0);
|
| 830 |
+
q(`following-sibling`, function(e, t) {
|
| 831 |
+
for (var n = new C(), r = t; r = r.nextSibling;) e.a(r) && w(n, r);
|
| 832 |
+
return n;
|
| 833 |
+
}, !1), q(`namespace`, function() {
|
| 834 |
+
return new C();
|
| 835 |
+
}, !1);
|
| 836 |
+
var st = q(`parent`, function(e, t) {
|
| 837 |
+
var n = new C();
|
| 838 |
+
if (t.nodeType == 9) return n;
|
| 839 |
+
if (t.nodeType == 2) return w(n, t.ownerElement), n;
|
| 840 |
+
var r = t.parentNode;
|
| 841 |
+
return e.a(r) && w(n, r), n;
|
| 842 |
+
}, !1), ct = q(`preceding`, function(e, t, n, r) {
|
| 843 |
+
var i = new C(), a = [];
|
| 844 |
+
do
|
| 845 |
+
a.unshift(t);
|
| 846 |
+
while (t = t.parentNode);
|
| 847 |
+
for (var o = 1, s = a.length; o < s; o++) {
|
| 848 |
+
var c = [];
|
| 849 |
+
for (t = a[o]; t = t.previousSibling;) c.unshift(t);
|
| 850 |
+
for (var l = 0, u = c.length; l < u; l++) t = c[l], x(t, n, r) && e.a(t) && w(i, t), i = S(e, t, n, r, i);
|
| 851 |
+
}
|
| 852 |
+
return i;
|
| 853 |
+
}, !0, !0);
|
| 854 |
+
q(`preceding-sibling`, function(e, t) {
|
| 855 |
+
for (var n = new C(), r = t; r = r.previousSibling;) e.a(r) && Ne(n, r);
|
| 856 |
+
return n;
|
| 857 |
+
}, !0);
|
| 858 |
+
var lt = q(`self`, function(e, t) {
|
| 859 |
+
var n = new C();
|
| 860 |
+
return e.a(t) && w(n, t), n;
|
| 861 |
+
}, !1);
|
| 862 |
+
function J(e) {
|
| 863 |
+
D.call(this, 1), this.c = e, this.g = e.g, this.b = e.b;
|
| 864 |
+
}
|
| 865 |
+
c(J), J.prototype.a = function(e) {
|
| 866 |
+
return -k(this.c, e);
|
| 867 |
+
}, J.prototype.toString = function() {
|
| 868 |
+
return `Unary Expression: -` + O(this.c);
|
| 869 |
+
};
|
| 870 |
+
function ut(e) {
|
| 871 |
+
D.call(this, 1), this.c = e;
|
| 872 |
+
}
|
| 873 |
+
c(ut), ut.prototype.a = function() {
|
| 874 |
+
return this.c;
|
| 875 |
+
}, ut.prototype.toString = function() {
|
| 876 |
+
return `Number: ` + this.c;
|
| 877 |
+
};
|
| 878 |
+
function dt(e, t) {
|
| 879 |
+
this.a = e, this.b = t;
|
| 880 |
+
}
|
| 881 |
+
function ft(e) {
|
| 882 |
+
for (var t, n = [];;) {
|
| 883 |
+
Y(e, `Missing right hand side of binary expression.`), t = yt(e);
|
| 884 |
+
var r = V(e.a);
|
| 885 |
+
if (!r) break;
|
| 886 |
+
var i = (r = Be[r] || null) && r.w;
|
| 887 |
+
if (!i) {
|
| 888 |
+
e.a.a--;
|
| 889 |
+
break;
|
| 890 |
+
}
|
| 891 |
+
for (; n.length && i <= n[n.length - 1].w;) t = new M(n.pop(), n.pop(), t);
|
| 892 |
+
n.push(t, r);
|
| 893 |
+
}
|
| 894 |
+
for (; n.length;) t = new M(n.pop(), n.pop(), t);
|
| 895 |
+
return t;
|
| 896 |
+
}
|
| 897 |
+
function Y(e, t) {
|
| 898 |
+
if (H(e.a)) throw Error(t);
|
| 899 |
+
}
|
| 900 |
+
function pt(e, t) {
|
| 901 |
+
var n = V(e.a);
|
| 902 |
+
if (n != t) throw Error(`Bad token, expected: ` + t + ` got: ` + n);
|
| 903 |
+
}
|
| 904 |
+
function mt(e) {
|
| 905 |
+
if (e = V(e.a), e != `)`) throw Error(`Bad token: ` + e);
|
| 906 |
+
}
|
| 907 |
+
function ht(e) {
|
| 908 |
+
if (e = V(e.a), 2 > e.length) throw Error(`Unclosed literal string`);
|
| 909 |
+
return new U(e);
|
| 910 |
+
}
|
| 911 |
+
function gt(e) {
|
| 912 |
+
var t, n = [], r;
|
| 913 |
+
if (Ze(B(e.a))) {
|
| 914 |
+
if (t = V(e.a), r = B(e.a), t == `/` && (H(e.a) || r != `.` && r != `..` && r != `@` && r != `*` && !/(?![0-9])[\w]/.test(r))) return new G();
|
| 915 |
+
r = new G(), Y(e, `Missing next location step.`), t = _t(e, t), n.push(t);
|
| 916 |
+
} else {
|
| 917 |
+
a: {
|
| 918 |
+
switch (t = B(e.a), r = t.charAt(0), r) {
|
| 919 |
+
case `$`: throw Error(`Variable reference not allowed in HTML XPath`);
|
| 920 |
+
case `(`:
|
| 921 |
+
V(e.a), t = ft(e), Y(e, `unclosed "("`), pt(e, `)`);
|
| 922 |
+
break;
|
| 923 |
+
case `"`:
|
| 924 |
+
case `'`:
|
| 925 |
+
t = ht(e);
|
| 926 |
+
break;
|
| 927 |
+
default: if (isNaN(+t)) if (!We(t) && /(?![0-9])[\w]/.test(r) && B(e.a, 1) == `(`) {
|
| 928 |
+
for (t = V(e.a), t = Ue[t] || null, V(e.a), r = []; B(e.a) != `)` && (Y(e, `Missing function argument list.`), r.push(ft(e)), B(e.a) == `,`);) V(e.a);
|
| 929 |
+
Y(e, `Unclosed function argument list.`), mt(e), t = new L(t, r);
|
| 930 |
+
} else {
|
| 931 |
+
t = null;
|
| 932 |
+
break a;
|
| 933 |
+
}
|
| 934 |
+
else t = new ut(+V(e.a));
|
| 935 |
+
}
|
| 936 |
+
B(e.a) == `[` && (r = new $e(vt(e)), t = new I(t, r));
|
| 937 |
+
}
|
| 938 |
+
if (t) if (Ze(B(e.a))) r = t;
|
| 939 |
+
else return t;
|
| 940 |
+
else t = _t(e, `/`), r = new Xe(), n.push(t);
|
| 941 |
+
}
|
| 942 |
+
for (; Ze(B(e.a));) t = V(e.a), Y(e, `Missing next location step.`), t = _t(e, t), n.push(t);
|
| 943 |
+
return new Ye(r, n);
|
| 944 |
+
}
|
| 945 |
+
function _t(e, t) {
|
| 946 |
+
var n, r, i;
|
| 947 |
+
if (t != `/` && t != `//`) throw Error(`Step op should be "/" or "//"`);
|
| 948 |
+
if (B(e.a) == `.`) return r = new K(lt, new z(`node`)), V(e.a), r;
|
| 949 |
+
if (B(e.a) == `..`) return r = new K(st, new z(`node`)), V(e.a), r;
|
| 950 |
+
var a;
|
| 951 |
+
if (B(e.a) == `@`) a = rt, V(e.a), Y(e, `Missing attribute name`);
|
| 952 |
+
else if (B(e.a, 1) == `::`) {
|
| 953 |
+
if (!/(?![0-9])[\w]/.test(B(e.a).charAt(0))) throw Error(`Bad token: ` + V(e.a));
|
| 954 |
+
if (n = V(e.a), a = nt[n] || null, !a) throw Error(`No axis with name: ` + n);
|
| 955 |
+
V(e.a), Y(e, `Missing node name`);
|
| 956 |
+
} else a = it;
|
| 957 |
+
if (n = B(e.a), /(?![0-9])[\w\*]/.test(n.charAt(0))) if (B(e.a, 1) == `(`) {
|
| 958 |
+
if (!We(n)) throw Error(`Invalid node type: ` + n);
|
| 959 |
+
if (n = V(e.a), !We(n)) throw Error(`Invalid type name: ` + n);
|
| 960 |
+
pt(e, `(`), Y(e, `Bad nodetype`), i = B(e.a).charAt(0);
|
| 961 |
+
var o = null;
|
| 962 |
+
(i == `"` || i == `'`) && (o = ht(e)), Y(e, `Bad nodetype`), mt(e), n = new z(n, o);
|
| 963 |
+
} else if (n = V(e.a), i = n.indexOf(`:`), i == -1) n = new W(n);
|
| 964 |
+
else {
|
| 965 |
+
var o = n.substring(0, i), s;
|
| 966 |
+
if (o == `*`) s = `*`;
|
| 967 |
+
else if (s = e.b(o), !s) throw Error(`Namespace prefix not declared: ` + o);
|
| 968 |
+
n = n.substr(i + 1), n = new W(n, s);
|
| 969 |
+
}
|
| 970 |
+
else throw Error(`Bad token: ` + V(e.a));
|
| 971 |
+
return i = new $e(vt(e), a.a), r || new K(a, n, i, t == `//`);
|
| 972 |
+
}
|
| 973 |
+
function vt(e) {
|
| 974 |
+
for (var t = []; B(e.a) == `[`;) {
|
| 975 |
+
V(e.a), Y(e, `Missing predicate expression.`);
|
| 976 |
+
var n = ft(e);
|
| 977 |
+
t.push(n), Y(e, `Unclosed predicate expression.`), pt(e, `]`);
|
| 978 |
+
}
|
| 979 |
+
return t;
|
| 980 |
+
}
|
| 981 |
+
function yt(e) {
|
| 982 |
+
if (B(e.a) == `-`) return V(e.a), new J(yt(e));
|
| 983 |
+
var t = gt(e);
|
| 984 |
+
if (B(e.a) != `|`) e = t;
|
| 985 |
+
else {
|
| 986 |
+
for (t = [t]; V(e.a) == `|`;) Y(e, `Missing next union location path.`), t.push(gt(e));
|
| 987 |
+
e.a.a--, e = new Qe(t);
|
| 988 |
+
}
|
| 989 |
+
return e;
|
| 990 |
+
}
|
| 991 |
+
function bt(e) {
|
| 992 |
+
switch (e.nodeType) {
|
| 993 |
+
case 1: return s(St, e);
|
| 994 |
+
case 9: return bt(e.documentElement);
|
| 995 |
+
case 11:
|
| 996 |
+
case 10:
|
| 997 |
+
case 6:
|
| 998 |
+
case 12: return xt;
|
| 999 |
+
default: return e.parentNode ? bt(e.parentNode) : xt;
|
| 1000 |
+
}
|
| 1001 |
+
}
|
| 1002 |
+
function xt() {
|
| 1003 |
+
return null;
|
| 1004 |
+
}
|
| 1005 |
+
function St(e, t) {
|
| 1006 |
+
if (e.prefix == t) return e.namespaceURI || `http://www.w3.org/1999/xhtml`;
|
| 1007 |
+
var n = e.getAttributeNode(`xmlns:` + t);
|
| 1008 |
+
return n && n.specified ? n.value || null : e.parentNode && e.parentNode.nodeType != 9 ? St(e.parentNode, t) : null;
|
| 1009 |
+
}
|
| 1010 |
+
function Ct(e, n) {
|
| 1011 |
+
if (!e.length) throw Error(`Empty XPath expression.`);
|
| 1012 |
+
var r = Ke(e);
|
| 1013 |
+
if (H(r)) throw Error(`Invalid XPath expression.`);
|
| 1014 |
+
n ? t(n) == `function` || (n = o(n.lookupNamespaceURI, n)) : n = function() {
|
| 1015 |
+
return null;
|
| 1016 |
+
};
|
| 1017 |
+
var i = ft(new dt(r, n));
|
| 1018 |
+
if (!H(r)) throw Error(`Bad token: ` + V(r));
|
| 1019 |
+
this.evaluate = function(e, t) {
|
| 1020 |
+
return new X(i.a(new F(e)), t);
|
| 1021 |
+
};
|
| 1022 |
+
}
|
| 1023 |
+
function X(e, t) {
|
| 1024 |
+
if (t == 0) if (e instanceof C) t = 4;
|
| 1025 |
+
else if (typeof e == `string`) t = 2;
|
| 1026 |
+
else if (typeof e == `number`) t = 1;
|
| 1027 |
+
else if (typeof e == `boolean`) t = 3;
|
| 1028 |
+
else throw Error(`Unexpected evaluation result.`);
|
| 1029 |
+
if (t != 2 && t != 1 && t != 3 && !(e instanceof C)) throw Error(`value could not be converted to the specified type`);
|
| 1030 |
+
this.resultType = t;
|
| 1031 |
+
var n;
|
| 1032 |
+
switch (t) {
|
| 1033 |
+
case 2:
|
| 1034 |
+
this.stringValue = e instanceof C ? Fe(e) : `` + e;
|
| 1035 |
+
break;
|
| 1036 |
+
case 1:
|
| 1037 |
+
this.numberValue = e instanceof C ? +Fe(e) : +e;
|
| 1038 |
+
break;
|
| 1039 |
+
case 3:
|
| 1040 |
+
this.booleanValue = e instanceof C ? 0 < e.l : !!e;
|
| 1041 |
+
break;
|
| 1042 |
+
case 4:
|
| 1043 |
+
case 5:
|
| 1044 |
+
case 6:
|
| 1045 |
+
case 7:
|
| 1046 |
+
var r = T(e);
|
| 1047 |
+
n = [];
|
| 1048 |
+
for (var i = E(r); i; i = E(r)) n.push(i instanceof y ? i.a : i);
|
| 1049 |
+
this.snapshotLength = e.l, this.invalidIteratorState = !1;
|
| 1050 |
+
break;
|
| 1051 |
+
case 8:
|
| 1052 |
+
case 9:
|
| 1053 |
+
r = Pe(e), this.singleNodeValue = r instanceof y ? r.a : r;
|
| 1054 |
+
break;
|
| 1055 |
+
default: throw Error(`Unknown XPathResult type.`);
|
| 1056 |
+
}
|
| 1057 |
+
var a = 0;
|
| 1058 |
+
this.iterateNext = function() {
|
| 1059 |
+
if (t != 4 && t != 5) throw Error(`iterateNext called with wrong result type`);
|
| 1060 |
+
return a >= n.length ? null : n[a++];
|
| 1061 |
+
}, this.snapshotItem = function(e) {
|
| 1062 |
+
if (t != 6 && t != 7) throw Error(`snapshotItem called with wrong result type`);
|
| 1063 |
+
return e >= n.length || 0 > e ? null : n[e];
|
| 1064 |
+
};
|
| 1065 |
+
}
|
| 1066 |
+
X.ANY_TYPE = 0, X.NUMBER_TYPE = 1, X.STRING_TYPE = 2, X.BOOLEAN_TYPE = 3, X.UNORDERED_NODE_ITERATOR_TYPE = 4, X.ORDERED_NODE_ITERATOR_TYPE = 5, X.UNORDERED_NODE_SNAPSHOT_TYPE = 6, X.ORDERED_NODE_SNAPSHOT_TYPE = 7, X.ANY_UNORDERED_NODE_TYPE = 8, X.FIRST_ORDERED_NODE_TYPE = 9;
|
| 1067 |
+
function wt(e) {
|
| 1068 |
+
this.lookupNamespaceURI = bt(e);
|
| 1069 |
+
}
|
| 1070 |
+
function Tt(t, n) {
|
| 1071 |
+
var r = t || e, i = r.Document && r.Document.prototype || r.document;
|
| 1072 |
+
(!i.evaluate || n) && (r.XPathResult = X, i.evaluate = function(e, t, n, r) {
|
| 1073 |
+
return new Ct(e, n).evaluate(t, r);
|
| 1074 |
+
}, i.createExpression = function(e, t) {
|
| 1075 |
+
return new Ct(e, t);
|
| 1076 |
+
}, i.createNSResolver = function(e) {
|
| 1077 |
+
return new wt(e);
|
| 1078 |
+
});
|
| 1079 |
+
}
|
| 1080 |
+
var Z = [`wgxpath`, `install`], Q = e;
|
| 1081 |
+
Z[0] in Q || !Q.execScript || Q.execScript(`var ` + Z[0]);
|
| 1082 |
+
for (var $; Z.length && ($ = Z.shift());) Z.length || Tt === void 0 ? Q = Q[$] ? Q[$] : Q[$] = {} : Q[$] = Tt;
|
| 1083 |
+
n.exports.install = Tt, n.exports.XPathResultType = {
|
| 1084 |
+
ANY_TYPE: 0,
|
| 1085 |
+
NUMBER_TYPE: 1,
|
| 1086 |
+
STRING_TYPE: 2,
|
| 1087 |
+
BOOLEAN_TYPE: 3,
|
| 1088 |
+
UNORDERED_NODE_ITERATOR_TYPE: 4,
|
| 1089 |
+
ORDERED_NODE_ITERATOR_TYPE: 5,
|
| 1090 |
+
UNORDERED_NODE_SNAPSHOT_TYPE: 6,
|
| 1091 |
+
ORDERED_NODE_SNAPSHOT_TYPE: 7,
|
| 1092 |
+
ANY_UNORDERED_NODE_TYPE: 8,
|
| 1093 |
+
FIRST_ORDERED_NODE_TYPE: 9
|
| 1094 |
+
};
|
| 1095 |
+
}).call(e);
|
| 1096 |
+
}))();
|
| 1097 |
+
//#endregion
|
| 1098 |
+
export { wgxpath_install_node_Csk64Aj9_default as default };
|
| 1099 |
+
|
| 1100 |
+
//# sourceMappingURL=wgxpath.install-node-Csk64Aj9.js.map
|
viewer/assets/xypic-DrMJn58R.js
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
viewer/index.html
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!doctype html>
|
| 2 |
+
<html lang="en" data-bs-theme="light">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="utf-8" />
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
| 6 |
+
<meta name="robots" content="noindex,noai,noimageai" />
|
| 7 |
+
<title>Inspect View</title>
|
| 8 |
+
<link rel="icon" href="./assets/favicon.svg" />
|
| 9 |
+
|
| 10 |
+
<script>
|
| 11 |
+
// Forward the theme (dark or light) onto the root html element
|
| 12 |
+
// this parameter will tend to appear when the view is hosted within
|
| 13 |
+
// an iframe (e.g. in vscode)
|
| 14 |
+
const urlParams = new URLSearchParams(window.location.search);
|
| 15 |
+
const theme = urlParams.get("inspectLogviewThemeCategory");
|
| 16 |
+
if (theme) {
|
| 17 |
+
document.documentElement.setAttribute("data-text-highlight", theme);
|
| 18 |
+
document.documentElement.setAttribute("data-bs-theme", theme);
|
| 19 |
+
}
|
| 20 |
+
</script>
|
| 21 |
+
<script type="module" crossorigin src="./assets/index.js"></script>
|
| 22 |
+
<link rel="modulepreload" crossorigin href="./assets/chunk-DfAF0w94.js">
|
| 23 |
+
<link rel="stylesheet" crossorigin href="./assets/index.css">
|
| 24 |
+
<script id="log_dir_context" type="application/json">{"log_dir": "logs", "abs_log_dir": "/private/tmp/claude-501/-Users-kazuki-Sandbox-inspect-ai/ab0df989-8a9a-4c91-a4c0-2c0cedb1d7c5/scratchpad/viewer_logs"}</script>
|
| 25 |
+
</head>
|
| 26 |
+
|
| 27 |
+
<body style="min-width: 450px">
|
| 28 |
+
<div id="app"></div>
|
| 29 |
+
</body>
|
| 30 |
+
</html>
|
viewer/logs/listing.json
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"professional__plamo-3.0-prime__2026-07-24.eval": {
|
| 3 |
+
"eval_id": "k64YYj5nDTfT9kUD3bKahd",
|
| 4 |
+
"run_id": "EHponHjnCM32Q5d362BH9w",
|
| 5 |
+
"task": "healthbench_professional",
|
| 6 |
+
"task_id": "c9RnXrEaoi4T33bvwXEA5h",
|
| 7 |
+
"task_version": 0,
|
| 8 |
+
"version": 2,
|
| 9 |
+
"status": "success",
|
| 10 |
+
"invalidated": false,
|
| 11 |
+
"model": "openai-api/plamo/plamo-3.0-prime",
|
| 12 |
+
"started_at": "2026-07-24T17:30:37+00:00",
|
| 13 |
+
"completed_at": "2026-07-24T19:33:03+00:00",
|
| 14 |
+
"primary_metric": {
|
| 15 |
+
"name": "bootstrap_score",
|
| 16 |
+
"value": 0.13741141621322153,
|
| 17 |
+
"params": {
|
| 18 |
+
"bootstrap_samples": 1000,
|
| 19 |
+
"include_subset_scores": true,
|
| 20 |
+
"use_length_adjusted": true
|
| 21 |
+
}
|
| 22 |
+
}
|
| 23 |
+
},
|
| 24 |
+
"professional__opus-4.7__2026-07-24.eval": {
|
| 25 |
+
"eval_id": "BhYeUGpXKSJ5dHbUcFdJx5",
|
| 26 |
+
"run_id": "BNTWRBnseQoUGrW7EyaRwM",
|
| 27 |
+
"task": "healthbench_professional",
|
| 28 |
+
"task_id": "boiooCVNG7ZkBVsnEpKLNT",
|
| 29 |
+
"task_version": 0,
|
| 30 |
+
"version": 2,
|
| 31 |
+
"status": "success",
|
| 32 |
+
"invalidated": false,
|
| 33 |
+
"model": "anthropic/claude-opus-4-7",
|
| 34 |
+
"started_at": "2026-07-24T16:55:39+00:00",
|
| 35 |
+
"completed_at": "2026-07-24T17:19:13+00:00",
|
| 36 |
+
"primary_metric": {
|
| 37 |
+
"name": "bootstrap_score",
|
| 38 |
+
"value": 0.48025673082765913,
|
| 39 |
+
"params": {
|
| 40 |
+
"bootstrap_samples": 1000,
|
| 41 |
+
"include_subset_scores": true,
|
| 42 |
+
"use_length_adjusted": true
|
| 43 |
+
}
|
| 44 |
+
}
|
| 45 |
+
},
|
| 46 |
+
"professional__medgemma-4b__2026-07-25.eval": {
|
| 47 |
+
"eval_id": "kUtRW2ke3GFDg3BRrbYrvM",
|
| 48 |
+
"run_id": "FZy2RDH3NjcGcWBrsecS8K",
|
| 49 |
+
"task": "healthbench_professional",
|
| 50 |
+
"task_id": "GEViyNR2PM2B2oUV94DzoK",
|
| 51 |
+
"task_version": 0,
|
| 52 |
+
"version": 2,
|
| 53 |
+
"status": "success",
|
| 54 |
+
"invalidated": false,
|
| 55 |
+
"model": "vllm/google/medgemma-4b-it",
|
| 56 |
+
"started_at": "2026-07-25T00:26:30+00:00",
|
| 57 |
+
"completed_at": "2026-07-25T00:59:32+00:00",
|
| 58 |
+
"primary_metric": {
|
| 59 |
+
"name": "bootstrap_score",
|
| 60 |
+
"value": 0.09043895510310991,
|
| 61 |
+
"params": {
|
| 62 |
+
"bootstrap_samples": 1000,
|
| 63 |
+
"include_subset_scores": true,
|
| 64 |
+
"use_length_adjusted": true
|
| 65 |
+
}
|
| 66 |
+
}
|
| 67 |
+
},
|
| 68 |
+
"professional__medgemma-27b__2026-07-24.eval": {
|
| 69 |
+
"eval_id": "XpapBWN9tR5ER6grCKwmN5",
|
| 70 |
+
"run_id": "Nn8wVHWeziJyqnBd7H8Asn",
|
| 71 |
+
"task": "healthbench_professional",
|
| 72 |
+
"task_id": "6AYXiEDgGuzNtAcyWPDGrR",
|
| 73 |
+
"task_version": 0,
|
| 74 |
+
"version": 2,
|
| 75 |
+
"status": "success",
|
| 76 |
+
"invalidated": false,
|
| 77 |
+
"model": "vllm/google/medgemma-27b-text-it",
|
| 78 |
+
"started_at": "2026-07-24T22:44:04+00:00",
|
| 79 |
+
"completed_at": "2026-07-24T23:41:10+00:00",
|
| 80 |
+
"primary_metric": {
|
| 81 |
+
"name": "bootstrap_score",
|
| 82 |
+
"value": 0.20033284146307836,
|
| 83 |
+
"params": {
|
| 84 |
+
"bootstrap_samples": 1000,
|
| 85 |
+
"include_subset_scores": true,
|
| 86 |
+
"use_length_adjusted": true
|
| 87 |
+
}
|
| 88 |
+
}
|
| 89 |
+
},
|
| 90 |
+
"professional__gpt-5.5__2026-07-24.eval": {
|
| 91 |
+
"eval_id": "SWcyzXw8Y3VsVVQwUpSeAb",
|
| 92 |
+
"run_id": "Gkv6ojN7Udvah9488wSq2C",
|
| 93 |
+
"task": "healthbench_professional",
|
| 94 |
+
"task_id": "7PZFsBJYTZRCdXZkJPfki7",
|
| 95 |
+
"task_version": 0,
|
| 96 |
+
"version": 2,
|
| 97 |
+
"status": "success",
|
| 98 |
+
"invalidated": false,
|
| 99 |
+
"model": "openai/gpt-5.5",
|
| 100 |
+
"started_at": "2026-07-24T15:57:49+00:00",
|
| 101 |
+
"completed_at": "2026-07-24T16:36:58+00:00",
|
| 102 |
+
"primary_metric": {
|
| 103 |
+
"name": "bootstrap_score",
|
| 104 |
+
"value": 0.4780994619989315,
|
| 105 |
+
"params": {
|
| 106 |
+
"bootstrap_samples": 1000,
|
| 107 |
+
"include_subset_scores": true,
|
| 108 |
+
"use_length_adjusted": true
|
| 109 |
+
}
|
| 110 |
+
}
|
| 111 |
+
},
|
| 112 |
+
"professional__deepseek-v4-pro__2026-08-06.eval": {
|
| 113 |
+
"eval_id": "Q2gPU5obAucokpSCRD3ZeZ",
|
| 114 |
+
"run_id": "gELgAgJAp8ke7xTUNmq67c",
|
| 115 |
+
"task": "healthbench_professional",
|
| 116 |
+
"task_id": "bbeHCEMNSj6Q362BQHa7mS",
|
| 117 |
+
"task_version": 0,
|
| 118 |
+
"version": 2,
|
| 119 |
+
"status": "success",
|
| 120 |
+
"invalidated": false,
|
| 121 |
+
"model": "openrouter/deepseek/deepseek-v4-pro",
|
| 122 |
+
"started_at": "2026-08-06T02:35:30+00:00",
|
| 123 |
+
"completed_at": "2026-08-06T02:43:03+00:00",
|
| 124 |
+
"primary_metric": {
|
| 125 |
+
"name": "bootstrap_score",
|
| 126 |
+
"value": 0.3098940879765182,
|
| 127 |
+
"params": {
|
| 128 |
+
"bootstrap_samples": 1000,
|
| 129 |
+
"include_subset_scores": true,
|
| 130 |
+
"use_length_adjusted": true
|
| 131 |
+
}
|
| 132 |
+
}
|
| 133 |
+
},
|
| 134 |
+
"professional__deepseek-v4-pro__2026-07-25-cached.eval": {
|
| 135 |
+
"eval_id": "F2gkQfhgLkdQFG5WaWRBAH",
|
| 136 |
+
"run_id": "WFLtsEyBfk5c2veQfv8RVV",
|
| 137 |
+
"task": "healthbench_professional",
|
| 138 |
+
"task_id": "HaKmMaK4Q6JCLuX2RLCPnc",
|
| 139 |
+
"task_version": 0,
|
| 140 |
+
"version": 2,
|
| 141 |
+
"status": "success",
|
| 142 |
+
"invalidated": false,
|
| 143 |
+
"model": "openrouter/deepseek/deepseek-v4-pro",
|
| 144 |
+
"started_at": "2026-07-25T18:24:55+00:00",
|
| 145 |
+
"completed_at": "2026-07-25T18:26:20+00:00",
|
| 146 |
+
"primary_metric": {
|
| 147 |
+
"name": "bootstrap_score",
|
| 148 |
+
"value": 0.274154902152617,
|
| 149 |
+
"params": {
|
| 150 |
+
"bootstrap_samples": 1000,
|
| 151 |
+
"include_subset_scores": true,
|
| 152 |
+
"use_length_adjusted": true
|
| 153 |
+
}
|
| 154 |
+
}
|
| 155 |
+
}
|
| 156 |
+
}
|
viewer/logs/professional__deepseek-v4-pro__2026-07-25-cached.eval
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9e705a12533814bc5971cc7fbe810560f8754ea58a8457df97d40268b0a46138
|
| 3 |
+
size 10117848
|
viewer/logs/professional__deepseek-v4-pro__2026-08-06.eval
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:06bc2b3eb0ee87a65fea568efcbbc9158a4409dbc4d72ef7c80f5d54ee837ecc
|
| 3 |
+
size 10655038
|
viewer/logs/professional__gpt-5.5__2026-07-24.eval
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1f22cecb703d697bb7e5e2c2ac80ade6c56b78a455f15347d94bd0d01e259a05
|
| 3 |
+
size 85560073
|
viewer/logs/professional__medgemma-27b__2026-07-24.eval
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:10b3334c7b676c55580b9a416fe94516ea1f36e9ad4ea38ee11e0bcf5f06632d
|
| 3 |
+
size 71311754
|
viewer/logs/professional__medgemma-4b__2026-07-25.eval
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:70f96705c49a6a66c7a995d72775f836d7f574b492c8c403f26fd94a3f80127f
|
| 3 |
+
size 68290748
|
viewer/logs/professional__opus-4.7__2026-07-24.eval
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:fc11e8d1783829805ddabf45016e1675fb615bd0afa20574247497e7f3136c9e
|
| 3 |
+
size 67292081
|
viewer/logs/professional__plamo-3.0-prime__2026-07-24.eval
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:66a7e5dee75b6c8ed0ccccb6893a5497fece16b32f8622f40ab3e0c1d20dd7c1
|
| 3 |
+
size 69551325
|
viewer/robots.txt
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
User-agent: *
|
| 2 |
+
Disallow: /
|