diff --git a/SESSION_LOG_2025_12_27.md b/SESSION_LOG_2025_12_27.md
index 77a502b15..7744886ed 100644
--- a/SESSION_LOG_2025_12_27.md
+++ b/SESSION_LOG_2025_12_27.md
@@ -1,45 +1,52 @@
# Dnevnik Seje - 27. December 2025 (Zgodaj Zjutraj)
## 📌 Glavni Dosežki
-Danes smo uspešno integrirali AI glasovni sistem (VibeVoice) v igro "Dolina Smrti" in pripravili teren za lasten level-design.
+Danes smo uspešno integrirali AI glasovni sistem (VibeVoice) v igro "Dolina Smrti" in vzpostavili delujoč sistem za level-design s Tiled urejevalnikom.
-### 1. VibeVoice (AI Glasovi)
+### 1. VibeVoice (AI Glasovi) 🗣️
* **Integriran TTS Sistem:** Uspešno smo zagnali Microsoft VibeVoice na tvojem Macu (Apple Silicon/MPS).
* **Batch Generator:** Ustvarili smo skripto `generate_game_dialogue.py`, ki:
* Prebere dialoge iz JSON datoteke (`prologue.json`).
* Generira `.wav` datoteke za vsak stavek.
- * **NOVO:** Ima "Resume" funkcijo (preskoči že narejene) in interaktivni način ("Povozi? y/N").
+ * **Pametno Generiranje:** Ima "Resume" funkcijo in interaktivni vprašalnik ("Regenerate? y/N"), da ne povoziš pomotoma že dobrih posnetkov.
* **Prologue Integracija:** Igra zdaj bere dialoge iz JSON-a in predvaja generirane zvoke (Narrator, Ana, Kai) sinhronizirano s tekstom.
-### 2. Tiled Map Editor
-* **Reset Mape:** Resetirali smo `NovaFarma.tmx` na čisto 8x8 mapo (32x32 tiles).
-* **Tiled Test Mode:** Konfigurirali smo igro, da se zažene direktno v `TiledTestScene`, da lahko hitro vidiš svoje spremembe.
-* **Blue Screen Fix:** Rešili smo težavo z modrim ekranom z ustvarjanjem (placeholder) `NovaFarma.json` datoteke, ki jo Phaser potrebuje za zagon.
+### 2. Tiled Map Editor 🗺️
+* **Reset Mape:** Pripravili smo čisto osnovo: `NovaFarma.tmx` (8x8, 32x32 tiles) z vsemi potrebnimi tileseti.
+* **Popravek "Blue Screen" & Crash:**
+ * Ugotovili smo, da Phaser potrebuje **JSON** format (ne TMX).
+ * **Rešitev:** Tiled export mora imeti **"Embed Tilesets"** vklopljeno, da igra ne javlja napak pri nalaganju.
+ * Ustvaril sem delujočo `NovaFarma.json`, ki prepreči rušenje igre.
+* **Game Flow:** Po testiranju smo vrnili igro v normalno stanje (Loading -> Main Menu -> Game), tako da vse deluje kot mora.
-### 3. Git & Organizacija
-* Vsi koraki so shranjeni v verzioniranje (git commit).
-* Projekt je čist in pripravljen za naslednjo fazo: **Risanje tvoje kmetije!**
+### 3. Git & Organizacija 💾
+* Vse spremembe (kode, skripte, zvoki, mape) so varno shranjene v git repozitorij.
+* Projekt je čist in pripravljen na kreativno delo.
## 🛠️ Navodila za Delo
-### Kako Generirati Zvoke?
+### A) Kako Generirati Zvoke?
1. Uredi tekst v `assets/dialogue/prologue.json`.
-2. Poženi skripto:
+2. Poženi generator:
```bash
cd ai_voice_gen/VibeVoice_Apple/VibeVoice
python generate_game_dialogue.py --json_file ../../../assets/dialogue/prologue.json --output_dir ../../../assets/audio/voiceover/prologue
```
-3. Če datoteka že obstaja, te vpraša: "Regenerate? (y/N)".
+3. Sledi navodilom na ekranu (y/N).
-### Kako Urejati Mapo?
+### B) Kako Urejati Mapo?
1. Odpri `assets/maps/NovaFarma.tmx` v **Tiledu**.
2. Riši s tileseti (Ground, Obstacles, Buildings...).
-3. **POMEMBNO:** Vedno naredi **File > Export As... > JSON** (`NovaFarma.json`), da se spremembe vidijo v igri!
+3. **KLJUČNO:** Za shranjevanje v igro uporabi **File > Export As...**
+ * Izberi format: **JSON map files (*.json)**.
+ * Ime: **`NovaFarma.json`**.
+ * Povozi obstoječo datoteko.
+ * Če vpraša za nastavitve: "Embed Tilesets" = **YES**.
### Kaj Naprej?
-* Nariši svojo sanjsko kmetijo v Tiledu.
-* Dodaj dialoge za druge scene (npr. srečanje z zombijem).
-* Testiraj igro!
+* Nariši svojo prvo pravo mapo v Tiledu.
+* Dodaj nove dialoge (npr. srečanje z zombijem) v JSON.
+* Uživaj v igranju!
---
-*Zapisal: Antigravity AI, 27.12.2025 ob 02:12*
+*Zapisal: Antigravity AI, 27.12.2025 ob 02:22*
diff --git a/assets/maps/NovaFarma.json b/assets/maps/NovaFarma.json
index 5d1340693..ae331eb74 100644
--- a/assets/maps/NovaFarma.json
+++ b/assets/maps/NovaFarma.json
@@ -1,109 +1,474 @@
-{
- "compressionlevel": -1,
- "height": 8,
- "infinite": false,
- "layers": [
+{ "compressionlevel":-1,
+ "height":128,
+ "infinite":false,
+ "layers":[
{
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- "height": 8,
- "id": 1,
- "name": "Ground",
- "opacity": 1,
- "type": "tilelayer",
- "visible": true,
- "width": 8,
- "x": 0,
- "y": 0
- }
- ],
- "nextlayerid": 2,
- "nextobjectid": 1,
- "orientation": "orthogonal",
- "renderorder": "right-down",
- "tiledversion": "1.11.2",
- "tileheight": 32,
- "tilesets": [
+ "data":[8, 30, 14, 15, 31, 28, 31, 32, 16, 23, 7, 8, 30, 4, 4, 23, 12, 16, 31, 28, 24, 20, 31, 23, 14, 28, 13, 4, 28, 12, 23, 24, 15, 14, 8, 5, 20, 22, 22, 30, 23, 30, 12, 24, 28, 20, 15, 14, 30, 21, 21, 4, 20, 4, 29, 15, 29, 4, 15, 21, 6, 6, 20, 13, 15, 32, 30, 12, 20, 24, 22, 20, 23, 16, 31, 31, 31, 4, 4, 23, 28, 7, 32, 13, 4, 20, 15, 16, 23, 22, 12, 20, 32, 12, 16, 5, 8, 16, 22, 22, 32, 13, 8, 32, 6, 30, 15, 21, 4, 15, 5, 5, 32, 15, 29, 31, 30, 22, 32, 22, 20, 23, 29, 6, 21, 7, 13, 8,
+ 31, 4, 15, 23, 8, 6, 31, 20, 29, 30, 28, 6, 29, 13, 20, 13, 16, 8, 29, 22, 16, 16, 8, 32, 22, 14, 16, 8, 6, 21, 13, 16, 29, 32, 22, 13, 23, 12, 12, 6, 24, 8, 32, 28, 31, 20, 6, 13, 12, 6, 29, 14, 8, 22, 16, 21, 23, 14, 6, 5, 24, 28, 23, 20, 20, 15, 14, 22, 32, 22, 7, 30, 32, 23, 29, 12, 29, 13, 32, 30, 23, 24, 6, 7, 5, 13, 30, 5, 8, 28, 5, 29, 20, 7, 8, 12, 7, 4, 16, 15, 12, 8, 14, 4, 20, 20, 22, 22, 15, 21, 12, 29, 22, 31, 16, 22, 13, 28, 16, 7, 6, 15, 7, 16, 32, 31, 14, 28,
+ 7, 14, 28, 16, 23, 20, 23, 15, 31, 16, 4, 23, 28, 15, 5, 16, 21, 16, 29, 23, 22, 7, 30, 32, 4, 23, 6, 12, 15, 29, 28, 28, 14, 21, 14, 4, 30, 24, 6, 28, 29, 29, 14, 20, 15, 16, 6, 23, 12, 24, 31, 8, 31, 12, 8, 13, 14, 24, 31, 12, 5, 15, 15, 28, 30, 22, 7, 13, 8, 6, 22, 29, 7, 23, 21, 23, 6, 7, 21, 16, 31, 14, 14, 12, 8, 12, 20, 6, 24, 30, 8, 7, 21, 13, 6, 13, 6, 30, 31, 22, 23, 21, 15, 16, 21, 6, 29, 12, 21, 4, 8, 7, 23, 13, 21, 21, 13, 20, 28, 14, 6, 30, 20, 32, 32, 4, 32, 31,
+ 21, 30, 28, 22, 30, 30, 8, 24, 16, 5, 21, 21, 30, 14, 6, 24, 30, 7, 12, 4, 23, 4, 29, 22, 5, 24, 31, 31, 7, 20, 4, 23, 23, 13, 16, 8, 12, 12, 14, 6, 5, 16, 12, 8, 14, 23, 24, 6, 30, 5, 14, 5, 6, 20, 14, 20, 12, 16, 14, 23, 12, 20, 15, 15, 12, 4, 24, 5, 4, 20, 24, 32, 32, 7, 23, 30, 13, 28, 28, 28, 22, 13, 22, 15, 6, 30, 5, 20, 8, 23, 12, 16, 23, 30, 14, 16, 16, 30, 28, 31, 22, 15, 22, 14, 14, 5, 15, 7, 20, 30, 32, 7, 29, 7, 6, 22, 15, 28, 21, 12, 6, 7, 4, 12, 14, 30, 28, 23,
+ 5, 15, 23, 4, 23, 20, 8, 15, 7, 6, 22, 15, 20, 30, 28, 24, 32, 12, 12, 30, 29, 14, 29, 6, 30, 21, 20, 32, 6, 23, 7, 28, 6, 28, 5, 20, 13, 22, 29, 32, 15, 4, 14, 12, 12, 22, 6, 29, 5, 16, 32, 21, 24, 32, 22, 20, 31, 28, 30, 16, 29, 29, 24, 22, 6, 6, 29, 32, 15, 29, 32, 6, 22, 30, 28, 29, 16, 20, 30, 14, 7, 5, 21, 29, 16, 7, 14, 16, 15, 13, 29, 16, 14, 29, 13, 24, 31, 22, 4, 32, 13, 23, 8, 12, 5, 15, 20, 8, 32, 16, 28, 32, 5, 20, 21, 23, 21, 4, 20, 23, 24, 4, 15, 16, 7, 24, 6, 22,
+ 24, 24, 31, 6, 22, 12, 28, 30, 8, 29, 8, 21, 22, 12, 12, 24, 29, 30, 15, 13, 31, 30, 29, 13, 5, 20, 32, 5, 29, 28, 30, 24, 23, 21, 16, 24, 8, 14, 14, 30, 21, 20, 8, 5, 6, 6, 24, 31, 16, 32, 30, 28, 31, 7, 7, 14, 13, 7, 7, 13, 30, 7, 7, 5, 21, 5, 16, 7, 20, 31, 12, 5, 21, 29, 7, 28, 22, 21, 6, 24, 8, 12, 29, 15, 29, 6, 4, 5, 15, 7, 24, 12, 6, 22, 28, 23, 6, 13, 30, 32, 32, 30, 14, 30, 8, 8, 6, 5, 13, 16, 20, 30, 29, 31, 20, 29, 16, 8, 28, 29, 14, 28, 31, 29, 24, 5, 13, 8,
+ 5, 23, 8, 7, 5, 28, 22, 15, 30, 32, 8, 23, 22, 23, 23, 32, 23, 28, 12, 8, 5, 7, 12, 14, 6, 30, 13, 16, 5, 32, 31, 24, 14, 14, 7, 12, 4, 7, 14, 23, 12, 13, 29, 13, 29, 5, 22, 29, 31, 31, 12, 28, 15, 4, 21, 15, 22, 32, 8, 12, 30, 15, 4, 12, 22, 23, 14, 12, 12, 14, 31, 22, 22, 4, 20, 5, 16, 20, 6, 4, 28, 7, 20, 29, 20, 21, 16, 4, 22, 4, 29, 7, 14, 6, 32, 6, 24, 28, 12, 23, 8, 30, 12, 6, 16, 15, 15, 21, 6, 6, 5, 5, 23, 32, 4, 4, 32, 15, 31, 6, 31, 32, 4, 6, 13, 31, 23, 24,
+ 4, 15, 8, 6, 23, 20, 24, 6, 13, 8, 14, 24, 30, 31, 24, 22, 6, 28, 23, 32, 12, 5, 20, 14, 15, 15, 12, 29, 6, 4, 24, 30, 13, 6, 23, 24, 20, 22, 31, 24, 30, 8, 7, 8, 15, 14, 16, 21, 23, 12, 23, 15, 16, 4, 4, 21, 15, 30, 4, 32, 7, 23, 7, 30, 23, 16, 5, 31, 24, 4, 28, 15, 8, 21, 15, 29, 29, 16, 15, 15, 13, 15, 13, 15, 12, 4, 24, 7, 7, 13, 31, 21, 14, 31, 30, 12, 16, 20, 24, 16, 12, 8, 24, 12, 22, 14, 14, 22, 29, 21, 15, 24, 5, 20, 30, 24, 12, 14, 5, 16, 16, 6, 15, 14, 5, 32, 31, 31,
+ 29, 6, 29, 29, 31, 21, 6, 5, 6, 4, 15, 8, 4, 21, 22, 5, 23, 5, 30, 22, 23, 14, 31, 32, 4, 12, 15, 21, 21, 4, 4, 32, 22, 31, 14, 32, 13, 16, 12, 30, 20, 4, 5, 16, 16, 29, 28, 6, 31, 32, 22, 4, 30, 5, 21, 29, 16, 23, 8, 6, 30, 6, 16, 30, 20, 16, 28, 4, 31, 4, 30, 28, 28, 12, 14, 22, 15, 15, 5, 12, 13, 31, 21, 16, 20, 30, 21, 24, 15, 29, 13, 24, 28, 13, 16, 24, 16, 28, 12, 13, 13, 8, 16, 20, 4, 6, 15, 30, 6, 21, 31, 24, 16, 32, 13, 7, 6, 31, 5, 20, 29, 30, 12, 7, 16, 5, 24, 6,
+ 14, 6, 23, 13, 4, 15, 7, 5, 8, 13, 5, 8, 4, 8, 5, 15, 24, 32, 5, 21, 7, 24, 16, 28, 13, 21, 16, 24, 16, 13, 14, 22, 5, 12, 16, 5, 16, 12, 23, 29, 5, 23, 20, 23, 7, 23, 13, 22, 7, 32, 16, 30, 29, 30, 31, 4, 8, 6, 16, 14, 20, 22, 22, 4, 5, 30, 4, 23, 4, 15, 4, 14, 7, 7, 12, 14, 6, 8, 12, 14, 24, 14, 23, 32, 5, 6, 31, 20, 29, 24, 22, 20, 23, 24, 7, 14, 13, 13, 8, 31, 15, 6, 20, 13, 30, 22, 30, 31, 31, 13, 30, 24, 29, 7, 6, 22, 14, 12, 28, 31, 22, 30, 31, 31, 13, 7, 30, 7,
+ 5, 8, 16, 31, 6, 8, 24, 14, 28, 31, 24, 28, 21, 16, 15, 30, 12, 12, 4, 13, 4, 13, 23, 16, 13, 7, 28, 30, 4, 4, 28, 22, 20, 8, 6, 23, 21, 32, 24, 31, 8, 14, 4, 23, 4, 30, 32, 21, 8, 14, 30, 4, 20, 21, 12, 8, 30, 32, 4, 21, 14, 22, 21, 13, 8, 12, 30, 14, 31, 21, 32, 7, 30, 29, 29, 5, 24, 21, 20, 30, 15, 15, 16, 28, 8, 14, 21, 21, 24, 31, 15, 12, 23, 22, 15, 14, 29, 7, 24, 30, 14, 21, 15, 30, 13, 21, 4, 5, 32, 32, 16, 12, 23, 4, 13, 20, 14, 15, 30, 7, 15, 7, 32, 20, 23, 8, 15, 15,
+ 32, 30, 22, 21, 20, 7, 6, 4, 30, 28, 32, 12, 15, 15, 29, 13, 23, 21, 21, 29, 21, 16, 6, 14, 15, 23, 7, 8, 30, 16, 29, 14, 13, 20, 5, 7, 5, 31, 20, 16, 31, 31, 22, 28, 32, 6, 14, 5, 4, 5, 7, 4, 23, 14, 5, 32, 30, 6, 30, 14, 14, 32, 24, 31, 15, 31, 20, 4, 21, 23, 21, 15, 7, 22, 24, 15, 23, 4, 16, 6, 30, 29, 30, 21, 29, 6, 14, 32, 32, 7, 22, 4, 15, 30, 12, 20, 28, 14, 32, 16, 7, 16, 15, 14, 15, 31, 12, 21, 15, 24, 4, 29, 22, 16, 13, 7, 8, 13, 23, 30, 16, 14, 24, 8, 14, 8, 8, 13,
+ 6, 7, 24, 4, 30, 30, 32, 12, 7, 16, 20, 6, 23, 14, 13, 20, 15, 32, 30, 31, 23, 30, 8, 8, 31, 12, 24, 20, 29, 20, 15, 14, 13, 30, 7, 13, 5, 12, 6, 31, 13, 14, 16, 22, 21, 15, 21, 30, 32, 22, 30, 29, 14, 5, 8, 6, 21, 12, 7, 4, 22, 14, 13, 15, 23, 16, 4, 24, 32, 4, 5, 28, 29, 12, 28, 32, 21, 22, 4, 23, 13, 32, 32, 28, 15, 7, 16, 28, 8, 12, 29, 28, 5, 15, 20, 20, 16, 21, 13, 31, 16, 16, 28, 24, 15, 23, 24, 30, 8, 15, 16, 15, 29, 21, 31, 29, 7, 22, 4, 20, 23, 12, 23, 15, 8, 13, 5, 23,
+ 8, 22, 30, 16, 14, 14, 21, 29, 7, 7, 22, 31, 16, 5, 14, 8, 16, 15, 8, 20, 23, 20, 16, 16, 31, 23, 13, 13, 13, 21, 15, 5, 20, 22, 24, 21, 15, 12, 30, 8, 12, 20, 5, 32, 6, 28, 6, 24, 20, 4, 4, 15, 30, 29, 15, 31, 23, 32, 22, 5, 12, 23, 5, 8, 12, 12, 20, 23, 8, 32, 14, 7, 13, 7, 28, 29, 32, 13, 28, 6, 5, 30, 8, 21, 5, 8, 23, 8, 20, 24, 16, 14, 30, 21, 12, 30, 5, 4, 23, 21, 32, 22, 4, 13, 13, 21, 16, 15, 13, 21, 29, 15, 6, 12, 20, 5, 24, 6, 7, 31, 5, 24, 6, 6, 24, 15, 15, 23,
+ 4, 7, 22, 14, 21, 30, 7, 15, 21, 23, 32, 14, 22, 22, 21, 24, 24, 24, 24, 21, 5, 7, 13, 30, 28, 8, 5, 29, 20, 28, 13, 7, 30, 16, 7, 23, 29, 30, 22, 8, 23, 13, 14, 16, 29, 20, 15, 14, 13, 12, 13, 20, 22, 29, 12, 7, 29, 4, 13, 14, 24, 7, 15, 4, 6, 24, 23, 31, 28, 4, 20, 13, 22, 13, 21, 12, 13, 31, 29, 4, 6, 15, 30, 29, 31, 14, 13, 32, 6, 16, 21, 14, 30, 22, 5, 6, 23, 22, 20, 29, 8, 15, 7, 16, 12, 24, 5, 24, 8, 6, 13, 20, 20, 29, 24, 20, 24, 29, 7, 24, 7, 20, 6, 8, 12, 15, 5, 23,
+ 31, 7, 14, 7, 31, 13, 21, 16, 20, 28, 4, 8, 29, 16, 22, 21, 29, 32, 30, 31, 14, 30, 31, 5, 6, 20, 4, 6, 16, 15, 30, 32, 30, 31, 31, 20, 4, 28, 6, 16, 5, 12, 16, 21, 4, 28, 15, 23, 15, 12, 12, 24, 13, 28, 23, 8, 13, 22, 24, 30, 32, 31, 14, 24, 32, 22, 32, 23, 13, 23, 23, 4, 15, 13, 6, 21, 13, 32, 7, 13, 4, 13, 7, 5, 21, 5, 23, 28, 7, 13, 15, 24, 31, 20, 21, 4, 7, 31, 4, 30, 32, 29, 13, 12, 12, 21, 4, 13, 12, 7, 12, 23, 24, 32, 8, 31, 24, 12, 7, 31, 20, 6, 29, 4, 14, 16, 32, 12,
+ 31, 30, 28, 30, 6, 7, 14, 23, 16, 13, 31, 32, 23, 28, 7, 23, 15, 24, 29, 16, 5, 29, 13, 14, 13, 22, 5, 28, 30, 16, 20, 31, 32, 16, 28, 32, 21, 30, 28, 14, 20, 4, 30, 13, 28, 13, 8, 7, 28, 30, 7, 14, 15, 28, 7, 12, 7, 4, 32, 29, 15, 8, 15, 21, 32, 29, 6, 8, 6, 6, 6, 7, 15, 4, 22, 31, 21, 5, 29, 22, 12, 28, 22, 29, 21, 30, 16, 13, 6, 24, 22, 6, 7, 24, 32, 12, 6, 13, 4, 4, 6, 13, 16, 20, 16, 30, 24, 32, 8, 29, 22, 7, 13, 28, 23, 13, 13, 30, 29, 14, 14, 23, 4, 14, 14, 21, 30, 20,
+ 15, 32, 7, 30, 14, 12, 29, 31, 28, 13, 4, 16, 20, 22, 23, 23, 12, 30, 21, 21, 15, 13, 23, 29, 6, 14, 14, 6, 15, 12, 23, 14, 16, 8, 8, 21, 20, 13, 24, 8, 16, 4, 16, 23, 30, 15, 8, 32, 30, 14, 8, 16, 30, 16, 15, 20, 4, 6, 8, 6, 23, 22, 15, 8, 15, 24, 21, 31, 24, 20, 4, 31, 4, 22, 23, 21, 24, 16, 8, 4, 29, 4, 24, 22, 20, 21, 8, 24, 8, 31, 4, 7, 31, 32, 31, 7, 24, 21, 21, 5, 16, 7, 13, 28, 12, 12, 29, 30, 4, 20, 12, 21, 13, 6, 13, 30, 12, 21, 31, 28, 5, 12, 23, 22, 28, 29, 6, 28,
+ 15, 32, 12, 20, 20, 4, 7, 7, 14, 7, 15, 22, 20, 29, 23, 29, 22, 7, 7, 12, 14, 24, 29, 5, 31, 14, 5, 20, 8, 7, 5, 6, 12, 24, 22, 32, 20, 24, 15, 12, 24, 31, 14, 32, 22, 6, 7, 6, 12, 13, 31, 8, 15, 16, 24, 20, 6, 30, 16, 6, 20, 6, 16, 30, 16, 29, 32, 5, 7, 6, 24, 32, 7, 24, 13, 21, 12, 24, 30, 22, 12, 22, 28, 21, 20, 12, 30, 30, 22, 22, 13, 23, 16, 13, 7, 6, 7, 23, 8, 7, 15, 16, 13, 20, 31, 28, 5, 20, 6, 4, 23, 6, 32, 24, 24, 5, 28, 22, 8, 24, 24, 20, 23, 21, 21, 8, 22, 16,
+ 16, 7, 15, 20, 31, 20, 23, 13, 5, 6, 20, 6, 30, 22, 23, 21, 21, 16, 20, 12, 13, 32, 23, 23, 32, 23, 16, 7, 28, 5, 23, 13, 16, 22, 16, 23, 24, 24, 6, 31, 12, 12, 32, 6, 12, 22, 15, 16, 31, 23, 24, 8, 30, 5, 5, 20, 24, 31, 29, 8, 22, 5, 24, 24, 32, 23, 13, 29, 8, 32, 8, 8, 12, 31, 24, 4, 12, 30, 16, 8, 16, 22, 12, 29, 14, 30, 21, 24, 14, 31, 23, 8, 24, 28, 20, 23, 7, 24, 28, 13, 20, 15, 32, 22, 30, 21, 20, 7, 28, 4, 29, 22, 24, 22, 29, 12, 15, 15, 7, 30, 12, 30, 8, 8, 14, 14, 4, 6,
+ 24, 8, 16, 20, 12, 13, 21, 21, 8, 16, 15, 12, 12, 6, 14, 31, 6, 21, 12, 31, 20, 7, 20, 7, 16, 5, 4, 13, 22, 28, 16, 14, 21, 4, 28, 24, 22, 24, 30, 30, 16, 22, 14, 6, 23, 21, 5, 23, 8, 32, 29, 12, 8, 32, 29, 22, 13, 29, 8, 28, 5, 6, 6, 22, 30, 22, 22, 30, 15, 4, 24, 13, 16, 30, 16, 30, 12, 29, 14, 29, 6, 14, 22, 28, 29, 15, 28, 20, 32, 20, 16, 31, 14, 5, 4, 29, 32, 28, 31, 28, 16, 8, 23, 14, 20, 13, 15, 15, 14, 23, 23, 8, 21, 29, 16, 23, 21, 23, 4, 23, 23, 29, 21, 4, 4, 23, 21, 6,
+ 20, 31, 23, 28, 5, 12, 15, 24, 29, 7, 23, 8, 29, 24, 15, 8, 21, 31, 13, 15, 23, 21, 5, 24, 30, 16, 30, 32, 12, 16, 30, 22, 30, 24, 32, 21, 5, 29, 20, 13, 28, 32, 6, 21, 31, 29, 28, 15, 5, 12, 29, 15, 13, 7, 7, 24, 30, 5, 15, 29, 20, 31, 28, 20, 4, 22, 28, 30, 8, 28, 8, 31, 23, 29, 32, 28, 4, 28, 28, 13, 12, 13, 16, 4, 13, 30, 29, 6, 16, 32, 4, 28, 16, 24, 20, 29, 15, 23, 22, 22, 12, 24, 13, 20, 15, 4, 20, 15, 12, 31, 4, 15, 16, 5, 29, 4, 5, 30, 5, 22, 20, 21, 30, 7, 29, 32, 21, 13,
+ 31, 8, 24, 7, 8, 12, 31, 32, 22, 8, 23, 32, 4, 29, 8, 22, 12, 30, 13, 30, 23, 5, 23, 22, 8, 16, 21, 23, 28, 22, 12, 14, 29, 4, 22, 5, 12, 21, 20, 8, 7, 8, 5, 22, 13, 12, 14, 31, 16, 4, 6, 29, 6, 30, 23, 14, 15, 32, 30, 4, 31, 32, 15, 5, 28, 32, 24, 30, 22, 23, 29, 20, 16, 30, 28, 8, 4, 16, 12, 28, 32, 30, 6, 24, 16, 13, 31, 28, 30, 13, 29, 28, 29, 29, 20, 15, 31, 5, 30, 23, 7, 28, 4, 22, 14, 6, 30, 4, 24, 23, 29, 29, 15, 16, 23, 29, 20, 20, 20, 24, 31, 4, 30, 4, 15, 6, 16, 24,
+ 23, 13, 12, 28, 5, 12, 8, 5, 28, 32, 4, 15, 4, 4, 24, 21, 20, 21, 6, 8, 28, 4, 8, 13, 6, 30, 12, 22, 8, 31, 13, 29, 28, 12, 12, 15, 4, 29, 12, 12, 28, 32, 4, 24, 5, 7, 32, 7, 24, 28, 32, 24, 4, 29, 15, 30, 29, 30, 32, 32, 16, 12, 15, 32, 21, 21, 21, 28, 31, 4, 20, 4, 4, 15, 8, 16, 32, 4, 28, 16, 8, 13, 31, 4, 14, 32, 8, 28, 23, 12, 23, 16, 6, 20, 12, 30, 4, 15, 29, 23, 29, 30, 31, 8, 5, 12, 6, 16, 20, 24, 29, 4, 32, 31, 12, 14, 28, 14, 21, 21, 30, 22, 24, 24, 7, 6, 6, 31,
+ 6, 12, 20, 7, 24, 31, 32, 15, 4, 5, 6, 32, 12, 24, 29, 15, 32, 21, 12, 29, 8, 21, 13, 15, 29, 28, 30, 14, 22, 30, 30, 4, 28, 8, 16, 24, 5, 23, 7, 20, 6, 4, 8, 22, 15, 13, 13, 8, 14, 8, 8, 12, 12, 22, 6, 29, 8, 7, 16, 28, 31, 20, 6, 24, 29, 23, 22, 14, 30, 29, 28, 30, 22, 21, 15, 4, 32, 8, 6, 7, 24, 31, 6, 24, 24, 30, 20, 8, 29, 7, 21, 23, 8, 15, 20, 6, 16, 16, 14, 16, 5, 28, 20, 6, 23, 22, 15, 7, 16, 12, 29, 13, 12, 6, 8, 5, 4, 7, 29, 24, 29, 22, 31, 4, 14, 7, 8, 30,
+ 22, 15, 6, 29, 6, 32, 20, 23, 7, 14, 20, 29, 4, 28, 20, 22, 13, 14, 16, 20, 6, 13, 28, 29, 28, 23, 12, 5, 30, 6, 13, 28, 4, 23, 21, 31, 32, 12, 22, 20, 5, 6, 20, 32, 6, 29, 13, 4, 15, 23, 29, 23, 31, 4, 28, 6, 15, 12, 30, 24, 8, 8, 21, 5, 8, 16, 29, 7, 20, 31, 14, 6, 20, 31, 6, 29, 5, 6, 6, 21, 21, 29, 7, 32, 22, 16, 15, 14, 23, 6, 29, 28, 16, 6, 13, 6, 32, 22, 4, 30, 20, 14, 24, 22, 13, 23, 5, 30, 24, 14, 7, 29, 6, 15, 4, 31, 4, 13, 5, 31, 5, 29, 22, 16, 15, 6, 7, 31,
+ 30, 6, 6, 14, 14, 23, 4, 14, 4, 13, 14, 24, 30, 29, 16, 24, 20, 22, 16, 4, 22, 23, 23, 15, 5, 5, 7, 7, 20, 14, 31, 8, 23, 29, 13, 15, 29, 14, 13, 21, 24, 20, 7, 4, 21, 22, 13, 21, 29, 8, 6, 12, 22, 32, 32, 24, 5, 15, 32, 30, 24, 16, 23, 6, 30, 28, 28, 13, 4, 22, 8, 14, 12, 4, 6, 22, 7, 12, 8, 24, 24, 15, 5, 32, 4, 22, 22, 28, 14, 31, 30, 28, 29, 30, 12, 12, 23, 28, 12, 7, 15, 15, 7, 7, 5, 22, 14, 16, 5, 28, 14, 7, 30, 6, 21, 6, 30, 30, 23, 24, 29, 29, 5, 8, 29, 22, 16, 7,
+ 32, 12, 12, 15, 13, 16, 32, 28, 15, 14, 6, 16, 15, 31, 4, 21, 12, 21, 20, 20, 20, 6, 4, 31, 29, 24, 4, 16, 22, 8, 21, 28, 28, 28, 22, 20, 6, 31, 29, 5, 16, 22, 12, 6, 24, 8, 30, 30, 28, 32, 16, 13, 23, 6, 21, 13, 20, 20, 15, 13, 21, 23, 6, 22, 30, 15, 24, 7, 22, 4, 30, 15, 32, 22, 24, 28, 30, 28, 15, 30, 4, 22, 6, 15, 4, 5, 32, 8, 32, 23, 16, 6, 6, 7, 16, 24, 31, 28, 7, 30, 31, 22, 13, 21, 7, 20, 5, 24, 29, 31, 22, 28, 5, 15, 29, 30, 15, 14, 16, 29, 23, 20, 12, 23, 7, 24, 6, 28,
+ 7, 28, 13, 16, 4, 5, 20, 24, 15, 21, 8, 29, 6, 16, 31, 29, 24, 12, 4, 7, 14, 7, 22, 29, 20, 21, 8, 29, 21, 28, 5, 21, 16, 15, 28, 15, 4, 5, 8, 15, 29, 4, 30, 8, 24, 16, 29, 12, 23, 31, 29, 4, 28, 28, 23, 16, 20, 32, 29, 23, 12, 29, 14, 14, 12, 21, 20, 12, 28, 14, 15, 28, 30, 20, 31, 24, 5, 6, 4, 24, 29, 20, 23, 4, 32, 15, 32, 14, 6, 14, 31, 32, 22, 14, 31, 24, 24, 16, 16, 16, 31, 16, 14, 28, 13, 32, 23, 16, 14, 24, 22, 24, 29, 8, 32, 6, 20, 32, 24, 23, 13, 22, 12, 5, 31, 16, 5, 29,
+ 31, 12, 13, 20, 7, 23, 7, 23, 24, 21, 22, 6, 20, 20, 31, 16, 20, 7, 7, 16, 30, 14, 16, 16, 30, 24, 14, 5, 32, 13, 21, 30, 24, 20, 12, 21, 14, 30, 16, 8, 15, 28, 29, 28, 15, 4, 31, 15, 20, 14, 28, 5, 13, 28, 14, 4, 6, 5, 12, 5, 16, 15, 32, 21, 20, 16, 21, 20, 5, 14, 20, 15, 21, 30, 32, 7, 13, 8, 22, 31, 16, 8, 12, 24, 12, 15, 20, 23, 21, 30, 7, 21, 5, 6, 12, 5, 15, 28, 31, 29, 5, 24, 24, 21, 32, 15, 7, 21, 23, 29, 4, 23, 23, 15, 5, 30, 24, 31, 21, 20, 7, 21, 4, 22, 21, 31, 4, 14,
+ 31, 30, 32, 29, 31, 32, 7, 13, 7, 5, 31, 5, 5, 13, 21, 23, 13, 8, 16, 30, 20, 13, 29, 29, 8, 32, 12, 21, 7, 31, 12, 20, 12, 16, 4, 13, 32, 16, 31, 16, 15, 7, 20, 24, 20, 15, 6, 16, 13, 5, 15, 16, 31, 23, 28, 16, 24, 6, 7, 23, 5, 15, 15, 6, 24, 23, 22, 8, 13, 13, 32, 21, 23, 8, 24, 21, 31, 23, 16, 7, 7, 29, 28, 7, 16, 14, 4, 24, 16, 28, 8, 12, 6, 20, 22, 15, 16, 20, 22, 7, 28, 6, 16, 16, 29, 8, 8, 16, 20, 31, 31, 32, 12, 16, 14, 28, 14, 15, 23, 13, 7, 29, 12, 12, 24, 8, 7, 23,
+ 21, 28, 15, 28, 13, 8, 15, 21, 28, 12, 22, 8, 6, 6, 29, 4, 12, 16, 29, 7, 22, 7, 12, 28, 7, 4, 5, 22, 15, 16, 8, 29, 22, 22, 7, 13, 30, 15, 6, 16, 6, 21, 16, 12, 16, 4, 22, 28, 23, 14, 21, 29, 4, 6, 31, 22, 23, 14, 22, 23, 32, 8, 6, 29, 8, 7, 24, 16, 6, 23, 7, 32, 32, 21, 6, 29, 23, 7, 14, 7, 32, 28, 8, 16, 7, 32, 22, 30, 32, 20, 4, 29, 28, 23, 16, 31, 32, 20, 29, 22, 32, 28, 29, 31, 31, 6, 24, 20, 4, 8, 32, 12, 32, 13, 8, 13, 13, 4, 5, 24, 30, 14, 21, 28, 12, 8, 30, 7,
+ 30, 13, 23, 13, 32, 16, 21, 22, 4, 24, 16, 23, 5, 21, 28, 15, 28, 20, 21, 23, 22, 24, 20, 24, 20, 20, 5, 22, 21, 7, 30, 30, 23, 31, 30, 12, 4, 22, 30, 12, 31, 31, 13, 22, 31, 22, 13, 4, 22, 15, 12, 21, 15, 20, 12, 31, 12, 23, 23, 20, 29, 4, 15, 8, 5, 32, 7, 31, 24, 13, 12, 21, 32, 16, 24, 32, 31, 20, 5, 28, 20, 29, 13, 20, 20, 31, 13, 15, 5, 7, 32, 8, 29, 14, 5, 24, 21, 21, 16, 23, 15, 4, 31, 24, 4, 8, 23, 15, 15, 30, 15, 6, 16, 16, 23, 31, 32, 12, 8, 32, 15, 5, 31, 29, 15, 24, 28, 24,
+ 31, 12, 31, 13, 4, 21, 13, 7, 15, 7, 22, 16, 21, 7, 14, 31, 22, 15, 4, 24, 8, 21, 22, 5, 7, 23, 29, 21, 30, 20, 16, 22, 5, 24, 21, 15, 15, 30, 16, 15, 31, 21, 7, 32, 31, 16, 16, 4, 24, 28, 7, 4, 8, 5, 5, 32, 5, 24, 12, 31, 24, 6, 20, 16, 8, 14, 28, 22, 21, 13, 13, 22, 28, 6, 8, 6, 20, 7, 20, 7, 23, 29, 16, 29, 24, 22, 22, 13, 22, 14, 31, 28, 24, 30, 31, 16, 8, 15, 16, 7, 8, 21, 28, 6, 13, 5, 32, 20, 14, 22, 5, 31, 29, 6, 21, 6, 31, 15, 31, 12, 31, 23, 12, 28, 7, 32, 5, 8,
+ 23, 16, 12, 22, 8, 29, 4, 7, 24, 13, 4, 16, 12, 32, 20, 29, 6, 29, 22, 13, 16, 29, 31, 30, 12, 16, 20, 6, 21, 7, 28, 16, 21, 5, 15, 4, 13, 29, 13, 5, 28, 22, 15, 28, 16, 29, 22, 31, 24, 31, 13, 31, 16, 7, 13, 24, 24, 13, 15, 23, 13, 12, 29, 31, 13, 21, 23, 24, 21, 28, 14, 23, 16, 6, 14, 28, 31, 23, 16, 29, 29, 7, 29, 16, 23, 32, 22, 12, 13, 6, 4, 6, 16, 31, 21, 15, 16, 14, 22, 16, 31, 31, 29, 8, 32, 24, 12, 16, 13, 31, 32, 13, 31, 14, 8, 23, 16, 16, 14, 20, 32, 6, 8, 14, 7, 23, 30, 7,
+ 32, 29, 4, 28, 24, 13, 6, 5, 22, 13, 6, 16, 30, 15, 14, 23, 4, 15, 31, 29, 32, 16, 28, 12, 22, 14, 29, 5, 7, 32, 20, 6, 22, 12, 31, 4, 30, 15, 28, 31, 24, 20, 32, 6, 12, 20, 16, 24, 8, 7, 20, 24, 22, 23, 24, 8, 24, 14, 32, 21, 6, 24, 6, 13, 21, 16, 21, 6, 22, 22, 7, 29, 23, 32, 30, 31, 4, 15, 8, 6, 23, 24, 32, 22, 12, 7, 6, 20, 21, 15, 4, 5, 28, 23, 15, 24, 29, 20, 12, 29, 14, 29, 6, 29, 29, 16, 20, 28, 32, 8, 14, 31, 21, 7, 21, 16, 30, 16, 23, 31, 15, 4, 22, 24, 21, 7, 21, 16,
+ 21, 4, 14, 28, 20, 28, 14, 28, 29, 22, 14, 15, 8, 20, 4, 23, 7, 21, 7, 12, 30, 6, 14, 13, 29, 7, 8, 20, 20, 12, 32, 20, 5, 23, 15, 5, 16, 5, 24, 12, 24, 15, 14, 24, 16, 29, 24, 7, 13, 5, 4, 24, 23, 21, 8, 6, 24, 6, 32, 13, 23, 4, 14, 28, 13, 28, 22, 15, 24, 29, 30, 8, 12, 5, 5, 29, 28, 13, 29, 28, 7, 23, 29, 15, 20, 15, 20, 22, 29, 16, 8, 4, 30, 32, 16, 21, 24, 23, 28, 21, 31, 20, 6, 12, 14, 12, 20, 5, 5, 24, 28, 4, 16, 13, 12, 30, 21, 20, 4, 20, 15, 7, 14, 16, 5, 5, 29, 29,
+ 13, 22, 12, 14, 6, 20, 21, 22, 28, 31, 8, 28, 14, 13, 6, 31, 29, 22, 6, 14, 23, 28, 14, 31, 32, 28, 23, 20, 21, 16, 20, 24, 7, 13, 14, 30, 22, 8, 21, 30, 21, 7, 6, 4, 23, 5, 16, 23, 28, 13, 13, 23, 23, 12, 30, 13, 30, 29, 31, 28, 31, 28, 8, 28, 31, 13, 20, 24, 6, 22, 4, 30, 32, 30, 23, 30, 16, 28, 32, 4, 12, 30, 4, 21, 23, 30, 7, 13, 5, 16, 6, 28, 32, 13, 4, 4, 7, 31, 7, 22, 15, 21, 22, 31, 5, 32, 29, 12, 14, 20, 8, 28, 21, 4, 24, 23, 6, 8, 15, 7, 16, 22, 29, 14, 31, 21, 15, 6,
+ 31, 22, 13, 22, 31, 22, 15, 12, 8, 13, 24, 32, 24, 28, 28, 5, 21, 24, 20, 4, 32, 13, 29, 5, 32, 21, 29, 4, 12, 16, 6, 5, 23, 29, 4, 15, 14, 32, 12, 15, 14, 14, 4, 31, 28, 7, 30, 28, 22, 16, 6, 24, 28, 8, 15, 14, 29, 28, 28, 22, 21, 29, 22, 16, 28, 23, 16, 6, 20, 5, 30, 5, 23, 5, 31, 32, 4, 29, 32, 16, 24, 31, 8, 28, 12, 32, 5, 16, 7, 22, 20, 13, 5, 7, 29, 29, 23, 29, 7, 7, 6, 16, 29, 22, 14, 16, 14, 6, 16, 22, 22, 15, 21, 32, 32, 16, 14, 23, 24, 28, 24, 21, 16, 8, 23, 5, 16, 29,
+ 29, 20, 6, 29, 5, 21, 15, 13, 4, 29, 6, 29, 28, 24, 23, 7, 21, 31, 13, 13, 31, 24, 20, 7, 30, 4, 4, 15, 31, 23, 22, 12, 29, 6, 12, 7, 31, 6, 14, 31, 7, 13, 22, 8, 23, 31, 14, 32, 13, 14, 13, 6, 15, 22, 30, 30, 21, 7, 32, 7, 15, 12, 14, 6, 23, 16, 14, 30, 12, 23, 12, 21, 6, 28, 14, 24, 30, 6, 30, 15, 5, 5, 28, 32, 6, 8, 30, 29, 13, 30, 22, 24, 30, 24, 6, 4, 16, 8, 6, 29, 14, 28, 21, 22, 6, 28, 31, 16, 21, 22, 30, 32, 16, 24, 24, 21, 20, 6, 23, 12, 20, 20, 5, 21, 5, 20, 31, 16,
+ 23, 5, 7, 13, 22, 28, 28, 12, 24, 15, 28, 15, 8, 20, 15, 16, 28, 5, 14, 14, 8, 31, 8, 14, 6, 31, 6, 7, 7, 7, 16, 6, 22, 24, 6, 32, 7, 13, 24, 8, 20, 29, 5, 30, 13, 28, 21, 30, 5, 16, 7, 20, 15, 21, 5, 14, 14, 22, 6, 6, 20, 5, 4, 7, 24, 12, 7, 28, 24, 7, 24, 4, 20, 16, 15, 28, 14, 8, 23, 12, 29, 32, 32, 29, 28, 32, 29, 20, 14, 15, 13, 13, 4, 15, 22, 12, 20, 4, 4, 15, 13, 31, 29, 21, 30, 16, 7, 8, 29, 22, 28, 7, 20, 13, 29, 16, 21, 20, 4, 7, 15, 6, 24, 21, 7, 21, 7, 30,
+ 28, 8, 24, 5, 16, 13, 24, 28, 30, 20, 15, 31, 8, 31, 5, 12, 29, 13, 13, 28, 22, 22, 22, 8, 8, 30, 7, 7, 28, 7, 13, 22, 30, 6, 7, 7, 32, 16, 32, 22, 5, 7, 32, 32, 31, 21, 29, 28, 31, 8, 5, 4, 16, 20, 5, 28, 4, 13, 30, 31, 24, 32, 12, 8, 7, 15, 4, 31, 16, 24, 29, 30, 32, 14, 31, 13, 20, 13, 15, 6, 23, 21, 8, 21, 31, 15, 31, 16, 5, 29, 14, 15, 15, 16, 21, 12, 16, 30, 15, 14, 4, 4, 28, 29, 12, 23, 28, 23, 5, 29, 7, 32, 8, 6, 13, 32, 8, 12, 22, 28, 20, 4, 31, 21, 16, 30, 32, 7,
+ 22, 5, 23, 21, 31, 16, 13, 30, 20, 13, 13, 5, 29, 4, 13, 23, 22, 5, 23, 14, 20, 21, 23, 5, 16, 31, 21, 12, 23, 22, 12, 23, 29, 28, 16, 28, 13, 32, 15, 21, 23, 6, 13, 16, 13, 22, 32, 29, 32, 4, 12, 28, 6, 30, 21, 30, 4, 24, 5, 6, 6, 29, 31, 5, 12, 29, 29, 28, 13, 32, 30, 23, 28, 28, 4, 15, 24, 24, 20, 20, 8, 6, 4, 30, 14, 23, 14, 31, 6, 28, 24, 14, 8, 32, 23, 29, 6, 13, 22, 22, 32, 20, 15, 5, 8, 23, 31, 23, 22, 16, 4, 14, 20, 30, 30, 22, 21, 30, 30, 16, 30, 12, 8, 29, 28, 21, 13, 12,
+ 15, 28, 13, 6, 32, 4, 5, 15, 32, 6, 12, 15, 8, 14, 13, 29, 14, 22, 24, 22, 20, 28, 5, 31, 4, 12, 29, 8, 14, 15, 5, 13, 21, 24, 7, 15, 28, 12, 12, 15, 31, 28, 5, 31, 21, 4, 22, 12, 15, 7, 24, 21, 20, 29, 4, 4, 23, 5, 12, 30, 4, 14, 13, 13, 7, 8, 6, 21, 31, 22, 20, 28, 8, 12, 23, 14, 16, 4, 21, 21, 20, 6, 24, 20, 16, 30, 5, 5, 21, 16, 21, 21, 12, 8, 30, 29, 32, 4, 7, 5, 8, 20, 4, 14, 30, 31, 29, 4, 5, 24, 24, 23, 31, 8, 7, 30, 7, 31, 31, 6, 12, 28, 14, 20, 24, 22, 21, 5,
+ 32, 12, 8, 24, 13, 24, 32, 14, 8, 4, 13, 7, 22, 32, 31, 8, 30, 31, 12, 23, 32, 29, 13, 30, 32, 20, 8, 8, 4, 14, 29, 21, 20, 22, 24, 14, 29, 20, 29, 14, 24, 21, 22, 7, 23, 21, 32, 24, 29, 12, 8, 31, 32, 6, 29, 24, 28, 8, 4, 23, 15, 5, 5, 13, 30, 8, 12, 22, 7, 12, 6, 28, 7, 6, 13, 31, 31, 13, 12, 12, 23, 5, 28, 30, 24, 8, 32, 6, 13, 29, 31, 13, 29, 7, 21, 6, 5, 32, 23, 8, 6, 14, 15, 23, 8, 23, 22, 20, 5, 15, 7, 7, 20, 21, 5, 12, 4, 6, 12, 6, 31, 22, 21, 15, 21, 12, 22, 14,
+ 21, 7, 29, 6, 15, 7, 32, 32, 12, 22, 8, 12, 22, 8, 7, 24, 5, 23, 20, 30, 12, 21, 7, 13, 6, 30, 29, 29, 6, 7, 14, 5, 12, 13, 32, 7, 29, 32, 5, 21, 29, 14, 29, 15, 24, 21, 4, 32, 29, 29, 8, 20, 28, 23, 23, 28, 31, 7, 8, 6, 20, 13, 5, 30, 31, 5, 20, 7, 29, 28, 7, 30, 28, 13, 5, 5, 31, 12, 7, 4, 30, 32, 6, 15, 31, 20, 13, 4, 5, 5, 5, 32, 30, 6, 6, 31, 21, 24, 23, 5, 29, 29, 6, 13, 8, 12, 16, 21, 32, 6, 31, 31, 15, 12, 23, 14, 30, 6, 29, 4, 22, 30, 28, 12, 12, 22, 6, 16,
+ 8, 13, 29, 8, 32, 14, 4, 24, 6, 28, 30, 20, 4, 13, 15, 30, 12, 16, 16, 14, 13, 4, 21, 14, 23, 15, 13, 6, 14, 21, 29, 13, 21, 7, 6, 14, 7, 15, 7, 32, 21, 12, 21, 16, 4, 4, 32, 23, 8, 5, 8, 32, 13, 8, 16, 24, 32, 8, 16, 15, 32, 22, 21, 7, 6, 12, 8, 23, 16, 30, 23, 16, 30, 5, 12, 4, 14, 16, 4, 8, 23, 20, 4, 31, 6, 29, 8, 7, 8, 15, 23, 13, 6, 5, 31, 23, 13, 7, 5, 22, 22, 23, 8, 4, 21, 29, 21, 28, 24, 4, 15, 16, 14, 21, 21, 6, 21, 7, 31, 12, 12, 14, 15, 32, 21, 23, 4, 14,
+ 21, 23, 16, 15, 32, 12, 6, 7, 5, 4, 15, 29, 29, 24, 24, 8, 7, 15, 28, 14, 30, 21, 23, 32, 28, 5, 31, 32, 7, 13, 4, 8, 32, 8, 6, 31, 24, 14, 24, 23, 31, 13, 29, 14, 24, 7, 7, 31, 21, 4, 28, 4, 4, 22, 31, 31, 15, 12, 7, 7, 5, 12, 30, 21, 5, 8, 21, 30, 4, 20, 4, 22, 7, 21, 15, 24, 23, 6, 31, 5, 23, 14, 22, 7, 28, 16, 24, 32, 8, 6, 8, 24, 7, 5, 15, 20, 22, 14, 28, 23, 30, 24, 28, 31, 16, 14, 31, 31, 16, 7, 32, 31, 15, 29, 22, 7, 12, 7, 5, 23, 20, 8, 5, 29, 31, 22, 15, 22,
+ 6, 32, 12, 8, 32, 8, 4, 16, 16, 20, 14, 14, 15, 28, 6, 32, 32, 14, 28, 16, 24, 4, 20, 23, 24, 16, 12, 23, 20, 29, 32, 20, 28, 8, 24, 6, 29, 16, 7, 24, 8, 29, 5, 28, 16, 16, 8, 12, 7, 20, 21, 29, 8, 12, 28, 7, 12, 15, 15, 22, 32, 21, 16, 8, 5, 8, 23, 6, 23, 30, 12, 23, 7, 20, 24, 20, 16, 30, 24, 32, 4, 7, 7, 28, 16, 13, 30, 14, 14, 30, 14, 28, 13, 31, 4, 6, 24, 5, 22, 28, 30, 30, 24, 32, 32, 30, 22, 21, 21, 24, 12, 28, 13, 4, 7, 29, 12, 7, 28, 20, 8, 16, 4, 7, 28, 30, 13, 12,
+ 20, 8, 21, 30, 14, 15, 20, 5, 7, 32, 8, 6, 30, 6, 7, 4, 28, 22, 6, 14, 8, 7, 7, 21, 32, 6, 31, 20, 14, 8, 6, 13, 23, 24, 20, 30, 30, 6, 32, 14, 14, 28, 6, 12, 12, 5, 5, 21, 5, 14, 24, 16, 7, 29, 7, 8, 23, 15, 31, 13, 29, 29, 21, 24, 22, 4, 32, 14, 13, 22, 4, 28, 29, 22, 21, 14, 20, 23, 14, 7, 30, 30, 22, 32, 5, 31, 28, 15, 28, 6, 14, 28, 4, 23, 8, 15, 20, 16, 12, 5, 7, 4, 28, 15, 14, 5, 23, 5, 13, 23, 21, 31, 31, 5, 16, 4, 32, 22, 32, 15, 16, 24, 23, 12, 4, 24, 21, 4,
+ 4, 30, 28, 5, 20, 29, 21, 20, 13, 21, 14, 8, 8, 8, 16, 5, 24, 22, 32, 12, 6, 20, 13, 16, 8, 23, 21, 24, 7, 30, 8, 6, 29, 16, 13, 21, 30, 13, 12, 20, 22, 7, 30, 20, 32, 6, 20, 5, 23, 23, 16, 16, 8, 22, 4, 8, 4, 15, 20, 14, 12, 24, 21, 16, 16, 32, 7, 8, 5, 15, 31, 15, 21, 13, 15, 13, 4, 8, 32, 6, 22, 4, 28, 5, 12, 28, 13, 15, 5, 22, 24, 21, 13, 22, 22, 30, 15, 16, 30, 31, 23, 13, 16, 13, 21, 30, 16, 31, 7, 21, 31, 5, 12, 21, 23, 5, 16, 12, 14, 13, 15, 30, 22, 7, 7, 8, 22, 31,
+ 14, 20, 23, 30, 30, 12, 14, 28, 24, 7, 15, 8, 20, 30, 24, 7, 31, 6, 16, 12, 30, 7, 4, 8, 22, 8, 31, 31, 15, 7, 31, 20, 16, 4, 30, 24, 13, 16, 5, 16, 32, 30, 4, 29, 5, 32, 20, 22, 23, 22, 6, 8, 6, 8, 24, 12, 20, 23, 32, 14, 30, 22, 7, 23, 29, 23, 5, 15, 21, 12, 5, 12, 23, 12, 32, 28, 21, 15, 8, 6, 22, 29, 8, 14, 21, 16, 31, 24, 6, 23, 30, 24, 20, 5, 12, 7, 24, 13, 5, 28, 7, 23, 8, 6, 23, 31, 31, 7, 32, 7, 31, 22, 12, 28, 6, 32, 12, 6, 4, 13, 7, 23, 32, 13, 31, 30, 22, 22,
+ 23, 24, 24, 14, 32, 7, 14, 7, 24, 29, 7, 4, 24, 20, 4, 15, 31, 14, 16, 15, 24, 4, 22, 31, 31, 8, 23, 13, 31, 20, 29, 30, 8, 21, 13, 7, 6, 15, 6, 21, 5, 4, 23, 31, 23, 28, 14, 7, 28, 6, 29, 12, 14, 23, 22, 28, 12, 6, 5, 12, 6, 28, 7, 31, 15, 29, 6, 8, 31, 6, 30, 8, 5, 30, 13, 16, 15, 28, 13, 20, 24, 13, 31, 16, 5, 20, 14, 32, 23, 24, 29, 16, 8, 32, 20, 30, 16, 12, 14, 22, 22, 21, 8, 6, 13, 12, 29, 4, 13, 4, 16, 20, 29, 5, 16, 24, 20, 8, 30, 6, 5, 32, 15, 16, 23, 21, 16, 32,
+ 23, 24, 16, 4, 24, 29, 30, 12, 31, 5, 21, 29, 29, 6, 21, 22, 14, 7, 5, 7, 8, 15, 20, 30, 15, 21, 20, 22, 13, 8, 20, 21, 22, 20, 29, 23, 28, 8, 30, 28, 29, 24, 13, 21, 30, 5, 23, 21, 23, 16, 7, 6, 6, 12, 28, 20, 22, 31, 23, 14, 23, 30, 28, 8, 5, 7, 8, 29, 4, 7, 7, 8, 4, 5, 29, 23, 31, 12, 5, 5, 15, 6, 24, 16, 23, 22, 12, 12, 13, 5, 20, 31, 29, 7, 28, 14, 23, 31, 14, 6, 7, 6, 20, 15, 15, 14, 5, 22, 21, 22, 16, 29, 20, 22, 32, 23, 29, 5, 13, 32, 13, 15, 32, 20, 14, 8, 23, 24,
+ 31, 21, 5, 30, 30, 28, 13, 14, 7, 30, 32, 15, 28, 32, 8, 7, 30, 16, 14, 21, 29, 31, 23, 14, 24, 24, 16, 13, 30, 16, 7, 24, 14, 5, 12, 22, 24, 13, 12, 5, 6, 7, 7, 5, 29, 12, 16, 15, 29, 20, 5, 4, 15, 4, 7, 8, 32, 31, 16, 21, 30, 30, 32, 24, 21, 8, 23, 14, 16, 8, 5, 8, 20, 20, 29, 30, 14, 4, 20, 6, 14, 6, 7, 8, 22, 5, 12, 13, 23, 24, 29, 29, 32, 14, 5, 21, 32, 12, 23, 12, 28, 22, 7, 22, 22, 28, 8, 29, 8, 14, 24, 4, 14, 6, 7, 8, 4, 21, 23, 31, 21, 21, 23, 8, 28, 22, 21, 6,
+ 31, 6, 22, 5, 14, 31, 32, 16, 13, 4, 30, 28, 5, 24, 28, 20, 8, 4, 20, 29, 20, 13, 29, 16, 13, 16, 15, 7, 32, 21, 22, 13, 13, 20, 4, 30, 4, 4, 28, 29, 24, 16, 6, 30, 23, 31, 29, 20, 8, 13, 31, 12, 8, 13, 12, 4, 29, 15, 4, 4, 8, 12, 15, 24, 5, 16, 24, 24, 23, 21, 28, 29, 28, 32, 23, 13, 5, 8, 28, 24, 31, 22, 29, 23, 8, 22, 23, 31, 23, 29, 23, 32, 8, 6, 12, 16, 16, 12, 23, 24, 20, 12, 12, 23, 15, 24, 8, 31, 14, 24, 32, 31, 21, 8, 23, 30, 31, 5, 23, 24, 8, 21, 6, 29, 12, 31, 14, 8,
+ 28, 22, 20, 20, 8, 6, 23, 13, 21, 30, 7, 4, 24, 24, 6, 13, 30, 14, 29, 8, 21, 28, 16, 13, 21, 23, 5, 15, 12, 6, 20, 13, 8, 8, 5, 4, 32, 31, 14, 31, 16, 28, 20, 30, 21, 28, 23, 32, 13, 24, 23, 4, 12, 29, 15, 29, 15, 30, 20, 4, 22, 5, 12, 21, 14, 24, 13, 6, 8, 6, 28, 22, 32, 23, 4, 31, 8, 32, 29, 30, 8, 8, 32, 12, 22, 5, 12, 32, 24, 8, 4, 4, 24, 32, 4, 28, 28, 21, 29, 14, 6, 32, 24, 6, 24, 5, 6, 28, 6, 14, 6, 14, 22, 4, 8, 21, 4, 29, 23, 4, 21, 8, 31, 32, 24, 22, 31, 24,
+ 15, 16, 32, 22, 12, 21, 31, 6, 32, 12, 5, 6, 13, 6, 4, 6, 12, 6, 32, 30, 14, 8, 6, 30, 21, 28, 5, 12, 30, 20, 14, 31, 14, 22, 23, 7, 29, 6, 20, 14, 16, 20, 24, 15, 20, 6, 14, 15, 31, 28, 15, 16, 20, 14, 12, 30, 6, 13, 4, 6, 21, 12, 21, 20, 13, 20, 23, 23, 12, 29, 31, 6, 5, 23, 5, 31, 14, 16, 30, 29, 32, 4, 8, 5, 14, 15, 15, 23, 29, 4, 22, 4, 4, 13, 4, 13, 32, 5, 16, 31, 12, 24, 32, 8, 4, 28, 5, 12, 21, 20, 22, 29, 32, 15, 29, 16, 22, 5, 14, 15, 12, 30, 22, 23, 5, 21, 14, 7,
+ 5, 30, 23, 4, 13, 21, 21, 13, 7, 4, 31, 22, 7, 21, 7, 13, 32, 20, 14, 31, 21, 22, 6, 7, 15, 14, 6, 14, 32, 22, 31, 22, 13, 12, 21, 32, 12, 7, 22, 31, 4, 13, 8, 31, 15, 22, 13, 16, 12, 5, 5, 12, 6, 8, 16, 5, 4, 14, 20, 20, 31, 22, 28, 23, 6, 16, 32, 4, 22, 29, 16, 15, 30, 7, 6, 24, 22, 31, 28, 13, 15, 4, 14, 23, 22, 15, 32, 30, 30, 32, 5, 4, 32, 22, 22, 7, 12, 20, 4, 4, 12, 7, 15, 15, 28, 6, 13, 15, 22, 20, 24, 8, 30, 4, 4, 32, 6, 4, 12, 14, 8, 23, 21, 24, 21, 22, 30, 20,
+ 31, 24, 29, 28, 13, 8, 28, 15, 32, 28, 21, 14, 13, 6, 20, 22, 29, 31, 8, 6, 8, 6, 16, 29, 16, 29, 24, 30, 13, 22, 4, 22, 5, 4, 4, 22, 21, 15, 4, 4, 30, 31, 24, 6, 21, 16, 20, 16, 16, 31, 14, 28, 30, 14, 28, 22, 8, 29, 14, 20, 22, 32, 14, 30, 31, 32, 13, 13, 12, 6, 14, 23, 24, 13, 29, 8, 29, 31, 8, 14, 7, 7, 4, 24, 8, 22, 28, 15, 23, 20, 12, 30, 23, 4, 6, 15, 16, 14, 6, 16, 8, 23, 7, 12, 29, 14, 12, 32, 30, 29, 4, 16, 13, 7, 16, 28, 16, 20, 14, 8, 16, 5, 22, 13, 15, 5, 14, 5,
+ 32, 30, 20, 21, 5, 13, 23, 13, 20, 8, 22, 21, 13, 6, 5, 24, 13, 14, 5, 31, 28, 21, 8, 22, 4, 32, 32, 24, 23, 30, 29, 5, 15, 14, 22, 24, 23, 22, 6, 15, 7, 15, 15, 20, 21, 6, 13, 32, 32, 28, 4, 13, 20, 23, 15, 30, 13, 16, 20, 23, 28, 14, 7, 15, 12, 14, 32, 13, 24, 31, 23, 23, 31, 21, 32, 31, 8, 28, 14, 20, 29, 21, 7, 30, 15, 29, 12, 29, 32, 8, 32, 22, 23, 8, 29, 28, 6, 5, 21, 28, 31, 8, 29, 20, 6, 29, 15, 31, 13, 5, 6, 4, 6, 21, 32, 12, 30, 29, 21, 16, 28, 31, 29, 24, 8, 5, 14, 14,
+ 20, 13, 29, 32, 4, 20, 29, 28, 15, 30, 20, 24, 7, 8, 30, 21, 32, 16, 22, 4, 31, 7, 12, 13, 30, 6, 30, 15, 6, 30, 29, 4, 15, 30, 28, 12, 7, 7, 23, 32, 21, 7, 29, 32, 29, 8, 21, 30, 15, 32, 12, 5, 6, 4, 15, 20, 4, 5, 16, 21, 7, 16, 31, 7, 7, 13, 23, 13, 24, 29, 4, 23, 6, 4, 31, 13, 20, 14, 32, 20, 12, 23, 5, 4, 12, 31, 13, 31, 15, 4, 20, 8, 14, 22, 6, 8, 31, 7, 24, 12, 8, 20, 32, 31, 6, 4, 15, 30, 29, 20, 6, 24, 7, 31, 23, 28, 21, 30, 20, 8, 12, 4, 20, 13, 14, 32, 23, 6,
+ 5, 32, 21, 22, 23, 29, 23, 29, 29, 30, 30, 13, 23, 32, 8, 15, 28, 13, 5, 4, 6, 8, 21, 16, 6, 15, 15, 14, 20, 12, 7, 24, 7, 13, 20, 24, 4, 28, 7, 7, 13, 6, 5, 14, 7, 21, 30, 4, 4, 23, 15, 32, 6, 28, 24, 32, 8, 28, 30, 31, 28, 16, 30, 7, 6, 32, 21, 13, 12, 28, 30, 29, 20, 24, 16, 15, 5, 30, 21, 4, 28, 6, 7, 28, 12, 30, 20, 20, 32, 5, 22, 13, 22, 12, 16, 16, 20, 20, 23, 6, 21, 8, 12, 16, 30, 28, 30, 29, 12, 22, 7, 7, 24, 31, 22, 24, 31, 21, 29, 5, 20, 7, 12, 5, 20, 5, 5, 12,
+ 23, 30, 5, 4, 24, 15, 32, 7, 12, 32, 4, 7, 29, 6, 32, 8, 5, 8, 28, 29, 16, 22, 4, 21, 4, 12, 5, 5, 7, 28, 28, 31, 29, 13, 31, 12, 29, 32, 22, 29, 21, 31, 20, 21, 15, 8, 12, 20, 21, 30, 32, 15, 7, 7, 6, 8, 13, 7, 6, 28, 28, 22, 23, 32, 13, 24, 24, 8, 8, 12, 16, 22, 20, 20, 4, 13, 5, 13, 13, 6, 28, 28, 30, 16, 28, 29, 30, 15, 15, 8, 12, 21, 23, 5, 15, 7, 23, 8, 28, 29, 12, 4, 13, 31, 30, 8, 14, 24, 20, 14, 24, 15, 6, 20, 4, 6, 28, 7, 28, 23, 28, 28, 30, 24, 5, 24, 8, 12,
+ 5, 5, 14, 14, 8, 12, 22, 12, 32, 23, 29, 13, 5, 21, 31, 21, 23, 21, 24, 8, 28, 21, 29, 28, 13, 7, 22, 5, 15, 15, 20, 7, 28, 15, 12, 5, 28, 24, 7, 4, 20, 28, 13, 24, 8, 28, 24, 21, 5, 21, 6, 15, 31, 21, 30, 28, 24, 16, 5, 8, 5, 20, 6, 30, 28, 14, 15, 29, 12, 13, 5, 32, 5, 5, 20, 12, 31, 6, 28, 30, 32, 7, 8, 31, 30, 8, 7, 30, 30, 15, 14, 20, 31, 21, 23, 14, 31, 5, 6, 12, 22, 32, 6, 31, 4, 14, 4, 28, 8, 6, 28, 29, 22, 29, 24, 5, 23, 23, 29, 4, 15, 21, 30, 32, 30, 15, 28, 4,
+ 32, 29, 20, 32, 32, 15, 32, 20, 14, 29, 15, 6, 31, 20, 7, 29, 16, 14, 22, 6, 32, 30, 16, 28, 30, 16, 29, 5, 30, 8, 22, 7, 7, 7, 32, 30, 21, 21, 20, 4, 8, 16, 5, 14, 8, 32, 32, 6, 29, 16, 6, 4, 6, 31, 16, 23, 12, 29, 15, 28, 8, 22, 32, 8, 8, 4, 30, 29, 13, 30, 14, 32, 30, 21, 20, 30, 7, 23, 12, 15, 4, 24, 4, 32, 28, 22, 20, 31, 30, 13, 13, 32, 23, 30, 14, 6, 30, 16, 32, 32, 5, 8, 31, 14, 13, 32, 24, 24, 31, 14, 29, 7, 5, 16, 22, 13, 14, 5, 15, 21, 24, 24, 20, 7, 16, 24, 30, 7,
+ 4, 23, 23, 29, 7, 13, 4, 14, 24, 23, 8, 14, 4, 29, 29, 24, 20, 21, 24, 15, 24, 4, 5, 28, 16, 7, 21, 7, 30, 13, 20, 28, 5, 4, 12, 23, 21, 13, 12, 13, 5, 5, 16, 16, 21, 6, 16, 6, 16, 22, 24, 12, 6, 12, 21, 5, 14, 23, 32, 5, 21, 5, 28, 21, 29, 30, 15, 22, 8, 7, 13, 30, 20, 4, 31, 29, 15, 16, 8, 22, 20, 29, 6, 32, 24, 30, 29, 22, 4, 5, 29, 30, 21, 31, 7, 7, 29, 16, 13, 29, 14, 28, 31, 23, 16, 28, 12, 8, 13, 6, 28, 16, 31, 16, 22, 15, 14, 24, 4, 32, 23, 16, 28, 5, 28, 6, 12, 13,
+ 21, 32, 4, 13, 8, 16, 28, 13, 7, 20, 7, 13, 16, 16, 30, 13, 15, 24, 29, 15, 14, 21, 5, 12, 23, 32, 8, 24, 23, 4, 31, 28, 32, 13, 20, 32, 21, 20, 15, 31, 22, 16, 4, 15, 16, 32, 8, 4, 21, 31, 6, 24, 23, 21, 15, 7, 12, 23, 29, 21, 32, 32, 20, 5, 16, 13, 32, 28, 23, 8, 20, 21, 14, 8, 15, 20, 22, 6, 8, 29, 7, 32, 7, 6, 16, 23, 16, 23, 21, 16, 32, 14, 30, 30, 29, 23, 21, 28, 5, 22, 32, 7, 21, 12, 23, 7, 20, 13, 4, 31, 30, 31, 32, 28, 5, 8, 16, 23, 12, 13, 31, 28, 16, 21, 29, 16, 29, 31,
+ 32, 6, 4, 5, 21, 15, 22, 31, 31, 30, 15, 30, 30, 24, 6, 21, 24, 28, 24, 30, 30, 24, 21, 28, 4, 4, 15, 20, 21, 16, 16, 24, 30, 31, 6, 20, 30, 22, 12, 7, 7, 13, 14, 8, 24, 14, 30, 22, 12, 14, 30, 30, 22, 13, 20, 20, 13, 5, 7, 5, 32, 28, 32, 6, 22, 32, 16, 7, 15, 16, 15, 4, 30, 20, 13, 30, 7, 15, 8, 23, 22, 14, 6, 14, 24, 14, 13, 5, 32, 5, 24, 32, 14, 14, 5, 15, 29, 23, 20, 13, 5, 13, 13, 6, 31, 13, 16, 4, 20, 30, 15, 13, 5, 15, 5, 13, 14, 13, 31, 24, 20, 7, 4, 7, 5, 16, 31, 6,
+ 7, 8, 30, 16, 30, 5, 28, 5, 32, 32, 15, 13, 23, 8, 7, 14, 14, 22, 13, 13, 23, 24, 23, 23, 32, 13, 31, 24, 7, 8, 31, 12, 8, 4, 13, 30, 31, 29, 24, 31, 21, 23, 30, 6, 15, 32, 28, 32, 31, 22, 14, 23, 12, 7, 23, 24, 6, 21, 24, 8, 24, 20, 20, 32, 20, 30, 22, 12, 22, 12, 20, 29, 32, 5, 5, 6, 30, 12, 31, 16, 15, 31, 24, 30, 13, 22, 22, 29, 32, 28, 32, 4, 29, 20, 7, 7, 16, 12, 14, 23, 24, 6, 32, 28, 6, 16, 13, 7, 6, 22, 12, 8, 7, 7, 6, 20, 13, 30, 6, 30, 32, 31, 4, 28, 22, 22, 30, 31,
+ 5, 28, 5, 4, 28, 7, 16, 5, 20, 4, 7, 13, 30, 20, 20, 8, 7, 32, 21, 7, 20, 13, 22, 5, 4, 21, 23, 8, 24, 7, 32, 23, 13, 12, 16, 4, 29, 5, 23, 28, 4, 13, 6, 8, 4, 16, 15, 22, 12, 32, 6, 14, 14, 28, 15, 16, 24, 8, 13, 16, 23, 23, 16, 31, 23, 31, 14, 29, 24, 16, 32, 4, 14, 4, 4, 5, 23, 21, 29, 21, 23, 20, 30, 29, 28, 28, 23, 13, 5, 31, 16, 21, 12, 23, 32, 8, 12, 22, 8, 13, 28, 6, 16, 20, 21, 14, 13, 12, 16, 13, 32, 23, 6, 16, 16, 15, 22, 4, 30, 30, 8, 31, 14, 8, 15, 28, 4, 15,
+ 7, 23, 12, 8, 12, 31, 16, 29, 24, 29, 4, 31, 24, 23, 29, 12, 31, 6, 21, 32, 4, 5, 31, 12, 32, 13, 4, 8, 24, 29, 24, 16, 6, 5, 12, 15, 21, 6, 21, 8, 32, 30, 5, 7, 21, 20, 31, 21, 7, 20, 30, 24, 31, 4, 22, 21, 24, 23, 5, 29, 29, 6, 5, 29, 31, 4, 13, 4, 6, 5, 14, 13, 28, 32, 15, 28, 28, 6, 32, 23, 21, 29, 21, 23, 30, 31, 7, 31, 20, 16, 7, 23, 15, 13, 32, 30, 21, 20, 22, 22, 13, 21, 28, 20, 30, 7, 4, 8, 12, 32, 29, 14, 23, 12, 5, 20, 21, 28, 7, 30, 20, 7, 7, 30, 14, 13, 31, 6,
+ 5, 24, 32, 22, 31, 24, 31, 20, 5, 30, 13, 24, 28, 4, 24, 15, 6, 13, 4, 13, 5, 7, 30, 7, 13, 29, 16, 4, 21, 28, 14, 12, 14, 24, 30, 4, 22, 24, 15, 14, 28, 24, 31, 15, 15, 24, 16, 8, 28, 24, 12, 8, 13, 23, 12, 6, 15, 21, 12, 22, 22, 31, 23, 28, 20, 16, 30, 31, 16, 29, 13, 7, 31, 12, 5, 23, 24, 29, 24, 15, 8, 21, 22, 28, 28, 6, 5, 15, 16, 14, 13, 15, 15, 8, 8, 13, 20, 12, 28, 31, 28, 16, 8, 8, 12, 21, 16, 30, 23, 5, 12, 28, 23, 14, 23, 7, 5, 16, 16, 24, 23, 4, 15, 31, 13, 29, 28, 30,
+ 22, 12, 22, 6, 31, 31, 15, 20, 28, 12, 28, 13, 5, 31, 31, 30, 12, 23, 7, 8, 20, 12, 14, 22, 7, 8, 28, 7, 6, 20, 16, 31, 29, 5, 30, 31, 29, 15, 24, 12, 30, 23, 12, 6, 7, 8, 29, 31, 14, 12, 14, 12, 13, 7, 15, 16, 29, 16, 30, 32, 21, 22, 14, 15, 29, 15, 13, 15, 20, 21, 31, 30, 30, 32, 20, 16, 16, 21, 23, 20, 32, 20, 31, 14, 7, 21, 23, 13, 15, 7, 16, 32, 4, 22, 7, 14, 8, 7, 31, 20, 30, 6, 13, 7, 22, 5, 32, 8, 24, 22, 21, 22, 8, 12, 29, 16, 20, 31, 24, 4, 12, 20, 24, 22, 32, 21, 16, 30,
+ 8, 28, 12, 29, 12, 16, 21, 23, 7, 15, 13, 28, 30, 31, 24, 14, 24, 6, 31, 29, 22, 13, 21, 21, 5, 29, 7, 32, 7, 8, 13, 32, 31, 15, 30, 24, 6, 22, 30, 13, 12, 28, 5, 7, 6, 23, 6, 24, 8, 15, 4, 30, 21, 20, 20, 12, 28, 7, 16, 8, 32, 24, 29, 13, 32, 23, 22, 31, 7, 30, 8, 22, 12, 29, 32, 16, 28, 7, 13, 12, 8, 31, 31, 4, 23, 20, 4, 7, 13, 7, 15, 24, 15, 24, 23, 32, 15, 30, 12, 30, 21, 16, 29, 12, 4, 30, 4, 30, 29, 4, 16, 13, 23, 23, 16, 12, 29, 6, 8, 29, 12, 7, 15, 8, 32, 12, 12, 6,
+ 28, 24, 16, 7, 14, 14, 15, 30, 29, 7, 7, 30, 28, 14, 23, 22, 32, 24, 23, 29, 28, 16, 24, 6, 6, 12, 16, 16, 32, 24, 24, 23, 7, 8, 13, 12, 30, 20, 32, 15, 20, 24, 14, 30, 13, 13, 20, 30, 6, 12, 8, 23, 29, 14, 30, 6, 7, 32, 22, 30, 12, 14, 15, 31, 8, 22, 4, 13, 24, 24, 23, 22, 5, 30, 8, 21, 7, 12, 23, 21, 7, 23, 8, 30, 21, 8, 7, 21, 13, 6, 6, 31, 4, 24, 32, 13, 28, 6, 23, 30, 13, 16, 22, 30, 14, 15, 23, 31, 20, 22, 16, 8, 7, 12, 28, 7, 5, 12, 15, 32, 29, 5, 20, 7, 4, 6, 7, 31,
+ 22, 21, 21, 28, 23, 12, 22, 22, 21, 16, 16, 24, 28, 31, 24, 20, 21, 32, 32, 6, 6, 24, 12, 32, 31, 8, 23, 13, 30, 4, 20, 12, 21, 8, 23, 4, 13, 6, 8, 13, 5, 12, 21, 6, 22, 21, 4, 8, 8, 15, 30, 8, 12, 30, 32, 24, 14, 31, 23, 15, 15, 31, 20, 32, 15, 23, 31, 28, 24, 13, 5, 32, 21, 13, 5, 8, 13, 31, 8, 5, 4, 23, 32, 13, 21, 16, 20, 16, 29, 32, 15, 21, 28, 15, 24, 22, 16, 16, 16, 22, 7, 22, 24, 23, 16, 21, 16, 22, 7, 31, 13, 31, 32, 24, 16, 5, 28, 29, 7, 14, 29, 12, 23, 13, 23, 8, 30, 13,
+ 28, 28, 14, 31, 22, 31, 29, 4, 14, 31, 8, 15, 14, 22, 12, 23, 23, 20, 16, 16, 20, 4, 16, 7, 20, 32, 16, 20, 13, 14, 7, 28, 21, 16, 12, 6, 13, 8, 6, 4, 20, 8, 24, 14, 22, 14, 14, 30, 16, 23, 21, 5, 5, 15, 8, 23, 4, 8, 14, 24, 24, 13, 22, 7, 6, 30, 5, 14, 23, 30, 24, 16, 30, 30, 13, 13, 30, 21, 24, 8, 6, 5, 14, 8, 24, 5, 8, 15, 13, 31, 29, 12, 32, 32, 29, 14, 31, 22, 21, 29, 8, 12, 13, 32, 20, 12, 21, 21, 8, 23, 22, 14, 14, 8, 29, 24, 24, 30, 14, 30, 5, 12, 23, 4, 8, 31, 23, 28,
+ 14, 24, 15, 15, 30, 13, 14, 4, 13, 32, 23, 28, 24, 31, 8, 13, 6, 24, 24, 31, 30, 4, 28, 12, 20, 30, 28, 22, 15, 5, 4, 7, 22, 12, 23, 14, 16, 29, 8, 8, 29, 6, 28, 31, 29, 31, 30, 4, 23, 28, 15, 5, 29, 8, 14, 28, 13, 15, 24, 31, 15, 5, 13, 6, 5, 12, 32, 13, 32, 15, 21, 23, 20, 5, 22, 13, 21, 5, 16, 7, 16, 30, 8, 31, 32, 29, 32, 4, 29, 21, 16, 14, 7, 28, 29, 22, 6, 8, 15, 5, 20, 31, 30, 32, 16, 22, 22, 16, 12, 14, 29, 16, 6, 32, 32, 20, 16, 20, 29, 21, 22, 4, 16, 14, 32, 8, 6, 14,
+ 21, 32, 32, 24, 7, 24, 20, 4, 7, 13, 12, 13, 23, 8, 29, 20, 6, 28, 21, 28, 14, 8, 20, 12, 13, 15, 30, 15, 12, 8, 22, 21, 29, 15, 23, 30, 5, 14, 12, 22, 32, 4, 16, 6, 16, 5, 30, 30, 12, 24, 4, 4, 5, 12, 24, 31, 22, 7, 13, 16, 31, 21, 13, 13, 13, 4, 32, 14, 8, 28, 7, 15, 13, 28, 15, 15, 7, 29, 20, 22, 5, 29, 23, 32, 15, 28, 14, 22, 23, 20, 5, 30, 21, 6, 13, 4, 12, 13, 15, 32, 8, 32, 7, 15, 14, 16, 5, 20, 30, 21, 4, 13, 14, 4, 20, 7, 6, 29, 14, 7, 32, 21, 14, 32, 7, 22, 31, 8,
+ 28, 14, 6, 7, 31, 32, 20, 14, 8, 7, 24, 12, 14, 31, 28, 8, 24, 16, 28, 29, 4, 6, 24, 24, 30, 21, 30, 21, 32, 12, 24, 16, 8, 12, 30, 8, 12, 28, 7, 16, 8, 20, 20, 32, 8, 20, 6, 12, 21, 32, 28, 20, 22, 22, 4, 23, 32, 29, 16, 24, 6, 30, 20, 13, 32, 12, 21, 5, 22, 6, 21, 16, 15, 12, 20, 21, 5, 22, 29, 28, 6, 21, 14, 14, 20, 28, 7, 14, 7, 16, 30, 23, 16, 31, 28, 16, 12, 5, 31, 23, 8, 29, 4, 7, 8, 13, 30, 13, 28, 23, 15, 29, 14, 30, 21, 12, 29, 20, 30, 7, 8, 16, 15, 6, 8, 30, 32, 24,
+ 4, 8, 30, 24, 21, 22, 5, 15, 5, 28, 21, 30, 12, 24, 30, 5, 29, 21, 4, 20, 31, 28, 29, 8, 30, 20, 30, 30, 5, 15, 28, 7, 31, 22, 12, 7, 6, 23, 7, 5, 32, 7, 30, 22, 23, 4, 28, 7, 23, 4, 24, 16, 20, 21, 5, 4, 7, 7, 28, 32, 29, 6, 23, 7, 15, 32, 31, 7, 22, 31, 21, 24, 14, 4, 5, 16, 12, 24, 24, 29, 29, 32, 4, 8, 14, 20, 28, 31, 24, 22, 20, 16, 5, 32, 12, 7, 7, 16, 29, 21, 14, 31, 22, 14, 20, 8, 24, 4, 12, 13, 24, 31, 28, 31, 16, 30, 21, 13, 14, 7, 30, 24, 14, 13, 23, 24, 30, 28,
+ 24, 29, 22, 29, 23, 31, 28, 6, 8, 8, 6, 29, 14, 5, 6, 28, 5, 6, 30, 29, 4, 20, 5, 24, 23, 6, 8, 15, 5, 4, 28, 23, 30, 16, 13, 15, 7, 20, 15, 12, 29, 30, 14, 28, 5, 24, 31, 16, 14, 20, 30, 30, 12, 14, 12, 4, 5, 15, 24, 4, 31, 16, 5, 21, 31, 29, 14, 5, 31, 15, 20, 8, 8, 6, 14, 22, 5, 7, 6, 28, 31, 22, 4, 4, 13, 32, 24, 12, 5, 22, 28, 15, 14, 8, 31, 28, 31, 23, 24, 16, 21, 5, 13, 6, 15, 20, 14, 4, 14, 14, 14, 23, 24, 30, 13, 16, 8, 14, 16, 21, 29, 5, 32, 14, 23, 5, 31, 14,
+ 16, 12, 15, 7, 24, 5, 15, 6, 21, 28, 20, 7, 5, 8, 28, 32, 30, 21, 4, 4, 31, 8, 23, 14, 14, 31, 16, 21, 14, 23, 23, 24, 5, 28, 16, 32, 15, 8, 29, 30, 20, 22, 30, 13, 15, 32, 32, 23, 29, 7, 22, 8, 8, 32, 32, 28, 16, 13, 31, 15, 8, 28, 6, 28, 7, 8, 6, 22, 30, 21, 14, 14, 32, 13, 30, 21, 31, 28, 5, 4, 16, 16, 31, 29, 8, 5, 20, 5, 16, 21, 30, 7, 8, 5, 31, 29, 32, 7, 31, 22, 16, 24, 24, 5, 21, 13, 21, 8, 4, 12, 21, 21, 21, 7, 5, 24, 6, 8, 31, 7, 16, 16, 21, 28, 20, 15, 31, 24,
+ 21, 6, 5, 30, 16, 16, 20, 6, 8, 5, 29, 16, 5, 21, 28, 29, 4, 30, 8, 15, 20, 22, 12, 31, 31, 21, 21, 15, 15, 21, 4, 20, 31, 23, 28, 6, 22, 12, 7, 29, 23, 14, 21, 31, 21, 6, 7, 32, 5, 5, 5, 7, 32, 24, 31, 8, 6, 8, 32, 20, 14, 21, 7, 21, 8, 28, 12, 32, 6, 14, 8, 20, 24, 23, 8, 15, 16, 8, 30, 31, 21, 6, 30, 31, 5, 12, 13, 29, 32, 7, 13, 23, 24, 5, 5, 23, 20, 31, 7, 22, 29, 21, 24, 29, 32, 7, 12, 31, 23, 15, 7, 22, 20, 21, 32, 30, 31, 29, 16, 5, 23, 20, 4, 29, 15, 29, 5, 20,
+ 16, 23, 5, 15, 24, 28, 28, 22, 22, 15, 8, 29, 16, 29, 22, 13, 4, 20, 32, 5, 29, 5, 8, 13, 28, 32, 5, 23, 5, 5, 13, 24, 4, 12, 12, 6, 14, 13, 16, 8, 20, 20, 29, 8, 23, 14, 15, 23, 12, 20, 8, 14, 14, 16, 8, 6, 15, 5, 12, 7, 14, 12, 13, 6, 23, 12, 6, 5, 5, 8, 22, 28, 16, 6, 14, 15, 16, 14, 6, 14, 13, 14, 20, 12, 22, 12, 28, 6, 7, 24, 8, 22, 12, 12, 12, 6, 32, 5, 29, 8, 20, 21, 20, 7, 28, 23, 30, 5, 22, 15, 32, 4, 21, 20, 32, 22, 5, 23, 13, 23, 21, 6, 22, 14, 30, 20, 24, 32,
+ 32, 24, 30, 31, 22, 8, 30, 24, 14, 12, 24, 15, 29, 5, 28, 5, 28, 12, 5, 4, 13, 29, 16, 8, 29, 31, 24, 12, 21, 29, 24, 29, 7, 8, 32, 14, 31, 30, 32, 22, 7, 8, 7, 7, 22, 14, 23, 5, 22, 8, 14, 4, 22, 13, 22, 16, 4, 24, 32, 13, 12, 30, 7, 32, 15, 30, 24, 4, 28, 5, 21, 4, 29, 15, 31, 23, 6, 8, 31, 12, 12, 23, 29, 14, 12, 14, 29, 32, 5, 6, 4, 14, 29, 12, 28, 12, 13, 20, 7, 22, 6, 13, 8, 31, 28, 13, 8, 7, 28, 5, 30, 32, 12, 15, 14, 8, 6, 16, 20, 5, 13, 31, 24, 32, 15, 6, 14, 23,
+ 8, 32, 29, 14, 29, 20, 12, 28, 23, 12, 24, 22, 6, 28, 13, 22, 30, 31, 8, 21, 21, 24, 5, 15, 24, 15, 6, 21, 30, 6, 22, 21, 16, 4, 28, 7, 28, 15, 21, 12, 8, 4, 8, 29, 31, 14, 4, 6, 8, 20, 31, 31, 4, 24, 23, 29, 28, 31, 12, 30, 12, 4, 14, 6, 8, 21, 30, 16, 4, 4, 8, 32, 5, 30, 6, 6, 29, 16, 29, 21, 13, 24, 31, 6, 32, 8, 6, 5, 24, 7, 21, 22, 16, 21, 21, 15, 30, 7, 8, 6, 5, 20, 13, 5, 7, 20, 15, 6, 21, 23, 14, 32, 15, 8, 24, 31, 4, 30, 30, 20, 22, 20, 12, 14, 28, 7, 24, 24,
+ 29, 24, 15, 8, 24, 31, 31, 5, 6, 30, 24, 6, 32, 7, 8, 31, 30, 15, 21, 6, 23, 7, 15, 12, 20, 20, 22, 30, 13, 29, 32, 20, 31, 24, 32, 13, 28, 12, 29, 7, 22, 15, 24, 22, 28, 7, 31, 32, 32, 20, 28, 28, 8, 8, 32, 23, 31, 12, 29, 29, 8, 28, 20, 29, 15, 24, 22, 32, 14, 15, 5, 14, 30, 15, 20, 8, 29, 14, 6, 29, 20, 5, 6, 6, 15, 5, 14, 13, 23, 31, 20, 31, 24, 21, 16, 13, 12, 16, 32, 32, 32, 30, 23, 30, 6, 4, 15, 8, 21, 29, 24, 23, 7, 8, 5, 12, 29, 23, 15, 12, 24, 6, 30, 12, 7, 14, 22, 23,
+ 4, 4, 22, 8, 6, 4, 12, 13, 29, 20, 24, 5, 31, 8, 12, 4, 8, 4, 20, 31, 6, 6, 24, 21, 24, 28, 6, 21, 31, 24, 24, 31, 28, 30, 30, 16, 4, 31, 12, 24, 12, 12, 4, 12, 5, 7, 28, 30, 21, 30, 24, 20, 21, 14, 32, 23, 21, 5, 6, 5, 22, 31, 7, 30, 4, 8, 16, 16, 32, 20, 12, 5, 29, 7, 8, 23, 4, 16, 20, 8, 21, 13, 20, 23, 16, 29, 23, 8, 8, 15, 20, 23, 7, 29, 20, 16, 29, 8, 21, 12, 8, 20, 31, 22, 12, 7, 14, 16, 7, 22, 8, 28, 6, 8, 23, 6, 31, 13, 12, 23, 32, 5, 16, 15, 24, 8, 15, 28,
+ 29, 8, 31, 6, 23, 12, 21, 6, 6, 28, 15, 16, 21, 5, 16, 15, 24, 23, 4, 8, 14, 22, 24, 24, 20, 24, 28, 22, 29, 32, 29, 7, 32, 14, 29, 7, 21, 6, 21, 32, 29, 20, 4, 13, 23, 28, 7, 31, 12, 7, 6, 21, 7, 24, 28, 7, 20, 8, 29, 20, 6, 29, 6, 28, 4, 32, 12, 16, 8, 8, 6, 24, 28, 31, 23, 6, 6, 21, 32, 30, 6, 5, 7, 31, 32, 29, 21, 28, 7, 30, 15, 28, 12, 22, 21, 8, 6, 31, 15, 6, 32, 14, 8, 24, 14, 13, 24, 15, 28, 6, 23, 31, 4, 13, 21, 20, 16, 15, 28, 13, 20, 23, 21, 30, 6, 5, 7, 21,
+ 16, 30, 7, 32, 15, 22, 28, 28, 22, 6, 28, 12, 29, 30, 12, 32, 21, 20, 12, 8, 22, 28, 6, 23, 29, 14, 14, 12, 13, 6, 8, 31, 20, 28, 20, 4, 13, 12, 32, 28, 13, 15, 5, 6, 6, 29, 28, 24, 20, 28, 29, 30, 7, 16, 8, 31, 31, 20, 21, 31, 32, 15, 5, 28, 28, 28, 21, 5, 30, 30, 22, 4, 14, 22, 5, 5, 15, 15, 16, 32, 22, 16, 22, 28, 5, 30, 16, 24, 7, 7, 30, 20, 12, 16, 16, 22, 14, 31, 4, 13, 5, 21, 16, 13, 29, 23, 7, 28, 22, 30, 29, 24, 21, 30, 14, 13, 14, 8, 32, 20, 29, 32, 8, 30, 7, 16, 15, 29,
+ 30, 20, 4, 32, 23, 28, 22, 15, 32, 16, 13, 30, 23, 13, 31, 29, 29, 29, 22, 5, 15, 6, 29, 12, 22, 28, 30, 29, 30, 8, 8, 13, 29, 29, 21, 15, 6, 14, 8, 12, 32, 28, 28, 8, 16, 6, 13, 5, 7, 21, 14, 7, 21, 30, 14, 29, 8, 20, 14, 31, 23, 31, 24, 32, 28, 5, 32, 24, 23, 29, 23, 31, 20, 7, 12, 31, 12, 5, 14, 21, 23, 6, 12, 20, 8, 31, 13, 24, 31, 8, 32, 6, 14, 23, 28, 31, 21, 15, 6, 23, 24, 22, 20, 6, 15, 23, 28, 6, 30, 32, 32, 4, 20, 32, 20, 6, 21, 30, 22, 6, 4, 7, 31, 7, 12, 14, 4, 13,
+ 4, 20, 30, 28, 12, 28, 23, 4, 14, 24, 24, 22, 8, 6, 30, 13, 21, 15, 29, 12, 16, 24, 29, 20, 21, 21, 7, 28, 7, 21, 22, 29, 22, 4, 6, 15, 28, 5, 28, 8, 24, 31, 5, 13, 28, 4, 30, 5, 24, 31, 22, 20, 16, 24, 5, 29, 29, 32, 30, 21, 24, 31, 22, 30, 31, 20, 16, 28, 14, 30, 12, 5, 5, 4, 29, 6, 23, 13, 15, 22, 24, 24, 24, 5, 4, 4, 6, 7, 20, 12, 16, 21, 30, 28, 29, 15, 16, 32, 29, 5, 20, 32, 32, 32, 7, 15, 24, 5, 30, 13, 31, 15, 22, 12, 28, 7, 16, 8, 29, 5, 5, 8, 30, 29, 4, 21, 30, 24,
+ 30, 7, 20, 32, 5, 12, 6, 15, 22, 13, 7, 12, 13, 5, 29, 31, 14, 6, 7, 22, 15, 24, 29, 12, 4, 31, 6, 32, 14, 31, 15, 30, 5, 21, 20, 7, 13, 16, 5, 22, 15, 13, 5, 5, 6, 21, 13, 30, 21, 16, 6, 29, 15, 5, 13, 16, 16, 30, 5, 15, 31, 14, 31, 7, 22, 24, 28, 5, 5, 14, 30, 15, 22, 6, 32, 24, 31, 28, 23, 28, 23, 6, 30, 4, 14, 31, 31, 30, 31, 28, 28, 24, 4, 28, 23, 12, 24, 32, 21, 32, 20, 14, 24, 6, 24, 5, 32, 31, 28, 4, 22, 20, 32, 5, 5, 14, 28, 5, 15, 28, 31, 32, 5, 5, 20, 14, 29, 12,
+ 14, 20, 28, 6, 23, 7, 22, 20, 22, 12, 21, 5, 29, 32, 12, 31, 31, 21, 28, 6, 16, 12, 24, 16, 15, 22, 4, 4, 29, 28, 7, 8, 23, 5, 6, 22, 6, 8, 8, 31, 8, 29, 5, 31, 4, 23, 30, 21, 8, 12, 16, 30, 15, 5, 24, 12, 14, 23, 8, 6, 32, 12, 4, 16, 4, 31, 20, 21, 7, 31, 8, 16, 21, 5, 32, 14, 28, 31, 28, 5, 6, 8, 23, 7, 4, 21, 31, 28, 14, 20, 20, 4, 8, 16, 28, 15, 15, 28, 6, 31, 22, 8, 14, 31, 7, 32, 20, 32, 31, 30, 6, 22, 12, 32, 22, 5, 23, 12, 14, 30, 31, 30, 5, 22, 8, 15, 14, 13,
+ 5, 22, 5, 28, 20, 15, 6, 24, 32, 31, 32, 32, 15, 31, 23, 29, 32, 24, 32, 28, 16, 12, 32, 14, 23, 20, 29, 22, 7, 13, 4, 24, 30, 24, 22, 5, 20, 30, 22, 4, 15, 28, 6, 14, 31, 31, 29, 28, 16, 22, 23, 12, 15, 13, 28, 20, 15, 15, 8, 21, 12, 24, 32, 16, 22, 22, 5, 32, 8, 29, 28, 30, 28, 6, 7, 12, 8, 21, 13, 23, 24, 30, 31, 24, 31, 15, 20, 31, 24, 24, 20, 21, 29, 8, 21, 12, 7, 24, 15, 23, 12, 29, 23, 22, 29, 8, 16, 14, 13, 22, 13, 5, 6, 20, 16, 32, 30, 13, 22, 5, 31, 14, 7, 32, 28, 6, 28, 20,
+ 20, 23, 30, 15, 5, 32, 5, 6, 31, 32, 23, 31, 4, 22, 13, 32, 28, 30, 29, 31, 28, 20, 12, 20, 13, 24, 21, 13, 22, 16, 14, 32, 8, 31, 28, 7, 28, 8, 12, 22, 31, 15, 23, 24, 13, 5, 32, 29, 4, 29, 32, 28, 23, 29, 23, 12, 31, 16, 8, 30, 6, 28, 23, 13, 21, 5, 16, 32, 12, 14, 12, 32, 23, 14, 28, 8, 31, 8, 32, 5, 30, 15, 6, 28, 14, 28, 23, 29, 13, 24, 30, 8, 12, 29, 14, 29, 28, 29, 8, 24, 7, 5, 32, 24, 8, 16, 29, 12, 31, 15, 30, 20, 7, 6, 13, 4, 13, 23, 8, 16, 20, 4, 7, 31, 12, 16, 16, 15,
+ 29, 30, 16, 31, 5, 14, 12, 5, 20, 31, 23, 20, 14, 14, 31, 12, 21, 21, 24, 21, 23, 29, 6, 5, 5, 4, 13, 12, 20, 8, 32, 24, 6, 15, 16, 5, 21, 21, 24, 28, 13, 28, 7, 6, 6, 4, 15, 31, 22, 8, 5, 30, 4, 22, 15, 30, 21, 28, 20, 5, 16, 22, 32, 7, 7, 12, 28, 23, 32, 4, 13, 5, 32, 24, 32, 4, 13, 6, 20, 30, 32, 28, 16, 7, 28, 23, 8, 22, 21, 20, 13, 7, 32, 14, 30, 13, 4, 6, 32, 28, 24, 30, 32, 13, 23, 28, 20, 5, 32, 22, 23, 31, 29, 29, 32, 30, 28, 24, 15, 24, 14, 24, 29, 28, 8, 28, 22, 30,
+ 20, 16, 7, 6, 6, 22, 20, 28, 5, 22, 5, 31, 20, 6, 8, 12, 23, 21, 8, 4, 29, 21, 30, 31, 31, 24, 21, 32, 32, 22, 12, 15, 14, 6, 22, 8, 32, 4, 5, 5, 24, 5, 29, 30, 29, 29, 5, 8, 23, 29, 24, 5, 7, 12, 31, 24, 22, 15, 8, 5, 28, 5, 31, 13, 29, 23, 22, 29, 28, 14, 6, 14, 21, 32, 14, 29, 4, 14, 32, 23, 15, 28, 32, 4, 20, 6, 6, 29, 30, 28, 28, 5, 28, 21, 14, 14, 30, 13, 24, 4, 20, 21, 31, 30, 32, 4, 15, 16, 30, 29, 7, 14, 14, 13, 30, 16, 32, 22, 21, 15, 21, 8, 14, 20, 32, 7, 12, 22,
+ 31, 32, 14, 31, 6, 23, 31, 24, 30, 21, 28, 8, 12, 12, 4, 28, 12, 16, 12, 29, 31, 21, 23, 6, 23, 6, 28, 20, 13, 7, 31, 31, 12, 14, 29, 14, 12, 6, 5, 12, 13, 20, 20, 21, 20, 14, 23, 24, 6, 12, 5, 7, 28, 20, 12, 31, 22, 12, 21, 5, 8, 5, 15, 24, 16, 5, 14, 24, 14, 24, 29, 32, 22, 23, 15, 32, 4, 21, 4, 5, 29, 12, 30, 13, 7, 31, 12, 22, 31, 8, 32, 31, 7, 7, 24, 4, 12, 6, 29, 24, 6, 31, 30, 7, 4, 20, 30, 7, 6, 23, 21, 28, 16, 4, 20, 21, 14, 8, 23, 31, 30, 22, 21, 12, 4, 28, 4, 5,
+ 15, 28, 32, 12, 32, 15, 31, 28, 7, 30, 4, 29, 15, 20, 16, 22, 12, 22, 14, 31, 28, 21, 15, 22, 23, 7, 12, 21, 24, 22, 15, 12, 28, 16, 15, 31, 32, 16, 13, 29, 31, 13, 30, 12, 32, 15, 30, 16, 15, 24, 29, 8, 8, 21, 30, 13, 16, 5, 4, 5, 30, 8, 6, 8, 29, 29, 7, 30, 6, 31, 15, 4, 6, 5, 21, 4, 8, 7, 6, 12, 8, 8, 21, 20, 30, 32, 14, 5, 13, 32, 14, 20, 13, 6, 29, 21, 20, 22, 24, 4, 31, 12, 4, 4, 4, 16, 13, 16, 12, 15, 20, 5, 31, 21, 20, 32, 22, 23, 23, 12, 32, 31, 8, 22, 13, 14, 30, 32,
+ 31, 5, 4, 4, 20, 14, 4, 16, 12, 7, 28, 14, 31, 21, 12, 21, 22, 8, 24, 12, 5, 23, 7, 20, 21, 24, 4, 31, 4, 28, 30, 15, 31, 20, 31, 14, 22, 21, 29, 8, 32, 32, 21, 14, 4, 15, 15, 4, 16, 4, 16, 12, 22, 16, 5, 16, 8, 4, 32, 32, 21, 15, 15, 4, 28, 16, 6, 31, 21, 21, 28, 32, 30, 31, 28, 15, 29, 6, 24, 20, 20, 15, 22, 29, 29, 23, 23, 4, 28, 6, 6, 13, 20, 16, 6, 28, 14, 31, 16, 16, 29, 24, 14, 4, 12, 23, 30, 7, 24, 12, 30, 7, 12, 21, 31, 4, 23, 8, 21, 22, 15, 24, 6, 24, 21, 21, 16, 22,
+ 6, 31, 24, 8, 16, 16, 29, 21, 12, 12, 30, 31, 21, 28, 14, 6, 29, 8, 21, 20, 15, 29, 15, 5, 28, 6, 6, 13, 14, 7, 28, 16, 29, 6, 20, 28, 14, 21, 7, 21, 23, 22, 6, 12, 32, 8, 8, 23, 31, 12, 5, 7, 22, 28, 31, 30, 7, 15, 32, 31, 12, 24, 13, 6, 21, 6, 24, 15, 22, 22, 28, 8, 12, 32, 4, 22, 12, 30, 31, 28, 20, 8, 5, 13, 16, 32, 6, 16, 12, 6, 13, 16, 14, 24, 8, 32, 4, 12, 7, 8, 28, 15, 20, 20, 31, 24, 5, 14, 7, 22, 16, 6, 15, 32, 4, 5, 29, 7, 16, 21, 5, 7, 22, 7, 6, 5, 32, 16,
+ 21, 28, 6, 5, 23, 21, 5, 5, 32, 22, 15, 28, 12, 15, 28, 16, 13, 32, 12, 21, 20, 12, 4, 21, 14, 32, 24, 12, 29, 6, 23, 22, 8, 7, 30, 21, 6, 20, 20, 21, 6, 7, 16, 31, 12, 5, 28, 14, 7, 7, 5, 22, 30, 24, 16, 15, 8, 12, 24, 15, 5, 15, 30, 16, 14, 7, 12, 7, 12, 15, 23, 21, 30, 22, 24, 5, 29, 8, 13, 32, 16, 16, 6, 29, 32, 23, 32, 7, 16, 15, 5, 8, 5, 7, 23, 6, 23, 14, 14, 14, 4, 5, 29, 23, 6, 7, 20, 7, 16, 6, 22, 13, 28, 20, 14, 6, 32, 15, 14, 21, 32, 30, 7, 6, 24, 8, 8, 24,
+ 8, 15, 23, 20, 14, 21, 16, 32, 16, 32, 16, 28, 31, 23, 4, 23, 15, 23, 14, 16, 30, 20, 12, 24, 16, 13, 5, 8, 16, 15, 15, 5, 22, 30, 21, 30, 5, 32, 23, 16, 21, 7, 6, 30, 4, 5, 23, 12, 16, 23, 23, 7, 23, 15, 15, 22, 14, 16, 14, 4, 20, 12, 6, 32, 30, 20, 15, 13, 4, 15, 30, 16, 31, 8, 21, 7, 5, 29, 13, 20, 13, 13, 7, 14, 7, 6, 20, 4, 21, 16, 14, 15, 13, 30, 28, 4, 29, 8, 16, 5, 31, 13, 31, 16, 20, 32, 16, 31, 24, 13, 14, 20, 5, 29, 32, 4, 21, 30, 14, 4, 28, 20, 14, 32, 4, 13, 5, 4,
+ 14, 30, 13, 20, 4, 22, 4, 23, 15, 8, 21, 31, 21, 6, 24, 22, 16, 6, 12, 7, 14, 15, 30, 29, 5, 6, 22, 22, 13, 22, 6, 22, 5, 31, 22, 20, 23, 6, 16, 24, 30, 24, 13, 12, 20, 31, 32, 31, 14, 23, 28, 16, 15, 13, 30, 4, 22, 6, 30, 15, 28, 24, 14, 4, 12, 22, 5, 32, 22, 20, 8, 7, 21, 5, 7, 15, 24, 31, 22, 14, 14, 4, 13, 32, 5, 31, 7, 20, 5, 15, 7, 24, 29, 4, 8, 32, 4, 13, 28, 5, 28, 6, 16, 16, 28, 5, 32, 6, 29, 6, 6, 6, 13, 31, 16, 14, 14, 16, 16, 32, 31, 29, 8, 23, 16, 7, 4, 15,
+ 31, 31, 4, 12, 5, 16, 29, 14, 23, 7, 24, 15, 16, 21, 22, 32, 20, 5, 16, 8, 4, 30, 16, 20, 22, 20, 5, 28, 12, 29, 7, 12, 21, 29, 16, 22, 15, 29, 20, 4, 23, 22, 31, 31, 24, 21, 20, 6, 30, 23, 12, 13, 28, 24, 8, 32, 7, 28, 21, 15, 12, 30, 20, 29, 28, 21, 24, 24, 5, 22, 12, 23, 4, 30, 14, 4, 20, 22, 8, 13, 30, 32, 28, 21, 7, 16, 12, 15, 4, 23, 31, 29, 22, 15, 20, 15, 8, 31, 31, 24, 16, 4, 13, 30, 6, 12, 31, 15, 20, 14, 8, 32, 31, 32, 31, 32, 12, 24, 32, 15, 24, 14, 22, 31, 15, 12, 13, 7,
+ 7, 15, 29, 8, 13, 14, 15, 28, 13, 13, 32, 8, 6, 31, 15, 5, 21, 13, 12, 15, 13, 8, 30, 13, 5, 21, 16, 20, 6, 6, 31, 13, 5, 30, 4, 6, 24, 12, 16, 13, 6, 29, 5, 24, 8, 14, 15, 28, 15, 23, 8, 16, 13, 31, 23, 22, 16, 28, 28, 20, 13, 7, 23, 16, 21, 21, 13, 31, 6, 14, 32, 24, 30, 7, 13, 32, 7, 15, 20, 31, 7, 14, 30, 32, 14, 24, 6, 6, 28, 4, 21, 32, 20, 5, 5, 12, 6, 12, 23, 12, 4, 28, 14, 6, 14, 32, 24, 28, 20, 8, 21, 29, 28, 8, 12, 31, 4, 24, 32, 24, 20, 13, 13, 5, 15, 30, 20, 15,
+ 24, 8, 28, 12, 28, 13, 15, 31, 12, 23, 6, 5, 23, 5, 30, 28, 12, 12, 22, 7, 16, 12, 23, 15, 4, 14, 24, 32, 7, 24, 21, 32, 22, 14, 5, 22, 22, 8, 32, 24, 32, 4, 12, 21, 12, 6, 23, 32, 22, 30, 24, 16, 5, 32, 24, 24, 15, 14, 21, 4, 23, 16, 22, 8, 13, 20, 32, 15, 15, 30, 30, 6, 24, 20, 24, 12, 7, 5, 14, 28, 16, 5, 28, 12, 28, 13, 20, 7, 16, 14, 6, 20, 4, 7, 5, 4, 7, 32, 22, 5, 30, 14, 30, 31, 31, 30, 13, 24, 20, 32, 20, 24, 13, 13, 5, 14, 4, 21, 12, 12, 4, 7, 32, 16, 6, 16, 8, 29,
+ 31, 5, 6, 8, 28, 23, 12, 21, 12, 30, 31, 32, 22, 24, 14, 14, 28, 6, 32, 12, 14, 20, 13, 20, 22, 31, 32, 20, 5, 6, 23, 8, 29, 5, 12, 5, 22, 22, 16, 32, 5, 4, 32, 12, 15, 31, 28, 28, 30, 29, 7, 21, 12, 29, 5, 32, 6, 20, 14, 29, 5, 20, 31, 29, 31, 24, 8, 13, 8, 15, 21, 20, 5, 21, 21, 28, 24, 29, 4, 16, 30, 31, 13, 30, 28, 13, 30, 30, 23, 15, 23, 22, 21, 15, 32, 20, 23, 7, 30, 12, 29, 32, 29, 24, 32, 20, 12, 29, 4, 20, 7, 21, 22, 24, 30, 29, 28, 22, 28, 15, 31, 24, 16, 14, 31, 29, 31, 5,
+ 7, 16, 23, 23, 22, 4, 4, 20, 23, 21, 22, 13, 13, 8, 12, 7, 29, 7, 22, 15, 29, 28, 14, 22, 22, 20, 23, 23, 13, 24, 15, 21, 15, 13, 8, 29, 29, 29, 14, 6, 15, 12, 8, 13, 6, 6, 20, 16, 20, 23, 7, 22, 32, 14, 28, 23, 7, 28, 28, 23, 28, 22, 30, 22, 32, 31, 4, 14, 16, 15, 16, 5, 8, 30, 7, 30, 13, 22, 20, 28, 21, 12, 16, 7, 28, 32, 7, 23, 29, 7, 21, 22, 23, 20, 14, 6, 13, 20, 7, 12, 7, 23, 4, 28, 16, 20, 7, 31, 30, 22, 20, 21, 12, 5, 16, 15, 5, 21, 16, 8, 14, 4, 23, 22, 28, 5, 24, 20,
+ 4, 23, 13, 5, 12, 8, 13, 4, 21, 29, 8, 8, 20, 21, 21, 32, 24, 14, 12, 21, 28, 8, 8, 15, 8, 15, 29, 4, 23, 29, 12, 8, 13, 32, 20, 29, 31, 20, 20, 21, 15, 8, 14, 14, 31, 30, 23, 30, 32, 29, 4, 22, 14, 16, 24, 20, 30, 22, 6, 23, 16, 29, 5, 12, 16, 20, 20, 23, 32, 32, 20, 31, 28, 28, 28, 24, 6, 28, 5, 28, 22, 7, 30, 21, 7, 8, 24, 16, 29, 14, 32, 8, 6, 14, 7, 21, 14, 6, 31, 28, 6, 30, 31, 24, 22, 5, 30, 31, 7, 14, 22, 8, 22, 12, 12, 24, 16, 7, 12, 5, 16, 31, 6, 24, 13, 24, 8, 12,
+ 16, 31, 30, 5, 6, 16, 7, 24, 16, 7, 8, 8, 12, 23, 22, 30, 12, 5, 21, 16, 30, 14, 5, 16, 6, 30, 4, 31, 7, 12, 23, 20, 15, 20, 30, 23, 22, 32, 23, 8, 29, 8, 32, 28, 4, 16, 31, 32, 7, 20, 12, 32, 28, 12, 24, 8, 13, 14, 14, 23, 4, 8, 30, 7, 14, 24, 15, 21, 30, 32, 21, 20, 14, 15, 14, 20, 12, 21, 4, 30, 4, 7, 29, 20, 15, 28, 28, 13, 20, 29, 24, 4, 21, 21, 6, 21, 30, 21, 31, 32, 5, 12, 8, 22, 21, 28, 8, 5, 32, 16, 13, 12, 12, 21, 31, 4, 24, 31, 30, 16, 12, 21, 32, 15, 29, 24, 22, 22,
+ 7, 22, 28, 32, 21, 20, 22, 14, 8, 30, 21, 29, 14, 31, 7, 21, 21, 5, 13, 12, 7, 23, 23, 15, 32, 7, 8, 15, 6, 21, 23, 5, 14, 22, 8, 28, 22, 23, 32, 20, 13, 30, 14, 8, 16, 6, 20, 29, 31, 4, 23, 5, 31, 30, 5, 5, 29, 30, 13, 14, 24, 14, 24, 6, 4, 7, 28, 6, 15, 5, 13, 12, 16, 13, 22, 13, 23, 21, 6, 31, 6, 4, 21, 15, 28, 15, 4, 8, 14, 16, 7, 31, 32, 24, 31, 23, 28, 29, 7, 30, 31, 23, 13, 29, 13, 32, 31, 4, 22, 28, 29, 14, 21, 30, 13, 24, 32, 31, 22, 15, 8, 12, 30, 12, 30, 31, 4, 31,
+ 32, 24, 12, 4, 31, 13, 32, 7, 28, 20, 22, 16, 16, 14, 8, 20, 4, 30, 12, 20, 20, 31, 24, 12, 21, 6, 21, 20, 4, 31, 22, 5, 28, 21, 7, 15, 13, 23, 8, 8, 29, 12, 22, 24, 29, 13, 32, 23, 14, 31, 32, 21, 5, 31, 15, 29, 20, 12, 13, 14, 29, 15, 21, 7, 7, 14, 30, 14, 20, 31, 16, 32, 30, 21, 31, 6, 8, 4, 22, 6, 22, 15, 21, 32, 13, 28, 29, 13, 8, 22, 24, 29, 21, 21, 20, 20, 21, 24, 30, 13, 32, 4, 24, 7, 13, 31, 30, 7, 28, 8, 31, 8, 29, 8, 30, 4, 29, 23, 14, 6, 6, 31, 4, 29, 15, 4, 30, 30,
+ 16, 8, 23, 15, 23, 6, 6, 28, 5, 20, 30, 24, 32, 22, 4, 30, 22, 5, 21, 13, 13, 20, 12, 30, 8, 12, 21, 31, 24, 6, 7, 5, 23, 6, 16, 12, 28, 24, 31, 24, 12, 16, 12, 4, 6, 30, 13, 6, 29, 14, 23, 4, 13, 23, 12, 21, 31, 23, 23, 24, 31, 12, 13, 24, 16, 20, 13, 29, 12, 8, 24, 28, 15, 24, 5, 30, 20, 23, 13, 16, 30, 5, 21, 6, 13, 23, 7, 32, 15, 16, 22, 30, 5, 30, 5, 32, 20, 32, 12, 29, 16, 20, 23, 15, 15, 16, 14, 29, 8, 13, 6, 12, 4, 6, 5, 12, 32, 28, 8, 12, 8, 4, 12, 4, 16, 7, 4, 13,
+ 15, 12, 20, 30, 21, 12, 8, 32, 22, 21, 31, 24, 23, 23, 23, 28, 32, 5, 30, 15, 13, 6, 32, 24, 5, 23, 5, 29, 5, 6, 6, 14, 7, 8, 24, 16, 8, 14, 30, 32, 7, 29, 12, 31, 13, 5, 29, 22, 6, 24, 4, 15, 32, 23, 12, 15, 31, 22, 12, 32, 32, 13, 8, 12, 28, 5, 23, 8, 24, 16, 8, 13, 6, 23, 23, 23, 30, 13, 8, 30, 21, 29, 8, 4, 21, 31, 12, 32, 20, 28, 28, 23, 12, 31, 7, 31, 23, 5, 32, 22, 7, 6, 4, 6, 30, 13, 30, 21, 15, 24, 6, 23, 22, 21, 24, 4, 16, 14, 31, 8, 16, 12, 14, 23, 29, 32, 29, 32,
+ 31, 20, 14, 5, 6, 7, 8, 7, 8, 32, 28, 14, 21, 16, 7, 23, 13, 29, 20, 24, 4, 15, 16, 8, 14, 14, 12, 14, 13, 31, 16, 13, 24, 29, 24, 32, 23, 13, 6, 4, 22, 29, 4, 20, 29, 15, 7, 8, 12, 22, 14, 21, 24, 4, 8, 29, 24, 29, 20, 30, 8, 13, 24, 12, 24, 13, 30, 12, 22, 14, 16, 32, 32, 13, 15, 15, 8, 20, 16, 32, 23, 22, 13, 22, 24, 29, 13, 22, 22, 24, 13, 30, 23, 4, 6, 6, 21, 6, 8, 6, 4, 31, 5, 31, 21, 15, 30, 28, 29, 23, 32, 7, 7, 14, 14, 12, 31, 31, 4, 31, 7, 7, 8, 12, 23, 31, 20, 23,
+ 24, 16, 13, 14, 20, 28, 21, 14, 15, 7, 14, 24, 22, 5, 29, 29, 22, 4, 22, 15, 24, 13, 32, 16, 5, 24, 21, 20, 12, 14, 15, 31, 7, 23, 16, 15, 20, 28, 14, 21, 5, 13, 8, 22, 28, 14, 7, 12, 7, 13, 28, 21, 6, 24, 4, 24, 20, 23, 6, 22, 6, 6, 4, 29, 15, 8, 13, 20, 20, 31, 7, 22, 24, 12, 7, 22, 21, 24, 7, 5, 16, 23, 30, 15, 15, 24, 8, 6, 13, 22, 7, 4, 22, 6, 15, 29, 28, 23, 28, 21, 20, 16, 24, 4, 23, 23, 20, 28, 20, 7, 32, 4, 30, 14, 28, 28, 29, 31, 12, 21, 5, 32, 16, 20, 15, 23, 6, 21,
+ 23, 7, 32, 24, 24, 8, 12, 4, 14, 13, 8, 20, 4, 15, 28, 8, 23, 30, 24, 7, 31, 4, 32, 28, 32, 32, 13, 12, 13, 31, 22, 15, 14, 32, 28, 14, 28, 23, 20, 8, 32, 15, 8, 15, 13, 23, 24, 12, 5, 30, 14, 13, 16, 29, 31, 32, 12, 8, 21, 4, 12, 14, 5, 23, 16, 23, 24, 15, 4, 22, 30, 20, 6, 12, 7, 20, 23, 13, 13, 5, 4, 32, 7, 8, 15, 20, 6, 30, 23, 14, 5, 8, 15, 14, 6, 8, 31, 20, 22, 8, 28, 29, 23, 15, 31, 14, 32, 16, 5, 32, 23, 22, 31, 13, 12, 23, 12, 29, 8, 7, 21, 4, 21, 14, 7, 21, 16, 24,
+ 32, 24, 31, 20, 24, 8, 20, 31, 21, 8, 6, 7, 32, 20, 4, 13, 13, 16, 20, 29, 22, 12, 16, 20, 12, 29, 23, 8, 16, 32, 23, 23, 29, 5, 5, 21, 28, 31, 30, 21, 28, 13, 32, 30, 5, 16, 13, 5, 31, 15, 20, 8, 12, 4, 30, 6, 14, 8, 14, 15, 5, 22, 16, 24, 29, 24, 6, 14, 30, 8, 4, 32, 6, 4, 7, 4, 4, 6, 5, 21, 16, 13, 8, 6, 16, 23, 29, 13, 20, 31, 24, 31, 6, 32, 22, 13, 15, 21, 5, 32, 14, 4, 32, 24, 8, 13, 4, 14, 7, 7, 23, 32, 7, 20, 4, 30, 29, 32, 6, 12, 32, 13, 5, 22, 23, 28, 20, 29,
+ 32, 12, 15, 30, 5, 5, 16, 14, 6, 7, 13, 4, 7, 7, 4, 14, 5, 24, 24, 13, 13, 6, 4, 4, 13, 29, 32, 31, 30, 7, 21, 7, 23, 12, 20, 5, 13, 31, 7, 14, 22, 23, 30, 30, 29, 4, 23, 5, 22, 4, 31, 20, 13, 30, 23, 31, 20, 29, 24, 23, 6, 30, 13, 16, 14, 24, 24, 30, 28, 20, 6, 28, 24, 13, 20, 31, 4, 22, 16, 20, 7, 14, 15, 23, 32, 5, 21, 24, 15, 31, 8, 7, 6, 28, 15, 21, 22, 6, 23, 28, 13, 13, 22, 4, 23, 16, 30, 6, 29, 12, 31, 7, 14, 29, 5, 24, 22, 8, 30, 22, 7, 32, 15, 5, 13, 24, 31, 16,
+ 6, 14, 20, 15, 15, 12, 16, 13, 4, 14, 12, 12, 28, 12, 31, 28, 22, 4, 32, 15, 28, 28, 29, 5, 15, 14, 31, 21, 28, 23, 30, 31, 8, 15, 13, 16, 23, 30, 23, 28, 23, 4, 4, 28, 23, 14, 28, 21, 6, 4, 13, 6, 23, 29, 28, 4, 16, 32, 24, 13, 7, 13, 13, 23, 4, 21, 21, 28, 7, 29, 29, 14, 16, 30, 13, 28, 31, 6, 20, 5, 15, 29, 7, 7, 30, 28, 7, 24, 6, 28, 15, 24, 22, 32, 13, 32, 14, 28, 32, 5, 4, 16, 15, 15, 4, 22, 32, 28, 29, 7, 24, 20, 15, 28, 4, 31, 20, 12, 30, 31, 13, 15, 14, 28, 7, 31, 29, 4,
+ 32, 21, 16, 24, 28, 6, 20, 29, 22, 29, 5, 23, 16, 6, 8, 23, 14, 6, 31, 13, 20, 31, 20, 20, 30, 4, 5, 23, 29, 8, 6, 28, 4, 6, 32, 20, 16, 13, 8, 23, 30, 31, 12, 5, 32, 15, 5, 6, 29, 24, 20, 20, 32, 16, 16, 22, 13, 30, 24, 30, 20, 14, 13, 30, 6, 28, 32, 24, 16, 14, 14, 16, 23, 16, 22, 13, 28, 22, 20, 29, 24, 32, 8, 32, 16, 4, 15, 7, 6, 29, 8, 15, 15, 24, 4, 30, 8, 15, 23, 14, 14, 14, 6, 20, 7, 31, 28, 32, 32, 6, 30, 7, 12, 22, 4, 4, 7, 22, 7, 8, 29, 24, 12, 24, 29, 8, 5, 6,
+ 12, 20, 4, 8, 12, 24, 12, 4, 31, 8, 12, 7, 20, 29, 16, 30, 24, 8, 6, 20, 28, 15, 22, 29, 8, 12, 8, 14, 29, 16, 20, 4, 21, 6, 29, 24, 13, 14, 30, 13, 4, 29, 30, 32, 4, 13, 21, 7, 13, 7, 22, 12, 5, 5, 29, 16, 5, 14, 22, 7, 14, 16, 15, 20, 13, 14, 23, 21, 23, 29, 6, 28, 8, 30, 21, 23, 20, 8, 22, 7, 15, 13, 21, 32, 31, 22, 30, 13, 5, 22, 23, 20, 7, 7, 12, 14, 7, 24, 21, 4, 14, 20, 24, 22, 30, 6, 15, 6, 8, 31, 12, 5, 6, 29, 5, 8, 7, 20, 13, 31, 4, 28, 23, 23, 32, 24, 29, 23,
+ 8, 28, 28, 30, 7, 13, 16, 28, 22, 23, 24, 31, 20, 6, 16, 24, 20, 31, 16, 24, 4, 32, 8, 22, 22, 6, 14, 21, 20, 7, 24, 22, 6, 8, 30, 30, 30, 6, 31, 13, 13, 24, 6, 30, 12, 20, 4, 16, 31, 12, 4, 20, 14, 24, 32, 5, 28, 32, 14, 20, 20, 28, 16, 4, 32, 31, 4, 20, 28, 13, 12, 8, 21, 29, 7, 20, 7, 12, 5, 20, 31, 13, 30, 7, 22, 4, 7, 15, 30, 15, 32, 24, 15, 6, 30, 21, 23, 14, 24, 32, 16, 31, 20, 30, 29, 32, 4, 20, 22, 30, 20, 23, 12, 15, 30, 29, 28, 22, 21, 8, 4, 29, 28, 30, 13, 23, 30, 23,
+ 32, 23, 23, 28, 8, 15, 6, 32, 29, 4, 7, 32, 7, 22, 4, 24, 6, 29, 4, 4, 5, 24, 14, 7, 15, 16, 4, 22, 8, 15, 13, 21, 15, 4, 24, 14, 5, 14, 22, 13, 6, 21, 8, 22, 7, 6, 21, 21, 12, 24, 31, 12, 31, 15, 20, 22, 13, 6, 31, 24, 32, 31, 20, 4, 7, 13, 8, 21, 8, 22, 30, 8, 16, 30, 21, 12, 15, 21, 29, 4, 22, 24, 8, 7, 14, 7, 32, 23, 8, 31, 16, 21, 12, 24, 24, 20, 5, 32, 28, 24, 28, 31, 20, 16, 5, 31, 23, 20, 21, 15, 5, 12, 28, 29, 7, 16, 29, 7, 30, 12, 7, 20, 20, 21, 14, 29, 32, 23],
+ "height":128,
+ "id":1,
+ "locked":true,
+ "name":"Ground",
+ "opacity":1,
+ "type":"tilelayer",
+ "visible":true,
+ "width":128,
+ "x":0,
+ "y":0
+ },
{
- "columns": 16,
- "firstgid": 1,
- "image": "../narezano_in_majhno/krvava_zetev_sprites/grass_soil_tileset_1766171156780_obdelan.png",
- "imageheight": 512,
- "imagewidth": 512,
- "margin": 0,
- "name": "01_Ground",
- "spacing": 0,
- "tilecount": 256,
- "tileheight": 32,
- "tilewidth": 32
- }
- ],
- "tilewidth": 32,
- "type": "map",
- "version": "1.10",
- "width": 8
+ "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, 80, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 82, 83, 84, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 82, 83, 84, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 82, 83, 84, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, 80, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 82, 83, 84, 85, 86, 87, 88, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 82, 83, 84, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, 103, 104, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 117, 118, 119, 120, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 126, 127, 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 82, 83, 84, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, 70, 71, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, 0, 0, 0, 0, 0, 0, 0, 73, 74, 75, 76, 77, 78, 79, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 81, 82, 83, 84, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, 0, 89, 90, 91, 92, 93, 94, 95, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, 0, 0, 0, 0, 0, 97, 98, 99, 100, 101, 102, 103, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 105, 106, 107, 108, 109, 110, 111, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, 0, 0, 113, 114, 115, 116, 117, 118, 119, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 122, 123, 124, 125, 126, 127, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 130, 131, 132, 133, 134, 135, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":128,
+ "id":2,
+ "name":"Objects",
+ "opacity":1,
+ "type":"tilelayer",
+ "visible":true,
+ "width":128,
+ "x":0,
+ "y":0
+ },
+ {
+ "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 174, 175, 176, 177, 178, 179, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 206, 207, 208, 209, 210, 211, 212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 238, 239, 240, 241, 242, 243, 244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 269, 270, 271, 272, 273, 274, 275, 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 301, 302, 303, 304, 305, 306, 307, 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 365, 366, 367, 368, 369, 370, 371, 372, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 397, 398, 399, 400, 401, 402, 403, 404, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 429, 430, 431, 432, 433, 434, 435, 436, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 461, 462, 463, 464, 465, 466, 467, 468, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 493, 494, 495, 496, 497, 498, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 525, 526, 527, 528, 529, 530, 531, 532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 557, 558, 559, 560, 561, 562, 563, 564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 589, 590, 591, 592, 593, 594, 595, 596, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ "height":128,
+ "id":3,
+ "locked":true,
+ "name":"Player",
+ "opacity":1,
+ "type":"tilelayer",
+ "visible":true,
+ "width":128,
+ "x":0,
+ "y":0
+ }],
+ "nextlayerid":5,
+ "nextobjectid":1,
+ "orientation":"orthogonal",
+ "renderorder":"right-down",
+ "tiledversion":"1.11.2",
+ "tileheight":32,
+ "tilesets":[
+ {
+ "columns":8,
+ "firstgid":1,
+ "image":"..\/ground_tiles.png",
+ "imageheight":256,
+ "imagewidth":256,
+ "margin":0,
+ "name":"ground_tiles",
+ "spacing":0,
+ "tilecount":64,
+ "tileheight":32,
+ "tilewidth":32
+ },
+ {
+ "columns":8,
+ "firstgid":65,
+ "image":"..\/tree_blue.png",
+ "imageheight":299,
+ "imagewidth":260,
+ "margin":0,
+ "name":"tree_blue",
+ "spacing":0,
+ "tilecount":72,
+ "tileheight":32,
+ "tilewidth":32
+ },
+ {
+ "columns":32,
+ "firstgid":137,
+ "image":"..\/tilesets\/kai_character.png",
+ "imageheight":1024,
+ "imagewidth":1024,
+ "margin":0,
+ "name":"kai_character",
+ "spacing":0,
+ "tilecount":1024,
+ "tileheight":32,
+ "tilewidth":32
+ }],
+ "tilewidth":32,
+ "type":"map",
+ "version":"1.11",
+ "width":128
}
\ No newline at end of file
diff --git a/assets/maps/kai_character.tsx b/assets/maps/kai_character.tsx
new file mode 100644
index 000000000..c294450bb
--- /dev/null
+++ b/assets/maps/kai_character.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/maps/tree_blue.tsx b/assets/maps/tree_blue.tsx
new file mode 100644
index 000000000..018a6d100
--- /dev/null
+++ b/assets/maps/tree_blue.tsx
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/novafarma.tiled-session b/novafarma.tiled-session
index 8d46a8339..c6a8d5c4b 100644
--- a/novafarma.tiled-session
+++ b/novafarma.tiled-session
@@ -1,9 +1,13 @@
{
- "activeFile": "assets/maps/NovaFarma.tmx",
+ "activeFile": "assets/maps/NovaFarma.json",
"expandedProjectPaths": [
"assets/maps"
],
+ "file.lastUsedOpenFilter": "All Files (*)",
"fileStates": {
+ "": {
+ "scaleInDock": 1
+ },
"assets/maps/01_Ground.tsx": {
"scaleInDock": 1
},
@@ -19,21 +23,54 @@
"assets/maps/05_Tools_Items.tsx": {
"scaleInDock": 1
},
+ "assets/maps/NovaFarma.json": {
+ "scale": 0.12779541015624998,
+ "selectedLayer": 0,
+ "viewCenter": {
+ "x": 1862.3517050339099,
+ "y": 1878.001719361926
+ }
+ },
+ "assets/maps/NovaFarma.json#01_Ground": {
+ "scaleInDock": 1
+ },
+ "assets/maps/NovaFarma.json#02_Obstacles": {
+ "scaleInDock": 1
+ },
+ "assets/maps/NovaFarma.json#03_Fences": {
+ "scaleInDock": 1
+ },
+ "assets/maps/NovaFarma.json#04_Buildings": {
+ "scaleInDock": 1
+ },
+ "assets/maps/NovaFarma.json#05_Tools_Items": {
+ "scaleInDock": 1
+ },
"assets/maps/NovaFarma.tmx": {
"scale": 1,
"selectedLayer": 0,
"viewCenter": {
- "x": -16.5,
- "y": 196
+ "x": 157,
+ "y": 231
}
+ },
+ "assets/maps/ground_tiles.tsx": {
+ "scaleInDock": 1
+ },
+ "assets/maps/kai_character.tsx": {
+ "scaleInDock": 1
+ },
+ "assets/maps/tree_blue.tsx": {
+ "scaleInDock": 1
}
},
"last.externalTilesetPath": "/Users/davidkotnik/repos/novafarma/assets/maps",
"openFiles": [
- "assets/maps/NovaFarma.tmx"
+ "assets/maps/NovaFarma.json"
],
"project": "novafarma.tiled-project",
"recentFiles": [
+ "assets/maps/NovaFarma.json",
"assets/maps/NovaFarma.tmx"
],
"tileset.lastUsedFormat": "tsx"
diff --git a/scripts/generate_128_map.py b/scripts/generate_128_map.py
new file mode 100644
index 000000000..60d1a55f9
--- /dev/null
+++ b/scripts/generate_128_map.py
@@ -0,0 +1,179 @@
+
+import json
+import os
+
+# Configuration
+WIDTH = 128
+HEIGHT = 128
+TILE_SIZE = 32
+
+# Create the data array (128x128 filled with 1s for 'Ground' tile)
+# 1 = Grass tile from firstgid:1
+ground_data = [1] * (WIDTH * HEIGHT)
+
+# Create Objects layer (mostly 0s, with some trees/rocks at center)
+objects_data = [0] * (WIDTH * HEIGHT)
+
+# Create Player layer (mostly 0s, with Kai at center)
+player_data = [0] * (WIDTH * HEIGHT)
+
+# Center coordinates
+cx, cy = WIDTH // 2, HEIGHT // 2
+
+# Helper to set tile at x,y
+def set_tile(layer_data, x, y, gid):
+ index = y * WIDTH + x
+ if 0 <= index < len(layer_data):
+ layer_data[index] = gid
+
+# Place some test objects (from 02_Obstacles, firstgid=300)
+set_tile(objects_data, cx, cy, 300) # Test Object 1
+set_tile(objects_data, cx+2, cy, 301) # Test Object 2
+set_tile(objects_data, cx-2, cy, 302) # Test Object 3
+set_tile(objects_data, cx, cy-2, 303) # Test Object 4
+
+# Place Player (Kai)
+# Assuming FirstGID 1500 for Kai characters
+# Tile 41 corresponds to "Front View" typically in a standard grid (relative index starts at 0, so GID = firstgid + 41)
+set_tile(player_data, cx, cy, 1541)
+
+map_structure = {
+ "compressionlevel": -1,
+ "height": HEIGHT,
+ "infinite": False,
+ "layers": [
+ {
+ "data": ground_data,
+ "height": HEIGHT,
+ "id": 1,
+ "name": "Ground",
+ "opacity": 1,
+ "type": "tilelayer",
+ "visible": True,
+ "width": WIDTH,
+ "x": 0,
+ "y": 0
+ },
+ {
+ "data": objects_data,
+ "height": HEIGHT,
+ "id": 2,
+ "name": "Objects",
+ "opacity": 1,
+ "type": "tilelayer",
+ "visible": True,
+ "width": WIDTH,
+ "x": 0,
+ "y": 0
+ },
+ {
+ "data": player_data,
+ "height": HEIGHT,
+ "id": 3,
+ "name": "Player",
+ "opacity": 1,
+ "type": "tilelayer",
+ "visible": True,
+ "width": WIDTH,
+ "x": 0,
+ "y": 0
+ }
+ ],
+ "nextlayerid": 4,
+ "nextobjectid": 1,
+ "orientation": "orthogonal",
+ "renderorder": "right-down",
+ "tiledversion": "1.11.2",
+ "tileheight": TILE_SIZE,
+ "tilesets": [
+ {
+ "columns": 16,
+ "firstgid": 1,
+ "image": "../narezano_in_majhno/krvava_zetev_sprites/grass_soil_tileset_1766171156780_obdelan.png",
+ "imageheight": 512,
+ "imagewidth": 512,
+ "margin": 0,
+ "name": "01_Ground",
+ "spacing": 0,
+ "tilecount": 256,
+ "tileheight": 32,
+ "tilewidth": 32
+ },
+ {
+ "columns": 16,
+ "firstgid": 300,
+ "image": "../narezano_in_majhno/krvava_zetev_sprites/farm_obstacles_1766171194583_obdelan.png",
+ "imageheight": 512,
+ "imagewidth": 512,
+ "margin": 0,
+ "name": "02_Obstacles",
+ "spacing": 0,
+ "tilecount": 256,
+ "tileheight": 32,
+ "tilewidth": 32
+ },
+ {
+ "columns": 16,
+ "firstgid": 600,
+ "image": "../narezano_in_majhno/krvava_zetev_sprites/town_buildings_pack_1766099810580_obdelan.png",
+ "imageheight": 512,
+ "imagewidth": 512,
+ "margin": 0,
+ "name": "04_Buildings",
+ "spacing": 0,
+ "tilecount": 256,
+ "tileheight": 32,
+ "tilewidth": 32
+ },
+ {
+ "columns": 16,
+ "firstgid": 900,
+ "image": "../narezano_in_majhno/krvava_zetev_sprites/fence_tileset_1766171177275_obdelan.png",
+ "imageheight": 512,
+ "imagewidth": 512,
+ "margin": 0,
+ "name": "03_Fences",
+ "spacing": 0,
+ "tilecount": 256,
+ "tileheight": 32,
+ "tilewidth": 32
+ },
+ {
+ "columns": 16,
+ "firstgid": 1200,
+ "image": "../narezano_in_majhno/krvava_zetev_sprites/tools_items_pack_tiled_1766099926620_obdelan.png",
+ "imageheight": 512,
+ "imagewidth": 512,
+ "margin": 0,
+ "name": "05_Tools_Items",
+ "spacing": 0,
+ "tilecount": 256,
+ "tileheight": 32,
+ "tilewidth": 32
+ },
+ {
+ "columns": 10,
+ "firstgid": 1500,
+ "image": "../krvava_zetev_sprites/kai_character_2x2_grid_1766098341666.png",
+ "imageheight": 1024,
+ "imagewidth": 1024,
+ "margin": 0,
+ "name": "Kai_Character",
+ "spacing": 0,
+ "tilecount": 100,
+ "tileheight": 96,
+ "tilewidth": 96
+ }
+ ],
+ "tilewidth": TILE_SIZE,
+ "type": "map",
+ "version": "1.10",
+ "width": WIDTH
+}
+
+output_path = "assets/maps/NovaFarma.json"
+
+with open(output_path, "w") as f:
+ json.dump(map_structure, f, indent=4)
+
+print(f"✅ Generated 128x128 map with Kai: {output_path}")
diff --git a/src/entities/Player.js b/src/entities/Player.js
index 75d97feaa..42d5cfd6a 100644
--- a/src/entities/Player.js
+++ b/src/entities/Player.js
@@ -115,7 +115,12 @@ class Player {
}
// Kreira sprite
- const screenPos = this.iso.toScreen(this.gridX, this.gridY);
+ // 🎨 FLAT 2D (NEW!) - Direct screen conversion
+ const tileSize = 48;
+ const screenPos = {
+ x: Math.round((this.gridX * tileSize) + (tileSize / 2)),
+ y: Math.round((this.gridY * tileSize) + (tileSize / 2))
+ };
this.sprite = this.scene.add.sprite(
screenPos.x + this.offsetX,
screenPos.y + this.offsetY,
@@ -268,9 +273,11 @@ class Player {
// Update grid position from pixel position
const screenPos = { x: this.sprite.x - this.offsetX, y: this.sprite.y - this.offsetY };
- const gridPos = this.iso.toGrid(screenPos.x, screenPos.y);
- this.gridX = Math.floor(gridPos.x);
- this.gridY = Math.floor(gridPos.y);
+
+ // 🎨 FLAT 2D (NEW!) - Direct grid conversion
+ const tileSize = 48;
+ this.gridX = Math.floor(screenPos.x / tileSize);
+ this.gridY = Math.floor(screenPos.y / tileSize);
// Check if moving
const speed = Math.sqrt(this.velocity.x ** 2 + this.velocity.y ** 2);
diff --git a/src/scenes/GameScene.js b/src/scenes/GameScene.js
index e195680ca..204fcc749 100644
--- a/src/scenes/GameScene.js
+++ b/src/scenes/GameScene.js
@@ -74,956 +74,1067 @@ class GameScene extends Phaser.Scene {
console.log('🎨 Initializing Flat 2D Terrain...');
this.terrainSystem = new Flat2DTerrainSystem(this);
- // 🌍 PHASE 28: Initialize BiomeSystem and ChunkManager BEFORE terrain generation!
- console.log('🌍 Initializing Biome System (500x500 world)...');
- this.biomeSystem = new BiomeSystem(this);
- this.biomeSystem.generateBiomeMap(); // Generate biome layout
- console.log('✅ Biome map generated!');
+ // 🏗️ PHASE 28-29 SYSTEMS INITIALIZATION
+ try {
+ // 🌍 PHASE 28: Initialize BiomeSystem and ChunkManager BEFORE terrain generation!
+ console.log('🌍 Initializing Biome System (500x500 world)...');
+ this.biomeSystem = new BiomeSystem(this);
+ this.biomeSystem.generateBiomeMap(); // Generate biome layout
+ console.log('✅ Biome map generated!');
- console.log('💾 Initializing Chunk Manager...');
- this.chunkManager = new ChunkManager(this, 50); // 50x50 chunks
- this.chunkManager.biomeSystem = this.biomeSystem; // Connect biomeSystem!
- console.log('✅ Chunk Manager ready!');
+ console.log('💾 Initializing Chunk Manager...');
+ this.chunkManager = new ChunkManager(this, 50); // 50x50 chunks
+ this.chunkManager.biomeSystem = this.biomeSystem; // Connect biomeSystem!
+ console.log('✅ Chunk Manager ready!');
- // 🌈 PHASE 28: TRANSITION SYSTEM
- console.log('🌈 Initializing Transition System...');
- this.transitionSystem = new TransitionSystem(this, this.biomeSystem);
- console.log('✅ Transition System ready!');
+ // 🌈 PHASE 28: TRANSITION SYSTEM
+ console.log('🌈 Initializing Transition System...');
+ this.transitionSystem = new TransitionSystem(this, this.biomeSystem);
+ console.log('✅ Transition System ready!');
- // 🌊 PHASE 28 SESSION 5: RIVER SYSTEM
- console.log('🌊 Initializing River System...');
- this.riverSystem = new RiverSystem(500, 500, this.biomeSystem);
- this.riverSystem.generateRivers();
- console.log('✅ River System ready!');
+ // 🌊 PHASE 28 SESSION 5: RIVER SYSTEM
+ console.log('🌊 Initializing River System...');
+ this.riverSystem = new RiverSystem(500, 500, this.biomeSystem);
+ this.riverSystem.generateRivers();
+ console.log('✅ River System ready!');
- // 🏞️ PHASE 28 SESSION 5: LAKE SYSTEM
- console.log('🏞️ Initializing Lake System...');
- this.lakeSystem = new LakeSystem(500, 500, this.biomeSystem);
- this.lakeSystem.generateLakes(this.riverSystem);
- console.log('✅ Lake System ready!');
+ // 🏞️ PHASE 28 SESSION 5: LAKE SYSTEM
+ console.log('🏞️ Initializing Lake System...');
+ this.lakeSystem = new LakeSystem(500, 500, this.biomeSystem);
+ this.lakeSystem.generateLakes(this.riverSystem);
+ console.log('✅ Lake System ready!');
- // 🏛️ PHASE 28 SESSION 6: STRUCTURE SYSTEM
- console.log('🏛️ Initializing Structure System...');
- this.structureSystem = new StructureSystem(500, 500, this.biomeSystem, this.riverSystem, this.lakeSystem);
- this.structureSystem.generateAll();
- const structStats = this.structureSystem.getStats();
- console.log(`✅ Structure System ready! (${structStats.structures} structures, ${structStats.landmarks} landmarks, ${structStats.roads.length} roads)`);
+ // 🏛️ PHASE 28 SESSION 6: STRUCTURE SYSTEM
+ console.log('🏛️ Initializing Structure System...');
+ this.structureSystem = new StructureSystem(500, 500, this.biomeSystem, this.riverSystem, this.lakeSystem);
+ this.structureSystem.generateAll();
+ const structStats = this.structureSystem.getStats();
+ console.log(`✅ Structure System ready! (${structStats.structures} structures, ${structStats.landmarks} landmarks, ${structStats.roads.length} roads)`);
- // Connect systems to terrainSystem
- this.terrainSystem.biomeSystem = this.biomeSystem;
- this.terrainSystem.chunkManager = this.chunkManager;
- this.terrainSystem.transitionSystem = this.transitionSystem;
- this.terrainSystem.riverSystem = this.riverSystem;
- this.terrainSystem.lakeSystem = this.lakeSystem;
- this.terrainSystem.structureSystem = this.structureSystem; // 🏛️ SESSION 6
- console.log('✅ BiomeSystem & ChunkManager connected to terrainSystem');
+ // Connect systems to terrainSystem
+ this.terrainSystem.biomeSystem = this.biomeSystem;
+ this.terrainSystem.chunkManager = this.chunkManager;
+ this.terrainSystem.transitionSystem = this.transitionSystem;
+ this.terrainSystem.riverSystem = this.riverSystem;
+ this.terrainSystem.lakeSystem = this.lakeSystem;
+ this.terrainSystem.structureSystem = this.structureSystem; // 🏛️ SESSION 6
+ console.log('✅ BiomeSystem & ChunkManager connected to terrainSystem');
- // 🎮 PHASE 29: GAMEPLAY SYSTEMS
- console.log('🎮 Initializing Phase 29 Systems...');
+ // 🎮 PHASE 29: GAMEPLAY SYSTEMS
+ console.log('🎮 Initializing Phase 29 Systems...');
- // Structure Interaction
- this.structureInteraction = new StructureInteractionSystem(this);
- this.structureInteraction.generateChestsForStructures(this.structureSystem);
- console.log(`✅ Structure Interaction ready! (${this.structureInteraction.chests.size} chests)`);
+ // Structure Interaction
+ this.structureInteraction = new StructureInteractionSystem(this);
+ this.structureInteraction.generateChestsForStructures(this.structureSystem);
+ console.log(`✅ Structure Interaction ready! (${this.structureInteraction.chests.size} chests)`);
- // NPC Population
- this.npcPopulation = new NPCPopulationSystem(this);
- this.npcPopulation.populateStructures(this.structureSystem);
- const npcStats = this.npcPopulation.getStats();
- console.log(`✅ NPC Population ready! (${npcStats.totalNPCs} NPCs)`);
+ // NPC Population
+ this.npcPopulation = new NPCPopulationSystem(this);
+ this.npcPopulation.populateStructures(this.structureSystem);
+ const npcStats = this.npcPopulation.getStats();
+ console.log(`✅ NPC Population ready! (${npcStats.totalNPCs} NPCs)`);
- // Biome Enemies
- this.biomeEnemies = new BiomeEnemySystem(this);
- this.biomeEnemies.generateSpawns(this.biomeSystem);
- const enemyStats = this.biomeEnemies.getStats();
- console.log(`✅ Biome Enemies ready! (${enemyStats.alive} enemies)`);
+ // Biome Enemies
+ this.biomeEnemies = new BiomeEnemySystem(this);
+ this.biomeEnemies.generateSpawns(this.biomeSystem);
+ const enemyStats = this.biomeEnemies.getStats();
+ console.log(`✅ Biome Enemies ready! (${enemyStats.alive} enemies)`);
- // Quest System
- this.landmarkQuests = new LandmarkQuestSystem(this);
- this.landmarkQuests.startMainQuest();
- this.landmarkQuests.startExplorationQuests();
- console.log(`✅ Quest System ready! (${this.landmarkQuests.activeQuests.length} active quests)`);
+ // Quest System
+ this.landmarkQuests = new LandmarkQuestSystem(this);
+ this.landmarkQuests.startMainQuest();
+ this.landmarkQuests.startExplorationQuests();
+ console.log(`✅ Quest System ready! (${this.landmarkQuests.activeQuests.length} active quests)`);
- // Map Reveal
- this.mapReveal = new MapRevealSystem(this);
- console.log('✅ Map Reveal System ready!');
+ // Map Reveal
+ this.mapReveal = new MapRevealSystem(this);
+ console.log('✅ Map Reveal System ready!');
- console.log('🎉 Phase 29 Systems: ALL READY!');
-
- await this.terrainSystem.generate();
- console.log('✅ Flat 2D terrain ready!');
-
- // Initialize Farming System
- this.farmingSystem = new FarmingSystem(this);
- console.log('🌾 Farming system initialized!');
-
- // Initialize Build System
- this.buildSystem = new BuildSystem(this);
- console.log('🏗️ Build system initialized!');
-
- // 🌱 Initialize Micro Farm System (PHASE 37!)
- this.microFarmSystem = new MicroFarmSystem(this);
- console.log('🌱 Micro Farm system initialized!');
-
-
- // ========================================================
- // 🏗️ TESTNI PRIMERI - Postavitev Ograj (ONEMOGOČENO)
- // ========================================================
- // Odstrani // pred vrsticami, če želiš videti testne ograje!
- // ALI pritisni B v igri za Build Mode in postavljaj ročno!
-
- // PRIMER 1: Ena sama ograja
- // this.buildSystem.placeSingleFence(50, 50, 'fence_post', false);
-
- // PRIMER 2: Vodoravna linija ograj (10 ograj)
- // for (let i = 0; i < 10; i++) {
- // this.buildSystem.placeSingleFence(45 + i, 52, 'fence_horizontal', false);
- // }
-
- // PRIMER 3: Navpična linija ograj (10 ograj)
- // for (let i = 0; i < 10; i++) {
- // this.buildSystem.placeSingleFence(43, 48 + i, 'fence_vertical', false);
- // }
-
- // PRIMER 4: Majhen pravokotnik (8x6)
- // this.buildSystem.placeFenceRectangle(60, 45, 8, 6, 'fence_post', false);
-
- // PRIMER 5: Diagonalna linija (Bresenham)
- // this.buildSystem.placeFenceLine(30, 30, 40, 40, 'fence_corner', false);
-
- // PRIMER 6: Večji pravokotnik (20x15)
- // this.buildSystem.placeFenceRectangle(20, 60, 20, 15, 'fence_horizontal', false);
-
- // PRIMER 7: Različni tipi ograj v vrsti
- // this.buildSystem.placeSingleFence(70, 50, 'fence', false);
- // this.buildSystem.placeSingleFence(71, 50, 'fence_post', false);
- // this.buildSystem.placeSingleFence(72, 50, 'fence_horizontal', false);
- // this.buildSystem.placeSingleFence(73, 50, 'fence_vertical', false);
- // this.buildSystem.placeSingleFence(74, 50, 'fence_corner', false);
-
- // console.log('✅ Testne ograje postavljene! Preveri mapo.');
- // ========================================================
-
-
- // Terrain offset
- this.terrainOffsetX = width / 2;
- this.terrainOffsetY = 100;
-
- // Initialization for culling
- this.terrainSystem.init(this.terrainOffsetX, this.terrainOffsetY);
-
- // Initial force update to render active tiles before first frame
- this.terrainSystem.updateCulling(this.cameras.main);
-
- // 🎲 RANDOM SPAWN POINT + 8x8 FARM (Prvi login)
- if (!spawnPoint) {
- // PRVI LOGIN - Random spawn točka
- const spawnX = Math.floor(Math.random() * 80) + 10; // 10-90
- const spawnY = Math.floor(Math.random() * 80) + 10; // 10-90
-
- spawnPoint = `${spawnX},${spawnY}`;
- localStorage.setItem('novafarma_spawn_point', spawnPoint);
-
- console.log(`🎲 First login - Random spawn at (${spawnX}, ${spawnY})`);
- console.log(`🏡 Creating 8x8 starter farm at spawn location...`);
-
- // Ustvari 8x8 farmo na spawn točki
- this.initializeFarmWorld(spawnX, spawnY);
- } else {
- // NI PRVI LOGIN - Naloži obstoječo spawn točko
- const [spawnX, spawnY] = spawnPoint.split(',').map(Number);
- console.log(`♻️ Returning player - spawn at (${spawnX}, ${spawnY})`);
-
- // Obnovi farmo (če je shranjena)
- this.initializeFarmWorld(spawnX, spawnY);
+ console.log('🎉 Phase 29 Systems: ALL READY!');
+ } catch (err) {
+ console.error('❌ ERROR initializing Phase 28/29 systems:', err);
+ console.warn('⚠️ Continuing with partial initialization...');
}
- // 🍎 SADOVNJAK - Sadna Drevesa (ONEMOGOČENO)
- // ========================================================
- // Odstrani // če želiš sadovnjak
- /*
- console.log('🍎 Ustvarjam sadovnjak...');
+ // 🗺️ TRY TO LOAD USER'S TILED MAP FIRST
+ let tiledMapLoaded = false;
+ this.tiledSpawnPoint = null;
- const orchardX = 35; // Lokacija sadovnjaka
- const orchardY = 60;
- const orchardSize = 10; // 10x10 območje
+ console.log('🔍 Checking for NovaFarma map...');
+ try {
+ if (this.make.tilemap) {
+ const map = this.make.tilemap({ key: 'NovaFarma' });
- // 1. Očisti območje (odstrani obstoječe drevese)
- for (let x = orchardX; x < orchardX + orchardSize; x++) {
- for (let y = orchardY; y < orchardY + orchardSize; y++) {
- if (x >= 0 && x < 100 && y >= 0 && y < 100) {
- const key = `${x},${y}`;
- if (this.terrainSystem.decorationsMap.has(key)) {
- this.terrainSystem.removeDecoration(x, y);
+ // DEBUG LOGGING
+ console.log('🗺️ Map object created:', map);
+ if (map) {
+ console.log(`🗺️ Map dimensions: ${map.width}x${map.height} tiles, ${map.widthInPixels}x${map.heightInPixels} pixels`);
+ console.log('🗺️ Tilesets:', map.tilesets.map(t => t.name));
+ console.log('🗺️ Layers:', map.layers.map(l => l.name));
+ }
+
+ if (map && map.width > 0) {
+ console.log('✅ FOUND VALID USER MAP: NovaFarma.json');
+ this.terrainSystem.loadFromTiled(map);
+ tiledMapLoaded = true;
+
+ // 🕵️ FIND SPAWN POINT IN MAP
+ const playerLayer = map.getLayer('Player');
+ if (playerLayer) {
+ console.log('👤 Found Player layer, searching for spawn point...');
+ // Find first tile in Player layer
+ map.layers.forEach(layer => {
+ if (layer.name === 'Player') {
+ for (let y = 0; y < layer.height; y++) {
+ for (let x = 0; x < layer.width; x++) {
+ if (layer.data[y][x].index !== -1) {
+ this.tiledSpawnPoint = {
+ x: x * map.tileWidth + map.tileWidth / 2,
+ y: y * map.tileHeight + map.tileHeight / 2
+ };
+ console.log(`📍 Found Player Spawn in Map at (${x}, ${y}) -> World: ${this.tiledSpawnPoint.x}, ${this.tiledSpawnPoint.y}`);
+ return; // Break loops
+ }
+ }
+ }
+ }
+ });
+
+ // 🕵️ DEBUG: Check what is under the player (Moved here for scope)
+ if (this.tiledSpawnPoint) {
+ const px = Math.floor(this.tiledSpawnPoint.x / map.tileWidth);
+ const py = Math.floor(this.tiledSpawnPoint.y / map.tileHeight);
+ const groundLayer = map.getLayer('Ground') || map.layers[0];
+ if (groundLayer) {
+ const tile = map.getTileAt(px, py, true, groundLayer.name);
+ const originTile = map.getTileAt(0, 0, true, groundLayer.name);
+ console.log(`🕵️ Inspecting Ground at Player (${px}, ${py}):`, tile ? `Index ${tile.index}` : 'NULL');
+ console.log(`🕵️ Inspecting Ground at Origin (0, 0):`, originTile ? `Index ${originTile.index}` : 'NULL');
+ }
+ }
+ } else {
+ console.warn('⚠️ No "Player" layer found in map!');
}
+ } else {
+ console.error('❌ Map created but invalid width (0) or null!');
+ }
+ }
+ } catch (e) {
+ console.error('⚠️ CRITICAL ERROR loading NovaFarma map:', e);
+ }
- // Spremeni teren v travo
- if (this.terrainSystem.tiles[y] && this.terrainSystem.tiles[y][x]) {
- this.terrainSystem.tiles[y][x].type = 'grass';
- if (this.terrainSystem.tiles[y][x].sprite) {
- this.terrainSystem.tiles[y][x].sprite.setTexture('grass');
- this.terrainSystem.tiles[y][x].sprite.clearTint();
+ if (!tiledMapLoaded) {
+ console.warn('⚠️ FALLBACK: Generating procedural terrain...');
+ await this.terrainSystem.generate();
+ console.log('✅ Flat 2D terrain ready (Procedural)!');
+ } else {
+ console.log('✅ Flat 2D terrain ready (Tiled)!');
+
+
+
+ // Initialize Farming System
+ this.farmingSystem = new FarmingSystem(this);
+ console.log('🌾 Farming system initialized!');
+
+ // Initialize Build System
+ this.buildSystem = new BuildSystem(this);
+ console.log('🏗️ Build system initialized!');
+
+ // 🌱 Initialize Micro Farm System (PHASE 37!)
+ this.microFarmSystem = new MicroFarmSystem(this);
+ console.log('🌱 Micro Farm system initialized!');
+
+
+ // ========================================================
+ // 🏗️ TESTNI PRIMERI - Postavitev Ograj (ONEMOGOČENO)
+ // ========================================================
+ // Odstrani // pred vrsticami, če želiš videti testne ograje!
+ // ALI pritisni B v igri za Build Mode in postavljaj ročno!
+
+ // PRIMER 1: Ena sama ograja
+ // this.buildSystem.placeSingleFence(50, 50, 'fence_post', false);
+
+ // PRIMER 2: Vodoravna linija ograj (10 ograj)
+ // for (let i = 0; i < 10; i++) {
+ // this.buildSystem.placeSingleFence(45 + i, 52, 'fence_horizontal', false);
+ // }
+
+ // PRIMER 3: Navpična linija ograj (10 ograj)
+ // for (let i = 0; i < 10; i++) {
+ // this.buildSystem.placeSingleFence(43, 48 + i, 'fence_vertical', false);
+ // }
+
+ // PRIMER 4: Majhen pravokotnik (8x6)
+ // this.buildSystem.placeFenceRectangle(60, 45, 8, 6, 'fence_post', false);
+
+ // PRIMER 5: Diagonalna linija (Bresenham)
+ // this.buildSystem.placeFenceLine(30, 30, 40, 40, 'fence_corner', false);
+
+ // PRIMER 6: Večji pravokotnik (20x15)
+ // this.buildSystem.placeFenceRectangle(20, 60, 20, 15, 'fence_horizontal', false);
+
+ // PRIMER 7: Različni tipi ograj v vrsti
+ // this.buildSystem.placeSingleFence(70, 50, 'fence', false);
+ // this.buildSystem.placeSingleFence(71, 50, 'fence_post', false);
+ // this.buildSystem.placeSingleFence(72, 50, 'fence_horizontal', false);
+ // this.buildSystem.placeSingleFence(73, 50, 'fence_vertical', false);
+ // this.buildSystem.placeSingleFence(74, 50, 'fence_corner', false);
+
+ // console.log('✅ Testne ograje postavljene! Preveri mapo.');
+ // ========================================================
+
+
+ // Terrain offset
+ if (tiledMapLoaded) {
+ // For Tiled maps, we usually start at 0,0 or map center is handled by camera
+ this.terrainOffsetX = 0;
+ this.terrainOffsetY = 0;
+ } else {
+ // For procedural flat maps, we start at 0,0
+ this.terrainOffsetX = 0;
+ this.terrainOffsetY = 0;
+ }
+
+
+ // 🎲 SPAWN POINT LOGIC
+ if (this.tiledSpawnPoint) {
+ // 📍 Uporabi spawn točko iz Tiled mape (PRIORITETA!)
+ const spawnX = Math.floor(this.tiledSpawnPoint.x / 48); // Convert back to grid for init logic if needed, or just use coords
+ const spawnY = Math.floor(this.tiledSpawnPoint.y / 48);
+
+ spawnPoint = `${spawnX},${spawnY}`;
+ localStorage.setItem('novafarma_spawn_point', spawnPoint);
+
+ console.log(`📍 Using Tiled Spawn Point: (${spawnX}, ${spawnY})`);
+ this.initializeFarmWorld(spawnX, spawnY);
+
+ // Override player position directly if initializeFarmWorld doesn't do it precisely
+ // (initializeFarmWorld usually sets grid position, we might want pixel precision later)
+ }
+ else if (!spawnPoint) {
+ // PRVI LOGIN - Random spawn točka (Fallback)
+ const spawnX = Math.floor(Math.random() * 80) + 10; // 10-90
+ const spawnY = Math.floor(Math.random() * 80) + 10; // 10-90
+
+ spawnPoint = `${spawnX},${spawnY}`;
+ localStorage.setItem('novafarma_spawn_point', spawnPoint);
+
+ console.log(`🎲 First login - Random spawn at (${spawnX}, ${spawnY})`);
+ console.log(`🏡 Creating 8x8 starter farm at spawn location...`);
+
+ // Ustvari 8x8 farmo na spawn točki
+ this.initializeFarmWorld(spawnX, spawnY);
+ } else {
+ // NI PRVI LOGIN - Naloži obstoječo spawn točko
+ const [spawnX, spawnY] = spawnPoint.split(',').map(Number);
+ console.log(`♻️ Returning player - spawn at (${spawnX}, ${spawnY})`);
+
+ // Obnovi farmo (če je shranjena)
+ this.initializeFarmWorld(spawnX, spawnY);
+ }
+
+ // 🍎 SADOVNJAK - Sadna Drevesa (ONEMOGOČENO)
+ // ========================================================
+ // Odstrani // če želiš sadovnjak
+ /*
+ console.log('🍎 Ustvarjam sadovnjak...');
+
+ const orchardX = 35; // Lokacija sadovnjaka
+ const orchardY = 60;
+ const orchardSize = 10; // 10x10 območje
+
+ // 1. Očisti območje (odstrani obstoječe drevese)
+ for (let x = orchardX; x < orchardX + orchardSize; x++) {
+ for (let y = orchardY; y < orchardY + orchardSize; y++) {
+ if (x >= 0 && x < 100 && y >= 0 && y < 100) {
+ const key = `${x},${y}`;
+ if (this.terrainSystem.decorationsMap.has(key)) {
+ this.terrainSystem.removeDecoration(x, y);
+ }
+
+ // Spremeni teren v travo
+ if (this.terrainSystem.tiles[y] && this.terrainSystem.tiles[y][x]) {
+ this.terrainSystem.tiles[y][x].type = 'grass';
+ if (this.terrainSystem.tiles[y][x].sprite) {
+ this.terrainSystem.tiles[y][x].sprite.setTexture('grass');
+ this.terrainSystem.tiles[y][x].sprite.clearTint();
+ }
}
}
}
}
- }
-
- // 2. Dodaj SADIKE (tree_sapling) - bodo rasle v sadna drevesa!
- const fruitTreeTypes = ['tree_apple', 'tree_orange', 'tree_cherry'];
- let treeCount = 0;
- const saplingPositions = []; // Shrani pozicije za ograje
-
- for (let x = orchardX + 1; x < orchardX + orchardSize - 1; x += 2) {
- for (let y = orchardY + 1; y < orchardY + orchardSize - 1; y += 2) {
- if (x >= 0 && x < 100 && y >= 0 && y < 100) {
- // Dodaj SADIKO (bo rasla v sadno drevo)
- this.terrainSystem.addDecoration(x, y, 'tree_sapling');
- saplingPositions.push({ x, y, type: fruitTreeTypes[treeCount % fruitTreeTypes.length] });
- treeCount++;
- }
- }
- }
-
- // 3. Dodaj LESENO OGRAJO okoli vsakega drevesa (3x3 kvadrat)
- saplingPositions.forEach(pos => {
- // Ograja okoli drevesa (3x3)
- const fencePositions = [
- // Zgornja vrstica
- { x: pos.x - 1, y: pos.y - 1 },
- { x: pos.x, y: pos.y - 1 },
- { x: pos.x + 1, y: pos.y - 1 },
- // Spodnja vrstica
- { x: pos.x - 1, y: pos.y + 1 },
- { x: pos.x, y: pos.y + 1 },
- { x: pos.x + 1, y: pos.y + 1 },
- // Leva stran
- { x: pos.x - 1, y: pos.y },
- // Desna stran
- { x: pos.x + 1, y: pos.y }
- ];
-
- fencePositions.forEach(fPos => {
- if (fPos.x >= 0 && fPos.x < 100 && fPos.y >= 0 && fPos.y < 100) {
- this.buildSystem.placeSingleFence(fPos.x, fPos.y, 'fence_horizontal', false);
- }
- });
- });
-
- // 4. Dodaj ZUNANJO OGRAJO okoli celega sadovnjaka
- this.buildSystem.placeFenceRectangle(
- orchardX - 1,
- orchardY - 1,
- orchardSize + 2,
- orchardSize + 2,
- 'fence_post',
- false
- );
-
- // 5. Dodaj cvetje med ograjami
- for (let x = orchardX; x < orchardX + orchardSize; x++) {
- for (let y = orchardY; y < orchardY + orchardSize; y++) {
- if (x >= 0 && x < 100 && y >= 0 && y < 100) {
- const key = `${x},${y}`;
- if (!this.terrainSystem.decorationsMap.has(key) && Math.random() > 0.85) {
- this.terrainSystem.addDecoration(x, y, 'flowers_new');
+
+ // 2. Dodaj SADIKE (tree_sapling) - bodo rasle v sadna drevesa!
+ const fruitTreeTypes = ['tree_apple', 'tree_orange', 'tree_cherry'];
+ let treeCount = 0;
+ const saplingPositions = []; // Shrani pozicije za ograje
+
+ for (let x = orchardX + 1; x < orchardX + orchardSize - 1; x += 2) {
+ for (let y = orchardY + 1; y < orchardY + orchardSize - 1; y += 2) {
+ if (x >= 0 && x < 100 && y >= 0 && y < 100) {
+ // Dodaj SADIKO (bo rasla v sadno drevo)
+ this.terrainSystem.addDecoration(x, y, 'tree_sapling');
+ saplingPositions.push({ x, y, type: fruitTreeTypes[treeCount % fruitTreeTypes.length] });
+ treeCount++;
}
}
}
+
+ // 3. Dodaj LESENO OGRAJO okoli vsakega drevesa (3x3 kvadrat)
+ saplingPositions.forEach(pos => {
+ // Ograja okoli drevesa (3x3)
+ const fencePositions = [
+ // Zgornja vrstica
+ { x: pos.x - 1, y: pos.y - 1 },
+ { x: pos.x, y: pos.y - 1 },
+ { x: pos.x + 1, y: pos.y - 1 },
+ // Spodnja vrstica
+ { x: pos.x - 1, y: pos.y + 1 },
+ { x: pos.x, y: pos.y + 1 },
+ { x: pos.x + 1, y: pos.y + 1 },
+ // Leva stran
+ { x: pos.x - 1, y: pos.y },
+ // Desna stran
+ { x: pos.x + 1, y: pos.y }
+ ];
+
+ fencePositions.forEach(fPos => {
+ if (fPos.x >= 0 && fPos.x < 100 && fPos.y >= 0 && fPos.y < 100) {
+ this.buildSystem.placeSingleFence(fPos.x, fPos.y, 'fence_horizontal', false);
+ }
+ });
+ });
+
+ // 4. Dodaj ZUNANJO OGRAJO okoli celega sadovnjaka
+ this.buildSystem.placeFenceRectangle(
+ orchardX - 1,
+ orchardY - 1,
+ orchardSize + 2,
+ orchardSize + 2,
+ 'fence_post',
+ false
+ );
+
+ // 5. Dodaj cvetje med ograjami
+ for (let x = orchardX; x < orchardX + orchardSize; x++) {
+ for (let y = orchardY; y < orchardY + orchardSize; y++) {
+ if (x >= 0 && x < 100 && y >= 0 && y < 100) {
+ const key = `${x},${y}`;
+ if (!this.terrainSystem.decorationsMap.has(key) && Math.random() > 0.85) {
+ this.terrainSystem.addDecoration(x, y, 'flowers_new');
+ }
+ }
+ }
+ }
+
+ // 6. RAST DREVES - Sadike bodo rasle v sadna drevesa!
+ // Nastavi timer za rast (vsako drevo raste po 30 sekundah)
+ saplingPositions.forEach((pos, index) => {
+ this.time.delayedCall(30000 + (index * 2000), () => {
+ const key = `${pos.x},${pos.y}`;
+
+ // Odstrani sadiko
+ if (this.terrainSystem.decorationsMap.has(key)) {
+ this.terrainSystem.removeDecoration(pos.x, pos.y);
+ }
+
+ // Dodaj SADNO DREVO
+ this.terrainSystem.addDecoration(pos.x, pos.y, pos.type);
+
+ // Animacija rasti
+ if (this.terrainSystem.visibleDecorations.has(key)) {
+ const sprite = this.terrainSystem.visibleDecorations.get(key);
+ sprite.setScale(0.01);
+ this.tweens.add({
+ targets: sprite,
+ scaleX: 0.04,
+ scaleY: 0.04,
+ duration: 2000,
+ ease: 'Bounce.out'
+ });
+ }
+
+ console.log(`🌳 Drevo zraslo: ${pos.type} na (${pos.x}, ${pos.y})`);
+ });
+ });
+
+ console.log(`✅ Sadovnjak ustvarjen na (${orchardX}, ${orchardY}) - ${treeCount} sadik (bodo rasle v 30s)`);
+ */
+ // ========================================================
+
+
+ // CITY CONTENT: Ruins, Chests, Spawners
+ console.log('🏚️ Generating City Content...');
+
+ // DISABLED - City structures removed for cleaner gameplay
+ // Main Ruins
+ // this.terrainSystem.placeStructure(55, 55, 'ruin');
+ // this.terrainSystem.placeStructure(65, 65, 'ruin');
+ // this.terrainSystem.placeStructure(75, 75, 'ruin');
+ // this.terrainSystem.placeStructure(60, 70, 'ruin');
+ // this.terrainSystem.placeStructure(70, 60, 'ruin');
+
+ // Arena (Boss battle area)
+ // this.terrainSystem.placeStructure(75, 55, 'arena');
+
+ // Treasure Chests (scattered in ruins)
+ // this.terrainSystem.placeStructure(56, 56, 'chest');
+ // this.terrainSystem.placeStructure(66, 66, 'chest');
+ // this.terrainSystem.placeStructure(76, 76, 'chest');
+
+ // Zombie Spawners (in city)
+ // this.terrainSystem.placeStructure(58, 68, 'spawner');
+ // this.terrainSystem.placeStructure(72, 62, 'spawner');
+
+ // CESTE (ROADS) - povezava med farmo (20,20) in mestom (65,65)
+ console.log('🛣️ Building Roads...');
+ // Horizontalna cesta od farme
+ for (let x = 20; x <= 45; x++) {
+ if (this.terrainSystem.tiles[22] && this.terrainSystem.tiles[22][x]) {
+ this.terrainSystem.tiles[22][x].type = 'pavement';
+ if (this.terrainSystem.tiles[22][x].sprite) {
+ this.terrainSystem.tiles[22][x].sprite.setTexture('dirt');
+ this.terrainSystem.tiles[22][x].sprite.setTint(0x808080);
+ }
+ }
+ }
+ // Vertikalna cesta do mesta
+ for (let y = 22; y <= 65; y++) {
+ if (this.terrainSystem.tiles[y] && this.terrainSystem.tiles[y][45]) {
+ this.terrainSystem.tiles[y][45].type = 'pavement';
+ if (this.terrainSystem.tiles[y][45].sprite) {
+ this.terrainSystem.tiles[y][45].sprite.setTexture('dirt');
+ this.terrainSystem.tiles[y][45].sprite.setTint(0x808080);
+ }
+ }
+ }
+ // Horizontalna cesta do mesta
+ for (let x = 45; x <= 65; x++) {
+ if (this.terrainSystem.tiles[65] && this.terrainSystem.tiles[65][x]) {
+ this.terrainSystem.tiles[65][x].type = 'pavement';
+ if (this.terrainSystem.tiles[65][x].sprite) {
+ this.terrainSystem.tiles[65][x].sprite.setTexture('dirt');
+ this.terrainSystem.tiles[65][x].sprite.setTint(0x808080);
+ }
+ }
+ }
+
+ // SIGNPOSTS - navigacijske table
+ // SIGNPOSTS - DISABLED (User request: clean world)
+ // console.log('🪧 Placing Signposts...');
+ // this.terrainSystem.placeStructure(23, 22, 'signpost_city');
+ // this.terrainSystem.placeStructure(65, 64, 'signpost_farm');
+ // this.terrainSystem.placeStructure(45, 40, 'signpost_both');
+
+ // DAMAGED CITY WALLS - DISABLED (User request: clean world)
+ // console.log('🏚️ Placing Damaged City Walls...');
+ // const wallPositions = [
+ // [65, 65], [70, 65], [75, 65],
+ // [65, 79], [70, 79], [75, 79],
+ // [65, 70], [65, 75],
+ // [79, 70], [79, 75]
+ // ];
+ // wallPositions.forEach(([wx, wy]) => {
+ // if (Math.random() < 0.7) {
+ // this.terrainSystem.placeStructure(wx, wy, 'wall_damaged');
+ // }
+ // });
+
+ // Initialize Pathfinding (Worker)
+ console.log('🗺️ Initializing Pathfinding...');
+ this.pathfinding = new PathfindingSystem(this);
+ this.pathfinding.updateGrid();
+
}
- // 6. RAST DREVES - Sadike bodo rasle v sadna drevesa!
- // Nastavi timer za rast (vsako drevo raste po 30 sekundah)
- saplingPositions.forEach((pos, index) => {
- this.time.delayedCall(30000 + (index * 2000), () => {
- const key = `${pos.x},${pos.y}`;
+ // Dodaj igralca NA SPAWN TOČKI
+ console.log('👤 Initializing player...');
+ const savedSpawn = localStorage.getItem('novafarma_spawn_point');
- // Odstrani sadiko
- if (this.terrainSystem.decorationsMap.has(key)) {
- this.terrainSystem.removeDecoration(pos.x, pos.y);
+ // 🌍 PHASE 28: Center of 500x500 world
+ let playerSpawnX = 250, playerSpawnY = 250; // Default center
+
+ if (this.tiledSpawnPoint) {
+ // Use Tiled spawn point (converted to grid)
+ // Note: Player class converts Grid -> Pixel (Grid * 48).
+ // Tiled map gives Pixels.
+ // We need to pass GRID coordinates that result in the correct Pixel.
+ // TargetPixel = Grid * 48
+ // Grid = TargetPixel / 48
+ playerSpawnX = Math.floor(this.tiledSpawnPoint.x / 48);
+ playerSpawnY = Math.floor(this.tiledSpawnPoint.y / 48);
+ console.log(`👤 Spawning player at Tiled location: Grid(${playerSpawnX}, ${playerSpawnY}) -> Pixel(${this.tiledSpawnPoint.x}, ${this.tiledSpawnPoint.y})`);
+ } else if (savedSpawn) {
+ [playerSpawnX, playerSpawnY] = savedSpawn.split(',').map(Number);
+ console.log(`👤 Spawning player at saved location: (${playerSpawnX}, ${playerSpawnY})`);
+ } else {
+ console.log(`👤 Spawning player at world center: (${playerSpawnX}, ${playerSpawnY})`);
+ }
+
+ this.player = new Player(this, playerSpawnX, playerSpawnY, this.terrainOffsetX, this.terrainOffsetY);
+
+ // 🌍 PHASE 28: Load initial chunks around player
+ if (this.chunkManager) {
+ console.log('💾 Loading initial chunks around player...');
+ this.chunkManager.updateActiveChunks(playerSpawnX, playerSpawnY);
+ const stats = this.chunkManager.getStats();
+ console.log(`✅ Loaded ${stats.activeChunks} chunks (${stats.totalTilesLoaded} tiles)`);
+ }
+
+ // 🎯 SORTABLE OBJECTS GROUP - Za 2.5D Z-Sorting
+ console.log('🎯 Creating sortableObjects group for Z-sorting...');
+ this.sortableObjects = this.add.group();
+
+ // Dodaj player sprite v sortableObjects
+ if (this.player && this.player.sprite) {
+ this.sortableObjects.add(this.player.sprite);
+ console.log('✅ Player added to sortableObjects');
+
+ // 🎥 CAMERA FOLLOW
+ console.log('🎥 Setting camera to follow player...');
+ this.cameras.main.startFollow(this.player.sprite, true, 0.1, 0.1);
+ this.cameras.main.setZoom(1); // Ensure visible zoom
+ }
+
+ // ALL NPCs REMOVED - Solo farming mode
+ console.log('🌾 Solo farming mode - no NPCs');
+
+ // FPS Monitor (Performance)
+ // FPS Monitor - DISABLED (Using UnifiedStatsPanel instead)
+ // console.log('📊 Initializing FPS Monitor...');
+ // this.fpsMonitor = new FPSMonitor(this);
+
+ // Unified Stats Panel (Performance + Debug in one)
+ console.log('📊 Initializing Unified Stats Panel...');
+ this.unifiedStatsPanel = new UnifiedStatsPanel(this);
+
+ // NPC Spawner - DISABLED (NPCs look like player duplicates)
+ console.log('🧟 NPC Spawner - DISABLED');
+ this.npcSpawner = null; // new NPCSpawner(this);
+ // this.npcSpawner.spawnInitialNPCs();
+
+ // Easter Egg: Broken Scooter
+ console.log('🛵 Spawning Scooter Easter Egg...');
+ this.vehicles = [];
+ // const scooter = new Scooter(this, 25, 25);
+ // this.vehicles.push(scooter);
+
+ // ZOMBIE SPAWNERS (City area)
+ console.log('👹 Creating Zombie Spawners...');
+ this.spawners = [];
+
+ // DISABLED - Too many zombies for testing
+ // this.spawners.push(new ZombieSpawner(this, 55, 55, 5, 2, 25000)); // NW
+ // this.spawners.push(new ZombieSpawner(this, 75, 55, 5, 2, 25000)); // NE
+ // this.spawners.push(new ZombieSpawner(this, 65, 75, 5, 3, 20000)); // South
+
+ // LOOT CHESTS
+ console.log('📦 Placing Loot Chests...');
+ this.chests = [];
+
+ // Farm Starter Chest ONLY (near spawn)
+ this.chests.push(new LootChest(this, 28, 28, 'farm_starter'));
+
+ // DISABLED - City chests removed for cleaner gameplay
+ // this.chests.push(new LootChest(this, 60, 60, 'city'));
+ // this.chests.push(new LootChest(this, 70, 60, 'city'));
+ // this.chests.push(new LootChest(this, 65, 70, 'elite'));
+
+ // SIGNPOSTS/NAVIGATION
+ console.log('🪧 Adding Signposts...');
+ this.signposts = [];
+
+ // Path markers (using fence sprites as signposts)
+ // ONLY if terrainSystem was successfully initialized
+ if (this.terrainSystem) {
+ const pathMarkers = [
+ { x: 35, y: 35, label: '→ City' },
+ { x: 50, y: 50, label: '← Farm' },
+ ];
+
+ for (const marker of pathMarkers) {
+ this.terrainSystem.addDecoration(marker.x, marker.y, 'fence');
+ this.signposts.push({ gridX: marker.x, gridY: marker.y, label: marker.label });
+ }
+ } else {
+ console.warn('⚠️ TerrainSystem not initialized - skipping signposts');
+ }
+
+ // Kamera sledi igralcu z gladko interpolacijo (lerp 0.1)
+ this.cameras.main.startFollow(this.player.sprite, true, 0.1, 0.1);
+
+ // Nastavi deadzone (100px border)
+ this.cameras.main.setDeadzone(100, 100);
+
+ // Round pixels za crisp pixel art
+ this.cameras.main.roundPixels = true;
+
+ // Zoom out za boljši pogled (85% zoom)
+ this.cameras.main.setZoom(0.85);
+
+ // 🌍 PHASE 28: Camera bounds for 500x500 world (48px tiles)
+ const worldSize = 500 * 48; // 24000x24000 pixels
+ this.cameras.main.setBounds(0, 0, worldSize, worldSize);
+ this.physics.world.setBounds(0, 0, worldSize, worldSize);
+ console.log(`📷 Camera bounds set to ${worldSize}x${worldSize}`);
+
+ // Parallax oblaki
+ this.createClouds();
+
+ // Kamera kontrole
+ this.setupCamera();
+
+ // Initialize Systems
+ console.log('🌦️ Initializing Unified Weather System...');
+ this.weatherSystem = new WeatherSystem(this);
+ this.timeSystem = this.weatherSystem; // Alias
+
+ // 💡 LIGHTING & SHADOW SYSTEM
+ console.log('💡 Initializing Lighting & Shadow System...');
+ this.lightingSystem = new LightingSystem(this);
+
+ // Create player shadow
+ if (this.player) {
+ this.lightingSystem.createShadow(this.player, 12, 30, 15);
+ this.lightingSystem.createPlayerTorch(this.player); // Auto-torch at night
+ }
+
+ // 🌬️ WEATHER ENHANCEMENTS SYSTEM
+ console.log('🌬️ Initializing Weather Enhancements System...');
+ this.weatherEnhancements = new WeatherEnhancementsSystem(this);
+
+ // 🌍 PHASE 28: BiomeSystem & ChunkManager already initialized in create() before terrain generation!
+ // No need to initialize again here.
+
+ // 🎨 UI POLISH SYSTEM
+ console.log('🎨 UI POLISH System...');
+ this.uiPolish = new UIPolishSystem(this);
+
+ this.statsSystem = new StatsSystem(this);
+ this.inventorySystem = new InventorySystem(this);
+
+ // 🛠️ CRAFTING SYSTEM
+ this.craftingSystem = new CraftingSystem(this);
+ this.craftingSystem.loadRecipes().then(() => {
+ console.log('🛠️ Crafting system ready!');
+
+ // Create UI after recipes loaded
+ this.craftingUI = new CraftingUI(this);
+
+ // Add C key to toggle crafting UI
+ this.input.keyboard.on('keydown-C', () => {
+ if (this.craftingUI) {
+ this.craftingUI.toggle();
}
-
- // Dodaj SADNO DREVO
- this.terrainSystem.addDecoration(pos.x, pos.y, pos.type);
-
- // Animacija rasti
- if (this.terrainSystem.visibleDecorations.has(key)) {
- const sprite = this.terrainSystem.visibleDecorations.get(key);
- sprite.setScale(0.01);
- this.tweens.add({
- targets: sprite,
- scaleX: 0.04,
- scaleY: 0.04,
- duration: 2000,
- ease: 'Bounce.out'
- });
- }
-
- console.log(`🌳 Drevo zraslo: ${pos.type} na (${pos.x}, ${pos.y})`);
});
});
- console.log(`✅ Sadovnjak ustvarjen na (${orchardX}, ${orchardY}) - ${treeCount} sadik (bodo rasle v 30s)`);
- */
+ // ========================================================
+ // 💎 NEOMEJENI VIRI - Les in Kamen
+ // ========================================================
+ console.log('💎 Dodajam neomejene vire...');
+ this.inventorySystem.addItem('wood', 999999);
+ this.inventorySystem.addItem('stone', 999999);
+ this.inventorySystem.gold = 999999;
+ console.log('✅ Neomejeni viri dodani: 999,999 lesa, kamna in zlata!');
// ========================================================
+ this.lootSystem = new LootSystem(this);
+ this.interactionSystem = new InteractionSystem(this);
+ this.farmingSystem = new FarmingSystem(this);
+ this.buildingSystem = new BuildingSystem(this);
+ // this.pathfinding = new Pathfinding(this); // REMOVED: Using PathfindingSystem (Worker) instead
+ this.questSystem = new QuestSystem(this);
+ this.collectionSystem = new CollectionSystem(this);
+ this.multiplayerSystem = new MultiplayerSystem(this);
+ this.worldEventSystem = new WorldEventSystem(this);
+ this.hybridSkillSystem = new HybridSkillSystem(this);
+ this.oceanSystem = new OceanSystem(this);
+
+ // Central Popup System (for quests, dialogs, etc.)
+ this.centralPopup = new CentralPopupSystem(this);
+
+ // Tutorial System (shows keyboard shortcuts)
+ this.tutorialSystem = new TutorialSystem(this);
+
+ // Full Inventory UI (24 slots, I key to open)
+ this.fullInventoryUI = new FullInventoryUI(this);
+
+ this.legacySystem = new LegacySystem(this);
+
+ // Initialize Sound Manager
+ console.log('🎵 Initializing Sound Manager...');
+ this.soundManager = new SoundManager(this);
+ this.soundManager.startMusic();
+
+ // Initialize Parallax System
+ console.log('🌄 Initializing Parallax System...');
+ this.parallaxSystem = new ParallaxSystem(this);
+
+ // Initialize Particle Effects
+ console.log('✨ Initializing Particle Effects...');
+ this.particleEffects = new ParticleEffects(this);
+ this.particleEffects.createFallingLeaves();
+
+ // ✨ PARTICLE ENHANCEMENTS SYSTEM
+ console.log('✨ Initializing Particle Enhancements System...');
+ this.particleEnhancements = new ParticleEnhancementsSystem(this);
+
+ // Initialize Accessibility System
+ console.log('♿ Initializing Accessibility System...');
+ this.accessibilitySystem = new AccessibilitySystem(this);
+
+ // Initialize Visual Sound Cue System (for deaf/hard-of-hearing players)
+ console.log('👁️ Initializing Visual Sound Cue System...');
+ this.visualSoundCueSystem = new VisualSoundCueSystem(this);
+
+ // Initialize Input Remapping System (for custom controls)
+ console.log('🎮 Initializing Input Remapping System...');
+ this.inputRemapping = new InputRemappingSystem(this);
+
+ // Initialize Screen Reader System (for blind/visually impaired players)
+ console.log('🔊 Initializing Screen Reader System...');
+ this.screenReader = new ScreenReaderSystem(this);
+
+ // Initialize Dyslexia Support System
+ console.log('📖 Initializing Dyslexia Support System...');
+ this.dyslexiaSupport = new DyslexiaSupportSystem(this);
+
+ // Initialize ADHD/Autism Support System
+ console.log('🧠 Initializing ADHD/Autism Support System...');
+ this.adhdAutismSupport = new ADHDAutismSupportSystem(this);
+
+ // Initialize Motor Accessibility System
+ console.log('🦾 Initializing Motor Accessibility System...');
+ this.motorAccessibility = new MotorAccessibilitySystem(this);
+
+ // Initialize Visual Enhancement System
+ console.log('✨ Initializing Visual Enhancement System...');
+ this.visualEnhancements = new VisualEnhancementSystem(this);
+
+ // Initialize Fog of War System
+ console.log('🌫️ Initializing Fog of War System...');
+ this.fogOfWar = new FogOfWarSystem(this);
+
+ // Initialize UI Graphics System
+ console.log('🎨 Initializing UI Graphics System...');
+ this.uiGraphics = new UIGraphicsSystem(this);
+
+ // Initialize Building Visuals System
+ console.log('🏭 Initializing Building Visuals System...');
+ this.buildingVisuals = new BuildingVisualsSystem(this);
+
+ // Initialize Skill Tree System
+ console.log('🌳 Initializing Skill Tree System...');
+ this.skillTree = new SkillTreeSystem(this);
+
+ // Initialize Crafting Tiers System
+ console.log('⚒️ Initializing Crafting Tiers System...');
+ this.craftingTiers = new CraftingTiersSystem(this);
+
+ // Initialize Farm Automation System
+ console.log('🤖 Initializing Farm Automation System...');
+ this.farmAutomation = new FarmAutomationSystem(this);
+
+ // Initialize Animal Breeding System
+ console.log('🐑 Initializing Animal Breeding System...');
+ this.animalBreeding = new AnimalBreedingSystem(this);
+
+ // Initialize Automation Tier System
+ console.log('🤖 Initializing Automation Tier System...');
+ this.automationTiers = new AutomationTierSystem(this);
+
+ // Initialize Breeding UI System
+ console.log('🌳 Initializing Breeding UI System...');
+ this.breedingUI = new BreedingUISystem(this);
- // CITY CONTENT: Ruins, Chests, Spawners
- console.log('🏚️ Generating City Content...');
-
- // DISABLED - City structures removed for cleaner gameplay
- // Main Ruins
- // this.terrainSystem.placeStructure(55, 55, 'ruin');
- // this.terrainSystem.placeStructure(65, 65, 'ruin');
- // this.terrainSystem.placeStructure(75, 75, 'ruin');
- // this.terrainSystem.placeStructure(60, 70, 'ruin');
- // this.terrainSystem.placeStructure(70, 60, 'ruin');
-
- // Arena (Boss battle area)
- // this.terrainSystem.placeStructure(75, 55, 'arena');
-
- // Treasure Chests (scattered in ruins)
- // this.terrainSystem.placeStructure(56, 56, 'chest');
- // this.terrainSystem.placeStructure(66, 66, 'chest');
- // this.terrainSystem.placeStructure(76, 76, 'chest');
-
- // Zombie Spawners (in city)
- // this.terrainSystem.placeStructure(58, 68, 'spawner');
- // this.terrainSystem.placeStructure(72, 62, 'spawner');
-
- // CESTE (ROADS) - povezava med farmo (20,20) in mestom (65,65)
- console.log('🛣️ Building Roads...');
- // Horizontalna cesta od farme
- for (let x = 20; x <= 45; x++) {
- if (this.terrainSystem.tiles[22] && this.terrainSystem.tiles[22][x]) {
- this.terrainSystem.tiles[22][x].type = 'pavement';
- if (this.terrainSystem.tiles[22][x].sprite) {
- this.terrainSystem.tiles[22][x].sprite.setTexture('dirt');
- this.terrainSystem.tiles[22][x].sprite.setTint(0x808080);
- }
- }
- }
- // Vertikalna cesta do mesta
- for (let y = 22; y <= 65; y++) {
- if (this.terrainSystem.tiles[y] && this.terrainSystem.tiles[y][45]) {
- this.terrainSystem.tiles[y][45].type = 'pavement';
- if (this.terrainSystem.tiles[y][45].sprite) {
- this.terrainSystem.tiles[y][45].sprite.setTexture('dirt');
- this.terrainSystem.tiles[y][45].sprite.setTint(0x808080);
- }
- }
- }
- // Horizontalna cesta do mesta
- for (let x = 45; x <= 65; x++) {
- if (this.terrainSystem.tiles[65] && this.terrainSystem.tiles[65][x]) {
- this.terrainSystem.tiles[65][x].type = 'pavement';
- if (this.terrainSystem.tiles[65][x].sprite) {
- this.terrainSystem.tiles[65][x].sprite.setTexture('dirt');
- this.terrainSystem.tiles[65][x].sprite.setTint(0x808080);
- }
- }
- }
-
- // SIGNPOSTS - navigacijske table
- // SIGNPOSTS - DISABLED (User request: clean world)
- // console.log('🪧 Placing Signposts...');
- // this.terrainSystem.placeStructure(23, 22, 'signpost_city');
- // this.terrainSystem.placeStructure(65, 64, 'signpost_farm');
- // this.terrainSystem.placeStructure(45, 40, 'signpost_both');
-
- // DAMAGED CITY WALLS - DISABLED (User request: clean world)
- // console.log('🏚️ Placing Damaged City Walls...');
- // const wallPositions = [
- // [65, 65], [70, 65], [75, 65],
- // [65, 79], [70, 79], [75, 79],
- // [65, 70], [65, 75],
- // [79, 70], [79, 75]
- // ];
- // wallPositions.forEach(([wx, wy]) => {
- // if (Math.random() < 0.7) {
- // this.terrainSystem.placeStructure(wx, wy, 'wall_damaged');
- // }
- // });
-
- // Initialize Pathfinding (Worker)
- console.log('🗺️ Initializing Pathfinding...');
- this.pathfinding = new PathfindingSystem(this);
- this.pathfinding.updateGrid();
-
- } catch (e) {
- console.error("Terrain system failed:", e);
- }
-
- // Dodaj igralca NA SPAWN TOČKI
- console.log('👤 Initializing player...');
- const savedSpawn = localStorage.getItem('novafarma_spawn_point');
-
- // 🌍 PHASE 28: Center of 500x500 world
- let playerSpawnX = 250, playerSpawnY = 250; // Center of world!
-
- if (savedSpawn) {
- [playerSpawnX, playerSpawnY] = savedSpawn.split(',').map(Number);
- console.log(`👤 Spawning player at saved location: (${playerSpawnX}, ${playerSpawnY})`);
- } else {
- console.log(`👤 Spawning player at world center: (${playerSpawnX}, ${playerSpawnY})`);
- }
-
- this.player = new Player(this, playerSpawnX, playerSpawnY, this.terrainOffsetX, this.terrainOffsetY);
-
- // 🌍 PHASE 28: Load initial chunks around player
- if (this.chunkManager) {
- console.log('💾 Loading initial chunks around player...');
- this.chunkManager.updateActiveChunks(playerSpawnX, playerSpawnY);
- const stats = this.chunkManager.getStats();
- console.log(`✅ Loaded ${stats.activeChunks} chunks (${stats.totalTilesLoaded} tiles)`);
- }
-
- // 🎯 SORTABLE OBJECTS GROUP - Za 2.5D Z-Sorting
- console.log('🎯 Creating sortableObjects group for Z-sorting...');
- this.sortableObjects = this.add.group();
-
- // Dodaj player sprite v sortableObjects
- if (this.player && this.player.sprite) {
- this.sortableObjects.add(this.player.sprite);
- console.log('✅ Player added to sortableObjects');
- }
-
- // ALL NPCs REMOVED - Solo farming mode
- console.log('🌾 Solo farming mode - no NPCs');
-
- // FPS Monitor (Performance)
- // FPS Monitor - DISABLED (Using UnifiedStatsPanel instead)
- // console.log('📊 Initializing FPS Monitor...');
- // this.fpsMonitor = new FPSMonitor(this);
-
- // Unified Stats Panel (Performance + Debug in one)
- console.log('📊 Initializing Unified Stats Panel...');
- this.unifiedStatsPanel = new UnifiedStatsPanel(this);
-
- // NPC Spawner - DISABLED (NPCs look like player duplicates)
- console.log('🧟 NPC Spawner - DISABLED');
- this.npcSpawner = null; // new NPCSpawner(this);
- // this.npcSpawner.spawnInitialNPCs();
-
- // Easter Egg: Broken Scooter
- console.log('🛵 Spawning Scooter Easter Egg...');
- this.vehicles = [];
- // const scooter = new Scooter(this, 25, 25);
- // this.vehicles.push(scooter);
-
- // ZOMBIE SPAWNERS (City area)
- console.log('👹 Creating Zombie Spawners...');
- this.spawners = [];
-
- // DISABLED - Too many zombies for testing
- // this.spawners.push(new ZombieSpawner(this, 55, 55, 5, 2, 25000)); // NW
- // this.spawners.push(new ZombieSpawner(this, 75, 55, 5, 2, 25000)); // NE
- // this.spawners.push(new ZombieSpawner(this, 65, 75, 5, 3, 20000)); // South
-
- // LOOT CHESTS
- console.log('📦 Placing Loot Chests...');
- this.chests = [];
-
- // Farm Starter Chest ONLY (near spawn)
- this.chests.push(new LootChest(this, 28, 28, 'farm_starter'));
-
- // DISABLED - City chests removed for cleaner gameplay
- // this.chests.push(new LootChest(this, 60, 60, 'city'));
- // this.chests.push(new LootChest(this, 70, 60, 'city'));
- // this.chests.push(new LootChest(this, 65, 70, 'elite'));
-
- // SIGNPOSTS/NAVIGATION
- console.log('🪧 Adding Signposts...');
- this.signposts = [];
-
- // Path markers (using fence sprites as signposts)
- // ONLY if terrainSystem was successfully initialized
- if (this.terrainSystem) {
- const pathMarkers = [
- { x: 35, y: 35, label: '→ City' },
- { x: 50, y: 50, label: '← Farm' },
- ];
-
- for (const marker of pathMarkers) {
- this.terrainSystem.addDecoration(marker.x, marker.y, 'fence');
- this.signposts.push({ gridX: marker.x, gridY: marker.y, label: marker.label });
- }
- } else {
- console.warn('⚠️ TerrainSystem not initialized - skipping signposts');
- }
-
- // Kamera sledi igralcu z gladko interpolacijo (lerp 0.1)
- this.cameras.main.startFollow(this.player.sprite, true, 0.1, 0.1);
-
- // Nastavi deadzone (100px border)
- this.cameras.main.setDeadzone(100, 100);
-
- // Round pixels za crisp pixel art
- this.cameras.main.roundPixels = true;
-
- // Zoom out za boljši pogled (85% zoom)
- this.cameras.main.setZoom(0.85);
-
- // 🌍 PHASE 28: Camera bounds for 500x500 world (48px tiles)
- const worldSize = 500 * 48; // 24000x24000 pixels
- this.cameras.main.setBounds(0, 0, worldSize, worldSize);
- this.physics.world.setBounds(0, 0, worldSize, worldSize);
- console.log(`📷 Camera bounds set to ${worldSize}x${worldSize}`);
-
- // Parallax oblaki
- this.createClouds();
-
- // Kamera kontrole
- this.setupCamera();
-
- // Initialize Systems
- console.log('🌦️ Initializing Unified Weather System...');
- this.weatherSystem = new WeatherSystem(this);
- this.timeSystem = this.weatherSystem; // Alias
-
- // 💡 LIGHTING & SHADOW SYSTEM
- console.log('💡 Initializing Lighting & Shadow System...');
- this.lightingSystem = new LightingSystem(this);
-
- // Create player shadow
- if (this.player) {
- this.lightingSystem.createShadow(this.player, 12, 30, 15);
- this.lightingSystem.createPlayerTorch(this.player); // Auto-torch at night
- }
-
- // 🌬️ WEATHER ENHANCEMENTS SYSTEM
- console.log('🌬️ Initializing Weather Enhancements System...');
- this.weatherEnhancements = new WeatherEnhancementsSystem(this);
-
- // 🌍 PHASE 28: BiomeSystem & ChunkManager already initialized in create() before terrain generation!
- // No need to initialize again here.
-
- // 🎨 UI POLISH SYSTEM
- console.log('🎨 UI POLISH System...');
- this.uiPolish = new UIPolishSystem(this);
-
- this.statsSystem = new StatsSystem(this);
- this.inventorySystem = new InventorySystem(this);
-
- // 🛠️ CRAFTING SYSTEM
- this.craftingSystem = new CraftingSystem(this);
- this.craftingSystem.loadRecipes().then(() => {
- console.log('🛠️ Crafting system ready!');
-
- // Create UI after recipes loaded
- this.craftingUI = new CraftingUI(this);
-
- // Add C key to toggle crafting UI
- this.input.keyboard.on('keydown-C', () => {
- if (this.craftingUI) {
- this.craftingUI.toggle();
- }
- });
- });
-
- // ========================================================
- // 💎 NEOMEJENI VIRI - Les in Kamen
- // ========================================================
- console.log('💎 Dodajam neomejene vire...');
- this.inventorySystem.addItem('wood', 999999);
- this.inventorySystem.addItem('stone', 999999);
- this.inventorySystem.gold = 999999;
- console.log('✅ Neomejeni viri dodani: 999,999 lesa, kamna in zlata!');
- // ========================================================
-
- this.lootSystem = new LootSystem(this);
- this.interactionSystem = new InteractionSystem(this);
- this.farmingSystem = new FarmingSystem(this);
- this.buildingSystem = new BuildingSystem(this);
- // this.pathfinding = new Pathfinding(this); // REMOVED: Using PathfindingSystem (Worker) instead
- this.questSystem = new QuestSystem(this);
- this.collectionSystem = new CollectionSystem(this);
- this.multiplayerSystem = new MultiplayerSystem(this);
- this.worldEventSystem = new WorldEventSystem(this);
- this.hybridSkillSystem = new HybridSkillSystem(this);
- this.oceanSystem = new OceanSystem(this);
-
- // Central Popup System (for quests, dialogs, etc.)
- this.centralPopup = new CentralPopupSystem(this);
-
- // Tutorial System (shows keyboard shortcuts)
- this.tutorialSystem = new TutorialSystem(this);
-
- // Full Inventory UI (24 slots, I key to open)
- this.fullInventoryUI = new FullInventoryUI(this);
-
- this.legacySystem = new LegacySystem(this);
-
- // Initialize Sound Manager
- console.log('🎵 Initializing Sound Manager...');
- this.soundManager = new SoundManager(this);
- this.soundManager.startMusic();
-
- // Initialize Parallax System
- console.log('🌄 Initializing Parallax System...');
- this.parallaxSystem = new ParallaxSystem(this);
-
- // Initialize Particle Effects
- console.log('✨ Initializing Particle Effects...');
- this.particleEffects = new ParticleEffects(this);
- this.particleEffects.createFallingLeaves();
-
- // ✨ PARTICLE ENHANCEMENTS SYSTEM
- console.log('✨ Initializing Particle Enhancements System...');
- this.particleEnhancements = new ParticleEnhancementsSystem(this);
-
- // Initialize Accessibility System
- console.log('♿ Initializing Accessibility System...');
- this.accessibilitySystem = new AccessibilitySystem(this);
-
- // Initialize Visual Sound Cue System (for deaf/hard-of-hearing players)
- console.log('👁️ Initializing Visual Sound Cue System...');
- this.visualSoundCueSystem = new VisualSoundCueSystem(this);
-
- // Initialize Input Remapping System (for custom controls)
- console.log('🎮 Initializing Input Remapping System...');
- this.inputRemapping = new InputRemappingSystem(this);
-
- // Initialize Screen Reader System (for blind/visually impaired players)
- console.log('🔊 Initializing Screen Reader System...');
- this.screenReader = new ScreenReaderSystem(this);
-
- // Initialize Dyslexia Support System
- console.log('📖 Initializing Dyslexia Support System...');
- this.dyslexiaSupport = new DyslexiaSupportSystem(this);
-
- // Initialize ADHD/Autism Support System
- console.log('🧠 Initializing ADHD/Autism Support System...');
- this.adhdAutismSupport = new ADHDAutismSupportSystem(this);
-
- // Initialize Motor Accessibility System
- console.log('🦾 Initializing Motor Accessibility System...');
- this.motorAccessibility = new MotorAccessibilitySystem(this);
-
- // Initialize Visual Enhancement System
- console.log('✨ Initializing Visual Enhancement System...');
- this.visualEnhancements = new VisualEnhancementSystem(this);
-
- // Initialize Fog of War System
- console.log('🌫️ Initializing Fog of War System...');
- this.fogOfWar = new FogOfWarSystem(this);
-
- // Initialize UI Graphics System
- console.log('🎨 Initializing UI Graphics System...');
- this.uiGraphics = new UIGraphicsSystem(this);
-
- // Initialize Building Visuals System
- console.log('🏭 Initializing Building Visuals System...');
- this.buildingVisuals = new BuildingVisualsSystem(this);
-
- // Initialize Skill Tree System
- console.log('🌳 Initializing Skill Tree System...');
- this.skillTree = new SkillTreeSystem(this);
-
- // Initialize Crafting Tiers System
- console.log('⚒️ Initializing Crafting Tiers System...');
- this.craftingTiers = new CraftingTiersSystem(this);
-
- // Initialize Farm Automation System
- console.log('🤖 Initializing Farm Automation System...');
- this.farmAutomation = new FarmAutomationSystem(this);
-
- // Initialize Animal Breeding System
- console.log('🐑 Initializing Animal Breeding System...');
- this.animalBreeding = new AnimalBreedingSystem(this);
-
- // Initialize Automation Tier System
- console.log('🤖 Initializing Automation Tier System...');
- this.automationTiers = new AutomationTierSystem(this);
-
- // Initialize Breeding UI System
- console.log('🌳 Initializing Breeding UI System...');
- this.breedingUI = new BreedingUISystem(this);
-
- // Initialize Cooking System
- console.log('🍳 Initializing Cooking System...');
- this.cooking = new CookingSystem(this);
-
- // Initialize Fishing System
- console.log('🎣 Initializing Fishing System...');
- this.fishing = new FishingSystem(this);
-
- // Initialize Worker Creatures System
- console.log('🦌 Initializing Worker Creatures System...');
- this.workerCreatures = new WorkerCreaturesSystem(this);
-
- // Initialize Mining & Dungeons System
- console.log('⛏️ Initializing Mining & Dungeons System...');
- this.miningDungeons = new MiningDungeonsSystem(this);
-
- // Initialize Boss Battles System
- console.log('👹 Initializing Boss Battles System...');
- this.bossBattles = new BossBattlesSystem(this);
-
- // Initialize Story & Quest System
- console.log('📖 Initializing Story & Quest System...');
- this.storyQuest = new StoryQuestSystem(this);
-
- // Initialize Multiplayer & Social System
- console.log('🌐 Initializing Multiplayer & Social System...');
- this.multiplayerSocial = new MultiplayerSocialSystem(this);
-
- // Initialize Technical & Performance System
- console.log('⚡ Initializing Technical & Performance System...');
- this.technicalPerformance = new TechnicalPerformanceSystem(this);
-
- // Initialize Platform Support System
- console.log('🎮 Initializing Platform Support System...');
- this.platformSupport = new PlatformSupportSystem(this);
-
- // Initialize Save System Expansion
- console.log('💾 Initializing Save System Expansion...');
- this.saveSystemExpansion = new SaveSystemExpansion(this);
-
- // ========================================================
- // 🎬 ACT 1 STORY SYSTEMS (NEW - 23.12.2025)
- // ========================================================
- console.log('🎬 Initializing Act 1 Story Systems...');
-
- // Dialogue System - NPC conversations
- console.log('💬 Initializing Dialogue System...');
- this.dialogueSystem = new DialogueSystem(this);
-
- // Twin Bond System - Kai ↔ Ana psychic connection
- console.log('💞 Initializing Twin Bond System...');
- this.twinBondSystem = new TwinBondSystem(this);
-
- // Quest System Expanded - Main campaign quests
- console.log('📖 Initializing Quest System Expanded...');
- this.questSystemExpanded = new QuestSystemExpanded(this);
-
- // Quest Tracker UI - Visual quest display
- console.log('📋 Initializing Quest Tracker UI...');
- this.questTrackerUI = new QuestTrackerUI(this);
-
- // Load Grok dialogues
- if (typeof GrokDialogues !== 'undefined') {
- console.log('🧘 Loading Grok dialogues...');
- Object.keys(GrokDialogues).forEach(key => {
- this.dialogueSystem.registerDialogue(key, GrokDialogues[key]);
- });
- console.log(`✅ Loaded ${Object.keys(GrokDialogues).length} Grok dialogue trees`);
- }
-
- // Auto-start Quest 1.1 after 2 seconds
- this.time.delayedCall(2000, () => {
- if (this.questSystemExpanded && !this.questSystemExpanded.isQuestComplete('quest_1_1_wake_up')) {
- console.log('📖 Auto-starting Quest 1.1: A New Beginning');
- this.questSystemExpanded.startQuest('quest_1_1_wake_up');
- }
- });
-
- console.log('✅ Act 1 Story Systems ready!');
- // ========================================================
-
- console.log('🎉🎉🎉 ALL 31 SYSTEMS INITIALIZED! 🎉🎉🎉'); // Updated from 27 to 31
- console.log('💀 MRTVA DOLINA - DEATH VALLEY 💀');
-
- // Show epilepsy warning on first launch
- const hasSeenWarning = localStorage.getItem('novafarma_epilepsy_warning');
- if (!hasSeenWarning) {
- this.time.delayedCall(2000, () => {
- this.accessibilitySystem.showEpilepsyWarning(() => {
- localStorage.setItem('novafarma_epilepsy_warning', 'true');
+ // Initialize Cooking System
+ console.log('🍳 Initializing Cooking System...');
+ this.cooking = new CookingSystem(this);
+
+ // Initialize Fishing System
+ console.log('🎣 Initializing Fishing System...');
+ this.fishing = new FishingSystem(this);
+
+ // Initialize Worker Creatures System
+ console.log('🦌 Initializing Worker Creatures System...');
+ this.workerCreatures = new WorkerCreaturesSystem(this);
+
+ // Initialize Mining & Dungeons System
+ console.log('⛏️ Initializing Mining & Dungeons System...');
+ this.miningDungeons = new MiningDungeonsSystem(this);
+
+ // Initialize Boss Battles System
+ console.log('👹 Initializing Boss Battles System...');
+ this.bossBattles = new BossBattlesSystem(this);
+
+ // Initialize Story & Quest System
+ console.log('📖 Initializing Story & Quest System...');
+ this.storyQuest = new StoryQuestSystem(this);
+
+ // Initialize Multiplayer & Social System
+ console.log('🌐 Initializing Multiplayer & Social System...');
+ this.multiplayerSocial = new MultiplayerSocialSystem(this);
+
+ // Initialize Technical & Performance System
+ console.log('⚡ Initializing Technical & Performance System...');
+ this.technicalPerformance = new TechnicalPerformanceSystem(this);
+
+ // Initialize Platform Support System
+ console.log('🎮 Initializing Platform Support System...');
+ this.platformSupport = new PlatformSupportSystem(this);
+
+ // Initialize Save System Expansion
+ console.log('💾 Initializing Save System Expansion...');
+ this.saveSystemExpansion = new SaveSystemExpansion(this);
+
+ // ========================================================
+ // 🎬 ACT 1 STORY SYSTEMS (NEW - 23.12.2025)
+ // ========================================================
+ console.log('🎬 Initializing Act 1 Story Systems...');
+
+ // Dialogue System - NPC conversations
+ console.log('💬 Initializing Dialogue System...');
+ this.dialogueSystem = new DialogueSystem(this);
+
+ // Twin Bond System - Kai ↔ Ana psychic connection
+ console.log('💞 Initializing Twin Bond System...');
+ this.twinBondSystem = new TwinBondSystem(this);
+
+ // Quest System Expanded - Main campaign quests
+ console.log('📖 Initializing Quest System Expanded...');
+ this.questSystemExpanded = new QuestSystemExpanded(this);
+
+ // Quest Tracker UI - Visual quest display
+ console.log('📋 Initializing Quest Tracker UI...');
+ this.questTrackerUI = new QuestTrackerUI(this);
+
+ // Load Grok dialogues
+ if (typeof GrokDialogues !== 'undefined') {
+ console.log('🧘 Loading Grok dialogues...');
+ Object.keys(GrokDialogues).forEach(key => {
+ this.dialogueSystem.registerDialogue(key, GrokDialogues[key]);
});
+ console.log(`✅ Loaded ${Object.keys(GrokDialogues).length} Grok dialogue trees`);
+ }
+
+ // Auto-start Quest 1.1 after 2 seconds
+ this.time.delayedCall(2000, () => {
+ if (this.questSystemExpanded && !this.questSystemExpanded.isQuestComplete('quest_1_1_wake_up')) {
+ console.log('📖 Auto-starting Quest 1.1: A New Beginning');
+ this.questSystemExpanded.startQuest('quest_1_1_wake_up');
+ }
});
+
+ console.log('✅ Act 1 Story Systems ready!');
+ // ========================================================
+
+ console.log('🎉🎉🎉 ALL 31 SYSTEMS INITIALIZED! 🎉🎉🎉'); // Updated from 27 to 31
+ console.log('💀 MRTVA DOLINA - DEATH VALLEY 💀');
+
+ // Show epilepsy warning on first launch
+ const hasSeenWarning = localStorage.getItem('novafarma_epilepsy_warning');
+ if (!hasSeenWarning) {
+ this.time.delayedCall(2000, () => {
+ this.accessibilitySystem.showEpilepsyWarning(() => {
+ localStorage.setItem('novafarma_epilepsy_warning', 'true');
+ });
+ });
+ }
+
+
+ // Generate Item Sprites for UI
+ TextureGenerator.createItemSprites(this);
+
+ // Launch UI Scene
+ console.log('🖥️ Launching UI Scene...');
+ this.scene.launch('UIScene');
+
+ // Initialize Save System
+ this.saveSystem = new SaveSystem(this);
+
+ // Auto-load if available (DISABLED in SaveSystem!)
+ this.saveSystem.loadGame(); // Vrne false - ne naloži save-a!
+
+ // Debug Text - REMOVED (Version shown in UnifiedStatsPanel)
+ // this.add.text(10, 10, 'NovaFarma Alpha v0.6', { font: '16px monospace', fill: '#ffffff' })
+ // .setScrollFactor(0).setDepth(10000);
+
+ console.log('✅ GameScene ready - FAZA 20 (Full Features)!');
+
+ // 🎮 PHASE 29: KEY BINDINGS
+ console.log('🎮 Setting up Phase 29 key bindings...');
+
+ // E key - Interact with structures/chests
+ this.input.keyboard.on('keydown-E', () => {
+ if (this.structureInteraction) {
+ this.structureInteraction.interact();
+ }
+ });
+
+ // T key - Talk to NPCs
+ this.input.keyboard.on('keydown-T', () => {
+ if (this.npcPopulation) {
+ this.npcPopulation.talkToNPC();
+ }
+ });
+
+ // M key - Toggle full map
+ this.input.keyboard.on('keydown-M', () => {
+ if (this.mapReveal) {
+ this.mapReveal.toggleFullMap();
+ }
+ });
+
+ console.log('✅ Phase 29 key bindings ready! (E: Interact, T: Talk, M: Map)');
+
+ // Global command: giveSeeds(amount) - daj seeds najbližjemu tamed zombiju
+ window.giveSeeds = (amount = 10) => {
+ if (!this.zombieWorkerSystem || !this.player) {
+ console.log('🚫 System not ready!');
+ return;
+ }
+
+ const workers = this.zombieWorkerSystem.workers;
+ if (workers.length === 0) {
+ console.log('🚫 No tamed zombies found!');
+ return;
+ }
+
+ // Find closest worker
+ const playerPos = this.player.getPosition();
+ let closest = null;
+ let minDist = 999;
+
+ for (const worker of workers) {
+ const dist = Phaser.Math.Distance.Between(playerPos.x, playerPos.y, worker.gridX, worker.gridY);
+ if (dist < minDist) {
+ minDist = dist;
+ closest = worker;
+ }
+ }
+
+ if (closest && closest.workerData) {
+ closest.workerData.inventory.seeds += amount;
+ closest.showEmote(`📦+${amount}`);
+ console.log(`🧟📦 Gave ${amount} seeds to worker! (Total: ${closest.workerData.inventory.seeds})`);
+ }
+ };
+
+ console.log('💡 TIP: Use giveSeeds(20) to give 20 seeds to nearest zombie');
+
+ // Global command: placeGrave() - postavi grob pri playerju
+ window.placeGrave = () => {
+ if (!this.graveSystem || !this.player) {
+ console.log('🚫 System not ready!');
+ return;
+ }
+
+ const playerPos = this.player.getPosition();
+ const result = this.graveSystem.placeGrave(
+ Math.floor(playerPos.x),
+ Math.floor(playerPos.y)
+ );
+
+ if (result) {
+ console.log('🪦 Grave placed successfully!');
+ }
+ };
+
+ console.log('💡 TIP: Use placeGrave() to place grave at your location');
+
+ // Global command: giveAllParts() - daj vse scooter parts
+ window.giveAllParts = () => {
+ if (!this.scooterRepairSystem || !this.inventorySystem) {
+ console.log('🚫 System not ready!');
+ return;
+ }
+
+ const parts = this.scooterRepairSystem.requiredParts;
+ const tools = this.scooterRepairSystem.requiredTools;
+
+ for (const [part, count] of Object.entries(parts)) {
+ this.inventorySystem.addItem(part, count);
+ }
+
+ for (const [tool, count] of Object.entries(tools)) {
+ this.inventorySystem.addItem(tool, count);
+ }
+
+ console.log('✅ All scooter parts and tools added!');
+ this.scooterRepairSystem.listMissingParts();
+ };
+
+ // Global command: checkScooter() - preveri kaj manjka
+ window.checkScooter = () => {
+ if (!this.scooterRepairSystem) {
+ console.log('🚫 System not ready!');
+ return;
+ }
+
+ this.scooterRepairSystem.listMissingParts();
+ };
+
+ console.log('💡 TIP: Use checkScooter() to see repair requirements');
+ console.log('💡 TIP: Use giveAllParts() to get all scooter parts (testing)');
+
+ // Global command: unlockZone(id)
+ window.unlockZone = (id) => {
+ if (this.expansionSystem) {
+ this.expansionSystem.unlockZone(id);
+ }
+ };
+ // Global command: dropBlueprint()
+ window.dropBlueprint = () => {
+ if (this.blueprintSystem && this.player) {
+ const pos = this.player.getPosition();
+ this.blueprintSystem.tryDropBlueprint(pos.x, pos.y, 'boss'); // 100% chance
+ }
+ };
+
+ // Global command: placeFurnace()
+ window.placeFurnace = () => {
+ if (this.terrainSystem && this.player) {
+ const pos = this.player.getPosition();
+ const x = Math.floor(pos.x);
+ const y = Math.floor(pos.y);
+ this.terrainSystem.placeStructure(x, y, 'furnace');
+ if (this.inventorySystem) {
+ this.inventorySystem.addItem('coal', 10);
+ this.inventorySystem.addItem('ore_iron', 10);
+ }
+ console.log(`🏭 Furnace placed at ${x},${y}`);
+ }
+ };
+
+ // Global command: placeMint()
+ window.placeMint = () => {
+ if (this.terrainSystem && this.player) {
+ const pos = this.player.getPosition();
+ const x = Math.floor(pos.x);
+ const y = Math.floor(pos.y);
+ this.terrainSystem.placeStructure(x, y, 'mint');
+ if (this.inventorySystem) {
+ this.inventorySystem.addItem('iron_bar', 10);
+ this.inventorySystem.addItem('coal', 10);
+ }
+ console.log(`💰 Mint placed at ${x},${y}`);
+ }
+ };
+
+ // TESTNA DREVESA IN KAMNI - Za testiranje
+ console.log('🌳 Adding test trees and rocks near player...');
+ this.terrainSystem.addDecoration(52, 50, 'tree_green');
+ this.terrainSystem.addDecoration(48, 50, 'rock');
+ this.terrainSystem.addDecoration(50, 52, 'tree_oak');
+ this.terrainSystem.addDecoration(50, 48, 'rock_large');
+ console.log('✅ Test decorations added at (50±2, 50±2)');
+
+ // Start Engine
+ this.Antigravity_Start();
+ } catch (err) {
+ console.error('❌ CRITICAL INITIALIZATION ERROR:', err);
}
-
-
- // Generate Item Sprites for UI
- TextureGenerator.createItemSprites(this);
-
- // Launch UI Scene
- console.log('🖥️ Launching UI Scene...');
- this.scene.launch('UIScene');
-
- // Initialize Save System
- this.saveSystem = new SaveSystem(this);
-
- // Auto-load if available (DISABLED in SaveSystem!)
- this.saveSystem.loadGame(); // Vrne false - ne naloži save-a!
-
- // Debug Text - REMOVED (Version shown in UnifiedStatsPanel)
- // this.add.text(10, 10, 'NovaFarma Alpha v0.6', { font: '16px monospace', fill: '#ffffff' })
- // .setScrollFactor(0).setDepth(10000);
-
- console.log('✅ GameScene ready - FAZA 20 (Full Features)!');
-
- // 🎮 PHASE 29: KEY BINDINGS
- console.log('🎮 Setting up Phase 29 key bindings...');
-
- // E key - Interact with structures/chests
- this.input.keyboard.on('keydown-E', () => {
- if (this.structureInteraction) {
- this.structureInteraction.interact();
- }
- });
-
- // T key - Talk to NPCs
- this.input.keyboard.on('keydown-T', () => {
- if (this.npcPopulation) {
- this.npcPopulation.talkToNPC();
- }
- });
-
- // M key - Toggle full map
- this.input.keyboard.on('keydown-M', () => {
- if (this.mapReveal) {
- this.mapReveal.toggleFullMap();
- }
- });
-
- console.log('✅ Phase 29 key bindings ready! (E: Interact, T: Talk, M: Map)');
-
- // Global command: giveSeeds(amount) - daj seeds najbližjemu tamed zombiju
- window.giveSeeds = (amount = 10) => {
- if (!this.zombieWorkerSystem || !this.player) {
- console.log('🚫 System not ready!');
- return;
- }
-
- const workers = this.zombieWorkerSystem.workers;
- if (workers.length === 0) {
- console.log('🚫 No tamed zombies found!');
- return;
- }
-
- // Find closest worker
- const playerPos = this.player.getPosition();
- let closest = null;
- let minDist = 999;
-
- for (const worker of workers) {
- const dist = Phaser.Math.Distance.Between(playerPos.x, playerPos.y, worker.gridX, worker.gridY);
- if (dist < minDist) {
- minDist = dist;
- closest = worker;
- }
- }
-
- if (closest && closest.workerData) {
- closest.workerData.inventory.seeds += amount;
- closest.showEmote(`📦+${amount}`);
- console.log(`🧟📦 Gave ${amount} seeds to worker! (Total: ${closest.workerData.inventory.seeds})`);
- }
- };
-
- console.log('💡 TIP: Use giveSeeds(20) to give 20 seeds to nearest zombie');
-
- // Global command: placeGrave() - postavi grob pri playerju
- window.placeGrave = () => {
- if (!this.graveSystem || !this.player) {
- console.log('🚫 System not ready!');
- return;
- }
-
- const playerPos = this.player.getPosition();
- const result = this.graveSystem.placeGrave(
- Math.floor(playerPos.x),
- Math.floor(playerPos.y)
- );
-
- if (result) {
- console.log('🪦 Grave placed successfully!');
- }
- };
-
- console.log('💡 TIP: Use placeGrave() to place grave at your location');
-
- // Global command: giveAllParts() - daj vse scooter parts
- window.giveAllParts = () => {
- if (!this.scooterRepairSystem || !this.inventorySystem) {
- console.log('🚫 System not ready!');
- return;
- }
-
- const parts = this.scooterRepairSystem.requiredParts;
- const tools = this.scooterRepairSystem.requiredTools;
-
- for (const [part, count] of Object.entries(parts)) {
- this.inventorySystem.addItem(part, count);
- }
-
- for (const [tool, count] of Object.entries(tools)) {
- this.inventorySystem.addItem(tool, count);
- }
-
- console.log('✅ All scooter parts and tools added!');
- this.scooterRepairSystem.listMissingParts();
- };
-
- // Global command: checkScooter() - preveri kaj manjka
- window.checkScooter = () => {
- if (!this.scooterRepairSystem) {
- console.log('🚫 System not ready!');
- return;
- }
-
- this.scooterRepairSystem.listMissingParts();
- };
-
- console.log('💡 TIP: Use checkScooter() to see repair requirements');
- console.log('💡 TIP: Use giveAllParts() to get all scooter parts (testing)');
-
- // Global command: unlockZone(id)
- window.unlockZone = (id) => {
- if (this.expansionSystem) {
- this.expansionSystem.unlockZone(id);
- }
- };
- // Global command: dropBlueprint()
- window.dropBlueprint = () => {
- if (this.blueprintSystem && this.player) {
- const pos = this.player.getPosition();
- this.blueprintSystem.tryDropBlueprint(pos.x, pos.y, 'boss'); // 100% chance
- }
- };
-
- // Global command: placeFurnace()
- window.placeFurnace = () => {
- if (this.terrainSystem && this.player) {
- const pos = this.player.getPosition();
- const x = Math.floor(pos.x);
- const y = Math.floor(pos.y);
- this.terrainSystem.placeStructure(x, y, 'furnace');
- if (this.inventorySystem) {
- this.inventorySystem.addItem('coal', 10);
- this.inventorySystem.addItem('ore_iron', 10);
- }
- console.log(`🏭 Furnace placed at ${x},${y}`);
- }
- };
-
- // Global command: placeMint()
- window.placeMint = () => {
- if (this.terrainSystem && this.player) {
- const pos = this.player.getPosition();
- const x = Math.floor(pos.x);
- const y = Math.floor(pos.y);
- this.terrainSystem.placeStructure(x, y, 'mint');
- if (this.inventorySystem) {
- this.inventorySystem.addItem('iron_bar', 10);
- this.inventorySystem.addItem('coal', 10);
- }
- console.log(`💰 Mint placed at ${x},${y}`);
- }
- };
-
- // TESTNA DREVESA IN KAMNI - Za testiranje
- console.log('🌳 Adding test trees and rocks near player...');
- this.terrainSystem.addDecoration(52, 50, 'tree_green');
- this.terrainSystem.addDecoration(48, 50, 'rock');
- this.terrainSystem.addDecoration(50, 52, 'tree_oak');
- this.terrainSystem.addDecoration(50, 48, 'rock_large');
- console.log('✅ Test decorations added at (50±2, 50±2)');
-
- // Start Engine
- this.Antigravity_Start();
}
setupCamera() {
@@ -1835,12 +1946,6 @@ class GameScene extends Phaser.Scene {
this.parallaxSystem.update(screenX, screenY);
}
- // Terrain Update
- if (this.terrainSystem) {
- // Note: Flat2D doesn't need culling (already optimized)
- // this.terrainSystem.updateCulling(this.cameras.main);
- this.terrainSystem.update(delta);
- }
// Clouds
@@ -1940,17 +2045,17 @@ class GameScene extends Phaser.Scene {
/*
if (!this.player || this.npcs.length > 50) return;
-
+
const playerPos = this.player.getPosition();
const angle = Math.random() * Math.PI * 2;
const distance = Phaser.Math.Between(15, 25);
-
+
const spawnX = Math.floor(playerPos.x + Math.cos(angle) * distance);
const spawnY = Math.floor(playerPos.y + Math.sin(angle) * distance);
-
+
if (spawnX < 0 || spawnX >= 100 || spawnY < 0 || spawnY >= 100) return;
if (Phaser.Math.Distance.Between(spawnX, spawnY, 20, 20) < 15) return;
-
+
const tile = this.terrainSystem.getTile(spawnX, spawnY);
if (tile && tile.type !== 'water') {
console.log(`🌑 Night Spawn: Zombie at ${spawnX},${spawnY}`);
@@ -2104,12 +2209,6 @@ class GameScene extends Phaser.Scene {
// Parallax background update
this.updateParallax(delta);
- // Terrain system update (za water animacijo)
- if (this.terrainSystem && this.terrainSystem.update) {
- this.terrainSystem.update(Date.now(), delta);
- } else {
- console.warn('⚠️ TerrainSystem.update not available!');
- }
// 🎮 PHASE 29: SYSTEM UPDATES
const playerGridX = this.player ? this.player.gridX : 250;
@@ -2217,3 +2316,5 @@ class GameScene extends Phaser.Scene {
});
}
}
+
+
diff --git a/src/scenes/PreloadScene.js b/src/scenes/PreloadScene.js
index 74f32d295..e269804b0 100644
--- a/src/scenes/PreloadScene.js
+++ b/src/scenes/PreloadScene.js
@@ -36,7 +36,8 @@ class PreloadScene extends Phaser.Scene {
// this.load.tilemapTiledJSON('micro_farm_128x128', 'assets/maps/micro_farm_128x128.json'); // 🌾 Testna farma
// this.load.tilemapTiledJSON('micro_farm_8x8', 'assets/maps/micro_farm_8x8.json'); // 🏕️ Manjša test mapa
// 🗺️ TILED MAP (User's NovaFarma)
- this.load.tilemapTiledJSON('NovaFarma', 'assets/maps/NovaFarma.json');
+ // Add cache busting to force reload of new exports
+ this.load.tilemapTiledJSON('NovaFarma', `assets/maps/NovaFarma.json?v=${Date.now()}`);
// 🎨 TILED TILESETS (Manual Loading)
const kzPath = 'assets/narezano_in_majhno/krvava_zetev_sprites/';
diff --git a/src/systems/Flat2DTerrainSystem.js b/src/systems/Flat2DTerrainSystem.js
index 4b27ae2a6..dcbfbeea0 100644
--- a/src/systems/Flat2DTerrainSystem.js
+++ b/src/systems/Flat2DTerrainSystem.js
@@ -69,6 +69,91 @@ class Flat2DTerrainSystem {
console.log('✅ Flat 2D map ready!');
}
+ // 🗺️ Load map directly from Tiled JSON (User Created)
+ loadFromTiled(map) {
+ this.tiledMap = map;
+ console.log('🗺️ Loading terrain from Tiled map:', map.key);
+
+ // Update system dimensions
+ this.width = map.width;
+ this.height = map.height;
+ this.tileSize = map.tileWidth;
+
+ // Prepare tilesets array
+ const tilesets = [];
+
+ // Helper to map tileset names to Phaser keys (similar to TiledTestScene)
+ const getTilesetKey = (name) => {
+ const mapping = {
+ 'grass': 'tileset_grass',
+ 'dirt': 'tileset_dirt',
+ 'water': 'tileset_water',
+ 'decorations': 'tileset_decorations',
+ '01_Ground': 'tileset_01_Ground',
+ '02_Obstacles': 'tileset_02_Obstacles',
+ '03_Fences': 'tileset_03_Fences',
+ '04_Buildings': 'tileset_04_Buildings',
+ '05_Tools_Items': 'tileset_05_Tools_Items'
+ };
+ return mapping[name] || `tileset_${name}`;
+ };
+
+ // Load tilesets
+ map.tilesets.forEach(tilesetData => {
+ let textureKey = getTilesetKey(tilesetData.name);
+
+ // 🕵️ Try to find texture (Prefix matched OR Exact name)
+ if (!this.scene.textures.exists(textureKey)) {
+ // Fallback: Try the raw tileset name as key
+ if (this.scene.textures.exists(tilesetData.name)) {
+ textureKey = tilesetData.name;
+ }
+ }
+
+ if (this.scene.textures.exists(textureKey)) {
+ try {
+ const tileset = map.addTilesetImage(tilesetData.name, textureKey);
+ if (tileset) {
+ tilesets.push(tileset);
+ console.log(` ✅ Tileset mapped: "${tilesetData.name}" -> Key: "${textureKey}"`);
+ }
+ } catch (e) {
+ console.error(` ❌ Failed to add tileset: ${tilesetData.name}`, e);
+ }
+ } else {
+ console.warn(` ⚠️ Texture not found for tileset: "${tilesetData.name}". Tried keys: "tileset_${tilesetData.name}", "${tilesetData.name}"`);
+ }
+ });
+
+ // Create layers
+ console.log(` Found ${map.layers.length} layers in map.`);
+ map.layers.forEach((layerData, index) => {
+ console.log(` Processing Layer ${index}: Name="${layerData.name}", Type="${layerData.type}", Visible=${layerData.visible}`);
+
+ if (layerData.visible && layerData.type === 'tilelayer') {
+ const layer = map.createLayer(layerData.name, tilesets, 0, 0);
+ if (layer) {
+ console.log(` ✅ Layer created: ${layerData.name}`);
+
+ // Depth sorting
+ if (layerData.name.toLowerCase().includes('ground')) layer.setDepth(1);
+ else if (layerData.name.toLowerCase().includes('path')) layer.setDepth(2);
+ else if (layerData.name.toLowerCase().includes('decor') || layerData.name.toLowerCase().includes('obstacle')) layer.setDepth(3);
+ else if (layerData.name.toLowerCase().includes('buidling') || layerData.name.toLowerCase().includes('fence') || layerData.name.toLowerCase().includes('player')) layer.setDepth(4);
+ else layer.setDepth(2);
+
+ // Scale if needed (usually 1 for Tiled maps if assets match)
+ }
+ }
+ });
+
+ // Setup camera bounds
+ this.scene.cameras.main.setBounds(0, 0, map.widthInPixels, map.heightInPixels);
+ this.scene.cameras.main.centerOn(map.widthInPixels / 2, map.heightInPixels / 2);
+
+ console.log('✅ Tiled map loaded and rendered!');
+ }
+
// 🌍 PHASE 28: Create simple biome-aware background
createBiomeBackground() {
const size = this.tileSize;
diff --git a/src/systems/PathfindingSystem.js b/src/systems/PathfindingSystem.js
index fcaf424c6..25ab87d26 100644
--- a/src/systems/PathfindingSystem.js
+++ b/src/systems/PathfindingSystem.js
@@ -10,7 +10,7 @@ class PathfindingSystem {
// Ustvarimo workerja
this.worker = new Worker('src/workers/pathfinding.worker.js');
this.worker.onmessage = this.handleMessage.bind(this);
- console.log('✅ PathfindingWorker initialized.');
+ console.log('✅ PathfindingWorker initialized (v2.1 - Tiled Support Ready).');
this.initialized = true;
} catch (err) {
console.error('❌ Failed to init PathfindingWorker:', err);
@@ -31,26 +31,46 @@ class PathfindingSystem {
for (let y = 0; y < height; y++) {
for (let x = 0; x < width; x++) {
let blocked = 0;
- const tile = ts.tiles[y][x];
- // 1. Voda in void
- if (!tile || tile.type === 'water' || tile.type === 'void') {
- blocked = 1;
- } else {
- // 2. Dekoracije (Ovire)
- // Uporabimo že obstoječo logiko v TerrainSystemu (če obstaja) ali preverimo dekoracije
- const key = `${x},${y}`;
- const decor = ts.decorationsMap.get(key);
- if (decor) {
- const solidTypes = [
- 'tree', 'tree_green', 'tree_blue', 'tree_dead',
- 'tree_green_new', 'tree_blue_new', 'tree_dead_new',
- 'rock', 'rock_asset', 'rock_new', 'rock_small', 'rock_1', 'rock_2',
- 'wall', 'fence', 'house', 'gravestone'
- ];
- // Preverimo substring za tipe (npr. 'tree' ujame 'tree_blue')
- const isSolid = solidTypes.some(t => decor.type.includes(t));
- if (isSolid) blocked = 1;
+ // 🗺️ 1. TILED MAP SUPPORT
+ if (ts.tiledMap) {
+ // Check various obstacle layers
+ const obstacleLayers = ['Obstacles', 'Buildings', 'Fences', '02_Obstacles', '03_Fences', '04_Buildings'];
+ let isBlocked = false;
+
+ for (const layerName of obstacleLayers) {
+ const tile = ts.tiledMap.getTileAt(x, y, true, layerName);
+ if (tile && tile.index !== -1) {
+ isBlocked = true;
+ break;
+ }
+ }
+
+ if (isBlocked) {
+ blocked = 1;
+ }
+ }
+ // 📊 2. PROCEDURAL / FLAT TILES SUPPORT
+ else {
+ const tile = ts.tiles && ts.tiles[y] ? ts.tiles[y][x] : null;
+
+ // 1. Voda in void
+ if (!tile || tile.type === 'water' || tile.type === 'void') {
+ blocked = 1;
+ } else {
+ // 2. Dekoracije (Ovire)
+ const key = `${x},${y}`;
+ const decor = ts.decorationsMap.get(key);
+ if (decor) {
+ const solidTypes = [
+ 'tree', 'tree_green', 'tree_blue', 'tree_dead',
+ 'tree_green_new', 'tree_blue_new', 'tree_dead_new',
+ 'rock', 'rock_asset', 'rock_new', 'rock_small', 'rock_1', 'rock_2',
+ 'wall', 'fence', 'house', 'gravestone'
+ ];
+ const isSolid = solidTypes.some(t => decor.type && decor.type.includes(t));
+ if (isSolid) blocked = 1;
+ }
}
}