Upload optional INT8 HolosTTS bundle (official onnx-int8/)
Browse files- holos-onnx-int8/README.md +96 -0
- holos-onnx-int8/SHA256SUMS +7 -0
- holos-onnx-int8/decoder.onnx +3 -0
- holos-onnx-int8/decoder_window.onnx +3 -0
- holos-onnx-int8/encoder.onnx +3 -0
- holos-onnx-int8/holos_onnx.json +223 -0
- holos-onnx-int8/prosody.onnx +3 -0
- holos-onnx-int8/source.onnx +3 -0
- holos-onnx-int8/voices.npz +3 -0
holos-onnx-int8/README.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# HolosTTS → Promin ONNX bundle (`holos-onnx-int8`, optional)
|
| 2 |
+
|
| 3 |
+
Опційний **int8**-варіант офіційного багатоетапного ONNX-бандла HolosTTS для
|
| 4 |
+
рушія [Promin TTS](https://github.com/Karnemorkon/promin-tts)
|
| 5 |
+
(`format_version: 2`). Менший розмір завантаження, ніж fp32, але нижча якість.
|
| 6 |
+
Для максимальної якості використовуйте `holos-onnx/`.
|
| 7 |
+
|
| 8 |
+
> **Голоси та згода дикторів.** `voices.npz` містить 27 пресетів із HolosTTS.
|
| 9 |
+
> Автор HolosTTS зазначає, що диктори не надавали згоди на синтез їхніх голосів
|
| 10 |
+
> і що домовлятися з ними потрібно окремо
|
| 11 |
+
> ([discussion #5](https://huggingface.co/patriotyk/HolosTTS/discussions/5)).
|
| 12 |
+
> MIT стосується коду та ваг моделі, але не є дозволом на використання голосу
|
| 13 |
+
> людини. Не використовуйте ці пресети для публікації або монетизації
|
| 14 |
+
> синтезованого мовлення без окремого дозволу диктора.
|
| 15 |
+
|
| 16 |
+
## Джерело
|
| 17 |
+
|
| 18 |
+
Це **офіційний int8-бандл** із релізу
|
| 19 |
+
[`patriotyk/HolosTTS`](https://huggingface.co/patriotyk/HolosTTS) від
|
| 20 |
+
2026-11-01 (`onnx-int8/`), зазеркалений без донавчання. Маніфест змінено лише
|
| 21 |
+
так само, як у fp32: `vocab` обрізано до 181 запису, щоб id не виходили за
|
| 22 |
+
межі 181-рядкових таблиць ембедінгів.
|
| 23 |
+
|
| 24 |
+
`holos-onnx-int8/holos_onnx.json` містить `quantization`:
|
| 25 |
+
`u8s8`, `Conv` + `MatMul`, `waveform_precision: late`, `reduce_range: false`.
|
| 26 |
+
|
| 27 |
+
## Вміст
|
| 28 |
+
|
| 29 |
+
| Файл | Розмір | Призначення |
|
| 30 |
+
|---|---|---|
|
| 31 |
+
| `holos_onnx.json` | 2.7 KB | маніфест: вокабуляр, частота, етапи, ліміти, квантування |
|
| 32 |
+
| `encoder.onnx` | 217 MB | `tokens`, `voice`, `speed` → `acoustic_tokens`, `prosodic_tokens`, `durations` |
|
| 33 |
+
| `prosody.onnx` | 23 MB | `prosodic_tokens`, `frame_to_token`, `voice` → `f0`, `energy` |
|
| 34 |
+
| `decoder.onnx` | 83 MB | exact-декодер на всю репліку |
|
| 35 |
+
| `source.onnx` | 2.5 MB | збудження для стрімінгу |
|
| 36 |
+
| `decoder_window.onnx` | 80 MB | віконний декодер |
|
| 37 |
+
| `voices.npz` | 26 KB | 27 пресетів голосів (той самий файл, що у fp32) |
|
| 38 |
+
|
| 39 |
+
24 кГц, 600 семплів на кадр (25 мс), `max_frames: 1000` (≈25 с на виклик),
|
| 40 |
+
стрімінг: чанк 40 кадрів (1 с), контекст 20 (0.5 с), вікно 80 (2 с).
|
| 41 |
+
|
| 42 |
+
Для клонування потрібен **спільний** `tts/voice_encoder.onnx` (fp32) з
|
| 43 |
+
основного репозиторію. Старі клони несумісні з новим енкодером — їх треба
|
| 44 |
+
зареєструвати заново.
|
| 45 |
+
|
| 46 |
+
## Використання
|
| 47 |
+
|
| 48 |
+
```bash
|
| 49 |
+
python -c "from huggingface_hub import snapshot_download; \
|
| 50 |
+
snapshot_download('Morkon/holos-native-models', \
|
| 51 |
+
allow_patterns=['holos-onnx-int8/*', 'tts/voice_encoder.onnx'], \
|
| 52 |
+
local_dir='models')"
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
Локально каталог має називатися `holos-onnx/` (Promin шукає саме його):
|
| 56 |
+
|
| 57 |
+
```bash
|
| 58 |
+
mv models/holos-onnx-int8 models/holos-onnx
|
| 59 |
+
PROMIN_MODELS_DIR=models PROMIN_MODEL_FORMAT=bundle
|
| 60 |
+
```
|
| 61 |
+
|
| 62 |
+
Для автозавантаження без ручного перейменування:
|
| 63 |
+
|
| 64 |
+
```bash
|
| 65 |
+
PROMIN_HF_BUNDLE_PREFIX=holos-onnx-int8 PROMIN_MODEL_FORMAT=bundle
|
| 66 |
+
```
|
| 67 |
+
|
| 68 |
+
## Якість
|
| 69 |
+
|
| 70 |
+
Порівняно з fp32 на тих самих фразах:
|
| 71 |
+
|
| 72 |
+
- log-spectrogram correlation ≈0.88–0.95;
|
| 73 |
+
- waveform correlation низька через різницю фаз, але спектр і тривалість
|
| 74 |
+
близькі;
|
| 75 |
+
- int8 streaming vs int8 exact: log-spectrogram correlation ≈0.71 (у fp32
|
| 76 |
+
exact і streaming біт-у-біт однакові).
|
| 77 |
+
|
| 78 |
+
Тому int8 — компроміс для малого диска/трафіку, не для еталонної якості.
|
| 79 |
+
|
| 80 |
+
## Перевірка
|
| 81 |
+
|
| 82 |
+
- ONNX Runtime 1.31.0, IR 10 / opset 20 — графи завантажуються.
|
| 83 |
+
- Короткі фрази, абзаци, `speed=0.5`, апострофи й стрімінг перевірено через
|
| 84 |
+
`speech-server`.
|
| 85 |
+
- 1000-кадровий ліміт той самий, що у fp32; Promin ріже довгі частини.
|
| 86 |
+
|
| 87 |
+
Контрольні суми — у `SHA256SUMS`.
|
| 88 |
+
|
| 89 |
+
## Ліцензія
|
| 90 |
+
|
| 91 |
+
- Ваги й архітектура: [patriotyk/HolosTTS](https://github.com/patriotyk/HolosTTS)
|
| 92 |
+
(MIT, © автор HolosTTS). Це офіційний int8-експорт, без донавчання.
|
| 93 |
+
- **Голосові пресети (`voices.npz`) не покриваються MIT як дозволом на
|
| 94 |
+
використання голосу.** Згода дикторів не підтверджена; див. попередження
|
| 95 |
+
вище та [discussion #5](https://huggingface.co/patriotyk/HolosTTS/discussions/5).
|
| 96 |
+
- Репозиторій загалом має окрему ліцензію через Gemma-вербалізатор.
|
holos-onnx-int8/SHA256SUMS
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
1dbb302b305c57c40a77d08b512214fa1714561aba9dda188b45da2e79d1b1a9 encoder.onnx
|
| 2 |
+
2d2b33b32bf5584c837af24c4c8b4cf4f7a0370256ea72908a4cc3216d2f650c prosody.onnx
|
| 3 |
+
e112001b5d1bb3849545e8df814cfdeb1060eabeb3e60e197e7d1c3cbbd925c3 decoder.onnx
|
| 4 |
+
e31ddf2efa9f340db2941076365a8166e84512dcb6ae1e8e92c62c974ae75e26 decoder_window.onnx
|
| 5 |
+
ced5242be197382289663f8a0b2760c92593b7c8a4dfedb976e43b0420aeac6b source.onnx
|
| 6 |
+
5124ef2311e03c89228cc62ffdf8cefd88f8c07f0d8161063a03538af8f1b436 voices.npz
|
| 7 |
+
c3f8bc1e9abbea737cca3e0151c8236b99033c77c16ede664722016e9199795d holos_onnx.json
|
holos-onnx-int8/decoder.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e112001b5d1bb3849545e8df814cfdeb1060eabeb3e60e197e7d1c3cbbd925c3
|
| 3 |
+
size 82692164
|
holos-onnx-int8/decoder_window.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e31ddf2efa9f340db2941076365a8166e84512dcb6ae1e8e92c62c974ae75e26
|
| 3 |
+
size 80254452
|
holos-onnx-int8/encoder.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1dbb302b305c57c40a77d08b512214fa1714561aba9dda188b45da2e79d1b1a9
|
| 3 |
+
size 217064975
|
holos-onnx-int8/holos_onnx.json
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"format": "holos-onnx",
|
| 3 |
+
"format_version": 2,
|
| 4 |
+
"encoder": "encoder.onnx",
|
| 5 |
+
"prosody": "prosody.onnx",
|
| 6 |
+
"decoder": "decoder.onnx",
|
| 7 |
+
"voices": "voices.npz",
|
| 8 |
+
"vocab": [
|
| 9 |
+
"$",
|
| 10 |
+
"-",
|
| 11 |
+
"´",
|
| 12 |
+
";",
|
| 13 |
+
":",
|
| 14 |
+
",",
|
| 15 |
+
".",
|
| 16 |
+
"!",
|
| 17 |
+
"?",
|
| 18 |
+
"¡",
|
| 19 |
+
"¿",
|
| 20 |
+
"—",
|
| 21 |
+
"…",
|
| 22 |
+
"\"",
|
| 23 |
+
"«",
|
| 24 |
+
"»",
|
| 25 |
+
"“",
|
| 26 |
+
"”",
|
| 27 |
+
" ",
|
| 28 |
+
"(",
|
| 29 |
+
")",
|
| 30 |
+
"†",
|
| 31 |
+
"/",
|
| 32 |
+
"=",
|
| 33 |
+
"A",
|
| 34 |
+
"B",
|
| 35 |
+
"C",
|
| 36 |
+
"D",
|
| 37 |
+
"E",
|
| 38 |
+
"F",
|
| 39 |
+
"G",
|
| 40 |
+
"H",
|
| 41 |
+
"I",
|
| 42 |
+
"J",
|
| 43 |
+
"K",
|
| 44 |
+
"L",
|
| 45 |
+
"M",
|
| 46 |
+
"N",
|
| 47 |
+
"O",
|
| 48 |
+
"P",
|
| 49 |
+
"Q",
|
| 50 |
+
"R",
|
| 51 |
+
"S",
|
| 52 |
+
"T",
|
| 53 |
+
"U",
|
| 54 |
+
"V",
|
| 55 |
+
"W",
|
| 56 |
+
"X",
|
| 57 |
+
"Y",
|
| 58 |
+
"Z",
|
| 59 |
+
"a",
|
| 60 |
+
"b",
|
| 61 |
+
"c",
|
| 62 |
+
"d",
|
| 63 |
+
"e",
|
| 64 |
+
"f",
|
| 65 |
+
"g",
|
| 66 |
+
"h",
|
| 67 |
+
"i",
|
| 68 |
+
"j",
|
| 69 |
+
"k",
|
| 70 |
+
"l",
|
| 71 |
+
"m",
|
| 72 |
+
"n",
|
| 73 |
+
"o",
|
| 74 |
+
"p",
|
| 75 |
+
"q",
|
| 76 |
+
"r",
|
| 77 |
+
"s",
|
| 78 |
+
"t",
|
| 79 |
+
"u",
|
| 80 |
+
"v",
|
| 81 |
+
"w",
|
| 82 |
+
"x",
|
| 83 |
+
"y",
|
| 84 |
+
"z",
|
| 85 |
+
"é",
|
| 86 |
+
"ý",
|
| 87 |
+
"í",
|
| 88 |
+
"ó",
|
| 89 |
+
"'",
|
| 90 |
+
"̯",
|
| 91 |
+
"'",
|
| 92 |
+
"͡",
|
| 93 |
+
"ɑ",
|
| 94 |
+
"ɐ",
|
| 95 |
+
"ɒ",
|
| 96 |
+
"æ",
|
| 97 |
+
"ɓ",
|
| 98 |
+
"ʙ",
|
| 99 |
+
"β",
|
| 100 |
+
"ɔ",
|
| 101 |
+
"ɕ",
|
| 102 |
+
"ç",
|
| 103 |
+
"ɗ",
|
| 104 |
+
"ɖ",
|
| 105 |
+
"ð",
|
| 106 |
+
"ʤ",
|
| 107 |
+
"ə",
|
| 108 |
+
"ɘ",
|
| 109 |
+
"ɚ",
|
| 110 |
+
"ɛ",
|
| 111 |
+
"ɜ",
|
| 112 |
+
"ɝ",
|
| 113 |
+
"ɞ",
|
| 114 |
+
"ɟ",
|
| 115 |
+
"ʄ",
|
| 116 |
+
"ɡ",
|
| 117 |
+
"ɠ",
|
| 118 |
+
"ɢ",
|
| 119 |
+
"ʛ",
|
| 120 |
+
"ɦ",
|
| 121 |
+
"ɧ",
|
| 122 |
+
"ħ",
|
| 123 |
+
"ɥ",
|
| 124 |
+
"ʜ",
|
| 125 |
+
"ɨ",
|
| 126 |
+
"ɪ",
|
| 127 |
+
"ʝ",
|
| 128 |
+
"ɭ",
|
| 129 |
+
"ɬ",
|
| 130 |
+
"ɫ",
|
| 131 |
+
"ɮ",
|
| 132 |
+
"ʟ",
|
| 133 |
+
"ɱ",
|
| 134 |
+
"ɯ",
|
| 135 |
+
"ɰ",
|
| 136 |
+
"ŋ",
|
| 137 |
+
"ɳ",
|
| 138 |
+
"ɲ",
|
| 139 |
+
"ɴ",
|
| 140 |
+
"ø",
|
| 141 |
+
"ɵ",
|
| 142 |
+
"ɸ",
|
| 143 |
+
"θ",
|
| 144 |
+
"œ",
|
| 145 |
+
"ɶ",
|
| 146 |
+
"ʘ",
|
| 147 |
+
"ɹ",
|
| 148 |
+
"ɺ",
|
| 149 |
+
"ɾ",
|
| 150 |
+
"ɻ",
|
| 151 |
+
"ʀ",
|
| 152 |
+
"ʁ",
|
| 153 |
+
"ɽ",
|
| 154 |
+
"ʂ",
|
| 155 |
+
"ʃ",
|
| 156 |
+
"ʈ",
|
| 157 |
+
"ʧ",
|
| 158 |
+
"ʉ",
|
| 159 |
+
"ʊ",
|
| 160 |
+
"ʋ",
|
| 161 |
+
"ⱱ",
|
| 162 |
+
"ʌ",
|
| 163 |
+
"ɣ",
|
| 164 |
+
"ɤ",
|
| 165 |
+
"ʍ",
|
| 166 |
+
"χ",
|
| 167 |
+
"ʎ",
|
| 168 |
+
"ʏ",
|
| 169 |
+
"ʑ",
|
| 170 |
+
"ʐ",
|
| 171 |
+
"ʒ",
|
| 172 |
+
"ʔ",
|
| 173 |
+
"ʡ",
|
| 174 |
+
"ʕ",
|
| 175 |
+
"ʢ",
|
| 176 |
+
"ǀ",
|
| 177 |
+
"ǁ",
|
| 178 |
+
"ǂ",
|
| 179 |
+
"ǃ",
|
| 180 |
+
"ˈ",
|
| 181 |
+
"ˌ",
|
| 182 |
+
"ː",
|
| 183 |
+
"ˑ",
|
| 184 |
+
"ʼ",
|
| 185 |
+
"ʴ",
|
| 186 |
+
"ʰ",
|
| 187 |
+
"ʱ",
|
| 188 |
+
"ʲ",
|
| 189 |
+
"'"
|
| 190 |
+
],
|
| 191 |
+
"sample_rate": 24000,
|
| 192 |
+
"samples_per_frame": 600,
|
| 193 |
+
"max_frames": 1000,
|
| 194 |
+
"decoder_mode": "exact",
|
| 195 |
+
"alignment_format": "gather",
|
| 196 |
+
"attention_format": "tensorrt_fused_bmm",
|
| 197 |
+
"projection_format": "fused_qkv_swiglu",
|
| 198 |
+
"shape_inference_format": "onnx_standard",
|
| 199 |
+
"tensorrt_profile": {
|
| 200 |
+
"min_text_length": 2,
|
| 201 |
+
"opt_text_length": 128,
|
| 202 |
+
"max_text_length": 512,
|
| 203 |
+
"min_frames": 2,
|
| 204 |
+
"opt_frames": 256,
|
| 205 |
+
"max_frames": 1000
|
| 206 |
+
},
|
| 207 |
+
"streaming": {
|
| 208 |
+
"decoder": "decoder_window.onnx",
|
| 209 |
+
"source": "source.onnx",
|
| 210 |
+
"chunk_frames": 40,
|
| 211 |
+
"context_frames": 20,
|
| 212 |
+
"window_frames": 80
|
| 213 |
+
},
|
| 214 |
+
"quantization": {
|
| 215 |
+
"type": "u8s8",
|
| 216 |
+
"op_types": [
|
| 217 |
+
"Conv",
|
| 218 |
+
"MatMul"
|
| 219 |
+
],
|
| 220 |
+
"waveform_precision": "late",
|
| 221 |
+
"reduce_range": false
|
| 222 |
+
}
|
| 223 |
+
}
|
holos-onnx-int8/prosody.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2d2b33b32bf5584c837af24c4c8b4cf4f7a0370256ea72908a4cc3216d2f650c
|
| 3 |
+
size 23338460
|
holos-onnx-int8/source.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ced5242be197382289663f8a0b2760c92593b7c8a4dfedb976e43b0420aeac6b
|
| 3 |
+
size 2467810
|
holos-onnx-int8/voices.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5124ef2311e03c89228cc62ffdf8cefd88f8c07f0d8161063a03538af8f1b436
|
| 3 |
+
size 26289
|