From 8818b12fa5d1e23e9656b86f0a1c38daa1ca1304 Mon Sep 17 00:00:00 2001 From: htom Date: Mon, 3 Nov 2025 18:52:06 +0100 Subject: [PATCH 001/107] =?UTF-8?q?k=C3=B6vetelm=C3=A9ny=20lista=20hozz?= =?UTF-8?q?=C3=A1ad=C3=A1sa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Docs/funk_spec.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Docs/funk_spec.md diff --git a/Docs/funk_spec.md b/Docs/funk_spec.md new file mode 100644 index 0000000..dcb6ec2 --- /dev/null +++ b/Docs/funk_spec.md @@ -0,0 +1,32 @@ +## 5. Követelménylista + +### Szerver +| Név | Verzió | Leírás | +| --- | ------ | ------ | +| **WebSocket** | 1.0 | A szerver és a kliens között folyamatos kétirányú kommunikációt biztosít. A kapcsolat létrejötte után a szerver valós időben képes fogadni és továbbítani az eseményeket (pl. lépés végrehajtása, állapotfrissítés). Hiba esetén a kapcsolat automatikusan újraépül. | +| **Kapcsolatok csoportosítása** | 1.0 | A szerver figyeli az elérhető, szabad klienseket, majd két szabad kapcsolatot automatikusan összerendel egy meccsbe. A csoportosítás után a játékosok azonos „room”-ba kerülnek, és a szerver biztosítja az egymás közötti adatkommunikációt. | +| **Kommunikáció az engine-nel** | 1.0 | A szerver a játékosoktól érkező lépéseket és játékinformációkat továbbítja az engine-nek feldolgozásra. Az engine válasza után a szerver visszaküldi az eredményt a klienseknek (pl. érvényes lépés, matt, patt). A kommunikáció aszinkron módon zajlik, válaszidő-ellenőrzéssel. | +| **Kommunikáció a UI-al** | 1.0 | A szerver WebSocket-en keresztül adatokat továbbít a felhasználói felület és az engine között. A UI által kért műveletek (pl. új meccs létrehozása, állapotlekérés) feldolgozását a szerver közvetíti.| +### Engine +| Név | Verzió | Leírás | +| --- | ------ | ------ | +| **Bitboard** | 1.0 | A játék táblaállapotát bitműveletekkel reprezentálja a hatékonyság érdekében. Minden bábu típus és szín külön bitmask-on kerül tárolásra, lehetővé téve a gyors lekérdezéseket és lépésellenőrzéseket. | +| **Lépésgenerálás LUT** | 1.0 | Előre kiszámított lookup táblák segítségével gyorsítja a lépésgenerálást és szabályellenőrzést. Ez csökkenti a számítási időt, és optimalizálja az engine teljesítményét. | +| **Lépésgenerálás** | 1.0 | A különböző bábutípusok (gyalog, bástya, futó, stb.) lépési logikáját valósítja meg. A függvények ellenőrzik a lépés érvényességét, figyelembe véve az aktuális állást, sakkhelyzetet és speciális szabályokat (pl. sáncolás, en passant). | +| **Util függvények** | 1.0 | Segédfüggvények az engine belső működéséhez, például raycast műveletek, bitműveleti maszkok kezelése, valamint logikai ellenőrzések a lépések és ütések számításához. | + +### UI +| Név | Verzió | Leírás | +| --- | ------ | ------ | +| **Belépés** | 1.0 | A felhasználó a kezdőképernyőn keresztül adhatja meg a nevét lokális játékhoz, vagy hitelesítheti magát online játékmód esetén. Hibás adatok esetén a rendszer figyelmeztetést küld. | +| **Főmenü** | 1.0 | Az alkalmazás központi navigációs felülete, ahol a felhasználó meccset kereshet, új játékot indíthat lokálisan, vagy beállításokat módosíthat. A menü megjeleníti az aktuális státuszt (online/offline). | +| **Játék** | 1.0 | A játékfelület megjeleníti a táblát, bábukat, lépéseket, és az aktuális játékállást. Támogatja mind az online, mind a lokális módot. A felület kezeli az interakciókat (lépéskattintás, visszavonás, végeredmény kijelzés). | +| **Kommunikáció a szerverrel** | 1.0 | A kliens a szerveren keresztül kommunikál az engine-nel. A UI felel az üzenetek küldéséért (lépés, új játék, visszajelzés), valamint a szervertől kapott események vizuális megjelenítéséért. | + + +### GitHub Actions (CI/CD) +| Név | Leírás | +| --- | ------ | +| Folyamatos tesztelés | A projekt minden commit után automatikusan tesztelődik. A pipeline lefuttatja a teszteket, és értesítést küld hibás build esetén. | +| Folyamatos integráció | Az új funkciók beolvadásakor a rendszer automatikusan integrálja a változtatásokat, új buildet hoz létre, és frissíti a fejlesztői környezetet. | +| Tesztadatok | A tesztadatok legyenek elérhetőek egy táblázatban, dátummal ellátva. (Google Sheets) | -- 2.49.1 From d819368962ff0007b021d328cdb4de81296f74f9 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 5 Nov 2025 12:36:30 +0100 Subject: [PATCH 002/107] Expand GitHub workflow documentation Detailed the GitHub workflow process for automated testing and releases, including branch naming conventions and test result logging. --- Docs/funk_spec.md | 19 +++++++++++++++++++ Docs/placeholder.md | 0 2 files changed, 19 insertions(+) delete mode 100644 Docs/placeholder.md diff --git a/Docs/funk_spec.md b/Docs/funk_spec.md index dcb6ec2..ac59ed9 100644 --- a/Docs/funk_spec.md +++ b/Docs/funk_spec.md @@ -30,3 +30,22 @@ | Folyamatos tesztelés | A projekt minden commit után automatikusan tesztelődik. A pipeline lefuttatja a teszteket, és értesítést küld hibás build esetén. | | Folyamatos integráció | Az új funkciók beolvadásakor a rendszer automatikusan integrálja a változtatásokat, új buildet hoz létre, és frissíti a fejlesztői környezetet. | | Tesztadatok | A tesztadatok legyenek elérhetőek egy táblázatban, dátummal ellátva. (Google Sheets) | + +## A github workflow folyamata: + +A githubon tárolt kód minden feltöltésnél a kód mindig automatikus tesztelve van, egy workflow által. Ennek a működése: +1. A brancheket a következő képpen kell elnevezni: Projekt/task_neve (a task neve a kanban tablabol jon). +2. 3 projekt van a github repository-ban: Engine, Server és a UI. Ennek megfelelően a következőképpen kell kinézniük a brancheknek: + - Engine/task_1 + - Server/task_1 + - UI/task_1 + Erre azért van szükség mert a github workflow ezek alapján az elnevezések alapján fogja eldönteni melyik teszteket futtassa. Ha az Engine projekthez lett feltöltve kód, akkor csak az ahhoz tartozó teszteket futtassa. +3. A workflow folyamat a következő: + Amikor feltöltődik a három projekt közül valamelyikére egy új commit. A github workflow megnézni mi a branch neve. Ezután letölti a projektet githubról, és lefuttatja azon projekt teszteit. A tesztek eredményét feltölti egy google táblazat fájlba, ahonnan bármikor visszenézhető. Minden teszt eredmény az annak megfelően elnevezett munkalapra kerül be (Engine, Server, UI), egymás alá táblázatos elrendezésben. Az oszlopok a következőek: Dátum, függvény neve, teszt bemenet, teszt kimenet, sikeres-e. + Amikor a main/master branchre kerül fel kód. A teszt az előbbiek alapján ugyanúgy lefut, csak itt mind a 3 projekt tesztje le fog futni és az eredmény egy main/master nevű munkalapra fog feltöltődni a táblázatban. Amint sikeresen lefut a tesztelés, elindul egy automatikus build, ami le fogja build-elni a projekteket. Ezután létrehoz egy új Release-t githubon, ahol beállítja a verzió számot a rust projektben beállított verzió számra, majd feltölti oda a fájlokat amiket a build hozott létre, és kiteszi ezt a buildet. + + +A workflow 3 külön fáljba van bontva: +1. A dispatcher (dispatch.yml). Ez indítja el a workflow-t ami teszteli a kódot a megfelelő branchen, elindítja a release workflow-t ami feltölti a master branchről buildelt projekt fájlokat. +2. A teszter (tests.yml). Ez a workflow bele fog lépni a megfelelő projekt mappába és lefutattja a megírt teszteket, és feltölti az eredményt egy google spreadsheet-be. +3. A release (release.yml). Amint sikeresek a tesztek elindul ez a workflow és lefordítja a kódot majd feltölti github-ra egy új release-ként diff --git a/Docs/placeholder.md b/Docs/placeholder.md deleted file mode 100644 index e69de29..0000000 -- 2.49.1 From 7625eecbd968fa9341a2b9d80223b620184631ea Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 5 Nov 2025 13:26:23 +0100 Subject: [PATCH 003/107] Workflow: Dispatch and Test runner workflow test #1 Testing the dispatcher and engine_test workflow for any bugs, the changes on these files always need to be uploaded to github to test if it is working correctly --- .github/workflows/dispatcher.yml | 65 +++++++++++++++++++++++++++++++ .github/workflows/engine_test.yml | 22 +++++++++++ .gitub/workflows/placeholder.txt | 0 3 files changed, 87 insertions(+) create mode 100644 .github/workflows/dispatcher.yml create mode 100644 .github/workflows/engine_test.yml delete mode 100644 .gitub/workflows/placeholder.txt diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml new file mode 100644 index 0000000..10e64fd --- /dev/null +++ b/.github/workflows/dispatcher.yml @@ -0,0 +1,65 @@ +name: Dispatcher + +on: + push: + branches: + - '**' # minden branchre lefut + +jobs: + detect-and-dispatch: + runs-on: self-hosted # (sajat rpi-on fusson) + + steps: + - name: Detect project from branch name + id: detect + run: | + BRANCH_NAME=${GITHUB_REF##*/} + echo "Branch name: $BRANCH_NAME" + + if [[ "$BRANCH_NAME" == Engine/* ]]; then + echo "project=Engine" >> $GITHUB_OUTPUT + elif [[ "$BRANCH_NAME" == Server/* ]]; then + echo "project=Server" >> $GITHUB_OUTPUT + elif [[ "$BRANCH_NAME" == UI/* ]]; then + echo "project=UI" >> $GITHUB_OUTPUT + else + echo "project=unknown" >> $GITHUB_OUTPUT + fi + + - name: Trigger Engine tests + if: steps.detect.outputs.project == 'Engine' + uses: peter-evans/workflow-dispatch@v2 + with: + workflow: "engine_test.yml" + ref: ${{ github.ref }} + + - name: Trigger Server tests + if: steps.detect.outputs.project == 'Server' + uses: peter-evans/workflow-dispatch@v2 + with: + workflow: "server_test.yml" + ref: ${{ github.ref }} + + - name: Trigger UI tests + if: steps.detect.outputs.project == 'UI' + uses: peter-evans/workflow-dispatch@v2 + with: + workflow: "ui_test.yml" + ref: ${{ github.ref }} + + - name: Trigger all tests (main/master) + if: github.ref_name == 'main' || github.ref_name == 'master' + uses: peter-evans/workflow-dispatch@v2 + with: + workflow: "engine_test.yml" + ref: ${{ github.ref }} + - uses: peter-evans/workflow-dispatch@v2 + if: github.ref_name == 'main' || github.ref_name == 'master' + with: + workflow: "server_test.yml" + ref: ${{ github.ref }} + - uses: peter-evans/workflow-dispatch@v2 + if: github.ref_name == 'main' || github.ref_name == 'master' + with: + workflow: "ui_test.yml" + ref: ${{ github.ref }} diff --git a/.github/workflows/engine_test.yml b/.github/workflows/engine_test.yml new file mode 100644 index 0000000..d9b5b6f --- /dev/null +++ b/.github/workflows/engine_test.yml @@ -0,0 +1,22 @@ +name: Engine Tests + +on: + workflow_dispatch: + +jobs: + engine-tests: + runs-on: self-hosted + + steps: + - uses: actions/checkout@v4 + + - name: Set up Rust + uses: actions/setup-rust@v1 + with: + rust-version: stable + + - name: Run Engine tests + run: | + cd engine + ls + cargo test --verbose diff --git a/.gitub/workflows/placeholder.txt b/.gitub/workflows/placeholder.txt deleted file mode 100644 index e69de29..0000000 -- 2.49.1 From a19e0bf9220670d43cb08840818f2e8f8c130e59 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 5 Nov 2025 13:30:58 +0100 Subject: [PATCH 004/107] Workflow: added missing repository checkout Repository checkout was missing from the dispatch workflow --- .github/workflows/dispatcher.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 10e64fd..61ccc0f 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -5,6 +5,9 @@ on: branches: - '**' # minden branchre lefut +permissions: + contents: write + jobs: detect-and-dispatch: runs-on: self-hosted # (sajat rpi-on fusson) @@ -26,6 +29,10 @@ jobs: echo "project=unknown" >> $GITHUB_OUTPUT fi + + - name: Checkout repository + uses: actions/checkout@v4 + - name: Trigger Engine tests if: steps.detect.outputs.project == 'Engine' uses: peter-evans/workflow-dispatch@v2 -- 2.49.1 From 300b3cde34400219f57c8375bc0ec12082de18eb Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 5 Nov 2025 13:46:29 +0100 Subject: [PATCH 005/107] Workflow: Triggering the workflow a different way with gh script --- .github/workflows/dispatcher.yml | 127 ++++++++++++++++++------------- 1 file changed, 74 insertions(+), 53 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 61ccc0f..c5d91fe 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -3,70 +3,91 @@ name: Dispatcher on: push: branches: - - '**' # minden branchre lefut - -permissions: - contents: write + - '**' jobs: - detect-and-dispatch: - runs-on: self-hosted # (sajat rpi-on fusson) - + dispatch: + runs-on: self-hosted + outputs: + engine: ${{ steps.check.outputs.engine }} + server: ${{ steps.check.outputs.server }} + ui: ${{ steps.check.outputs.ui }} steps: - - name: Detect project from branch name - id: detect + - name: Determine which tests to run + id: check run: | - BRANCH_NAME=${GITHUB_REF##*/} - echo "Branch name: $BRANCH_NAME" + BRANCH="${{ github.ref_name }}" + echo "Branch: $BRANCH" - if [[ "$BRANCH_NAME" == Engine/* ]]; then - echo "project=Engine" >> $GITHUB_OUTPUT - elif [[ "$BRANCH_NAME" == Server/* ]]; then - echo "project=Server" >> $GITHUB_OUTPUT - elif [[ "$BRANCH_NAME" == UI/* ]]; then - echo "project=UI" >> $GITHUB_OUTPUT - else - echo "project=unknown" >> $GITHUB_OUTPUT + ENGINE=false + SERVER=false + UI=false + + if [[ "$BRANCH" == *"Engine"* ]]; then + ENGINE=true + fi + if [[ "$BRANCH" == *"Server"* ]]; then + SERVER=true + fi + if [[ "$BRANCH" == *"UI"* ]]; then + UI=true fi + # Run all on master + if [[ "$BRANCH" == "master" ]]; then + ENGINE=true + SERVER=true + UI=true + fi - - name: Checkout repository - uses: actions/checkout@v4 + echo "engine=$ENGINE" >> $GITHUB_OUTPUT + echo "server=$SERVER" >> $GITHUB_OUTPUT + echo "ui=$UI" >> $GITHUB_OUTPUT - - name: Trigger Engine tests - if: steps.detect.outputs.project == 'Engine' - uses: peter-evans/workflow-dispatch@v2 + - name: Trigger Engine Test + if: steps.check.outputs.engine == 'true' + uses: actions/github-script@v7 with: - workflow: "engine_test.yml" - ref: ${{ github.ref }} + script: | + github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: 'engine_test.yml', + ref: '${{ github.ref }}', + inputs: { + triggered_by: 'dispatch.yml', + branch: '${{ github.ref_name }}' + } + }) - - name: Trigger Server tests - if: steps.detect.outputs.project == 'Server' - uses: peter-evans/workflow-dispatch@v2 + - name: Trigger Server Test + if: steps.check.outputs.server == 'true' + uses: actions/github-script@v7 with: - workflow: "server_test.yml" - ref: ${{ github.ref }} + script: | + github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: 'server_test.yml', + ref: '${{ github.ref }}', + inputs: { + triggered_by: 'dispatch.yml', + branch: '${{ github.ref_name }}' + } + }) - - name: Trigger UI tests - if: steps.detect.outputs.project == 'UI' - uses: peter-evans/workflow-dispatch@v2 + - name: Trigger UI Test + if: steps.check.outputs.ui == 'true' + uses: actions/github-script@v7 with: - workflow: "ui_test.yml" - ref: ${{ github.ref }} - - - name: Trigger all tests (main/master) - if: github.ref_name == 'main' || github.ref_name == 'master' - uses: peter-evans/workflow-dispatch@v2 - with: - workflow: "engine_test.yml" - ref: ${{ github.ref }} - - uses: peter-evans/workflow-dispatch@v2 - if: github.ref_name == 'main' || github.ref_name == 'master' - with: - workflow: "server_test.yml" - ref: ${{ github.ref }} - - uses: peter-evans/workflow-dispatch@v2 - if: github.ref_name == 'main' || github.ref_name == 'master' - with: - workflow: "ui_test.yml" - ref: ${{ github.ref }} + script: | + github.rest.actions.createWorkflowDispatch({ + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: 'ui_test.yml', + ref: '${{ github.ref }}', + inputs: { + triggered_by: 'dispatch.yml', + branch: '${{ github.ref_name }}' + } + }) -- 2.49.1 From 3df33093edd6a0a387a2a25fe7679af82712bc96 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 5 Nov 2025 14:47:50 +0100 Subject: [PATCH 006/107] Workflow: Added the workflow files, changed ls to pwd in tests --- .github/workflows/engine_test.yml | 2 +- .github/workflows/server_test.yml | 22 ++++++++++++++++++++++ .github/workflows/ui_test.yml | 22 ++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/server_test.yml create mode 100644 .github/workflows/ui_test.yml diff --git a/.github/workflows/engine_test.yml b/.github/workflows/engine_test.yml index d9b5b6f..84d187d 100644 --- a/.github/workflows/engine_test.yml +++ b/.github/workflows/engine_test.yml @@ -18,5 +18,5 @@ jobs: - name: Run Engine tests run: | cd engine - ls + pwd cargo test --verbose diff --git a/.github/workflows/server_test.yml b/.github/workflows/server_test.yml new file mode 100644 index 0000000..6a5cfb6 --- /dev/null +++ b/.github/workflows/server_test.yml @@ -0,0 +1,22 @@ +name: Server Tests + +on: + workflow_dispatch: + +jobs: + server-tests: + runs-on: self-hosted + + steps: + - uses: actions/checkout@v4 + + - name: Set up Rust + uses: actions/setup-rust@v1 + with: + rust-version: stable + + - name: Run Server tests + run: | + cd server + pwd + cargo test --verbose diff --git a/.github/workflows/ui_test.yml b/.github/workflows/ui_test.yml new file mode 100644 index 0000000..4c0bda1 --- /dev/null +++ b/.github/workflows/ui_test.yml @@ -0,0 +1,22 @@ +name: UI Tests + +on: + workflow_dispatch: + +jobs: + ui-tests: + runs-on: self-hosted + + steps: + - uses: actions/checkout@v4 + + - name: Set up Rust + uses: actions/setup-rust@v1 + with: + rust-version: stable + + - name: Run UI tests + run: | + cd ui + pwd + cargo test --verbose -- 2.49.1 From 76a1c18b56fb4769159dfd5b62846107e9958aa6 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 5 Nov 2025 14:58:08 +0100 Subject: [PATCH 007/107] Workflow: dispatching workflow with 'uses' --- .github/workflows/dispatcher.yml | 70 ++++++++++++-------------------- 1 file changed, 25 insertions(+), 45 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index c5d91fe..7111a69 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -44,50 +44,30 @@ jobs: echo "server=$SERVER" >> $GITHUB_OUTPUT echo "ui=$UI" >> $GITHUB_OUTPUT - - name: Trigger Engine Test - if: steps.check.outputs.engine == 'true' - uses: actions/github-script@v7 - with: - script: | - github.rest.actions.createWorkflowDispatch({ - owner: context.repo.owner, - repo: context.repo.repo, - workflow_id: 'engine_test.yml', - ref: '${{ github.ref }}', - inputs: { - triggered_by: 'dispatch.yml', - branch: '${{ github.ref_name }}' - } - }) + engine: + needs: dispatch + if: needs.determine.outputs.engine == 'true' + uses: ./engine_test.yml + with: + branch: ${{ github.ref_name }} + secrets: inherit + + server: + needs: dispatch + if: needs.determine.outputs.server == 'true' + uses: ./server_test.yml + with: + branch: ${{ github.ref_name }} + secrets: inherit + + ui: + needs: dispatch + if: needs.determine.outputs.ui == 'true' + uses: ./ui_test.yml + with: + branch: ${{ github.ref_name }} + secrets: inherit + + - - name: Trigger Server Test - if: steps.check.outputs.server == 'true' - uses: actions/github-script@v7 - with: - script: | - github.rest.actions.createWorkflowDispatch({ - owner: context.repo.owner, - repo: context.repo.repo, - workflow_id: 'server_test.yml', - ref: '${{ github.ref }}', - inputs: { - triggered_by: 'dispatch.yml', - branch: '${{ github.ref_name }}' - } - }) - - name: Trigger UI Test - if: steps.check.outputs.ui == 'true' - uses: actions/github-script@v7 - with: - script: | - github.rest.actions.createWorkflowDispatch({ - owner: context.repo.owner, - repo: context.repo.repo, - workflow_id: 'ui_test.yml', - ref: '${{ github.ref }}', - inputs: { - triggered_by: 'dispatch.yml', - branch: '${{ github.ref_name }}' - } - }) -- 2.49.1 From 7ef9855016114f1fdc0de3ceec9dafbb49ae4764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Wed, 5 Nov 2025 15:00:42 +0100 Subject: [PATCH 008/107] Update workflow paths and conditions in dispatcher.yml --- .github/workflows/dispatcher.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 7111a69..636eb69 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -46,24 +46,24 @@ jobs: engine: needs: dispatch - if: needs.determine.outputs.engine == 'true' - uses: ./engine_test.yml + if: needs.dispatch.outputs.engine == 'true' + uses: ./.github/workflows/engine_test.yml with: branch: ${{ github.ref_name }} secrets: inherit server: needs: dispatch - if: needs.determine.outputs.server == 'true' - uses: ./server_test.yml + if: needs.dispatch.outputs.server == 'true' + uses: ./.github/workflows/server_test.yml with: branch: ${{ github.ref_name }} secrets: inherit ui: needs: dispatch - if: needs.determine.outputs.ui == 'true' - uses: ./ui_test.yml + if: needs.dispatch.outputs.ui == 'true' + uses: ./.github/workflows/ui_test.yml with: branch: ${{ github.ref_name }} secrets: inherit -- 2.49.1 From 39da1be9deb6b99256f24eb94bc430d1ca07f914 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 5 Nov 2025 15:08:33 +0100 Subject: [PATCH 009/107] Workflow: added new triggers for running test workflows --- .github/workflows/engine_test.yml | 2 ++ .github/workflows/server_test.yml | 2 ++ .github/workflows/ui_test.yml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/.github/workflows/engine_test.yml b/.github/workflows/engine_test.yml index 84d187d..e88bc83 100644 --- a/.github/workflows/engine_test.yml +++ b/.github/workflows/engine_test.yml @@ -1,7 +1,9 @@ name: Engine Tests on: + pull_request: workflow_dispatch: + workflow_call: jobs: engine-tests: diff --git a/.github/workflows/server_test.yml b/.github/workflows/server_test.yml index 6a5cfb6..f4db291 100644 --- a/.github/workflows/server_test.yml +++ b/.github/workflows/server_test.yml @@ -1,7 +1,9 @@ name: Server Tests on: + pull_request: workflow_dispatch: + workflow_call: jobs: server-tests: diff --git a/.github/workflows/ui_test.yml b/.github/workflows/ui_test.yml index 4c0bda1..c65886d 100644 --- a/.github/workflows/ui_test.yml +++ b/.github/workflows/ui_test.yml @@ -1,7 +1,9 @@ name: UI Tests on: + pull_request: workflow_dispatch: + workflow_call: jobs: ui-tests: -- 2.49.1 From 785e40f53881576138ff53855c4f7441b0e38c36 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 5 Nov 2025 15:24:35 +0100 Subject: [PATCH 010/107] Workflow: removed branch from tests call --- .github/workflows/dispatcher.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 636eb69..1555641 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -48,24 +48,18 @@ jobs: needs: dispatch if: needs.dispatch.outputs.engine == 'true' uses: ./.github/workflows/engine_test.yml - with: - branch: ${{ github.ref_name }} secrets: inherit server: needs: dispatch if: needs.dispatch.outputs.server == 'true' uses: ./.github/workflows/server_test.yml - with: - branch: ${{ github.ref_name }} secrets: inherit ui: needs: dispatch if: needs.dispatch.outputs.ui == 'true' uses: ./.github/workflows/ui_test.yml - with: - branch: ${{ github.ref_name }} secrets: inherit -- 2.49.1 From 86ceab10adb33f40492add1c06f0832161a03749 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 5 Nov 2025 15:27:47 +0100 Subject: [PATCH 011/107] Workflow: removed rust setup from the tests, as it is installed on device --- .github/workflows/engine_test.yml | 5 ----- .github/workflows/server_test.yml | 5 ----- .github/workflows/ui_test.yml | 5 ----- 3 files changed, 15 deletions(-) diff --git a/.github/workflows/engine_test.yml b/.github/workflows/engine_test.yml index e88bc83..8abc162 100644 --- a/.github/workflows/engine_test.yml +++ b/.github/workflows/engine_test.yml @@ -12,11 +12,6 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up Rust - uses: actions/setup-rust@v1 - with: - rust-version: stable - - name: Run Engine tests run: | cd engine diff --git a/.github/workflows/server_test.yml b/.github/workflows/server_test.yml index f4db291..3c5f8ab 100644 --- a/.github/workflows/server_test.yml +++ b/.github/workflows/server_test.yml @@ -12,11 +12,6 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up Rust - uses: actions/setup-rust@v1 - with: - rust-version: stable - - name: Run Server tests run: | cd server diff --git a/.github/workflows/ui_test.yml b/.github/workflows/ui_test.yml index c65886d..37ada00 100644 --- a/.github/workflows/ui_test.yml +++ b/.github/workflows/ui_test.yml @@ -12,11 +12,6 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Set up Rust - uses: actions/setup-rust@v1 - with: - rust-version: stable - - name: Run UI tests run: | cd ui -- 2.49.1 From bc2eca7eac8d0aaf630ed128c7b7e436f3898ff3 Mon Sep 17 00:00:00 2001 From: htom Date: Fri, 7 Nov 2025 12:54:11 +0100 Subject: [PATCH 012/107] added new test.sh script The test.sh script will run the cargo test and save a formatted output from each project and then append them to a final log file which will be the data to be uploaded to the spreadsheet --- .github/workflows/engine_test.yml | 4 +--- .github/workflows/server_test.yml | 4 +--- .github/workflows/test.sh | 37 +++++++++++++++++++++++++++++++ .github/workflows/ui_test.yml | 4 +--- 4 files changed, 40 insertions(+), 9 deletions(-) create mode 100755 .github/workflows/test.sh diff --git a/.github/workflows/engine_test.yml b/.github/workflows/engine_test.yml index 8abc162..4590631 100644 --- a/.github/workflows/engine_test.yml +++ b/.github/workflows/engine_test.yml @@ -14,6 +14,4 @@ jobs: - name: Run Engine tests run: | - cd engine - pwd - cargo test --verbose + bash .github/workflows/test.sh engine/ diff --git a/.github/workflows/server_test.yml b/.github/workflows/server_test.yml index 3c5f8ab..f39eae5 100644 --- a/.github/workflows/server_test.yml +++ b/.github/workflows/server_test.yml @@ -14,6 +14,4 @@ jobs: - name: Run Server tests run: | - cd server - pwd - cargo test --verbose + bash .github/workflows/test.sh server/ diff --git a/.github/workflows/test.sh b/.github/workflows/test.sh new file mode 100755 index 0000000..1191005 --- /dev/null +++ b/.github/workflows/test.sh @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +set -e + +# --- ARGUMENT CHECK --- +if [ -z "$1" ]; then + echo "Usage: $0 " + exit 1 +fi + +# --- SETUP VARIABLES --- +PROJECT_PATH="$1" +PROJECT_NAME=$(basename "$PROJECT_PATH") +ROOT_DIR=$(git rev-parse --show-toplevel) + +LOG_FILE="${PROJECT_NAME}_test.log" +FINAL_LOG="${ROOT_DIR}/test_data.log" + +# --- MOVE TO PROJECT DIRECTORY --- +echo ">>> Running tests for project: $PROJECT_NAME" +cd "$PROJECT_PATH" || { echo "Error: Could not cd into $PROJECT_PATH"; exit 1; } + +# --- RUN TESTS --- +cargo test --verbose | tee full_test_output.log + +# --- EXTRACT TEST SECTION --- +# Create the log file with the project name as the first line +echo "$PROJECT_NAME" > "$LOG_FILE" + +# Then append only the lines between "running X test(s)" and the first empty line +awk '/^running [0-9]+ test[s]?$/,/^$/' full_test_output.log >> "$LOG_FILE" + +# --- APPEND TO GLOBAL LOG (in repo root) --- +cat "$LOG_FILE" >> "$FINAL_LOG" + +# --- SUMMARY --- +echo ">>> Test output extracted to $PROJECT_PATH/$LOG_FILE" +echo ">>> Appended to $FINAL_LOG" diff --git a/.github/workflows/ui_test.yml b/.github/workflows/ui_test.yml index 37ada00..114283a 100644 --- a/.github/workflows/ui_test.yml +++ b/.github/workflows/ui_test.yml @@ -14,6 +14,4 @@ jobs: - name: Run UI tests run: | - cd ui - pwd - cargo test --verbose + bash .github/workflows/test.sh ui/ -- 2.49.1 From c6c2e27d34cf8bba9156d4eb93f6b184a549e634 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Fri, 7 Nov 2025 13:19:40 +0100 Subject: [PATCH 013/107] Add cleanup job to dispatcher workflow Add a cleanup job to the workflow for final cleanup. --- .github/workflows/dispatcher.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 1555641..7efbf6f 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -61,7 +61,18 @@ jobs: if: needs.dispatch.outputs.ui == 'true' uses: ./.github/workflows/ui_test.yml secrets: inherit - + + cleanup: + runs-on: self-hosted + needs: [engine, server, ui] + if: always() + steps: + - name: Final cleanup + run: | + echo "Final cleanup on self-hosted runner..." + cd "$GITHUB_WORKSPACE" + git clean -fdx + git reset --hard -- 2.49.1 From 596828e8271d7003431f954b0c177b228d843512 Mon Sep 17 00:00:00 2001 From: htom Date: Sun, 9 Nov 2025 12:29:46 +0100 Subject: [PATCH 014/107] Added release workflow, started work on the upload to spreadsheet --- .github/workflows/dispatcher.yml | 15 ++++- .github/workflows/release.yml | 97 +++++++++++++++++++++++++++++++ .github/workflows/upload_data.yml | 57 ++++++++++++++++++ 3 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/upload_data.yml diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 7efbf6f..efdf84d 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -62,9 +62,22 @@ jobs: uses: ./.github/workflows/ui_test.yml secrets: inherit + + #test-data-upload: + #needs: [engine, server, ui] + #if: always() + #uses: ./.github/workflows/upload_data.yml + #secrets: inherit + + release: + needs: test-data-upload + if: github.ref == 'refs/heads/master' + uses: ./.github/workflows/release.yml + secrets: inherit + cleanup: runs-on: self-hosted - needs: [engine, server, ui] + needs: [engine, server, ui, test-data-upload] if: always() steps: - name: Final cleanup diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..9fea580 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,97 @@ +name: Release build + +on: + pull_request: + workflow_dispatch: + workflow_call: + +permissions: + contents: write + +jobs: + release: + name: Build and release (master only) + runs-on: self-hosted + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Build Engine for Linux + run: | + cd $(git rev-parse --show-toplevel) + pwd + mkdir release/linux -p + cd engine/ + rustup target add x86_64-unknown-linux-gnu + cargo build --release --target x86_64-unknown-linux-gnu + pwd + cp target/x86_64-unknown-linux-gnu/release/engine $(git rev-parse --show-toplevel)/release/linux/engine + + - name: Build Server for Linux + run: | + cd $(git rev-parse --show-toplevel) + pwd + mkdir release/linux -p + cd server/ + rustup target add x86_64-unknown-linux-gnu + cargo build --release --target x86_64-unknown-linux-gnu + pwd + cp target/x86_64-unknown-linux-gnu/release/server $(git rev-parse --show-toplevel)/release/linux/server + + - name: Build UI for Linux + run: | + cd $(git rev-parse --show-toplevel) + pwd + mkdir release/linux -p + cd ui/ + rustup target add x86_64-unknown-linux-gnu + cargo build --release --target x86_64-unknown-linux-gnu + pwd + cp target/x86_64-unknown-linux-gnu/release/ui $(git rev-parse --show-toplevel)/release/linux/ui + + + - name: Build Engine for Windows + run: | + cd $(git rev-parse --show-toplevel) + pwd + mkdir release/windows -p + cd engine/ + rustup target add x86_64-pc-windows-gnu + cargo build --release --target x86_64-pc-windows-gnu + pwd + cp target/x86_64-pc-windows-gnu/release/engine.exe $(git rev-parse --show-toplevel)/release/windows/engine.exe + + - name: Build Server for Windows + run: | + cd $(git rev-parse --show-toplevel) + pwd + mkdir release/windows -p + cd server/ + rustup target add x86_64-pc-windows-gnu + cargo build --release --target x86_64-pc-windows-gnu + pwd + cp target/x86_64-pc-windows-gnu/release/server.exe $(git rev-parse --show-toplevel)/release/windows/server.exe + + - name: Build UI for Windows + run: | + cd $(git rev-parse --show-toplevel) + pwd + mkdir release/windows -p + cd ui/ + rustup target add x86_64-pc-windows-gnu + cargo build --release --target x86_64-pc-windows-gnu + pwd + cp target/x86_64-pc-windows-gnu/release/ui.exe $(git rev-parse --show-toplevel)/release/windows/ui.exe + + + - name: Create GitHub Release + uses: softprops/action-gh-release@v2 + with: + tag_name: "v${{ github.run_number }}" + name: "Release v${{ github.run_number }}" + files: | + release/* + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml new file mode 100644 index 0000000..f8768ef --- /dev/null +++ b/.github/workflows/upload_data.yml @@ -0,0 +1,57 @@ +name: Upload Test Results to Google Sheets + +on: + workflow_dispatch: + +jobs: + upload: + runs-on: self-hosted + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Setup Python (for Google Sheets API) + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + pip install gspread google-auth + + - name: Upload test_data.log to Google Sheets + env: + GOOGLE_SERVICE_ACCOUNT_JSON: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_JSON }} + SPREADSHEET_ID: ${{ secrets.SPREADSHEET_ID }} + run: | + echo "$GOOGLE_SERVICE_ACCOUNT_JSON" > service_account.json + + python <<'PYCODE' + import gspread, json, time + + # credentials + creds = json.load(open("service_account.json")) + gc = gspread.service_account_from_dict(creds) + sh = gc.open_by_key("${{ secrets.SPREADSHEET_ID }}") + + with open("test_data.log", "r") as f: + lines = [line.strip() for line in f if line.strip()] + + project = lines[0].lower() + worksheet = sh.worksheet(project) + + # project name + data = lines[1:] + + #blank rows + existing_rows = len(worksheet.get_all_values()) + start_row = existing_rows + 3 + + # Split data into columns (by spaces) + rows_to_append = [row.split() for row in data] + + for i, row in enumerate(rows_to_append): + worksheet.insert_row(row, start_row + i) + + print(f"Uploaded {len(rows_to_append)} rows to '{project}' tab.") + PYCODE -- 2.49.1 From 92532839533f4c816fe202328ed58b42ca0ae174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 12:34:45 +0100 Subject: [PATCH 015/107] Workflow: re enabled test-data-upload with temp commands --- .github/workflows/dispatcher.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index efdf84d..1244d70 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -63,11 +63,15 @@ jobs: secrets: inherit - #test-data-upload: - #needs: [engine, server, ui] - #if: always() + test-data-upload: + needs: [engine, server, ui] + runs-on: self-hosted + if: always() #uses: ./.github/workflows/upload_data.yml - #secrets: inherit + steps: + - name: Temp turn off + run: | + echo "Uploading data to table" release: needs: test-data-upload -- 2.49.1 From 4763cbed95e132de14fff583dcbff5202e699df9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 12:36:33 +0100 Subject: [PATCH 016/107] Update dispatcher.yml to include permissions Add permissions for write access to contents --- .github/workflows/dispatcher.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 1244d70..fad6701 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -5,6 +5,9 @@ on: branches: - '**' +permissions: + contents: write + jobs: dispatch: runs-on: self-hosted -- 2.49.1 From 1b4194ee7d8863b392c4838be508ebc3af480875 Mon Sep 17 00:00:00 2001 From: htom Date: Sun, 9 Nov 2025 12:44:33 +0100 Subject: [PATCH 017/107] Cleanup job depend on release, added missing .cargo folder to fix cc error on workflow build --- .github/workflows/dispatcher.yml | 2 +- engine/.cargo/config.toml | 4 ++++ server/.cargo/config.toml | 4 ++++ ui/.cargo/config.toml | 4 ++++ 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 engine/.cargo/config.toml create mode 100644 server/.cargo/config.toml create mode 100644 ui/.cargo/config.toml diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index fad6701..c776f7c 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -84,7 +84,7 @@ jobs: cleanup: runs-on: self-hosted - needs: [engine, server, ui, test-data-upload] + needs: [engine, server, ui, test-data-upload, release] if: always() steps: - name: Final cleanup diff --git a/engine/.cargo/config.toml b/engine/.cargo/config.toml new file mode 100644 index 0000000..fb748c5 --- /dev/null +++ b/engine/.cargo/config.toml @@ -0,0 +1,4 @@ +[target.x86_64-unknown-linux-gnu] +linker = "x86_64-linux-gnu-gcc" +[target.x86_64-pc-windows-gnu] +linker = "x86_64-w64-mingw32-gcc" diff --git a/server/.cargo/config.toml b/server/.cargo/config.toml new file mode 100644 index 0000000..fb748c5 --- /dev/null +++ b/server/.cargo/config.toml @@ -0,0 +1,4 @@ +[target.x86_64-unknown-linux-gnu] +linker = "x86_64-linux-gnu-gcc" +[target.x86_64-pc-windows-gnu] +linker = "x86_64-w64-mingw32-gcc" diff --git a/ui/.cargo/config.toml b/ui/.cargo/config.toml new file mode 100644 index 0000000..fb748c5 --- /dev/null +++ b/ui/.cargo/config.toml @@ -0,0 +1,4 @@ +[target.x86_64-unknown-linux-gnu] +linker = "x86_64-linux-gnu-gcc" +[target.x86_64-pc-windows-gnu] +linker = "x86_64-w64-mingw32-gcc" -- 2.49.1 From e41be61321d5e0ca86c43805b5637b10808e9132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 12:55:14 +0100 Subject: [PATCH 018/107] Modify release files to target linux and windows Update release workflow to include specific OS directories. --- .github/workflows/release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9fea580..c932dd6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -90,7 +90,8 @@ jobs: tag_name: "v${{ github.run_number }}" name: "Release v${{ github.run_number }}" files: | - release/* + release/linux/ + release/windows/ env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -- 2.49.1 From a6966e055db446769cd295006786b90a10fd757b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 13:05:23 +0100 Subject: [PATCH 019/107] Compress build folders for upload Added compression step for build folders before release. --- .github/workflows/release.yml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c932dd6..24e27a6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -82,16 +82,24 @@ jobs: cargo build --release --target x86_64-pc-windows-gnu pwd cp target/x86_64-pc-windows-gnu/release/ui.exe $(git rev-parse --show-toplevel)/release/windows/ui.exe - + + - name: Compress build folders for upload + run: | + cd $(git rev-parse --show-toplevel) + pwd + cd release/ + zip linux.zip linux/ + zip windows.zip windows/ - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: tag_name: "v${{ github.run_number }}" name: "Release v${{ github.run_number }}" + generate_release_notes: true files: | - release/linux/ - release/windows/ + release/linux.zip + release/windows.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -- 2.49.1 From 3515703a9068d85bf7458f006a0b58393767e5be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 13:12:27 +0100 Subject: [PATCH 020/107] Modify zip commands in release workflow to include files in the folder with the wildcard Update zip commands to include all files in the directories. --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 24e27a6..b3044b9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -88,8 +88,8 @@ jobs: cd $(git rev-parse --show-toplevel) pwd cd release/ - zip linux.zip linux/ - zip windows.zip windows/ + zip linux.zip linux/* + zip windows.zip windows/* - name: Create GitHub Release uses: softprops/action-gh-release@v2 -- 2.49.1 From e19a5aac9a99860085f891cc20136883cdebe892 Mon Sep 17 00:00:00 2001 From: htom Date: Sun, 9 Nov 2025 14:23:13 +0100 Subject: [PATCH 021/107] Workflow: Re added test-upload job, added workflow_call trigger --- .github/workflows/dispatcher.yml | 8 +++----- .github/workflows/upload_data.yml | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index c776f7c..78d48f9 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -70,11 +70,9 @@ jobs: needs: [engine, server, ui] runs-on: self-hosted if: always() - #uses: ./.github/workflows/upload_data.yml - steps: - - name: Temp turn off - run: | - echo "Uploading data to table" + uses: ./.github/workflows/upload_data.yml + secrets: inherit + release: needs: test-data-upload diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index f8768ef..ef9b745 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -2,6 +2,7 @@ name: Upload Test Results to Google Sheets on: workflow_dispatch: + workflow_call: jobs: upload: -- 2.49.1 From 5443002c5f8224cd2a8995c7241c954116c63312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 14:26:28 +0100 Subject: [PATCH 022/107] Workflow: removed runs-on: self-hosted from test upload job --- .github/workflows/dispatcher.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 78d48f9..fed6504 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -68,7 +68,6 @@ jobs: test-data-upload: needs: [engine, server, ui] - runs-on: self-hosted if: always() uses: ./.github/workflows/upload_data.yml secrets: inherit -- 2.49.1 From cf2edab29759f39de17d906230e603302840ad98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 14:31:18 +0100 Subject: [PATCH 023/107] Remove Python setup from upload_data workflow Removed Python setup step for Google Sheets API. --- .github/workflows/upload_data.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index ef9b745..982cea6 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -10,12 +10,7 @@ jobs: steps: - name: Checkout repo uses: actions/checkout@v4 - - - name: Setup Python (for Google Sheets API) - uses: actions/setup-python@v5 - with: - python-version: '3.x' - + - name: Install dependencies run: | pip install gspread google-auth -- 2.49.1 From 8a01bba6440a5a65e0cababa91eff3edbb0d9300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 14:34:18 +0100 Subject: [PATCH 024/107] Update pip install command to break system packages --- .github/workflows/upload_data.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index 982cea6..6d9069c 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -13,7 +13,7 @@ jobs: - name: Install dependencies run: | - pip install gspread google-auth + pip install gspread google-auth --break-system-packages - name: Upload test_data.log to Google Sheets env: -- 2.49.1 From 1bf4d875afd2e0b8d2565da2efa1a3fa359a5580 Mon Sep 17 00:00:00 2001 From: htom Date: Sun, 9 Nov 2025 14:48:04 +0100 Subject: [PATCH 025/107] Workflow: added subprocess run to have the correct path for the test log file --- .github/workflows/upload_data.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index 6d9069c..3d6118b 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -23,14 +23,16 @@ jobs: echo "$GOOGLE_SERVICE_ACCOUNT_JSON" > service_account.json python <<'PYCODE' - import gspread, json, time + import gspread, json, time, subprocess # credentials creds = json.load(open("service_account.json")) gc = gspread.service_account_from_dict(creds) sh = gc.open_by_key("${{ secrets.SPREADSHEET_ID }}") + v = subprocess.run(['git rev-parse --show-toplevel'], capture_output=True).stdout.decode() + print(v) - with open("test_data.log", "r") as f: + with open(f"{v}/test_data.log", "r") as f: lines = [line.strip() for line in f if line.strip()] project = lines[0].lower() -- 2.49.1 From 7cd4bb6b09377537e100cc89663711496b635d3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 14:55:23 +0100 Subject: [PATCH 026/107] Refactor subprocess call and print statement Updated subprocess command to use list format and modified print statement for clarity. --- .github/workflows/upload_data.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index 3d6118b..c46a507 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -29,8 +29,8 @@ jobs: creds = json.load(open("service_account.json")) gc = gspread.service_account_from_dict(creds) sh = gc.open_by_key("${{ secrets.SPREADSHEET_ID }}") - v = subprocess.run(['git rev-parse --show-toplevel'], capture_output=True).stdout.decode() - print(v) + v = subprocess.run(['git','rev-parse','--show-toplevel'], capture_output=True).stdout.strip() + print(f"{v}/test_data.log") with open(f"{v}/test_data.log", "r") as f: lines = [line.strip() for line in f if line.strip()] -- 2.49.1 From 2ac2f17d1ae47f8ed5b2b88e4a16ea0a2923e2fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 15:01:42 +0100 Subject: [PATCH 027/107] Fix subprocess by adding decode to file path in upload_data.yml --- .github/workflows/upload_data.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index c46a507..7176f97 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -29,7 +29,7 @@ jobs: creds = json.load(open("service_account.json")) gc = gspread.service_account_from_dict(creds) sh = gc.open_by_key("${{ secrets.SPREADSHEET_ID }}") - v = subprocess.run(['git','rev-parse','--show-toplevel'], capture_output=True).stdout.strip() + v = subprocess.run(['git','rev-parse','--show-toplevel'], capture_output=True).stdout.decode().strip() print(f"{v}/test_data.log") with open(f"{v}/test_data.log", "r") as f: -- 2.49.1 From 85f7c6e690320689b2cefad7e0dfe4d3d8278bfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Sun, 9 Nov 2025 15:05:10 +0100 Subject: [PATCH 028/107] Remove checkout step from upload_data workflow Removed checkout step from upload job in workflow. --- .github/workflows/upload_data.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index 7176f97..6cfe426 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -7,10 +7,7 @@ on: jobs: upload: runs-on: self-hosted - steps: - - name: Checkout repo - uses: actions/checkout@v4 - + steps: - name: Install dependencies run: | pip install gspread google-auth --break-system-packages -- 2.49.1 From bfb2a6db234cdbcf0534922c637061a0ce145055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Mon, 10 Nov 2025 13:13:03 +0100 Subject: [PATCH 029/107] added file and module structure for attackmaps.rs --- engine/src/bitboard.rs | 1 + engine/src/bitboard/attackmaps.rs | 0 engine/src/main.rs | 2 ++ 3 files changed, 3 insertions(+) create mode 100644 engine/src/bitboard.rs create mode 100644 engine/src/bitboard/attackmaps.rs diff --git a/engine/src/bitboard.rs b/engine/src/bitboard.rs new file mode 100644 index 0000000..e026910 --- /dev/null +++ b/engine/src/bitboard.rs @@ -0,0 +1 @@ +mod attackmaps; \ No newline at end of file diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs new file mode 100644 index 0000000..e69de29 diff --git a/engine/src/main.rs b/engine/src/main.rs index e7a11a9..3555c81 100644 --- a/engine/src/main.rs +++ b/engine/src/main.rs @@ -1,3 +1,5 @@ +mod bitboard; + fn main() { println!("Hello, world!"); } -- 2.49.1 From 033440fbac934afc9acd194e5c029eec8704d208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Mon, 10 Nov 2025 13:18:48 +0100 Subject: [PATCH 030/107] added dependency to Cargo.toml: once_cell --- engine/Cargo.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/engine/Cargo.toml b/engine/Cargo.toml index 43489a8..15addf3 100644 --- a/engine/Cargo.toml +++ b/engine/Cargo.toml @@ -4,3 +4,4 @@ version = "0.1.0" edition = "2024" [dependencies] +once_cell = "1.19" \ No newline at end of file -- 2.49.1 From 18f4060df0762ef869797597e4db65ce51504424 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Mon, 10 Nov 2025 15:28:15 +0100 Subject: [PATCH 031/107] added frame and tests for table: KING_ATTACK_MAP --- engine/src/bitboard/attackmaps.rs | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index e69de29..65d9f00 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -0,0 +1,54 @@ +use once_cell::sync::Lazy; + +pub static KING_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { + let table: [u64; 64] = [0u64; 64]; + return table; +}); + +// <----- TESTS -----> + +#[cfg(test)] +mod tests { + use super::*; + + + #[test] + fn test_king_attack_map() { + + // test setup for corners [SW, SE, NW, NE] + let corner_indexes: [usize; 4] = [0, 7, 56, 63]; + let corner_attack_maps: [u64; 4] = [ + (1u64 << 1) | (1u64 << 8) | (1u64 << 9), + (1u64 << 6) | (1u64 << 14) | (1u64 << 15), + (1u64 << 48) | (1u64 << 49) | (1u64 << 57), + (1u64 << 54) | (1u64 << 55) | (1u64 << 62) + ]; + + // tests for corners + for index in 0..4 { + assert_eq!(KING_ATTACK_MAP[corner_indexes[index]], corner_attack_maps[index]); + } + + // test setup for sides [S, E, W, N] + let side_indexes: [usize; 4] = [3, 31, 32, 60]; + let side_attack_maps: [u64; 4] = [ + (1 << 2) | (1 << 4) | (1 << 10) | (1 << 11) | (1 << 12), + (1 << 22) | (1 << 23) | (1 << 30) | (1 << 38) | (1 << 39), + (1 << 24) | (1 << 25) | (1 << 33) | (1 << 40) | (1 << 41), + (1 << 51) | (1 << 52) | (1 << 53) | (1 << 59) | (1 << 61) + ]; + + // tests for sides + for index in 0..4 { + assert_eq!(KING_ATTACK_MAP[side_indexes[index]], side_attack_maps[index]); + } + + // test setup for center + let center_index: usize = 27; + let center_attack_map: u64 = (1 << 18) | (1 << 19) | (1 << 20) | (1 << 26) | (1 << 28) | (1 << 34) | (1 << 35) | (1 << 36); + + // test for center + assert_eq!(KING_ATTACK_MAP[center_index], center_attack_map); + + } +} \ No newline at end of file -- 2.49.1 From b252f16b2de60391fa8633e1ccf8428a0291f523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Mon, 10 Nov 2025 15:50:58 +0100 Subject: [PATCH 032/107] added frame and tests for table: PAWN_ATTACK_MAP --- engine/src/bitboard/attackmaps.rs | 56 ++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index 65d9f00..f728374 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -1,17 +1,23 @@ use once_cell::sync::Lazy; +// KING_ATTACK_MAP[] pub static KING_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { let table: [u64; 64] = [0u64; 64]; return table; }); +// PAWN_ATTACK_MAP +pub static PAWN_ATTACK_MAP: Lazy<[[u64; 2]; 64]> = Lazy::new(|| { + let table: [[u64; 2]; 64] = [[0u64; 2]; 64]; + return table; +}); + // <----- TESTS -----> #[cfg(test)] mod tests { use super::*; - #[test] fn test_king_attack_map() { @@ -51,4 +57,52 @@ mod tests { assert_eq!(KING_ATTACK_MAP[center_index], center_attack_map); } + + #[test] + fn test_pawn_attack_map() { + + // test setup for white sides + let white_side_indexes: [usize; 2] = [24, 31]; + let white_side_attack_maps: [u64; 2] = [ + (1 << 33), + (1 << 38) + ]; + // tests for white sides + for index in 0..2 { + assert_eq!(PAWN_ATTACK_MAP[white_side_indexes[index]][0], white_side_attack_maps[index]) + } + + // test setup for black sides + let black_side_indexes: [usize; 2] = [32, 39]; + let black_side_attack_maps: [u64; 2] = [ + (1 << 25), + (1 << 30) + ]; + // tests for black sides + for index in 0..2 { + assert_eq!(PAWN_ATTACK_MAP[black_side_indexes[index]][1], black_side_attack_maps[index]) + } + + // test setup for white center + let white_center_indexes: [usize; 2] = [11, 12]; + let white_center_attack_maps: [u64; 2] = [ + (1 << 19) | (1 << 21), + (1 << 20) | (1 << 22) + ]; + // tests for white center + for index in 0..2 { + assert_eq!(PAWN_ATTACK_MAP[white_center_indexes[index]][0], white_center_attack_maps[index]) + } + + // test setup for black center + let black_center_indexes: [usize; 2] = [51, 52]; + let black_center_attack_maps: [u64; 2] = [ + (1 << 42) | (1 << 44), + (1 << 43) | (1 << 45) + ]; + // tests for black center + for index in 0..2 { + assert_eq!(PAWN_ATTACK_MAP[black_center_indexes[index]][1], black_center_attack_maps[index]) + } + } } \ No newline at end of file -- 2.49.1 From 5d748b07d20c86fa2327e06fe0e5a64a67e8fdf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Mon, 10 Nov 2025 16:54:14 +0100 Subject: [PATCH 033/107] added frame and tests for table: KNIGHT_ATTACK_MAP --- engine/src/bitboard/attackmaps.rs | 54 ++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index f728374..f33cc04 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -1,17 +1,31 @@ use once_cell::sync::Lazy; +/* + EXPLANATIONS: + > square index: 8 * rank number + file number (a-h = 0-7) + > side: white = 0, black = 1 +*/ + // KING_ATTACK_MAP[] pub static KING_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { let table: [u64; 64] = [0u64; 64]; return table; }); -// PAWN_ATTACK_MAP +// PAWN_ATTACK_MAP[][] pub static PAWN_ATTACK_MAP: Lazy<[[u64; 2]; 64]> = Lazy::new(|| { let table: [[u64; 2]; 64] = [[0u64; 2]; 64]; return table; }); +// KINGHT_ATTACK_MAP[] +pub static KNIGHT_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { + let table: [u64; 64] = [0u64; 64]; + return table; +}); + + + // <----- TESTS -----> #[cfg(test)] @@ -105,4 +119,42 @@ mod tests { assert_eq!(PAWN_ATTACK_MAP[black_center_indexes[index]][1], black_center_attack_maps[index]) } } + + #[test] + fn test_knight_attack_map() { + // test setup for corners [SW, SE, NW, NE] + let corner_indexes: [usize; 4] = [0, 7, 56, 63]; + let corner_attack_maps: [u64; 4] = [ + (1 << 17) | (1 << 10), + (1 << 13) | (1 << 22), + (1 << 41) | (1 << 50), + (1 << 46) | (1 << 53) + ]; + + // tests for corners + for index in 0..4 { + assert_eq!(KNIGHT_ATTACK_MAP[corner_indexes[index]], corner_attack_maps[index]); + } + + // test setup for sides [S, E, W, N] + let side_indexes: [usize; 4] = [3, 31, 32, 60]; + let side_attack_maps: [u64; 4] = [ + (1 << 9) | (1 << 13) | (1 << 18) | (1 << 20), + (1 << 14) | (1 << 21) | (1 << 37) | (1 << 46), + (1 << 17) | (1 << 26) | (1 << 42) | (1 << 49), + (1 << 43) | (1 << 45) | (1 << 50) | (1 << 54) + ]; + + // tests for sides + for index in 0..4 { + assert_eq!(KNIGHT_ATTACK_MAP[side_indexes[index]], side_attack_maps[index]); + } + + // test setup for center + let center_index: usize = 27; + let center_attack_map: u64 = (1 << 10) | (1 << 12) | (1 << 17) | (1 << 21) | (1 << 33) | (1 << 37) | (1 << 42) | (1 << 44); + + // test for center + assert_eq!(KNIGHT_ATTACK_MAP[center_index], center_attack_map); + } } \ No newline at end of file -- 2.49.1 From 21f2890b924e12cb7287facea273720d95b11c74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Mon, 10 Nov 2025 17:17:30 +0100 Subject: [PATCH 034/107] added frame and tests for table: RAY_TABLE --- engine/src/bitboard/attackmaps.rs | 33 +++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index f33cc04..47a9b9f 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -2,8 +2,9 @@ use once_cell::sync::Lazy; /* EXPLANATIONS: - > square index: 8 * rank number + file number (a-h = 0-7) + > square_index: 8 * rank number + file number (a-h = 0-7) > side: white = 0, black = 1 + > direction_index: 0..8 = [E, NE, N, NW, W, SW, S, SE] */ // KING_ATTACK_MAP[] @@ -18,12 +19,18 @@ pub static PAWN_ATTACK_MAP: Lazy<[[u64; 2]; 64]> = Lazy::new(|| { return table; }); -// KINGHT_ATTACK_MAP[] +// KNIGHT_ATTACK_MAP[] pub static KNIGHT_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { let table: [u64; 64] = [0u64; 64]; return table; }); +// RAY_TABLE[][] +pub static RAY_TABLE: Lazy<[[u64; 8]; 64]> = Lazy::new(|| { + let table: [[u64; 8]; 64] = [[0u64; 8]; 64]; + return table; +}); + // <----- TESTS -----> @@ -157,4 +164,26 @@ mod tests { // test for center assert_eq!(KNIGHT_ATTACK_MAP[center_index], center_attack_map); } + + #[test] + fn test_ray_table() { + + // test setup for all directions from center + let starting_square_index: usize = 27; + let ray_masks: [u64; 8] = [ + (1 << 28) | (1 << 29) | (1 << 30) | (1 << 31), + (1 << 36) | (1 << 45) | (1 << 54) | (1 << 63), + (1 << 35) | (1 << 43) | (1 << 51) | (1 << 59), + (1 << 34) | (1 << 41) | (1 << 48), + (1 << 26) | (1 << 25) | (1 << 24), + (1 << 18) | (1 << 9) | (1 << 0), + (1 << 19) | (1 << 11) | (1 << 3), + (1 << 20) | (1 << 13) | (1 << 6) + ]; + + // tests for all directions from starting_square + for direction in 0..8 { + assert_eq!(RAY_TABLE[starting_square_index][direction], ray_masks[direction]); + } + } } \ No newline at end of file -- 2.49.1 From c2fe2e968a475a86fd35c856fedd3fdd1d0a0bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 10:22:05 +0100 Subject: [PATCH 035/107] added masks for use against wrap-around --- engine/src/bitboard/attackmaps.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index 47a9b9f..d5136e9 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -1,5 +1,10 @@ use once_cell::sync::Lazy; +const A_FILE: u64 = 0x0101_0101_0101_0101; +const H_FILE: u64 = 0x8080_8080_8080_8080; +const AB_FILE: u64 = 0x0303_0303_0303_0303; +const GH_FILE: u64 = 0xC0C0_C0C0_C0C0_C0C0; + /* EXPLANATIONS: > square_index: 8 * rank number + file number (a-h = 0-7) -- 2.49.1 From 4eb4bc1348ad16627d4c60609233d53bb7fe901f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 10:25:23 +0100 Subject: [PATCH 036/107] implemented the generation of LUT: KING_ATTACK_MAPS --- engine/src/bitboard/attackmaps.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index d5136e9..5852518 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -14,7 +14,16 @@ const GH_FILE: u64 = 0xC0C0_C0C0_C0C0_C0C0; // KING_ATTACK_MAP[] pub static KING_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { - let table: [u64; 64] = [0u64; 64]; + let mut table: [u64; 64] = [0u64; 64]; + + for sq in 0..64 { + let king: u64 = 1 << sq; + + let left_attacks: u64 = king << 7 | king >> 1 | king >> 9; + let right_attacks: u64 = king << 1 | king << 9 | king >> 7; + + table[sq] = (left_attacks & !H_FILE) | (right_attacks & !A_FILE) | king << 8 | king >> 8; + } return table; }); -- 2.49.1 From b6cdf5b77843cd15a1277684e12101543ba80e2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 10:32:41 +0100 Subject: [PATCH 037/107] implemented the generation of LUT: PAWN_ATTACK_MAP --- engine/src/bitboard/attackmaps.rs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index 5852518..fa229cf 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -15,7 +15,7 @@ const GH_FILE: u64 = 0xC0C0_C0C0_C0C0_C0C0; // KING_ATTACK_MAP[] pub static KING_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { let mut table: [u64; 64] = [0u64; 64]; - + for sq in 0..64 { let king: u64 = 1 << sq; @@ -29,7 +29,18 @@ pub static KING_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { // PAWN_ATTACK_MAP[][] pub static PAWN_ATTACK_MAP: Lazy<[[u64; 2]; 64]> = Lazy::new(|| { - let table: [[u64; 2]; 64] = [[0u64; 2]; 64]; + let mut table: [[u64; 2]; 64] = [[0u64; 2]; 64]; + + for sq in 0..64 { + let pawn: u64 = 1 << sq; + table[sq][0] |= (pawn << 9) & !A_FILE; + table[sq][0] |= (pawn << 7) & !H_FILE; + } + for sq in 0..64 { + let pawn: u64 = 1 << sq; + table[sq][1] |= (pawn >> 9) & !H_FILE; + table[sq][1] |= (pawn >> 7) & !A_FILE; + } return table; }); @@ -121,8 +132,8 @@ mod tests { // test setup for white center let white_center_indexes: [usize; 2] = [11, 12]; let white_center_attack_maps: [u64; 2] = [ - (1 << 19) | (1 << 21), - (1 << 20) | (1 << 22) + (1 << 18) | (1 << 20), + (1 << 19) | (1 << 21) ]; // tests for white center for index in 0..2 { -- 2.49.1 From 1af497f063eeaaaa8eaf33af4cc89e1de6c12234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 10:33:51 +0100 Subject: [PATCH 038/107] implemented the generation of LUT: KNIGHT_ATTACK_MAP --- engine/src/bitboard/attackmaps.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index fa229cf..23c41df 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -46,7 +46,18 @@ pub static PAWN_ATTACK_MAP: Lazy<[[u64; 2]; 64]> = Lazy::new(|| { // KNIGHT_ATTACK_MAP[] pub static KNIGHT_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { - let table: [u64; 64] = [0u64; 64]; + let mut table: [u64; 64] = [0u64; 64]; + + for sq in 0..64 { + let knight: u64 = 1 << sq; + + let far_left_attacks: u64 = knight << 6 | knight >> 10; + let near_left_attacks: u64 = knight << 15 | knight >> 17; + let far_right_attacks: u64 = knight << 10 | knight >> 6; + let near_right_attacks: u64 = knight << 17 | knight >> 15; + + table[sq] = (far_left_attacks & !GH_FILE) | (far_right_attacks & !AB_FILE) | (near_left_attacks & !H_FILE) | (near_right_attacks & !A_FILE); + } return table; }); -- 2.49.1 From 061795a039705e641d9a0d3185e4912bd0c86da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 10:39:51 +0100 Subject: [PATCH 039/107] implemented the generation of LUT: RAY_TABLE --- engine/src/bitboard/attackmaps.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/attackmaps.rs b/engine/src/bitboard/attackmaps.rs index 23c41df..f7fe35f 100644 --- a/engine/src/bitboard/attackmaps.rs +++ b/engine/src/bitboard/attackmaps.rs @@ -63,7 +63,34 @@ pub static KNIGHT_ATTACK_MAP: Lazy<[u64; 64]> = Lazy::new(|| { // RAY_TABLE[][] pub static RAY_TABLE: Lazy<[[u64; 8]; 64]> = Lazy::new(|| { - let table: [[u64; 8]; 64] = [[0u64; 8]; 64]; + let mut table: [[u64; 8]; 64] = [[0u64; 8]; 64]; + let dirs: [i8; 8] = [1, 9, 8, 7, -1, -9, -8, -7]; + for sq in 0..64 { + for d in 0..8 { + let mut ray: u64 = 0u64; + let origin: u64 = 1 << sq; + let mut new_target: u64 = if dirs[d] > 0 {origin << dirs[d]} else {origin >> -dirs[d]}; + if [0, 1, 7].contains(&d) { + new_target &= !A_FILE; + } + else if [3, 4, 5].contains(&d) { + new_target &= !H_FILE; + } + while new_target != 0 { + ray |= new_target; + + new_target = if dirs[d] > 0 {new_target << dirs[d]} else {new_target >> -dirs[d]}; + if [0, 1, 7].contains(&d) { + new_target &= !A_FILE; + } + else if [3, 4, 5].contains(&d) { + new_target &= !H_FILE; + } + } + table[sq][d] = ray; + } + } + return table; }); -- 2.49.1 From 4e9f222ddc67ffbe90026e701ce8867c44e757e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Tue, 11 Nov 2025 11:01:38 +0100 Subject: [PATCH 040/107] Allow case-insensitive branch checks in dispatcher.yml --- .github/workflows/dispatcher.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index fed6504..d16fb75 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -26,13 +26,13 @@ jobs: SERVER=false UI=false - if [[ "$BRANCH" == *"Engine"* ]]; then + if [[ "$BRANCH" == *"Engine"* ] || [ "$BRANCH" == *"engine"* ]]; then ENGINE=true fi - if [[ "$BRANCH" == *"Server"* ]]; then + if [[ "$BRANCH" == *"Server"* ] || [ "$BRANCH" == *"server"* ]]; then SERVER=true fi - if [[ "$BRANCH" == *"UI"* ]]; then + if [[ "$BRANCH" == *"UI"* ] || [ "$BRANCH" == *"ui"* ]]; then UI=true fi -- 2.49.1 From 1f368551c15b90e548773840a232f86810c3d41f Mon Sep 17 00:00:00 2001 From: htom Date: Tue, 11 Nov 2025 11:12:39 +0100 Subject: [PATCH 041/107] removed pull_request dispatch from the test files --- .github/workflows/dispatcher.yml | 6 +++--- .github/workflows/engine_test.yml | 1 - .github/workflows/server_test.yml | 1 - .github/workflows/ui_test.yml | 1 - 4 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index d16fb75..52556cc 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -26,13 +26,13 @@ jobs: SERVER=false UI=false - if [[ "$BRANCH" == *"Engine"* ] || [ "$BRANCH" == *"engine"* ]]; then + if "$BRANCH" == *"Engine"* || "$BRANCH" == *"engine"* ; then ENGINE=true fi - if [[ "$BRANCH" == *"Server"* ] || [ "$BRANCH" == *"server"* ]]; then + if "$BRANCH" == *"Server"* || "$BRANCH" == *"server"* ; then SERVER=true fi - if [[ "$BRANCH" == *"UI"* ] || [ "$BRANCH" == *"ui"* ]]; then + if "$BRANCH" == *"UI"* || "$BRANCH" == *"ui"* ; then UI=true fi diff --git a/.github/workflows/engine_test.yml b/.github/workflows/engine_test.yml index 4590631..3f4bfec 100644 --- a/.github/workflows/engine_test.yml +++ b/.github/workflows/engine_test.yml @@ -1,7 +1,6 @@ name: Engine Tests on: - pull_request: workflow_dispatch: workflow_call: diff --git a/.github/workflows/server_test.yml b/.github/workflows/server_test.yml index f39eae5..4a2e817 100644 --- a/.github/workflows/server_test.yml +++ b/.github/workflows/server_test.yml @@ -1,7 +1,6 @@ name: Server Tests on: - pull_request: workflow_dispatch: workflow_call: diff --git a/.github/workflows/ui_test.yml b/.github/workflows/ui_test.yml index 114283a..7f0ca2c 100644 --- a/.github/workflows/ui_test.yml +++ b/.github/workflows/ui_test.yml @@ -1,7 +1,6 @@ name: UI Tests on: - pull_request: workflow_dispatch: workflow_call: -- 2.49.1 From 4ae9eea7e254842c5136270ac173bcdca74e1583 Mon Sep 17 00:00:00 2001 From: htom Date: Tue, 11 Nov 2025 11:13:45 +0100 Subject: [PATCH 042/107] removed pull_request dispatcher from release workflow --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b3044b9..76e25a0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,6 @@ name: Release build on: - pull_request: workflow_dispatch: workflow_call: -- 2.49.1 From b6f0b6ee5ec612172f3f5450f4b391bfa326da65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Tue, 11 Nov 2025 11:22:21 +0100 Subject: [PATCH 043/107] Fix conditional syntax in dispatcher.yml --- .github/workflows/dispatcher.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 52556cc..35e06e1 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -26,13 +26,13 @@ jobs: SERVER=false UI=false - if "$BRANCH" == *"Engine"* || "$BRANCH" == *"engine"* ; then + if [["$BRANCH" == *"Engine"* || "$BRANCH" == *"engine"*]] ; then ENGINE=true fi - if "$BRANCH" == *"Server"* || "$BRANCH" == *"server"* ; then + if [["$BRANCH" == *"Server"* || "$BRANCH" == *"server"*]] ; then SERVER=true fi - if "$BRANCH" == *"UI"* || "$BRANCH" == *"ui"* ; then + if [["$BRANCH" == *"UI"* || "$BRANCH" == *"ui"*]] ; then UI=true fi -- 2.49.1 From 0f50f31b13e1d3fca5217322826d692440113a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Tue, 11 Nov 2025 11:27:42 +0100 Subject: [PATCH 044/107] Update branch checks to be case-sensitive Refactor branch checks to be case-sensitive for Engine, Server, and UI. --- .github/workflows/dispatcher.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 35e06e1..b462a84 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -26,13 +26,13 @@ jobs: SERVER=false UI=false - if [["$BRANCH" == *"Engine"* || "$BRANCH" == *"engine"*]] ; then + if [["$BRANCH" == *"Engine"*]] ; then ENGINE=true fi - if [["$BRANCH" == *"Server"* || "$BRANCH" == *"server"*]] ; then + if [["$BRANCH" == *"Server"*]] ; then SERVER=true fi - if [["$BRANCH" == *"UI"* || "$BRANCH" == *"ui"*]] ; then + if [["$BRANCH" == *"UI"*]] ; then UI=true fi -- 2.49.1 From 9c73ca6838d32633052e28c5fb457d632175dde7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Tue, 11 Nov 2025 11:34:05 +0100 Subject: [PATCH 045/107] Fix formatting of conditional checks in dispatcher.yml --- .github/workflows/dispatcher.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index b462a84..0524127 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -26,13 +26,13 @@ jobs: SERVER=false UI=false - if [["$BRANCH" == *"Engine"*]] ; then + if [[ "$BRANCH" == *"Engine"* ]] ; then ENGINE=true fi - if [["$BRANCH" == *"Server"*]] ; then + if [[ "$BRANCH" == *"Server"* ]] ; then SERVER=true fi - if [["$BRANCH" == *"UI"*]] ; then + if [[ "$BRANCH" == *"UI"* ]] ; then UI=true fi -- 2.49.1 From 5ee797e1f8e1a51e8c66ea60f5a709d99d0750ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Tue, 11 Nov 2025 12:32:03 +0100 Subject: [PATCH 046/107] Add conditional logging for master branch --- .github/workflows/test.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.sh b/.github/workflows/test.sh index 1191005..f948267 100755 --- a/.github/workflows/test.sh +++ b/.github/workflows/test.sh @@ -30,6 +30,9 @@ echo "$PROJECT_NAME" > "$LOG_FILE" awk '/^running [0-9]+ test[s]?$/,/^$/' full_test_output.log >> "$LOG_FILE" # --- APPEND TO GLOBAL LOG (in repo root) --- +if [[ $(git rev-parse --abbrev-ref HEAD) == "master" ]]; then + echo "master" >> $FINAL_LOG +fi cat "$LOG_FILE" >> "$FINAL_LOG" # --- SUMMARY --- -- 2.49.1 From 8f9a48fa965b03565a147d9695c32ebc855988cf Mon Sep 17 00:00:00 2001 From: htom Date: Tue, 11 Nov 2025 12:40:29 +0100 Subject: [PATCH 047/107] rendszerterv v1 --- Docs/Knightly rendszerterv v1.png | Bin 0 -> 295252 bytes Docs/Knightly rendszerterv v1.xml | 287 ++++++++++++++++++++++++++++++ 2 files changed, 287 insertions(+) create mode 100644 Docs/Knightly rendszerterv v1.png create mode 100644 Docs/Knightly rendszerterv v1.xml diff --git a/Docs/Knightly rendszerterv v1.png b/Docs/Knightly rendszerterv v1.png new file mode 100644 index 0000000000000000000000000000000000000000..9826e93b5c4fa57ae675f3d234a1bd417abfffe0 GIT binary patch literal 295252 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�j@eFdNbPI6x3KKKJ~V%}SIBgh_Po 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

c|z>;RdzPDubm*j}GaV*y2io{d+C+ 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 eY8rv)wBqM|i*}}GNPbuV|B#7xgkp=G(f + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.49.1 From dca6eac3babc57a222598988ee817f5f09babe00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 12:50:53 +0100 Subject: [PATCH 048/107] added file bitboard/utils.rs --- engine/src/bitboard.rs | 3 ++- engine/src/bitboard/utils.rs | 0 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 engine/src/bitboard/utils.rs diff --git a/engine/src/bitboard.rs b/engine/src/bitboard.rs index e026910..67d128d 100644 --- a/engine/src/bitboard.rs +++ b/engine/src/bitboard.rs @@ -1 +1,2 @@ -mod attackmaps; \ No newline at end of file +mod attackmaps; +mod utils; \ No newline at end of file diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs new file mode 100644 index 0000000..e69de29 -- 2.49.1 From 8ffbfdc63f49ed5f285520499fe8782ba1cdc5e9 Mon Sep 17 00:00:00 2001 From: htom Date: Tue, 11 Nov 2025 13:35:34 +0100 Subject: [PATCH 049/107] basic listener implemented, addedd modules, working on handling connections --- server/Cargo.toml | 7 +++++++ server/src/main.rs | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/server/Cargo.toml b/server/Cargo.toml index ff06670..d37bf87 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -4,3 +4,10 @@ version = "0.1.0" edition = "2024" [dependencies] +tokio = { version = "1", features = ["full"] } +tokio-tungstenite = "0.21" +tungstenite = "0.21" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +futures-util = "0.3.31" +url = "2.5.7" diff --git a/server/src/main.rs b/server/src/main.rs index e7a11a9..cca71d3 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,3 +1,33 @@ -fn main() { - println!("Hello, world!"); +use futures_util::{SinkExt, StreamExt}; +use serde::{Deserialize, Serialize}; +use tokio::net::TcpListener; +use tokio_tungstenite::accept_async; + +#[derive(Serialize, Deserialize, Debug)] +struct Message { + username: String, + text: String, +} + +#[tokio::main] +async fn main() { + let address = "0.0.0.0:9001"; //accept connection from anywhere + let listener = TcpListener::bind(address).await.unwrap(); + println!("Server running on ws://{}", address); + + while let Ok((stream, _)) = listener.accept().await { + println!("New connection!"); + + tokio::spawn(async move { + let ws_stream = accept_async(stream).await.unwrap(); + let (mut write, mut read) = ws_stream.split(); //seperate the read and write channel + + while let Some(Ok(msg)) = read.next().await { + if msg.is_text() { + let txt = msg.to_text().unwrap(); + if let Ok(json) = serde_json::from_str::(txt) {} + } + } + }); + } } -- 2.49.1 From 258a8a0da998a6b9c1d45301b947973f9a7c88e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 13:39:26 +0100 Subject: [PATCH 050/107] added frame and tests for function: bitboard::util::pop_lsb --- engine/src/bitboard/utils.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index e69de29..d863a15 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -0,0 +1,35 @@ + +pub fn pop_lsb(value: &mut u64) -> usize { + return 0; +} + + + +// <----- TESTS -----> + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn pop_lsb_test() { + + // test setup + let test_values: [u64; 6] = [ + 0x0000_0000_0000_0000, + 0x4E91_CF05_713E_451B, + 0xD588_2D58_6962_34B0, + 0x9581_3335_DCAB_1DD4, + 0xBEAC_DBE0_903A_AC00, + 0x01E8_C895_A6F0_0000 + ]; + let expected_values: [usize; 6] = [64, 0, 4, 2, 10, 20]; + + // tests + for index in 0..6 { + let mut test_value = test_values[index]; + assert_eq!(pop_lsb(&mut test_value), expected_values[index]) + } + } + +} \ No newline at end of file -- 2.49.1 From f8894bbdfff73d970bafedb0028145865e7775d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 13:51:14 +0100 Subject: [PATCH 051/107] added frame and tests for function: bitboard::util::pop_msb --- engine/src/bitboard/utils.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index d863a15..8cc2dd9 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -3,6 +3,9 @@ pub fn pop_lsb(value: &mut u64) -> usize { return 0; } +pub fn pop_msb(value: &mut u64) -> usize { + return 0; +} // <----- TESTS -----> @@ -32,4 +35,23 @@ mod tests { } } + #[test] + fn pop_msb_test() { + // test setup + let test_values: [u64; 6] = [ + 0x86D6_8EB0_96A8_8D1C, + 0x0000_0000_0000_0001, + 0x3809_24AF_A7AE_8129, + 0x0277_DA36_3B31_86D9, + 0x0000_C1C3_201C_0DB1, + 0x0000_0203_0DE4_E944 + ]; + let expected_values: [usize; 6] = [63, 0, 61, 57, 47, 41]; + + // tests + for index in 0..6 { + let mut test_value = test_values[index]; + assert_eq!(pop_lsb(&mut test_value), expected_values[index]) + } + } } \ No newline at end of file -- 2.49.1 From 092ed19104b1df4d29a0507d6a0c7c8ddd918b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 13:59:53 +0100 Subject: [PATCH 052/107] added frame and tests for function: bitboard::util::notation_from_square_number --- engine/src/bitboard/utils.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index 8cc2dd9..b287c06 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -7,6 +7,10 @@ pub fn pop_msb(value: &mut u64) -> usize { return 0; } +pub fn notation_from_square_number(sq: u8) -> String { + return String::new(); +} + // <----- TESTS -----> @@ -54,4 +58,26 @@ mod tests { assert_eq!(pop_lsb(&mut test_value), expected_values[index]) } } + + #[test] + fn notation_from_square_number_test() { + // test setup + let square_indices: [u8; 8] = [1, 12, 22, 27, 32, 47, 53, 58]; + let notations: [String; 8] = [ + String::from("b1"), + String::from("e2"), + String::from("g3"), + String::from("d4"), + String::from("a5"), + String::from("h6"), + String::from("f7"), + String::from("c8") + ]; + + // tests + for index in 0..8 { + let notation = notation_from_square_number(square_indices[index].clone()); + assert_eq!(notation, notations[index]); + } + } } \ No newline at end of file -- 2.49.1 From f3dea86ded8f30c08d229341f700a8e46c3633f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 14:05:31 +0100 Subject: [PATCH 053/107] fixed typo in test utils::tests::pop_msb_test --- engine/src/bitboard/utils.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index b287c06..84b02db 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -55,7 +55,7 @@ mod tests { // tests for index in 0..6 { let mut test_value = test_values[index]; - assert_eq!(pop_lsb(&mut test_value), expected_values[index]) + assert_eq!(pop_msb(&mut test_value), expected_values[index]) } } -- 2.49.1 From d0e6ce81ce3a2534d468ece0d892870934b43cb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 14:06:43 +0100 Subject: [PATCH 054/107] fixed bad test values in test utils::tests::pop_lsb_test --- engine/src/bitboard/utils.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index 84b02db..ff98b73 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -23,14 +23,14 @@ mod tests { // test setup let test_values: [u64; 6] = [ - 0x0000_0000_0000_0000, + 0x8000_0000_0000_0000, 0x4E91_CF05_713E_451B, 0xD588_2D58_6962_34B0, 0x9581_3335_DCAB_1DD4, 0xBEAC_DBE0_903A_AC00, 0x01E8_C895_A6F0_0000 ]; - let expected_values: [usize; 6] = [64, 0, 4, 2, 10, 20]; + let expected_values: [usize; 6] = [63, 0, 4, 2, 10, 20]; // tests for index in 0..6 { -- 2.49.1 From 8d1300d7e25b3570d68a9cb7661673c788ddfa43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 14:14:39 +0100 Subject: [PATCH 055/107] implemented utility function: bitboard::utils::pop_lsb --- engine/src/bitboard/utils.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index ff98b73..4ec5a58 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -1,6 +1,8 @@ pub fn pop_lsb(value: &mut u64) -> usize { - return 0; + let idx = value.trailing_zeros() as usize; + *value &= !(1 << idx); + return idx; } pub fn pop_msb(value: &mut u64) -> usize { -- 2.49.1 From a6aba8801e1bfb9bcf7e179bef47c73b960a857d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 14:16:33 +0100 Subject: [PATCH 056/107] implemented utility function: bitboard::utils::pop_msb --- engine/src/bitboard/utils.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index 4ec5a58..2a56eb5 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -6,7 +6,9 @@ pub fn pop_lsb(value: &mut u64) -> usize { } pub fn pop_msb(value: &mut u64) -> usize { - return 0; + let idx = 63 - value.leading_zeros() as usize; + *value &= !(1 << idx); + return idx; } pub fn notation_from_square_number(sq: u8) -> String { -- 2.49.1 From eebdfdbee23d0665d9fea58c025aae446bd69c42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 14:21:11 +0100 Subject: [PATCH 057/107] implemented utility function: bitboard::utils::notation_from_square_number --- engine/src/bitboard/utils.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index 2a56eb5..32d650a 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -11,8 +11,19 @@ pub fn pop_msb(value: &mut u64) -> usize { return idx; } +const RANK_NUMBERS: [char; 8] = ['1', '2', '3', '4', '5', '6', '7', '8']; +const FILE_LETTERS: [char; 8] = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']; pub fn notation_from_square_number(sq: u8) -> String { - return String::new(); + let row = sq / 8; + let col = sq % 8; + let mut notation = String::new(); + + let row_not = RANK_NUMBERS[row as usize]; + let col_not = FILE_LETTERS[col as usize]; + + notation.push(col_not); + notation.push(row_not); + return notation; } -- 2.49.1 From 6006442f901840a629e0206a6a2c2142894a5e49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Tue, 11 Nov 2025 14:23:30 +0100 Subject: [PATCH 058/107] added '#[inline(always)]' annotation to hot functions: utils::pop_lsb, utils::pop_msb --- engine/src/bitboard/utils.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index 32d650a..a30e503 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -1,10 +1,11 @@ - +#[inline(always)] pub fn pop_lsb(value: &mut u64) -> usize { let idx = value.trailing_zeros() as usize; *value &= !(1 << idx); return idx; } +#[inline(always)] pub fn pop_msb(value: &mut u64) -> usize { let idx = 63 - value.leading_zeros() as usize; *value &= !(1 << idx); -- 2.49.1 From 503cb23015ddb81993263f13fe0e38c154b9d0a3 Mon Sep 17 00:00:00 2001 From: htom Date: Tue, 11 Nov 2025 15:25:42 +0100 Subject: [PATCH 059/107] accepted connection and sending data both ways --- server/src/main.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/server/src/main.rs b/server/src/main.rs index cca71d3..2ce3e48 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,7 +1,8 @@ use futures_util::{SinkExt, StreamExt}; use serde::{Deserialize, Serialize}; use tokio::net::TcpListener; -use tokio_tungstenite::accept_async; +use tokio_tungstenite::{accept_async, connect_async}; +use url::Url; #[derive(Serialize, Deserialize, Debug)] struct Message { @@ -25,7 +26,17 @@ async fn main() { while let Some(Ok(msg)) = read.next().await { if msg.is_text() { let txt = msg.to_text().unwrap(); - if let Ok(json) = serde_json::from_str::(txt) {} + if let Ok(json) = serde_json::from_str::(txt) { + println!("Recieved: {:?}", json); + + //for testing the write channel, we send back the + //same data the client sent + let reply = serde_json::to_string(&json).unwrap(); + write + .send(tokio_tungstenite::tungstenite::Message::Text(reply)) + .await + .unwrap(); + } } } }); -- 2.49.1 From 4daa21e8bf2f04646d244df32e50396f37d9e2fe Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 11:28:14 +0100 Subject: [PATCH 060/107] Started to rewrite the project to handle connection storing and message types, added v4 for uuid crate --- server/Cargo.toml | 1 + server/src/handle_connection.rs | 33 +++++++++++++++++++++++ server/src/main.rs | 46 +++++++++++++++------------------ 3 files changed, 55 insertions(+), 25 deletions(-) create mode 100644 server/src/handle_connection.rs diff --git a/server/Cargo.toml b/server/Cargo.toml index d37bf87..2b92661 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -11,3 +11,4 @@ serde = { version = "1", features = ["derive"] } serde_json = "1" futures-util = "0.3.31" url = "2.5.7" +uuid = {version = "1.18.1", features = ["v4"] } diff --git a/server/src/handle_connection.rs b/server/src/handle_connection.rs new file mode 100644 index 0000000..1c2a110 --- /dev/null +++ b/server/src/handle_connection.rs @@ -0,0 +1,33 @@ +use futures_util::{SinkExt, StreamExt}; +use tokio_tungstenite::{accept_async, tungstenite::Message as WsMessage}; +use uuid::Uuid; + +use crate::ConnectionMap; + +async fn handle_connection(stream: tokio::net::TcpStream, connections: ConnectionMap) { + let ws_stream = accept_async(stream).await.unwrap(); + let (write, mut read) = ws_stream.split(); + + let id = Uuid::new_v4(); + + { + let mut map = connections.lock().await; + map.insert(id, write); + } + + println!("New connection: {id}"); + + while let Some(Ok(msg)) = read.next().await { + if msg.is_text() { + println!("Recieved from {id}: {}", msg); + broadcast_message(&connections, &msg).await; + } + } + + { + let mut map = connections.lock().await; + map.remove(&id); + } + + println!("Connection removed: {id}"); +} diff --git a/server/src/main.rs b/server/src/main.rs index 2ce3e48..7f3b6ad 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,44 +1,40 @@ use futures_util::{SinkExt, StreamExt}; use serde::{Deserialize, Serialize}; +use std::collections::HashMap; +use std::sync::Arc; use tokio::net::TcpListener; -use tokio_tungstenite::{accept_async, connect_async}; -use url::Url; +use tokio::sync::Mutex; +use tokio_tungstenite::accept_async; +use uuid::Uuid; + +mod handle_connection; #[derive(Serialize, Deserialize, Debug)] -struct Message { +struct MessageData { username: String, + userid: u32, text: String, } +type Tx = futures_util::stream::SplitSink< + tokio_tungstenite::WebSocketStream, + tokio_tungstenite::tungstenite::Message, +>; + +type ConnectionMap = Arc>>; + #[tokio::main] async fn main() { - let address = "0.0.0.0:9001"; //accept connection from anywhere + let address = "0.0.0.0:9001"; //address to connect to let listener = TcpListener::bind(address).await.unwrap(); println!("Server running on ws://{}", address); + let connections: ConnectionMap = Arc::new(Mutex::new(HashMap::new())); + while let Ok((stream, _)) = listener.accept().await { - println!("New connection!"); - + let connections = connections.clone(); tokio::spawn(async move { - let ws_stream = accept_async(stream).await.unwrap(); - let (mut write, mut read) = ws_stream.split(); //seperate the read and write channel - - while let Some(Ok(msg)) = read.next().await { - if msg.is_text() { - let txt = msg.to_text().unwrap(); - if let Ok(json) = serde_json::from_str::(txt) { - println!("Recieved: {:?}", json); - - //for testing the write channel, we send back the - //same data the client sent - let reply = serde_json::to_string(&json).unwrap(); - write - .send(tokio_tungstenite::tungstenite::Message::Text(reply)) - .await - .unwrap(); - } - } - } + handle_connection(stream, connections).await; }); } } -- 2.49.1 From 4123a710cf45ad9ffbad9244e27dc1da2696507a Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 12:49:42 +0100 Subject: [PATCH 061/107] first phase of rewrite done, server stores connections with an id, currently works as a hub, next phase to handle custom message types --- server/src/broadcast_message.rs | 19 +++++++++++++++++++ server/src/handle_connection.rs | 9 +++++---- server/src/main.rs | 3 +++ 3 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 server/src/broadcast_message.rs diff --git a/server/src/broadcast_message.rs b/server/src/broadcast_message.rs new file mode 100644 index 0000000..0248aab --- /dev/null +++ b/server/src/broadcast_message.rs @@ -0,0 +1,19 @@ +use crate::ConnectionMap; +use futures_util::SinkExt; +use tokio_tungstenite::tungstenite::Message as WsMessage; + +pub async fn broadcast_message(connections: &ConnectionMap, msg: &WsMessage) { + let mut dead = vec![]; + let mut map = connections.lock().await; + + for (id, tx) in map.iter_mut() { + if let Err(e) = tx.send(msg.clone()).await { + eprintln!("Failed to send to {id}: {e}"); + dead.push(*id); + } + } + + for id in dead { + map.remove(&id); + } +} diff --git a/server/src/handle_connection.rs b/server/src/handle_connection.rs index 1c2a110..af7849b 100644 --- a/server/src/handle_connection.rs +++ b/server/src/handle_connection.rs @@ -1,10 +1,11 @@ -use futures_util::{SinkExt, StreamExt}; -use tokio_tungstenite::{accept_async, tungstenite::Message as WsMessage}; +use crate::ConnectionMap; +use futures_util::StreamExt; +use tokio_tungstenite::accept_async; use uuid::Uuid; -use crate::ConnectionMap; +use super::broadcast_message::broadcast_message; -async fn handle_connection(stream: tokio::net::TcpStream, connections: ConnectionMap) { +pub async fn handle_connection(stream: tokio::net::TcpStream, connections: ConnectionMap) { let ws_stream = accept_async(stream).await.unwrap(); let (write, mut read) = ws_stream.split(); diff --git a/server/src/main.rs b/server/src/main.rs index 7f3b6ad..ff5a706 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -7,8 +7,11 @@ use tokio::sync::Mutex; use tokio_tungstenite::accept_async; use uuid::Uuid; +mod broadcast_message; mod handle_connection; +use handle_connection::handle_connection; + #[derive(Serialize, Deserialize, Debug)] struct MessageData { username: String, -- 2.49.1 From d8861b66b2c7cea8b54134626593d8411e159d51 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 13:25:40 +0100 Subject: [PATCH 062/107] using serde feature from uuid, so i can add an id to a struct definition --- server/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/Cargo.toml b/server/Cargo.toml index 2b92661..8e4b1e5 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -11,4 +11,4 @@ serde = { version = "1", features = ["derive"] } serde_json = "1" futures-util = "0.3.31" url = "2.5.7" -uuid = {version = "1.18.1", features = ["v4"] } +uuid = {version = "1.18.1", features = ["v4", "serde"] } -- 2.49.1 From 73624baf90d400f7adbc8d7dbec03f8ab02a3baf Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 14:01:13 +0100 Subject: [PATCH 063/107] added server event enum --- server/src/main.rs | 1 + server/src/server_event.rs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 server/src/server_event.rs diff --git a/server/src/main.rs b/server/src/main.rs index ff5a706..11eda60 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -9,6 +9,7 @@ use uuid::Uuid; mod broadcast_message; mod handle_connection; +mod server_event; use handle_connection::handle_connection; diff --git a/server/src/server_event.rs b/server/src/server_event.rs new file mode 100644 index 0000000..a763837 --- /dev/null +++ b/server/src/server_event.rs @@ -0,0 +1,20 @@ +use uuid::Uuid; + +struct Step { + from: String, + to: String, +} + +enum ServerEvent { + PlayerJoined(Uuid), //tarolja el a kapcsolatot + PlayerLeft(Uuid), //torolje a jatekos a listabol mert kilepett + PlayerJoinedQeue(Uuid), //online jatekra var + PlayerJoinedMatch(Uuid), //player joined a match + PlayerRequestAvailableSteps(Uuid, String), //string board + PlayerSteps(Uuid, Step), //player moves piece + CheckWinner(Uuid, String), //player asks server if they won + PlayerIsInCheck(Uuid, String), //board state + PlayerOpponentUpdateUI(Uuid, String), //board state + PlayerLost(Uuid), + PlayerReturnToMenu(Uuid), +} -- 2.49.1 From 532c5a42ea60b299943da0c11d96edab9c8b697c Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 15:13:01 +0100 Subject: [PATCH 064/107] added anyhow and rand crate --- server/Cargo.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/server/Cargo.toml b/server/Cargo.toml index 8e4b1e5..c631dd0 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -12,3 +12,5 @@ serde_json = "1" futures-util = "0.3.31" url = "2.5.7" uuid = {version = "1.18.1", features = ["v4", "serde"] } +anyhow = "1.0.100" +rand = "0.9.2" -- 2.49.1 From 281f496c832cba074e72622c3b59608373407822 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 15:14:07 +0100 Subject: [PATCH 065/107] removed these files, ready to start working on event system messages --- server/src/broadcast_message.rs | 19 ------------------ server/src/handle_connection.rs | 34 --------------------------------- server/src/server_event.rs | 20 ------------------- 3 files changed, 73 deletions(-) delete mode 100644 server/src/broadcast_message.rs delete mode 100644 server/src/handle_connection.rs delete mode 100644 server/src/server_event.rs diff --git a/server/src/broadcast_message.rs b/server/src/broadcast_message.rs deleted file mode 100644 index 0248aab..0000000 --- a/server/src/broadcast_message.rs +++ /dev/null @@ -1,19 +0,0 @@ -use crate::ConnectionMap; -use futures_util::SinkExt; -use tokio_tungstenite::tungstenite::Message as WsMessage; - -pub async fn broadcast_message(connections: &ConnectionMap, msg: &WsMessage) { - let mut dead = vec![]; - let mut map = connections.lock().await; - - for (id, tx) in map.iter_mut() { - if let Err(e) = tx.send(msg.clone()).await { - eprintln!("Failed to send to {id}: {e}"); - dead.push(*id); - } - } - - for id in dead { - map.remove(&id); - } -} diff --git a/server/src/handle_connection.rs b/server/src/handle_connection.rs deleted file mode 100644 index af7849b..0000000 --- a/server/src/handle_connection.rs +++ /dev/null @@ -1,34 +0,0 @@ -use crate::ConnectionMap; -use futures_util::StreamExt; -use tokio_tungstenite::accept_async; -use uuid::Uuid; - -use super::broadcast_message::broadcast_message; - -pub async fn handle_connection(stream: tokio::net::TcpStream, connections: ConnectionMap) { - let ws_stream = accept_async(stream).await.unwrap(); - let (write, mut read) = ws_stream.split(); - - let id = Uuid::new_v4(); - - { - let mut map = connections.lock().await; - map.insert(id, write); - } - - println!("New connection: {id}"); - - while let Some(Ok(msg)) = read.next().await { - if msg.is_text() { - println!("Recieved from {id}: {}", msg); - broadcast_message(&connections, &msg).await; - } - } - - { - let mut map = connections.lock().await; - map.remove(&id); - } - - println!("Connection removed: {id}"); -} diff --git a/server/src/server_event.rs b/server/src/server_event.rs deleted file mode 100644 index a763837..0000000 --- a/server/src/server_event.rs +++ /dev/null @@ -1,20 +0,0 @@ -use uuid::Uuid; - -struct Step { - from: String, - to: String, -} - -enum ServerEvent { - PlayerJoined(Uuid), //tarolja el a kapcsolatot - PlayerLeft(Uuid), //torolje a jatekos a listabol mert kilepett - PlayerJoinedQeue(Uuid), //online jatekra var - PlayerJoinedMatch(Uuid), //player joined a match - PlayerRequestAvailableSteps(Uuid, String), //string board - PlayerSteps(Uuid, Step), //player moves piece - CheckWinner(Uuid, String), //player asks server if they won - PlayerIsInCheck(Uuid, String), //board state - PlayerOpponentUpdateUI(Uuid, String), //board state - PlayerLost(Uuid), - PlayerReturnToMenu(Uuid), -} -- 2.49.1 From ff68d9d2d9dd00623078d002840d8af1b1826c01 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 15:52:55 +0100 Subject: [PATCH 066/107] new server messages --- server/src/messages.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 server/src/messages.rs diff --git a/server/src/messages.rs b/server/src/messages.rs new file mode 100644 index 0000000..e6e957a --- /dev/null +++ b/server/src/messages.rs @@ -0,0 +1,36 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Debug)] +#[serde(tag = "type")] +pub enum ServerMessage { + Welcome { + player_id: String, + }, + MatchFound { + match_id: String, + opponent: String, + color: String, + }, + GameStart { + fen: String, + white_time: u32, + black_time: u32, + }, + MoveResult { + valid: bool, + from: String, + to: String, + new_fen: String, + }, + OpponentMove { + from: String, + to: String, + }, + GameEnd { + result: String, + reason: String, + }, + Error { + reason: String, + }, +} -- 2.49.1 From c2e29415c9a1a145ed5fbd2e526de6c5a69d243a Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 15:54:03 +0100 Subject: [PATCH 067/107] added new event system to handle different client events in game and on connection --- server/src/events.rs | 77 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 server/src/events.rs diff --git a/server/src/events.rs b/server/src/events.rs new file mode 100644 index 0000000..0d836b5 --- /dev/null +++ b/server/src/events.rs @@ -0,0 +1,77 @@ +use serde::{Deserialize, Serialize}; +use std::sync::Arc; +use tokio::sync::Mutex; +use tokio::sync::mpsc; +use uuid::Uuid; + +#[derive(Serialize, Deserialize, Debug)] +pub struct Step { + pub from: String, + pub to: String, +} + +#[derive(Serialize, Deserialize, Debug)] +#[serde(tag = "type")] +pub enum ClientEvent { + Join { username: String }, + FindMatch, + Move { from: String, to: String }, + Resign, + Chat { text: String }, + RequestLegalMoves { fen: String }, +} + +#[derive(Debug)] +pub enum ServerEvent { + PlayerJoined(Uuid, String), + PlayerLeft(Uuid), + PlayerJoinedQueue(Uuid), + PlayerJoinedMatch(Uuid, Uuid), // player_id, match_id + PlayerMove(Uuid, Step), + PlayerResigned(Uuid), + MatchCreated(Uuid, Uuid, Uuid), // match_id, white_id, black_id +} + +pub struct EventSystem { + sender: mpsc::UnboundedSender<(Uuid, ClientEvent)>, + receiver: Arc>>, +} + +impl Clone for EventSystem { + fn clone(&self) -> Self { + Self { + sender: self.sender.clone(), + receiver: Arc::clone(&self.receiver), + } + } +} + +impl EventSystem { + pub fn new() -> Self { + let (sender, receiver) = mpsc::unbounded_channel(); + Self { + sender, + receiver: Arc::new(Mutex::new(receiver)), + } + } + + pub async fn send_event( + &self, + player_id: Uuid, + event: ClientEvent, + ) -> Result<(), Box> { + self.sender.send((player_id, event))?; + Ok(()) + } + + pub async fn next_event(&self) -> Option<(Uuid, ClientEvent)> { + let mut receiver = self.receiver.lock().await; + receiver.recv().await + } +} + +impl Default for EventSystem { + fn default() -> Self { + Self::new() + } +} -- 2.49.1 From 5696128ac93eed022abe58919633f1792de6e933 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 17:11:23 +0100 Subject: [PATCH 068/107] handling differenk kinds of server messages, and matchmaking basics --- server/src/connection.rs | 169 ++++++++++++++++++++++++++++++++++++++ server/src/main.rs | 75 +++++++++-------- server/src/matchmaking.rs | 112 +++++++++++++++++++++++++ 3 files changed, 324 insertions(+), 32 deletions(-) create mode 100644 server/src/connection.rs create mode 100644 server/src/matchmaking.rs diff --git a/server/src/connection.rs b/server/src/connection.rs new file mode 100644 index 0000000..dd70056 --- /dev/null +++ b/server/src/connection.rs @@ -0,0 +1,169 @@ +use futures_util::{SinkExt, StreamExt}; +use serde::{Deserialize, Serialize}; +use std::collections::{HashMap, VecDeque}; +use std::sync::Arc; +use tokio::net::TcpStream; +use tokio::sync::Mutex; +use tokio_tungstenite::{WebSocketStream, tungstenite::Message}; +use uuid::Uuid; + +// Type definitions +pub type Tx = futures_util::stream::SplitSink, Message>; +pub type ConnectionMap = Arc>>; +pub type MatchMap = Arc>>; +pub type WaitingQueue = Arc>>; + +// Helper functions to create new instances +pub fn new_connection_map() -> ConnectionMap { + Arc::new(Mutex::new(HashMap::new())) +} + +pub fn new_match_map() -> MatchMap { + Arc::new(Mutex::new(HashMap::new())) +} + +pub fn new_waiting_queue() -> WaitingQueue { + Arc::new(Mutex::new(VecDeque::new())) +} + +#[derive(Debug)] +pub struct PlayerConnection { + pub id: Uuid, + pub username: Option, + pub tx: Tx, + pub current_match: Option, +} + +#[derive(Debug, Clone)] +pub struct GameMatch { + pub id: Uuid, + pub player_white: Uuid, + pub player_black: Uuid, + pub board_state: String, + pub move_history: Vec, +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct Step { + pub from: String, + pub to: String, +} + +// Message sending utilities +pub async fn send_message_to_player( + connections: &ConnectionMap, + player_id: Uuid, + message: &str, +) -> Result<(), Box> { + let mut connections_lock = connections.lock().await; + if let Some(connection) = connections_lock.get_mut(&player_id) { + connection + .tx + .send(Message::Text(message.to_string())) + .await?; + } + Ok(()) +} + +pub async fn broadcast_to_all(connections: &ConnectionMap, message: &str) { + let mut connections_lock = connections.lock().await; + let mut dead_connections = Vec::new(); + + for (id, connection) in connections_lock.iter_mut() { + if let Err(e) = connection.tx.send(Message::Text(message.to_string())).await { + eprintln!("Failed to send to {}: {}", id, e); + dead_connections.push(*id); + } + } + + // Clean up dead connections + for dead_id in dead_connections { + connections_lock.remove(&dead_id); + } +} + +pub async fn broadcast_to_match( + connections: &ConnectionMap, + matches: &MatchMap, + match_id: Uuid, + message: &str, +) -> Result<(), Box> { + let matches_lock = matches.lock().await; + if let Some(game_match) = matches_lock.get(&match_id) { + send_message_to_player(connections, game_match.player_white, message).await?; + send_message_to_player(connections, game_match.player_black, message).await?; + } + Ok(()) +} + +// Connection handler +pub async fn handle_connection( + stream: TcpStream, + connections: ConnectionMap, + matches: MatchMap, + waiting_queue: WaitingQueue, + event_system: crate::events::EventSystem, +) -> anyhow::Result<()> { + use tokio_tungstenite::accept_async; + + let ws_stream = accept_async(stream).await?; + let (write, mut read) = ws_stream.split(); + + let player_id = Uuid::new_v4(); + + // Store the connection + { + let mut conn_map = connections.lock().await; + conn_map.insert( + player_id, + PlayerConnection { + id: player_id, + username: None, + tx: write, + current_match: None, + }, + ); + } + + println!("New connection: {}", player_id); + + // Send welcome message + let _ = send_message_to_player( + &connections, + player_id, + &format!(r#"{{"type": "welcome", "player_id": "{}"}}"#, player_id), + ) + .await; + + // Message processing loop + while let Some(Ok(message)) = read.next().await { + if message.is_text() { + let text = message.to_text()?; + println!("Received from {}: {}", player_id, text); + + // TODO: Parse and handle message with event system + // This will be implemented when we integrate the event system + } + } + + // Cleanup on disconnect + cleanup_player(player_id, &connections, &matches, &waiting_queue).await; + println!("Connection {} closed", player_id); + + Ok(()) +} + +async fn cleanup_player( + player_id: Uuid, + connections: &ConnectionMap, + _matches: &MatchMap, + waiting_queue: &WaitingQueue, +) { + // Remove from waiting queue + waiting_queue.lock().await.retain(|&id| id != player_id); + + // Remove from connections + connections.lock().await.remove(&player_id); + + println!("Cleaned up player {}", player_id); +} diff --git a/server/src/main.rs b/server/src/main.rs index 11eda60..ecc9b6f 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,44 +1,55 @@ -use futures_util::{SinkExt, StreamExt}; -use serde::{Deserialize, Serialize}; -use std::collections::HashMap; -use std::sync::Arc; +mod connection; +mod events; +mod matchmaking; + use tokio::net::TcpListener; -use tokio::sync::Mutex; -use tokio_tungstenite::accept_async; -use uuid::Uuid; - -mod broadcast_message; -mod handle_connection; -mod server_event; - -use handle_connection::handle_connection; - -#[derive(Serialize, Deserialize, Debug)] -struct MessageData { - username: String, - userid: u32, - text: String, -} - -type Tx = futures_util::stream::SplitSink< - tokio_tungstenite::WebSocketStream, - tokio_tungstenite::tungstenite::Message, ->; - -type ConnectionMap = Arc>>; #[tokio::main] -async fn main() { - let address = "0.0.0.0:9001"; //address to connect to - let listener = TcpListener::bind(address).await.unwrap(); +async fn main() -> anyhow::Result<()> { + let address = "0.0.0.0:9001"; + let listener = TcpListener::bind(address).await?; println!("Server running on ws://{}", address); - let connections: ConnectionMap = Arc::new(Mutex::new(HashMap::new())); + // Shared state initialization using the new helper functions + let connections = connection::new_connection_map(); + let matches = connection::new_match_map(); + let waiting_queue = connection::new_waiting_queue(); + // Event system for communication between components + let event_system = events::EventSystem::new(); + + // Start matchmaking background task + let matchmaker = matchmaking::MatchmakingSystem::new( + connections.clone(), + matches.clone(), + waiting_queue.clone(), + event_system.clone(), + ); + tokio::spawn(async move { + matchmaker.run().await; + }); + + // Main connection loop while let Ok((stream, _)) = listener.accept().await { let connections = connections.clone(); + let matches = matches.clone(); + let waiting_queue = waiting_queue.clone(); + let event_system = event_system.clone(); + tokio::spawn(async move { - handle_connection(stream, connections).await; + if let Err(e) = connection::handle_connection( + stream, + connections, + matches, + waiting_queue, + event_system, + ) + .await + { + eprintln!("Connection error: {}", e); + } }); } + + Ok(()) } diff --git a/server/src/matchmaking.rs b/server/src/matchmaking.rs new file mode 100644 index 0000000..c2995ba --- /dev/null +++ b/server/src/matchmaking.rs @@ -0,0 +1,112 @@ +use crate::connection::{ConnectionMap, GameMatch, MatchMap, WaitingQueue}; +use crate::events::EventSystem; +use rand::random; +use uuid::Uuid; + +pub struct MatchmakingSystem { + connections: ConnectionMap, + matches: MatchMap, + waiting_queue: WaitingQueue, + event_system: EventSystem, +} + +impl MatchmakingSystem { + pub fn new( + connections: ConnectionMap, + matches: MatchMap, + waiting_queue: WaitingQueue, + event_system: EventSystem, + ) -> Self { + Self { + connections, + matches, + waiting_queue, + event_system, + } + } + + pub async fn run(&self) { + loop { + self.try_create_match().await; + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; + } + } + + async fn try_create_match(&self) { + let mut queue = self.waiting_queue.lock().await; + + while queue.len() >= 2 { + let player1 = queue.pop_front().unwrap(); + let player2 = queue.pop_front().unwrap(); + + let match_id = Uuid::new_v4(); + let (white_player, black_player) = if random::() { + (player1, player2) + } else { + (player2, player1) + }; + + let game_match = GameMatch { + id: match_id, + player_white: white_player, + player_black: black_player, + board_state: "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1".to_string(), + move_history: Vec::new(), + }; + + // Store the match + self.matches.lock().await.insert(match_id, game_match); + + // Update player connections + { + let mut conn_map = self.connections.lock().await; + if let Some(player) = conn_map.get_mut(&white_player) { + player.current_match = Some(match_id); + } + if let Some(player) = conn_map.get_mut(&black_player) { + player.current_match = Some(match_id); + } + } + + // Notify players + self.notify_players(white_player, black_player, match_id) + .await; + } + } + + async fn notify_players(&self, white: Uuid, black: Uuid, match_id: Uuid) { + let conn_map = self.connections.lock().await; + + // Get opponent names + let white_name = conn_map + .get(&black) + .and_then(|c| c.username.as_deref()) + .unwrap_or("Opponent"); + let black_name = conn_map + .get(&white) + .and_then(|c| c.username.as_deref()) + .unwrap_or("Opponent"); + + // Notify white player + if let Some(_) = conn_map.get(&white) { + let message = format!( + r#"{{"type": "match_found", "match_id": "{}", "opponent": "{}", "color": "white"}}"#, + match_id, black_name + ); + let _ = + crate::connection::send_message_to_player(&self.connections, white, &message).await; + } + + // Notify black player + if let Some(_) = conn_map.get(&black) { + let message = format!( + r#"{{"type": "match_found", "match_id": "{}", "opponent": "{}", "color": "black"}}"#, + match_id, white_name + ); + let _ = + crate::connection::send_message_to_player(&self.connections, black, &message).await; + } + + println!("Match created: {} (white) vs {} (black)", white, black); + } +} -- 2.49.1 From 352b4e57d7de27f94a4784eceff351e25b2f02c2 Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 18:42:17 +0100 Subject: [PATCH 069/107] rewrote the python script the script now checks for project name on every line read from the log file and appends it to a list named by the project, if the branch is master then it appends all lines into one list, then it checks if there is any data in the list and uploads them to the correct tab that matches the project name or master --- .github/workflows/upload_data.yml | 64 ++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 13 deletions(-) diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index 6cfe426..c814a4e 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -20,33 +20,71 @@ jobs: echo "$GOOGLE_SERVICE_ACCOUNT_JSON" > service_account.json python <<'PYCODE' - import gspread, json, time, subprocess + import gspread, json, subprocess - # credentials creds = json.load(open("service_account.json")) gc = gspread.service_account_from_dict(creds) sh = gc.open_by_key("${{ secrets.SPREADSHEET_ID }}") v = subprocess.run(['git','rev-parse','--show-toplevel'], capture_output=True).stdout.decode().strip() print(f"{v}/test_data.log") + + def writeRowsToSpreadsheet(data_list, worksheet): + existing_rows = len(worksheet.get_all_values()) + start_row = existing_rows + 3 + rows_to_append = [row.split() for row in data_list] + print(f"{rows_to_append}") + + for i, row in enumerate(rows_to_append): + worksheet.insert_row(row, start_row + i) + + with open(f"{v}/test_data.log", "r") as f: lines = [line.strip() for line in f if line.strip()] + isMaster = False project = lines[0].lower() - worksheet = sh.worksheet(project) + if project == "master": + isMaster = True + + engine_data = [] + server_data = [] + ui_data = [] + master_data = [] - # project name - data = lines[1:] + for entry in lines: + if not isMaster and entry == "engine": + project = "engine" + elif not isMaster and entry == "server": + project = "server" + elif not isMaster and entry == "ui": + project = "ui" - #blank rows - existing_rows = len(worksheet.get_all_values()) - start_row = existing_rows + 3 + if project == "engine" and entry != "engine": + engine_data.append(entry) + elif project == "server" and entry != "server": + server_data.append(entry) + elif project == "ui" and entry != "ui": + ui_data.append(entry) + elif project == "master" and entry != "master": + master_data.append(entry) - # Split data into columns (by spaces) - rows_to_append = [row.split() for row in data] + print("PRINTING FILTERED DATA\n\n") + print(f"engine\n{engine_data}") + print(f"server\n{server_data}") + print(f"ui\n{ui_data}") + print("\n\n\n") - for i, row in enumerate(rows_to_append): - worksheet.insert_row(row, start_row + i) + if isMaster and len(master_data) != 0: + worksheet = sh.worksheet("master") + writeRowsToSpreadsheet(master_data, worksheet) + exit(0) + + if len(engine_data) != 0: + writeRowsToSpreadsheet(engine_data, sh.worksheet("engine")) + if len(server_data) != 0: + writeRowsToSpreadsheet(server_data, sh.worksheet("server")) + if len(ui_data) != 0: + writeRowsToSpreadsheet(ui_data, sh.worksheet("ui")) - print(f"Uploaded {len(rows_to_append)} rows to '{project}' tab.") PYCODE -- 2.49.1 From ad26d22281d2ffb9c1461077c1a020f5dca0494e Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 18:44:00 +0100 Subject: [PATCH 070/107] indentation error in python script --- .github/workflows/upload_data.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index c814a4e..fb24802 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -35,8 +35,8 @@ jobs: rows_to_append = [row.split() for row in data_list] print(f"{rows_to_append}") - for i, row in enumerate(rows_to_append): - worksheet.insert_row(row, start_row + i) + for i, row in enumerate(rows_to_append): + worksheet.insert_row(row, start_row + i) with open(f"{v}/test_data.log", "r") as f: -- 2.49.1 From f8c14cc268e55ef1cddf58addc4a423516f8bc79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:50:01 +0100 Subject: [PATCH 071/107] Enhance logging for data upload process Added print statements to log data being uploaded to each tab. --- .github/workflows/upload_data.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/upload_data.yml b/.github/workflows/upload_data.yml index fb24802..c0ab435 100644 --- a/.github/workflows/upload_data.yml +++ b/.github/workflows/upload_data.yml @@ -33,6 +33,7 @@ jobs: existing_rows = len(worksheet.get_all_values()) start_row = existing_rows + 3 rows_to_append = [row.split() for row in data_list] + print("rows to append") print(f"{rows_to_append}") for i, row in enumerate(rows_to_append): @@ -73,18 +74,23 @@ jobs: print(f"engine\n{engine_data}") print(f"server\n{server_data}") print(f"ui\n{ui_data}") + print(f"master\n{master_data}") print("\n\n\n") if isMaster and len(master_data) != 0: + print("uploading to master tab") worksheet = sh.worksheet("master") writeRowsToSpreadsheet(master_data, worksheet) exit(0) if len(engine_data) != 0: + print("uploading to engine tab") writeRowsToSpreadsheet(engine_data, sh.worksheet("engine")) if len(server_data) != 0: + print("uploading to server tab") writeRowsToSpreadsheet(server_data, sh.worksheet("server")) if len(ui_data) != 0: + print("uploading to ui tab") writeRowsToSpreadsheet(ui_data, sh.worksheet("ui")) PYCODE -- 2.49.1 From 7be3c928b741c07d4c5150bbc74ede88f917ebb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:54:06 +0100 Subject: [PATCH 072/107] Display test_data.log in workflow script Added command to display contents of test_data.log --- .github/workflows/test.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.sh b/.github/workflows/test.sh index f948267..856d6c5 100755 --- a/.github/workflows/test.sh +++ b/.github/workflows/test.sh @@ -38,3 +38,5 @@ cat "$LOG_FILE" >> "$FINAL_LOG" # --- SUMMARY --- echo ">>> Test output extracted to $PROJECT_PATH/$LOG_FILE" echo ">>> Appended to $FINAL_LOG" + +cat $(git rev-parse --show-toplevel)/test_data.log -- 2.49.1 From 39273908ac23c0565f82dcbce0b88e3d7b3d38dd Mon Sep 17 00:00:00 2001 From: htom Date: Wed, 12 Nov 2025 18:58:36 +0100 Subject: [PATCH 073/107] removed checkout to potentially fix an error with test_data.log --- .github/workflows/engine_test.yml | 2 -- .github/workflows/server_test.yml | 2 -- .github/workflows/ui_test.yml | 2 -- 3 files changed, 6 deletions(-) diff --git a/.github/workflows/engine_test.yml b/.github/workflows/engine_test.yml index 3f4bfec..78683a4 100644 --- a/.github/workflows/engine_test.yml +++ b/.github/workflows/engine_test.yml @@ -9,8 +9,6 @@ jobs: runs-on: self-hosted steps: - - uses: actions/checkout@v4 - - name: Run Engine tests run: | bash .github/workflows/test.sh engine/ diff --git a/.github/workflows/server_test.yml b/.github/workflows/server_test.yml index 4a2e817..7583a32 100644 --- a/.github/workflows/server_test.yml +++ b/.github/workflows/server_test.yml @@ -9,8 +9,6 @@ jobs: runs-on: self-hosted steps: - - uses: actions/checkout@v4 - - name: Run Server tests run: | bash .github/workflows/test.sh server/ diff --git a/.github/workflows/ui_test.yml b/.github/workflows/ui_test.yml index 7f0ca2c..c20ad98 100644 --- a/.github/workflows/ui_test.yml +++ b/.github/workflows/ui_test.yml @@ -9,8 +9,6 @@ jobs: runs-on: self-hosted steps: - - uses: actions/checkout@v4 - - name: Run UI tests run: | bash .github/workflows/test.sh ui/ -- 2.49.1 From a497f8554fd84ad4c2a51c09010f8ad43daf1250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:12:47 +0100 Subject: [PATCH 074/107] Add checkout action to dispatcher workflow --- .github/workflows/dispatcher.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 0524127..7e3ff2d 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -16,6 +16,7 @@ jobs: server: ${{ steps.check.outputs.server }} ui: ${{ steps.check.outputs.ui }} steps: + - uses: actions/checkout@v4 - name: Determine which tests to run id: check run: | -- 2.49.1 From da3b1c8c002d8b1e1d4b74fc90a33bbc62ec49c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:13:14 +0100 Subject: [PATCH 075/107] Add checkout action to dispatcher workflow --- .github/workflows/dispatcher.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 0524127..7e3ff2d 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -16,6 +16,7 @@ jobs: server: ${{ steps.check.outputs.server }} ui: ${{ steps.check.outputs.ui }} steps: + - uses: actions/checkout@v4 - name: Determine which tests to run id: check run: | -- 2.49.1 From 4ffec0f05d71046d9e9fb48f8d9267f452a00619 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= <75033623+htamas1210@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:27:29 +0100 Subject: [PATCH 076/107] Add name to checkout step in dispatcher.yml --- .github/workflows/dispatcher.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dispatcher.yml b/.github/workflows/dispatcher.yml index 7e3ff2d..c14414d 100644 --- a/.github/workflows/dispatcher.yml +++ b/.github/workflows/dispatcher.yml @@ -16,7 +16,8 @@ jobs: server: ${{ steps.check.outputs.server }} ui: ${{ steps.check.outputs.ui }} steps: - - uses: actions/checkout@v4 + - name: checkout repository + uses: actions/checkout@v4 - name: Determine which tests to run id: check run: | -- 2.49.1 From 83a73ed34c438abf0662a2134d80378f215a489e Mon Sep 17 00:00:00 2001 From: htom Date: Thu, 13 Nov 2025 15:19:26 +0100 Subject: [PATCH 077/107] Added tests --- server/src/connection.rs | 49 +++++++++++++++++++++ server/src/events.rs | 49 +++++++++++++++++++++ server/src/main.rs | 1 - server/src/matchmaking.rs | 90 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 188 insertions(+), 1 deletion(-) diff --git a/server/src/connection.rs b/server/src/connection.rs index dd70056..715ae88 100644 --- a/server/src/connection.rs +++ b/server/src/connection.rs @@ -167,3 +167,52 @@ async fn cleanup_player( println!("Cleaned up player {}", player_id); } + +#[cfg(test)] +mod tests { + use super::*; + use uuid::Uuid; + + #[tokio::test] + async fn test_send_message_to_nonexistent_player() { + let connections = new_connection_map(); + let player_id = Uuid::new_v4(); + + let result = send_message_to_player(&connections, player_id, "test message").await; + assert!(result.is_ok(), "Should handle missing player gracefully"); + } + + #[tokio::test] + async fn test_broadcast_to_empty_connections() { + let connections = new_connection_map(); + + broadcast_to_all(&connections, "test broadcast").await; + + let conn_map = connections.lock().await; + assert!(conn_map.is_empty(), "Connections should still be empty"); + } + + #[tokio::test] + async fn test_connection_cleanup() { + let connections = new_connection_map(); + let matches = new_match_map(); + let waiting_queue = new_waiting_queue(); + + let player_id = Uuid::new_v4(); + + { + waiting_queue.lock().await.push_back(player_id); + assert_eq!(waiting_queue.lock().await.len(), 1); + } + + cleanup_player(player_id, &connections, &matches, &waiting_queue).await; + + { + let queue = waiting_queue.lock().await; + assert!( + !queue.contains(&player_id), + "Player should be removed from waiting queue" + ); + } + } +} diff --git a/server/src/events.rs b/server/src/events.rs index 0d836b5..8cc43a4 100644 --- a/server/src/events.rs +++ b/server/src/events.rs @@ -75,3 +75,52 @@ impl Default for EventSystem { Self::new() } } + +#[cfg(test)] +mod tests { + use super::*; + use uuid::Uuid; + + #[tokio::test] + async fn test_event_system_send_and_receive() { + let event_system = EventSystem::new(); + let player_id = Uuid::new_v4(); + + let join_event = ClientEvent::Join { + username: "test_user".to_string(), + }; + + let send_result = event_system.send_event(player_id, join_event).await; + assert!(send_result.is_ok(), "Should send event successfully"); + + let received = event_system.next_event().await; + assert!(received.is_some(), "Should receive sent event"); + + let (received_id, received_event) = received.unwrap(); + assert_eq!(received_id, player_id, "Should receive correct player ID"); + + match received_event { + ClientEvent::Join { username } => { + assert_eq!(username, "test_user", "Should receive correct username"); + } + _ => panic!("Should receive Join event"), + } + } + + #[tokio::test] + async fn test_event_system_clone() { + let event_system1 = EventSystem::new(); + let event_system2 = event_system1.clone(); + + let player_id = Uuid::new_v4(); + let event = ClientEvent::FindMatch; + + event_system1.send_event(player_id, event).await.unwrap(); + + let received = event_system2.next_event().await; + assert!( + received.is_some(), + "Cloned event system should receive events" + ); + } +} diff --git a/server/src/main.rs b/server/src/main.rs index ecc9b6f..0d35baf 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,7 +1,6 @@ mod connection; mod events; mod matchmaking; - use tokio::net::TcpListener; #[tokio::main] diff --git a/server/src/matchmaking.rs b/server/src/matchmaking.rs index c2995ba..4f4cc27 100644 --- a/server/src/matchmaking.rs +++ b/server/src/matchmaking.rs @@ -110,3 +110,93 @@ impl MatchmakingSystem { println!("Match created: {} (white) vs {} (black)", white, black); } } + +#[cfg(test)] +mod tests { + use super::*; + use crate::events::EventSystem; + use uuid::Uuid; + + use crate::connection::new_connection_map; + use crate::connection::new_match_map; + use crate::connection::new_waiting_queue; + + #[tokio::test] + async fn test_matchmaking_creates_matches() { + let connections = new_connection_map(); + let matches = new_match_map(); + let waiting_queue = new_waiting_queue(); + let event_system = EventSystem::new(); + + let matchmaking = MatchmakingSystem::new( + connections.clone(), + matches.clone(), + waiting_queue.clone(), + event_system.clone(), + ); + + let player1 = Uuid::new_v4(); + let player2 = Uuid::new_v4(); + + { + waiting_queue.lock().await.push_back(player1); + waiting_queue.lock().await.push_back(player2); + } + + matchmaking.try_create_match().await; + + { + let matches_map = matches.lock().await; + assert_eq!(matches_map.len(), 1, "Should create one match"); + + let game_match = matches_map.values().next().unwrap(); + assert!(game_match.player_white == player1 || game_match.player_white == player2); + assert!(game_match.player_black == player1 || game_match.player_black == player2); + assert_ne!( + game_match.player_white, game_match.player_black, + "Players should be different" + ); + } + + { + let queue = waiting_queue.lock().await; + assert!( + queue.is_empty(), + "Waiting queue should be empty after matchmaking" + ); + } + } + + #[tokio::test] + async fn test_matchmaking_with_odd_players() { + let connections = new_connection_map(); + let matches = new_match_map(); + let waiting_queue = new_waiting_queue(); + let event_system = EventSystem::new(); + + let matchmaking = MatchmakingSystem::new( + connections.clone(), + matches.clone(), + waiting_queue.clone(), + event_system.clone(), + ); + + let player1 = Uuid::new_v4(); + { + waiting_queue.lock().await.push_back(player1); + } + + matchmaking.try_create_match().await; + + { + let matches_map = matches.lock().await; + assert!( + matches_map.is_empty(), + "Should not create match with only one player" + ); + + let queue = waiting_queue.lock().await; + assert_eq!(queue.len(), 1, "Should keep single player in queue"); + } + } +} -- 2.49.1 From 3cd53c7d708746143c8a0c75beff8c58c87eda1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 09:51:07 +0100 Subject: [PATCH 078/107] added file and module structure for board representation --- engine/src/bitboard.rs | 3 ++- engine/src/bitboard/board.rs | 0 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 engine/src/bitboard/board.rs diff --git a/engine/src/bitboard.rs b/engine/src/bitboard.rs index 67d128d..890ddc2 100644 --- a/engine/src/bitboard.rs +++ b/engine/src/bitboard.rs @@ -1,2 +1,3 @@ mod attackmaps; -mod utils; \ No newline at end of file +mod utils; +pub mod board; \ No newline at end of file diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs new file mode 100644 index 0000000..e69de29 -- 2.49.1 From 66dd2877b24f2ed8336119f9a1989bb64c7315f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 09:56:17 +0100 Subject: [PATCH 079/107] defined board representation shape in board.rs --- engine/src/bitboard/board.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index e69de29..b742d5c 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -0,0 +1,10 @@ +pub struct Board { + bitboards: [u64; 12], // 0-5 -> white pieces (P, N, B, R, Q, K), 6-11 -> black pieces (p, n, b, r, q, k) + piece_board: [u8; 64], // same as board indexes, 12 -> empty square + occupancy: [u64; 3], // 0 -> white, 1 -> black, 2 -> combined + castling_rights: u8, // 0b0000_KQkq + pinned_squares: [u8; 64], // 0 -> E-W, 1 -> NE-SW, 2 -> N-S, 3 -> SE-NW, 4 -> no pin + pin_mask: u64, // 1 -> pin, 0 -> no pin + en_passant_square: u64, // 1 -> ep square, 0 -> no ep square + side_to_move: u8, // 0 -> white to play, 1 -> black to play +} \ No newline at end of file -- 2.49.1 From 38b38845d67d891b99676d41f671eac2a3a7ce03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 09:58:38 +0100 Subject: [PATCH 080/107] added constructor for clear board to board.rs --- engine/src/bitboard/board.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index b742d5c..d630c32 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -6,5 +6,23 @@ pub struct Board { pinned_squares: [u8; 64], // 0 -> E-W, 1 -> NE-SW, 2 -> N-S, 3 -> SE-NW, 4 -> no pin pin_mask: u64, // 1 -> pin, 0 -> no pin en_passant_square: u64, // 1 -> ep square, 0 -> no ep square - side_to_move: u8, // 0 -> white to play, 1 -> black to play + side_to_move: u8 // 0 -> white to play, 1 -> black to play +} + +impl Board { + + pub fn new_clear() -> Self { + let mut bit_board: Self = Self { + bitboards: [0x0000_0000_0000_0000; 12], + piece_board: [12; 64], + occupancy: [0x0000_0000_0000_0000; 3], + castling_rights: 0b0000_0000, + pinned_squares: [4; 64], + pin_mask: 0u64, + en_passant_square: 0x0000_0000_0000_0000, + side_to_move: 0 + }; + + return bit_board; + } } \ No newline at end of file -- 2.49.1 From 7f4c53ddb74a8c0808f33a047e459caae665cf36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 10:03:24 +0100 Subject: [PATCH 081/107] added partial constructor for initial board state to board.rs --- engine/src/bitboard/board.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index d630c32..85abea4 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -25,4 +25,29 @@ impl Board { return bit_board; } + pub fn new() -> Self { + let mut bit_board: Board = Self { + bitboards: [0x0000_0000_0000_FF00, + 0x0000_0000_0000_0042, + 0x0000_0000_0000_0024, + 0x0000_0000_0000_0081, + 0x0000_0000_0000_0008, + 0x0000_0000_0000_0010, + 0x00FF_0000_0000_0000, + 0x4200_0000_0000_0000, + 0x2400_0000_0000_0000, + 0x8100_0000_0000_0000, + 0x0800_0000_0000_0000, + 0x1000_0000_0000_0000], + piece_board: [12; 64], + occupancy: [0; 3], + castling_rights: 0b0000_1111, + pinned_squares: [4; 64], + pin_mask: 0u64, + en_passant_square: 0x0000_0000_0000_0000, + side_to_move: 0 + }; + return bit_board; + } + } \ No newline at end of file -- 2.49.1 From c88fbe68e310a023d60f5fa3d854faf993dfecd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 10:06:12 +0100 Subject: [PATCH 082/107] added and used necessary methods the initial state constructor --- engine/src/bitboard/board.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index 85abea4..3d3695d 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -50,4 +50,26 @@ impl Board { return bit_board; } + + + fn calc_occupancy(&mut self) { + self.occupancy = [0u64; 3]; + for b in 0..6 { + self.occupancy[0] |= self.bitboards[b]; + } + for b in 6..12 { + self.occupancy[1] |= self.bitboards[b]; + } + self.occupancy[2] = self.occupancy[0] | self.occupancy[1]; + } + fn calc_piece_board(&mut self) { + for sq in 0..64 { + for b in 0..12 { + if (self.bitboards[b as usize] & 1 << sq) != 0 { + self.piece_board[sq] = b; + } + } + } + } + } \ No newline at end of file -- 2.49.1 From 11f26809df1eef76067c7ed1a61aadc99feb5dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 10:07:23 +0100 Subject: [PATCH 083/107] used calc_occupancy and calc_piece_board methods in the initial state constructor --- engine/src/bitboard/board.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index 3d3695d..06d5e7d 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -47,6 +47,9 @@ impl Board { en_passant_square: 0x0000_0000_0000_0000, side_to_move: 0 }; + bit_board.calc_occupancy(); + bit_board.calc_piece_board(); + return bit_board; } -- 2.49.1 From f36a196b2f39afa9a91db2d18655a7b6517c3d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 10:11:34 +0100 Subject: [PATCH 084/107] added getters for fields --- engine/src/bitboard/board.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index 06d5e7d..1a7794c 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -53,6 +53,38 @@ impl Board { return bit_board; } + #[inline(always)] + pub fn bitboards(&self, index: usize) -> u64 { + return self.bitboards[index]; + } + #[inline(always)] + pub fn piece_board(&self, sq: u8) -> u8 { + return self.piece_board[sq as usize]; + } + #[inline(always)] + pub fn occupancy(&self, side: usize) -> u64 { + return self.occupancy[side]; + } + #[inline(always)] + pub fn castling_rights(&self) -> u8 { + return self.castling_rights; + } + #[inline(always)] + pub fn pinned_squares(&self, sq: usize) -> u8 { + return self.pinned_squares[sq]; + } + #[inline(always)] + pub fn pin_mask(&self) -> u64 { + return self.pin_mask; + } + #[inline(always)] + pub fn en_passant_square(&self) -> u64 { + return self.en_passant_square; + } + #[inline(always)] + pub fn side_to_move(&self) -> u8 { + return self.side_to_move; + } fn calc_occupancy(&mut self) { -- 2.49.1 From 5854dbc20b20dc1e95a6c05aea5e9bbe240e3f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 10:12:52 +0100 Subject: [PATCH 085/107] set each field to pub(in super) for later use --- engine/src/bitboard/board.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index 1a7794c..71980df 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -1,12 +1,12 @@ pub struct Board { - bitboards: [u64; 12], // 0-5 -> white pieces (P, N, B, R, Q, K), 6-11 -> black pieces (p, n, b, r, q, k) - piece_board: [u8; 64], // same as board indexes, 12 -> empty square - occupancy: [u64; 3], // 0 -> white, 1 -> black, 2 -> combined - castling_rights: u8, // 0b0000_KQkq - pinned_squares: [u8; 64], // 0 -> E-W, 1 -> NE-SW, 2 -> N-S, 3 -> SE-NW, 4 -> no pin - pin_mask: u64, // 1 -> pin, 0 -> no pin - en_passant_square: u64, // 1 -> ep square, 0 -> no ep square - side_to_move: u8 // 0 -> white to play, 1 -> black to play + pub(in super) bitboards: [u64; 12], // 0-5 -> white pieces (P, N, B, R, Q, K), 6-11 -> black pieces (p, n, b, r, q, k) + pub(in super) piece_board: [u8; 64], // same as board indexes, 12 -> empty square + pub(in super) occupancy: [u64; 3], // 0 -> white, 1 -> black, 2 -> combined + pub(in super) castling_rights: u8, // 0b0000_KQkq + pub(in super) pinned_squares: [u8; 64], // 0 -> E-W, 1 -> NE-SW, 2 -> N-S, 3 -> SE-NW, 4 -> no pin + pub(in super) pin_mask: u64, // 1 -> pin, 0 -> no pin + pub(in super) en_passant_square: u64, // 1 -> ep square, 0 -> no ep square + pub(in super) side_to_move: u8 // 0 -> white to play, 1 -> black to play } impl Board { -- 2.49.1 From 274ffcf5ec9d936810847e046b8c666c2b65023d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 10:14:37 +0100 Subject: [PATCH 086/107] added method to get the current square of a king --- engine/src/bitboard/board.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index 71980df..7eb73da 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -86,6 +86,10 @@ impl Board { return self.side_to_move; } + #[inline(always)] + pub fn current_king_square(&self) -> u32 { + return if self.side_to_move == 0 { self.bitboards[5].trailing_zeros() } else { self.bitboards[11].trailing_zeros() }; + } fn calc_occupancy(&mut self) { self.occupancy = [0u64; 3]; -- 2.49.1 From 1104c8e6c57c79369d1af0f0dcfb130fdb11efdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 10:21:00 +0100 Subject: [PATCH 087/107] added helper method for fen parsing to utils.rs --- engine/src/bitboard/utils.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/engine/src/bitboard/utils.rs b/engine/src/bitboard/utils.rs index a30e503..25d7ba8 100644 --- a/engine/src/bitboard/utils.rs +++ b/engine/src/bitboard/utils.rs @@ -27,6 +27,27 @@ pub fn notation_from_square_number(sq: u8) -> String { return notation; } +pub fn try_get_square_number_from_notation(notation: &str) -> Result { + + let file = match notation.chars().nth(0).unwrap() { + 'a' => 0, + 'b' => 1, + 'c' => 2, + 'd' => 3, + 'e' => 4, + 'f' => 5, + 'g' => 6, + 'h' => 7, + _ => { return Result::Err(()); } + }; + if let Some(rank) = notation.chars().nth(1) { + return Result::Ok(file + 8 * (rank.to_digit(10).unwrap() as u8) - 8); + } + else { + return Result::Err(()); + } +} + // <----- TESTS -----> -- 2.49.1 From 5425ccc5cd729e545b9af00103a204c6338ea5ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 10:26:31 +0100 Subject: [PATCH 088/107] added partial constructor for starting from a fen position --- engine/src/bitboard/board.rs | 68 ++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index 7eb73da..7ceb4d6 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -1,3 +1,5 @@ +use super::utils::try_get_square_number_from_notation; + pub struct Board { pub(in super) bitboards: [u64; 12], // 0-5 -> white pieces (P, N, B, R, Q, K), 6-11 -> black pieces (p, n, b, r, q, k) pub(in super) piece_board: [u8; 64], // same as board indexes, 12 -> empty square @@ -52,6 +54,72 @@ impl Board { return bit_board; } + pub fn build(fen: &str) -> Self { + let mut board: Board = Board::new_clear(); + + let mut col: i32 = 0; + let mut row: i32 = 7; + let pieces: [char; 12] = ['p', 'n', 'b', 'r', 'q', 'k', 'P', 'N', 'B', 'R', 'Q', 'K']; + let mut coming_up: &str = fen; + + for (i, c) in coming_up.chars().enumerate() { + if pieces.contains(&c) { + // board.place_piece(row*8 + col, c); + col += 1; + } + else if ('1'..='8').contains(&c) { + col += c.to_string().parse::().unwrap(); + } + else if c == '/' { + row -= 1; + col = 0; + } + else { + coming_up = &coming_up[i+1..]; + break; + } + } + board.calc_occupancy(); + + match coming_up.chars().next().unwrap() { + 'w' => board.side_to_move = 0, + 'b' => board.side_to_move = 1, + _ => panic!("invalid fen notation / to be handled later") + } + coming_up = &coming_up[2..]; + + for (i, c) in coming_up.chars().enumerate() { + match c { + 'K' => board.castling_rights |= 1 << 3, + 'Q' => board.castling_rights |= 1 << 2, + 'k' => board.castling_rights |= 1 << 1, + 'q' => board.castling_rights |= 1, + '-' => { + coming_up = &coming_up[i+2..]; + break; + } + _ => { + coming_up = &coming_up[i+1..]; + break; + } + } + } + match coming_up.chars().next().unwrap() { + '-' => { + coming_up = &coming_up[1..]; + } + _ => { + let notation = coming_up.split(' ').next().unwrap(); + if let Ok(epsq_index) = try_get_square_number_from_notation(notation) { + board.en_passant_square = 1 << epsq_index; + } + } + } + // board.calc_pinned_squares(); + board.calc_piece_board(); + + return board; + } #[inline(always)] pub fn bitboards(&self, index: usize) -> u64 { -- 2.49.1 From 2beb8ab30348026b631bd3d8b2e0b4d6fb7af5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 10:31:02 +0100 Subject: [PATCH 089/107] added file and module structure for bitboard::legality.rs --- engine/src/bitboard.rs | 2 ++ engine/src/bitboard/legality.rs | 0 2 files changed, 2 insertions(+) create mode 100644 engine/src/bitboard/legality.rs diff --git a/engine/src/bitboard.rs b/engine/src/bitboard.rs index 890ddc2..806a35c 100644 --- a/engine/src/bitboard.rs +++ b/engine/src/bitboard.rs @@ -1,3 +1,5 @@ mod attackmaps; mod utils; +mod legality; + pub mod board; \ No newline at end of file diff --git a/engine/src/bitboard/legality.rs b/engine/src/bitboard/legality.rs new file mode 100644 index 0000000..e69de29 -- 2.49.1 From cd58a7a321767e20173d7e939275fdf07e93fbb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 12:30:01 +0100 Subject: [PATCH 090/107] added methods for detecting pinned pieces --- engine/src/bitboard/legality.rs | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/engine/src/bitboard/legality.rs b/engine/src/bitboard/legality.rs index e69de29..7d12e57 100644 --- a/engine/src/bitboard/legality.rs +++ b/engine/src/bitboard/legality.rs @@ -0,0 +1,48 @@ +use super::board::Board; +use super::attackmaps::RAY_TABLE; + +impl Board { + + pub(in super) fn calc_pinned_squares(&mut self) { + self.pinned_squares = [4; 64]; + self.pin_mask = 0u64; + + let friendly_pieces: u64 = self.occupancy[self.side_to_move as usize]; + let offset: usize = 6 * self.side_to_move as usize; + let king_board: u64 = self.bitboards[5 + offset]; + let king_sq: u32 = king_board.trailing_zeros(); + let opponent_queen_bishop_mask: u64 = self.bitboards[8 - offset] | self.bitboards[10 - offset]; + let opponent_queen_rook_mask: u64 = self.bitboards[9 - offset] | self.bitboards[10 - offset]; + + // Queen-Rook directions + self.set_pinned_in_ray_direction(king_sq, friendly_pieces, opponent_queen_rook_mask, 0); + self.set_pinned_in_ray_direction(king_sq, friendly_pieces, opponent_queen_rook_mask, 2); + self.set_pinned_in_ray_direction(king_sq, friendly_pieces, opponent_queen_rook_mask, 4); + self.set_pinned_in_ray_direction(king_sq, friendly_pieces, opponent_queen_rook_mask, 6); + + // Queen-Bishop directions + self.set_pinned_in_ray_direction(king_sq, friendly_pieces, opponent_queen_bishop_mask, 1); + self.set_pinned_in_ray_direction(king_sq, friendly_pieces, opponent_queen_bishop_mask, 3); + self.set_pinned_in_ray_direction(king_sq, friendly_pieces, opponent_queen_bishop_mask, 5); + self.set_pinned_in_ray_direction(king_sq, friendly_pieces, opponent_queen_bishop_mask, 7); + } + + pub(in super) fn set_pinned_in_ray_direction(&mut self, king_sq: u32, friendly_pieces: u64, attackers: u64, dir: u8) { + let is_up: bool = dir / 4 == 0; + let mask: u64 = RAY_TABLE[king_sq as usize][dir as usize]; + let blockers: u64 = self.occupancy[2] & mask; + if blockers == 0 { return; } + let first_blocker_sq: u32 = if is_up { blockers.trailing_zeros() } else { 63 - blockers.leading_zeros() }; + if (friendly_pieces & 1 << first_blocker_sq) != 0 { + let blockers: u64 = blockers & !(1 << first_blocker_sq); + if blockers == 0 { return; } + let second_blocker_sq: u32 = if is_up { blockers.trailing_zeros() } else { 63 - blockers.leading_zeros() }; + + if (attackers & 1 << second_blocker_sq) != 0 { + self.pinned_squares[first_blocker_sq as usize] = dir % 4; + self.pin_mask |= 1 << first_blocker_sq; + } + } + } + +} \ No newline at end of file -- 2.49.1 From f7355f8e7418bf9517441a921c46d88ab13c36c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 12:33:18 +0100 Subject: [PATCH 091/107] implemented use of calc_pinned_squares in board.rs --- engine/src/bitboard/board.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/src/bitboard/board.rs b/engine/src/bitboard/board.rs index 7ceb4d6..11a85ce 100644 --- a/engine/src/bitboard/board.rs +++ b/engine/src/bitboard/board.rs @@ -115,7 +115,7 @@ impl Board { } } } - // board.calc_pinned_squares(); + board.calc_pinned_squares(); board.calc_piece_board(); return board; -- 2.49.1 From 296f1f6c3aa2760d87e9d4e0197de3ba447a58cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 12:36:11 +0100 Subject: [PATCH 092/107] added file and module structure for checkinfo.rs --- engine/src/bitboard.rs | 1 + engine/src/bitboard/checkinfo.rs | 0 2 files changed, 1 insertion(+) create mode 100644 engine/src/bitboard/checkinfo.rs diff --git a/engine/src/bitboard.rs b/engine/src/bitboard.rs index 806a35c..5c9b419 100644 --- a/engine/src/bitboard.rs +++ b/engine/src/bitboard.rs @@ -1,5 +1,6 @@ mod attackmaps; mod utils; mod legality; +mod checkinfo; pub mod board; \ No newline at end of file diff --git a/engine/src/bitboard/checkinfo.rs b/engine/src/bitboard/checkinfo.rs new file mode 100644 index 0000000..e69de29 -- 2.49.1 From 182aa59ee157303b78b5e931c19b8e72e9992057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 12:37:47 +0100 Subject: [PATCH 093/107] defined shape of struct CheckInfo in bitboard::checkinfo.rs --- engine/src/bitboard/checkinfo.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engine/src/bitboard/checkinfo.rs b/engine/src/bitboard/checkinfo.rs index e69de29..de86521 100644 --- a/engine/src/bitboard/checkinfo.rs +++ b/engine/src/bitboard/checkinfo.rs @@ -0,0 +1,5 @@ + +pub struct CheckInfo { + pub check_count: u8, + pub move_mask: u64 +} \ No newline at end of file -- 2.49.1 From ad530e915510d35115230411414e542e9d318c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 12:39:35 +0100 Subject: [PATCH 094/107] added constructor for struct CheckInfo in bitboard::checkinfo.rs --- engine/src/bitboard/checkinfo.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/engine/src/bitboard/checkinfo.rs b/engine/src/bitboard/checkinfo.rs index de86521..f9a9553 100644 --- a/engine/src/bitboard/checkinfo.rs +++ b/engine/src/bitboard/checkinfo.rs @@ -2,4 +2,14 @@ pub struct CheckInfo { pub check_count: u8, pub move_mask: u64 +} + +impl CheckInfo { + + pub fn new() -> Self { + return Self { + check_count: 0, + move_mask: 0xFFFF_FFFF_FFFF_FFFF + } + } } \ No newline at end of file -- 2.49.1 From f9a302c9a037182f67bd7b88ed87368b3ddcf317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 12:40:52 +0100 Subject: [PATCH 095/107] implemented method add_checker for CheckInfo in bitboard::checkinfo.rs --- engine/src/bitboard/checkinfo.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/engine/src/bitboard/checkinfo.rs b/engine/src/bitboard/checkinfo.rs index f9a9553..b145321 100644 --- a/engine/src/bitboard/checkinfo.rs +++ b/engine/src/bitboard/checkinfo.rs @@ -12,4 +12,10 @@ impl CheckInfo { move_mask: 0xFFFF_FFFF_FFFF_FFFF } } + + #[inline(always)] + pub fn add_checker(&mut self, move_mask: u64) { + self.move_mask &= move_mask; + self.check_count += 1; + } } \ No newline at end of file -- 2.49.1 From a1482d11f21709ac83d40fd6425f50b745c9bc8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 13:38:48 +0100 Subject: [PATCH 096/107] added file and module structure for bitboard::attacks.rs --- engine/src/bitboard.rs | 1 + engine/src/bitboard/attacks.rs | 0 2 files changed, 1 insertion(+) create mode 100644 engine/src/bitboard/attacks.rs diff --git a/engine/src/bitboard.rs b/engine/src/bitboard.rs index 5c9b419..504ae04 100644 --- a/engine/src/bitboard.rs +++ b/engine/src/bitboard.rs @@ -2,5 +2,6 @@ mod attackmaps; mod utils; mod legality; mod checkinfo; +mod attacks; pub mod board; \ No newline at end of file diff --git a/engine/src/bitboard/attacks.rs b/engine/src/bitboard/attacks.rs new file mode 100644 index 0000000..e69de29 -- 2.49.1 From 8ecbeb9c41a4e1f01f40ab17a1574473e841f02d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 13:40:40 +0100 Subject: [PATCH 097/107] implemented pseudo-move generation for pawn moves --- engine/src/bitboard/attacks.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/engine/src/bitboard/attacks.rs b/engine/src/bitboard/attacks.rs index e69de29..83c6a15 100644 --- a/engine/src/bitboard/attacks.rs +++ b/engine/src/bitboard/attacks.rs @@ -0,0 +1,29 @@ +use super::board::Board; + +impl Board { + + const RANK_2: u64 = 0x0000_0000_0000_FF00; + const RANK_7: u64 = 0x00FF_0000_0000_0000; + + pub fn get_pseudo_pawn_moves(&self, sq: u32) -> u64 { + let pawn: u64 = 1 << sq; + let mut move_mask: u64 = 0u64; + let move_offset: i8 = 8 - 16 * self.side_to_move as i8; + + let next_sq: u64 = if move_offset > 0 {pawn << move_offset} else {pawn >> -move_offset}; + if (self.occupancy[2] & next_sq) == 0 { + move_mask |= next_sq; + + if (self.side_to_move == 0 && pawn & Self::RANK_2 != 0) + || (self.side_to_move == 1 && pawn & Self::RANK_7 != 0) { + + let next_sq: u64 = if move_offset > 0 {next_sq << move_offset} else {next_sq >> -move_offset}; + if (self.occupancy[2] & next_sq) == 0 { + move_mask |= next_sq; + } + } + } + + return move_mask; + } +} \ No newline at end of file -- 2.49.1 From 274897a070ee95dae87707a127ac6e73fc008333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 13:41:40 +0100 Subject: [PATCH 098/107] implemented pseudo-move generation for knights --- engine/src/bitboard/attacks.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engine/src/bitboard/attacks.rs b/engine/src/bitboard/attacks.rs index 83c6a15..589d257 100644 --- a/engine/src/bitboard/attacks.rs +++ b/engine/src/bitboard/attacks.rs @@ -1,4 +1,5 @@ use super::board::Board; +use super::attackmaps::*; impl Board { @@ -26,4 +27,8 @@ impl Board { return move_mask; } + #[inline] + pub fn get_pseudo_knight_moves(&self, sq: u32) -> u64 { + return KNIGHT_ATTACK_MAP[sq as usize]; + } } \ No newline at end of file -- 2.49.1 From f8ab14a026b32d918b35db5f76c714038ed27b38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 13:42:41 +0100 Subject: [PATCH 099/107] implemented pseudo-move generation for kings --- engine/src/bitboard/attacks.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engine/src/bitboard/attacks.rs b/engine/src/bitboard/attacks.rs index 589d257..3c2cf91 100644 --- a/engine/src/bitboard/attacks.rs +++ b/engine/src/bitboard/attacks.rs @@ -31,4 +31,9 @@ impl Board { pub fn get_pseudo_knight_moves(&self, sq: u32) -> u64 { return KNIGHT_ATTACK_MAP[sq as usize]; } + #[inline] + pub fn get_pseudo_king_moves(&self, sq: u32) -> u64 { + return KING_ATTACK_MAP[sq as usize]; + } + } \ No newline at end of file -- 2.49.1 From eab795b6dff42fdcf302271342070f1c75737959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 13:43:37 +0100 Subject: [PATCH 100/107] implemented pseudo-move generation for pawn captures --- engine/src/bitboard/attacks.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/engine/src/bitboard/attacks.rs b/engine/src/bitboard/attacks.rs index 3c2cf91..d4f711e 100644 --- a/engine/src/bitboard/attacks.rs +++ b/engine/src/bitboard/attacks.rs @@ -35,5 +35,13 @@ impl Board { pub fn get_pseudo_king_moves(&self, sq: u32) -> u64 { return KING_ATTACK_MAP[sq as usize]; } + #[inline] + pub fn get_pseudo_pawn_captures(&self, sq: u32) -> u64 { + return PAWN_ATTACK_MAP[sq as usize][self.side_to_move as usize]; + } + #[inline] + pub fn get_pseudo_opponent_pawn_captures(&self, sq: u32) -> u64 { + return PAWN_ATTACK_MAP[sq as usize][1 - self.side_to_move as usize]; + } } \ No newline at end of file -- 2.49.1 From c9246d134273ab25f591fae6c2373d0b8e0f5763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 13:45:01 +0100 Subject: [PATCH 101/107] added helper function: get_raycast_from_square_in_direction --- engine/src/bitboard/attacks.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/engine/src/bitboard/attacks.rs b/engine/src/bitboard/attacks.rs index d4f711e..6de2083 100644 --- a/engine/src/bitboard/attacks.rs +++ b/engine/src/bitboard/attacks.rs @@ -44,4 +44,19 @@ impl Board { return PAWN_ATTACK_MAP[sq as usize][1 - self.side_to_move as usize]; } +} + +#[inline(always)] +pub fn get_raycast_from_square_in_direction(occupancy: u64, sq: usize, dir: usize) -> u64 { + let is_up: bool = dir / 4 == 0; + let mut ray: u64 = RAY_TABLE[sq][dir]; + let blockers: u64 = occupancy & ray; + + if blockers != 0 { + let first_blocker: u32 = if is_up { blockers.trailing_zeros() } else { 63 - blockers.leading_zeros() }; + + ray &= !RAY_TABLE[first_blocker as usize][dir]; + } + + return ray; } \ No newline at end of file -- 2.49.1 From 7c58f0d508cdaa1ec389233c0ab6b5d7d0b6d9d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 13:46:11 +0100 Subject: [PATCH 102/107] implemented pseudo-move generation for bishops --- engine/src/bitboard/attacks.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/engine/src/bitboard/attacks.rs b/engine/src/bitboard/attacks.rs index 6de2083..0938d0c 100644 --- a/engine/src/bitboard/attacks.rs +++ b/engine/src/bitboard/attacks.rs @@ -43,7 +43,19 @@ impl Board { pub fn get_pseudo_opponent_pawn_captures(&self, sq: u32) -> u64 { return PAWN_ATTACK_MAP[sq as usize][1 - self.side_to_move as usize]; } + #[inline] + pub fn get_pseudo_bishop_moves(&self, sq: u32) -> u64 { + let mut moves = 0u64; + let sq = sq as usize; + let occupancy = self.occupancy[2]; + moves |= get_raycast_from_square_in_direction(occupancy, sq, 1); + moves |= get_raycast_from_square_in_direction(occupancy, sq, 3); + moves |= get_raycast_from_square_in_direction(occupancy, sq, 5); + moves |= get_raycast_from_square_in_direction(occupancy, sq, 7); + return moves; + } + } #[inline(always)] -- 2.49.1 From 4de505bc21b1e040e340162b4fd9b08c91743d0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 13:47:03 +0100 Subject: [PATCH 103/107] implemented pseudo-move generation for rooks --- engine/src/bitboard/attacks.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/engine/src/bitboard/attacks.rs b/engine/src/bitboard/attacks.rs index 0938d0c..f748cb3 100644 --- a/engine/src/bitboard/attacks.rs +++ b/engine/src/bitboard/attacks.rs @@ -55,7 +55,18 @@ impl Board { return moves; } - + #[inline] + pub fn get_pseudo_rook_moves(&self, sq: u32) -> u64 { + let mut moves: u64 = 0u64; + let occupancy = self.occupancy[2]; + let sq = sq as usize; + moves |= get_raycast_from_square_in_direction(occupancy, sq, 0); + moves |= get_raycast_from_square_in_direction(occupancy, sq, 2); + moves |= get_raycast_from_square_in_direction(occupancy, sq, 4); + moves |= get_raycast_from_square_in_direction(occupancy, sq, 6); + + return moves; + } } #[inline(always)] -- 2.49.1 From 659413ca31f03c71cc5b6fb03282214469897b88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Sat, 15 Nov 2025 13:47:46 +0100 Subject: [PATCH 104/107] implemented pseudo-move generation for queens --- engine/src/bitboard/attacks.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engine/src/bitboard/attacks.rs b/engine/src/bitboard/attacks.rs index f748cb3..a348d96 100644 --- a/engine/src/bitboard/attacks.rs +++ b/engine/src/bitboard/attacks.rs @@ -67,6 +67,10 @@ impl Board { return moves; } + #[inline(always)] + pub fn get_pseudo_queen_moves(&self, sq: u32) -> u64 { + return self.get_pseudo_bishop_moves(sq) | self.get_pseudo_rook_moves(sq); + } } #[inline(always)] -- 2.49.1 From 456d3865516a35be9ecac8875a8b43cff83885b0 Mon Sep 17 00:00:00 2001 From: Bence <76205860+kbence04@users.noreply.github.com> Date: Sat, 15 Nov 2025 19:06:25 +0100 Subject: [PATCH 105/107] Created a new branch due to a bug Previous pull request didn't work (didnt change ui/src/main.rs), created new branch to see if the problem persists --- ui/Cargo.lock | 4371 +++++++++++++++++++++++++++++++++++++++ ui/Cargo.toml | 4 + ui/fonts/DejaVuSans.ttf | Bin 0 -> 757076 bytes ui/src/main.rs | 431 +++- 4 files changed, 4804 insertions(+), 2 deletions(-) create mode 100644 ui/Cargo.lock create mode 100644 ui/fonts/DejaVuSans.ttf diff --git a/ui/Cargo.lock b/ui/Cargo.lock new file mode 100644 index 0000000..d116c35 --- /dev/null +++ b/ui/Cargo.lock @@ -0,0 +1,4371 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ab_glyph" +version = "0.2.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +[[package]] +name = "accesskit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf203f9d3bd8f29f98833d1fbef628df18f759248a547e7e01cfbf63cda36a99" + +[[package]] +name = "accesskit_atspi_common" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "890d241cf51fc784f0ac5ac34dfc847421f8d39da6c7c91a0fcc987db62a8267" +dependencies = [ + "accesskit", + "accesskit_consumer", + "atspi-common", + "serde", + "thiserror 1.0.69", + "zvariant", +] + +[[package]] +name = "accesskit_consumer" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db81010a6895d8707f9072e6ce98070579b43b717193d2614014abd5cb17dd43" +dependencies = [ + "accesskit", + "hashbrown 0.15.5", +] + +[[package]] +name = "accesskit_macos" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0089e5c0ac0ca281e13ea374773898d9354cc28d15af9f0f7394d44a495b575" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "accesskit_unix" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301e55b39cfc15d9c48943ce5f572204a551646700d0e8efa424585f94fec528" +dependencies = [ + "accesskit", + "accesskit_atspi_common", + "async-channel", + "async-executor", + "async-task", + "atspi", + "futures-lite", + "futures-util", + "serde", + "zbus", +] + +[[package]] +name = "accesskit_windows" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2d63dd5041e49c363d83f5419a896ecb074d309c414036f616dc0b04faca971" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.15.5", + "static_assertions", + "windows 0.61.3", + "windows-core 0.61.2", +] + +[[package]] +name = "accesskit_winit" +version = "0.29.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8cfabe59d0eaca7412bfb1f70198dd31e3b0496fee7e15b066f9c36a1a140a0" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "raw-window-handle", + "winit", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "android-activity" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +dependencies = [ + "android-properties", + "bitflags 2.10.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum", + "thiserror 1.0.69", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "arboard" +version = "3.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" +dependencies = [ + "clipboard-win", + "image", + "log", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", + "parking_lot", + "percent-encoding", + "windows-sys 0.60.2", + "x11rb", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading", +] + +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "pin-project-lite", + "slab", +] + +[[package]] +name = "async-io" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" +dependencies = [ + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 1.1.2", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-lock" +version = "3.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd03604047cee9b6ce9de9f70c6cd540a0520c813cbd49bae61f33ab80ed1dc" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 1.1.2", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-signal" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 1.1.2", + "signal-hook-registry", + "slab", + "windows-sys 0.61.2", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atspi" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c83247582e7508838caf5f316c00791eee0e15c0bf743e6880585b867e16815c" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33dfc05e7cdf90988a197803bf24f5788f94f7c94a69efa95683e8ffe76cfdfb" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "atspi-connection" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4193d51303d8332304056ae0004714256b46b6635a5c556109b319c0d3784938" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite", + "zbus", +] + +[[package]] +name = "atspi-proxies" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2eebcb9e7e76f26d0bcfd6f0295e1cd1e6f33bedbc5698a971db8dc43d7751c" +dependencies = [ + "atspi-common", + "serde", + "zbus", +] + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "blocking" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + +[[package]] +name = "bytemuck" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.10.0", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", +] + +[[package]] +name = "calloop" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e" +dependencies = [ + "bitflags 2.10.0", + "polling", + "rustix 1.1.2", + "slab", + "tracing", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop 0.13.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" +dependencies = [ + "calloop 0.14.3", + "rustix 1.1.2", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.2.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "clipboard-win" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" +dependencies = [ + "error-code", +] + +[[package]] +name = "codespan-reporting" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.10.0", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cursor-icon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + +[[package]] +name = "ecolor" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adf31f99fad93fe83c1055b92b5c1b135f1ecfa464789817c372000e768d4bd1" +dependencies = [ + "bytemuck", + "emath", +] + +[[package]] +name = "eframe" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b829d302a09deb4acde242262a1840ba14fadd0371980ebf713060077a1987bc" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "egui-wgpu", + "egui-winit", + "egui_glow", + "glow", + "glutin", + "glutin-winit", + "image", + "js-sys", + "log", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "parking_lot", + "percent-encoding", + "profiling", + "raw-window-handle", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "windows-sys 0.61.2", + "winit", +] + +[[package]] +name = "egui" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab9b5d3376c79439f53a78bf7da1e3c0b862ffa3e29f46ab0f3e107430f2e576" +dependencies = [ + "accesskit", + "ahash", + "bitflags 2.10.0", + "emath", + "epaint", + "log", + "nohash-hasher", + "profiling", + "smallvec", + "unicode-segmentation", +] + +[[package]] +name = "egui-wgpu" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef1fe83ba30b3d045814b2d811804f2a7e50a832034c975408f71c20df596e4" +dependencies = [ + "ahash", + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "profiling", + "thiserror 2.0.17", + "type-map", + "web-time", + "wgpu", + "winit", +] + +[[package]] +name = "egui-winit" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4ea8cb063c00d8f23ce11279c01eb63a195a72be0e21d429148246dab7983e" +dependencies = [ + "accesskit_winit", + "arboard", + "bytemuck", + "egui", + "log", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "profiling", + "raw-window-handle", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_glow" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668c0d4f726cc33838f0915f6b8c00af0ca0910e975ab58cf34b3e39c614552c" +dependencies = [ + "bytemuck", + "egui", + "glow", + "log", + "memoffset", + "profiling", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "emath" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c615516cdceec867065f20d7db13d8eb8aedd65c9e32cc0c7c379380fa42e6e8" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "epaint" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9926b9500ccb917adb070207ec722dd8ea78b8321f94a85ebec776f501f2930c" +dependencies = [ + "ab_glyph", + "ahash", + "bytemuck", + "ecolor", + "emath", + "epaint_default_fonts", + "log", + "nohash-hasher", + "parking_lot", + "profiling", +] + +[[package]] +name = "epaint_default_fonts" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66054d943c66715c6003a27a3dc152d87cadf714ef2597ccd79f550413009b97" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "error-code" +version = "3.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" + +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "fax" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab" +dependencies = [ + "fax_derive", +] + +[[package]] +name = "fax_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + +[[package]] +name = "flate2" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-lite" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix 1.1.2", + "windows-link 0.2.1", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glow" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" +dependencies = [ + "bitflags 2.10.0", + "cfg_aliases", + "cgl", + "dispatch2", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2 0.6.3", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", + "once_cell", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" +dependencies = [ + "cfg_aliases", + "glutin", + "raw-window-handle", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" +dependencies = [ + "gl_generator", + "windows-sys 0.52.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.10.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "gpu-allocator" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" +dependencies = [ + "log", + "presser", + "thiserror 1.0.69", + "windows 0.58.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" +dependencies = [ + "bitflags 2.10.0", + "gpu-descriptor-types", + "hashbrown 0.15.5", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "num-traits", + "zerocopy", +] + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +dependencies = [ + "foldhash 0.2.0", +] + +[[package]] +name = "hermit-abi" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "http" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "icu_collections" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" + +[[package]] +name = "icu_properties" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" + +[[package]] +name = "icu_provider" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "image" +version = "0.25.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" +dependencies = [ + "bytemuck", + "byteorder-lite", + "moxcms", + "num-traits", + "png", + "tiff", +] + +[[package]] +name = "indexmap" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +dependencies = [ + "equivalent", + "hashbrown 0.16.0", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "libc" +version = "0.2.177" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" + +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.1", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libredox" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +dependencies = [ + "bitflags 2.10.0", + "libc", + "redox_syscall 0.5.18", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "memchr" +version = "2.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" + +[[package]] +name = "memmap2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" +dependencies = [ + "bitflags 2.10.0", + "block", + "core-graphics-types 0.2.0", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "moxcms" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbdd3d7436f8b5e892b8b7ea114271ff0fa00bc5acae845d53b07d498616ef6" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "naga" +version = "27.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" +dependencies = [ + "arrayvec", + "bit-set", + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "codespan-reporting", + "half", + "hashbrown 0.16.0", + "hexf-parse", + "indexmap", + "libm", + "log", + "num-traits", + "once_cell", + "rustc-hash 1.1.0", + "spirv", + "thiserror 2.0.17", + "unicode-ident", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.10.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_enum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.10.0", + "block2", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation 0.2.2", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.10.0", + "dispatch2", + "objc2 0.6.3", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.10.0", + "dispatch2", + "objc2 0.6.3", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.10.0", + "block2", + "dispatch", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.10.0", + "objc2 0.6.3", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.10.0", + "block2", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "orbclient" +version = "0.3.49" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "247ad146e19b9437f8604c21f8652423595cf710ad108af40e77d3ae6e96b827" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-float" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d" +dependencies = [ + "num-traits", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.18", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "png" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0" +dependencies = [ + "bitflags 2.10.0", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.1.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro2" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773" + +[[package]] +name = "pxfm" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84" +dependencies = [ + "num-traits", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quick-xml" +version = "0.36.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom", +] + +[[package]] +name = "range-alloc" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +dependencies = [ + "bitflags 2.10.0", + "errno", + "libc", + "linux-raw-sys 0.11.0", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit 0.19.2", + "tiny-skia", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.10.0", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" +dependencies = [ + "bitflags 2.10.0", + "calloop 0.14.3", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 1.1.2", + "thiserror 2.0.17", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" +dependencies = [ + "libc", + "smithay-client-toolkit 0.20.0", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.10.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "syn" +version = "2.0.110" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tempfile" +version = "3.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +dependencies = [ + "fastrand", + "getrandom", + "once_cell", + "rustix 1.1.2", + "windows-sys 0.61.2", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +dependencies = [ + "thiserror-impl 2.0.17", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tiff" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f" +dependencies = [ + "fax", + "flate2", + "half", + "quick-error", + "weezl", + "zune-jpeg", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinystr" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", +] + +[[package]] +name = "ttf-parser" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "sha1", + "thiserror 2.0.17", + "utf-8", +] + +[[package]] +name = "type-map" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" +dependencies = [ + "rustc-hash 2.1.1", +] + +[[package]] +name = "typenum" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + +[[package]] +name = "ui" +version = "0.1.0" +dependencies = [ + "eframe", + "egui", + "tokio-tungstenite", + "winit", +] + +[[package]] +name = "unicode-ident" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + +[[package]] +name = "url" +version = "2.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.105" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wayland-backend" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +dependencies = [ + "cc", + "downcast-rs", + "rustix 1.1.2", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +dependencies = [ + "bitflags 2.10.0", + "rustix 1.1.2", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.10.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" +dependencies = [ + "rustix 1.1.2", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-experimental" +version = "20250721.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfe33d551eb8bffd03ff067a8b44bb963919157841a99957151299a6307d19c" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" +dependencies = [ + "bitflags 2.10.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +dependencies = [ + "proc-macro2", + "quick-xml 0.37.5", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f1243ef785213e3a32fa0396093424a3a6ea566f9948497e5a2309261a4c97" +dependencies = [ + "core-foundation 0.10.1", + "jni", + "log", + "ndk-context", + "objc2 0.6.3", + "objc2-foundation 0.3.2", + "url", + "web-sys", +] + +[[package]] +name = "weezl" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "009936b22a61d342859b5f0ea64681cbb35a358ab548e2a44a8cf0dac2d980b8" + +[[package]] +name = "wgpu" +version = "27.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" +dependencies = [ + "arrayvec", + "bitflags 2.10.0", + "cfg-if", + "cfg_aliases", + "document-features", + "hashbrown 0.16.0", + "js-sys", + "log", + "naga", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "27.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" +dependencies = [ + "arrayvec", + "bit-set", + "bit-vec", + "bitflags 2.10.0", + "bytemuck", + "cfg_aliases", + "document-features", + "hashbrown 0.16.0", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 2.0.17", + "wgpu-core-deps-apple", + "wgpu-core-deps-emscripten", + "wgpu-core-deps-windows-linux-android", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core-deps-apple" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-hal" +version = "27.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set", + "bitflags 2.10.0", + "block", + "bytemuck", + "cfg-if", + "cfg_aliases", + "core-graphics-types 0.2.0", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hashbrown 0.16.0", + "js-sys", + "khronos-egl", + "libc", + "libloading", + "log", + "metal", + "naga", + "ndk-sys", + "objc", + "once_cell", + "ordered-float", + "parking_lot", + "portable-atomic", + "portable-atomic-util", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "smallvec", + "thiserror 2.0.17", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "windows 0.58.0", + "windows-core 0.58.0", +] + +[[package]] +name = "wgpu-types" +version = "27.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" +dependencies = [ + "bitflags 2.10.0", + "bytemuck", + "js-sys", + "log", + "thiserror 2.0.17", + "web-sys", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winit" +version = "0.30.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.10.0", + "block2", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "memmap2", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "sctk-adwaita", + "smithay-client-toolkit 0.19.2", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + +[[package]] +name = "writeable" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 1.1.2", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + +[[package]] +name = "xcursor" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.10.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + +[[package]] +name = "xml-rs" +version = "0.8.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" + +[[package]] +name = "yoke" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zbus" +version = "5.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b622b18155f7a93d1cd2dc8c01d2d6a44e08fb9ebb7b3f9e6ed101488bad6c91" +dependencies = [ + "async-broadcast", + "async-executor", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "nix", + "ordered-stream", + "serde", + "serde_repr", + "tracing", + "uds_windows", + "uuid", + "windows-sys 0.61.2", + "winnow", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus-lockstep" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29e96e38ded30eeab90b6ba88cb888d70aef4e7489b6cd212c5e5b5ec38045b6" +dependencies = [ + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc6821851fa840b708b4cbbaf6241868cabc85a2dc22f426361b0292bfc0b836" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "zbus-lockstep", + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cdb94821ca8a87ca9c298b5d1cbd80e2a8b67115d99f6e4551ac49e42b6a314" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +dependencies = [ + "serde", + "static_assertions", + "winnow", + "zvariant", +] + +[[package]] +name = "zbus_xml" +version = "5.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589e9a02bfafb9754bb2340a9e3b38f389772684c63d9637e76b1870377bec29" +dependencies = [ + "quick-xml 0.36.2", + "serde", + "static_assertions", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zune-core" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" + +[[package]] +name = "zune-jpeg" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" +dependencies = [ + "zune-core", +] + +[[package]] +name = "zvariant" +version = "5.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2be61892e4f2b1772727be11630a62664a1826b62efa43a6fe7449521cb8744c" +dependencies = [ + "endi", + "enumflags2", + "serde", + "winnow", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da58575a1b2b20766513b1ec59d8e2e68db2745379f961f86650655e862d2006" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6949d142f89f6916deca2232cf26a8afacf2b9fdc35ce766105e104478be599" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "syn", + "winnow", +] diff --git a/ui/Cargo.toml b/ui/Cargo.toml index 3c9f994..310b0ce 100644 --- a/ui/Cargo.toml +++ b/ui/Cargo.toml @@ -4,3 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] +eframe = "0.33.0" +egui = "0.33.0" +tokio-tungstenite = "0.28.0" +winit = "0.30.12" diff --git a/ui/fonts/DejaVuSans.ttf b/ui/fonts/DejaVuSans.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e5f7eecce43be41ff0703ed99e1553029b849f14 GIT binary patch literal 757076 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

fI);V1&`p^P@z zxDDktQC{O_oUwMqgdb$wf-@v3gV7P^Dk>PAaK=g%8H~<2XQ*J{-V*BunArk!$jfZ~ z|0sJ8z$&WjfBfF5Z|3!u`jYpOmr6@W2pC$%P^1Y_=}HI)p(sUZLU3u4fPeuZ)Cds) z0TCl2CWwH7AkDIXE-NgnqOvO@-(A)M$?*H!nS|ok{r`S{;N)B;@6FtM?z!ijd&(UE z_UqypV9<(zi1ACH6$5cLa1j7B66XLJ&-;& zLA(fzaWN484t&-G@hf1AQTh$nzlOxfOZSumjRep_Wp6l zW)mdLuj5q{q+H+;Q)OYNZ?He=;Szs z_QSxShvOXD;8DkU0HfJ(LR?jV578b0jL*30(8d^i6d}4N!pgx4^iEe=OQR z1A_7yK9CI@(_V{|rFi)xVlzH3U9Vzd;*x z3Oz-L75xoO2E2ea`Wspb0R62`09OItMjLbt)d2RQjn9SNGr_tH_)`FAX?+nG{R!cj zR?I~R{R*8&dnGXDoq=^VL4r8|{0jdutW^NkhZSoq0kmLX{TjHp30Cwo0ewoq99b^` zFEqgx1B`x#-Gta;fiV~1Xy}lafCB(L#J&MI36O^NX5glPW@v8*o&=bJ_730~CfLER zVbGp|y&Aa81pAx77!L#cF5q>5ooK%W{4wAYw2uO#uMF(qoA9?L*pCBWHo<-Zsk(`P zFg|ke3#N#GlRn`n`gHD?x%q>OmO3V zO~wMAz;)cW3Ffv*722i1n8POEXZLpC-vGF;`yGN*a6k;&pj%Tc_@+r{p88$ z!o`5THk*bv=-F&KU>4ff3Bn8jOr{(CYn}-hNr)!_82w}589+#jC=-y;M_SbOtPJm1@$;3cPkXtXg-bdOx)(SCwp7YV>Ky`c4Vto!S% zZz~D;`9l-D)$sr0GdCq%2QT0B0wU3_0S15H#PgB)L2lj$!1KMJ+f6*1ffsXqQvQ!-wzR{2Kt@^MPJBF9ER5 ze3-wRbpVXf2iocAr|v`>w9`X?FxsGe2p{ zP>_c5@n|Ey$cF&9k00JUbcdeqk2bEIMV#_%F4~ACpGEZVEXM1f4y*w%Mn7W8XA!>x z5dU1@9)JS0=K&+eb{2hs{-{9@VhyzBS0VEXav+a>@P5PvU_1jr zA}#{s82}RTcS3&#t$xNFMSKN}+_ImW5)uiT{fzJa4E~EmEb`}029U@QkvJ8MLa6bN zwQm1GgubEOh;RSucMW_Qe^{2Fi0G&cC%e+%8@3~A&hp6J#DnZ}AMuk2WcWv+(l7?u z?*SNS%vBYFQcpy+SYt&^8lt|eriR5`SyfFY>aPAjJUNfGLK2x@T3P=m9GEJt4MdQ_Ti zL}vRIvKiH8+faS8-Kf8LgY3jf;BTS|=WXP?vzoGZ$UfARp_a_bBThboj3i^MB6$W` zy%Wh3*1cpZ8Eg9iG4-{!ZDf+|C)+hLicGUDu~pjE^8IXkkhw6EXYY;JOXeU?d%SHk z?Q1)2TgIw`tP1w5bIE+N3OTiY^=I`LRPPY=rdmg89UIB}w5>JO`kXajjq~pEzGW52 zbhRFJN?ueHEk<3@67oDLCrimP#3Wf&5izp$UqWTkzqtk6dh!&vmRrYFk{R3v?j;Tq zl;&VOteWk8jJA?)!T*Z!t*3CMira;LOu>~y^aNeVHOI9r5S^#-$ue?+-!2f^1GP^l z@cDBhN3J8=b~o;ki=OAo5>ifk3%iAf@lJ;Cg;S)BFiAKi6bX}PHop;G^DTf}{zLfn zkAWL%=tVM#?8RFmviW^NXTgEDP@LkolW*}90rx+FQEeh6=!=g|AhWmuR`?N;*w*Nv>FXECl5$Y`F&_vL1RU9-7j^#3UCbqe2KOD2JR z&r+4>TvJ>_@A0hR#?Lsuxp>z2dyUM(llziQQjO%3!*~j#*cN(-UXhlQDsmd0;-~m8 z>3qD=Vyn=Nl$#Xbi%2={y_S7PD#lwZij2P{?C#t&p@?qBd#Q`$;kfsQY(#kSZth`> zs2JQ;Or}XLjHw-+&o4wz*>B^>DY=J`f$!rE^0OE*-e zOOkP^?qnw2L#!cdft4SUob3<0v)z1{r#UB1obYY*>$-Th{waMOg(1go{~^Df`-kxi zndECukv=DoITk^b5TFw*>=~ZEJ*&NaAH{<>_Mp1+tn=6LyiBS&GZjrKP>Pg^N|kaz zk%v%s7$XY1>4fcE(sn%REZ3BQ@vQaOt4E6aF`ghP(ptt^NtrCfDPpvpD~t3x{qA6V zAT}m4!te8X+%AXRrdS#oAV!UnLaw@#k!+0Z&$Mq}*Pi`6oOLBDD^qhr$Z%Gh)$S8w z+%X>sPS@oj0e-6=u%MPkYcfmQYM=Vh0V9frlDuG4fEpa`)JQGA+)S{y>=J&IU5+2!k-4{# z@Z+FF8s=Nj)SP%4>25)DTD5MIlkLZU{J7|jr+%L#^KJ)lM5MbTexJha#+!ZqJhu3= z2^Wt2_2h^lJ0E%EjmN(E{F~25OrG)7SF`4n=%;COu6gs_+WnM%l(b{zEBhQjTo!_{ zZ!~Ek=>5XGE4LkTBFwqgK6YULqO*D*_xQmBM>F0O$y2w!k<;NNv_eCNQP-MH7HX}N zoXIK4DbCcS)O_-yE&jz8OQK#(l3uheN%1UBOIp?{H6b=x;q88hVs|Fkn>u3c&X(3z zCh^#U0l{qShmZYmupf4Vek~bQ4_~={#dY=PtBh3OG}oo9>+LTYS6o+3s)?YQ$mo

H;PD}y4?!KO!O~c;1ekXo5;PJ-?^n3jAe(U$X`%=~3ck5R5e|-3W z0gsR1TUON#t_rT-_wI%bwR^c`E1sKMQ89O3#jNx1zWe2u@9z7O8&)y*xfLs(o3nD( zZ~vC;U%va^U%%Y9_dKH$N9Nr6M$|zkg=ErG+Dbch*h<|Vx3yHYdOU8WlqmiPzf2`d zX+(sdqdYB*i;p9v3W<-83kA7^c(>|RvF!LLpWCa-7EV&!UayJ+33y`uii`5&H~6hr z&G%RpULtBdpXPT+X{l00RMU#o6-mpY7CXFZ3#$WXLU{bCj(EO>CpE$0c4F0eVqGm= zb>PM`S6oL-;({9)L$c+3|NMBO4eLq!vy7ya(O$AD88SaWT7c`|6;? zUCt~@hiJQGtC*;y2S|Vhxkw}kHlZn=wxpG(v$c>6qJ!0bp20DLgM%_h#h1V!SxeV& zt1K1P<^GC@io`X|gNjwLS=_c%TUrzst3+F)ZPD(4FW`@e3ufVj44STlJx#n#d};oS ztaeH(Pp&sFtB2Cd*VErMx=&VrI#?NG>*pEdeJnUMYpiXIyC`c4oo<`qUQU+NRa}Kw zDOXxHSk@}*tZQvcv#PSHvvP;vWm?8k1DCZ?kfYTmTjFFIPIb_5B4KOOSfSZj5o~#e z4ThxudbHn}s-auD>m{_VUB0x}HhKt+tScXVY2N?nAD5P9X8o<^ku~#FT@Vp7e^McT*?0GWEO+A7aX~C}Z z?XTatuQxlw$LHm7YwDD!0gkiLeFYO7a2tyj0Dqx3axX~EO9K)Cq9 zq2VX=GCKXl@IxOweu7Td%b4{`aiRkezZ3rZpdMWO!mcGlPqTbq*gw>WAl2}_5%eNAi<<|n>E1&sIRSaMuJi2k%oxIh zM{u$A-*WRdv3`GvA3O03eD)nOk7Kt7v$39D$;7?GU!Fd#>-ZeGmCx-m__Dc%jA-OF zaxpyN^SKRRQKT918HWvKxqjt$G92=mvuv;b6%6^?IFJgmwCvV5LV2Uk(Y#WXhg8{? zc@{@00cSiP@W)1>2iMUD*CnPZGHD{`c6qY1V6bqhS;XxkSey9CEvkI!CH#BorJGdI zf4O;6|Ai`IfqqIq2{^^houI8~c9lL!FV)NRNpuM-0;EgWxW7U?Z7{~85>4~x^Hl;@ zCC-sam0}4>0T@rz>N>;JK2`>0tKrIFlPFo&nMn!d4)wI#$vXvZNSg$=n3J5%rc|dr zz&9h0(;ju3whNQG)pWaY7Tz4(0+zPW17i-5^;&9lOe`N2aD!dkqA29MUUsjrSNWC+ z*l`gTbb=a)bn#LgTl9WdAQ26^6n)_h4SMFv!GnhK%(#O7+(mNnM_L_lLAs-NT2?;+ zl_2sAVTL$0wk%r4e$1$26$6vWRB1}gq}a&;9L5qoH)d|^+`v|{HP#Jrn2cfM;3Nyf z@_@jTb2`%OEP+`i62T_${kmQtWcIKJUo9Pa`k5JL241GVE{{g**SBxqK8-GGJ8o6? zX)E(PootzP`GdzcPmI%lFveerIiG~_r;&+T3*z^xrAn|gqhtGiG;aUV+RZ!nRIGnx z^&|VAo^))`chvR*pBy~A^uoWAlMl7bT3P;F#g=IkCzT|n><)!K+conw#@iz>&zrzk z9Hi|WEsolGJK=ddQv0oP6?PSK6lzmRK(YunL-txRFw;1)v4Ndw520je>`P2S-L@l- z!6G`wCbfwbPLghLWsD)yu+^6%Xj76xoARykmdHM~KKA~|FP=hY@bjr1lc~T$&vvs7 z3X?Uwq;piy(a)YeR$nM4*L}mEs>|N0SJ9$F#vHB39F0KV<4BN` z7TUQgGRMAH-V`4hpeiETs!NJ@)zQ0W#&wqlaj`XnNpc;&%9b%($Cw};W-|EJ5JE6* zv$KdF7X955!{*}xA6;M7Y+$n+G)X_B|5SKr^x%U}yng)n>kqx$S3J92f6?jGum1CY z^#6oHCt7CisjS?Slw!!0a`b|8!2r@oRIWlL%j@FxYF3M4tixicXa`zl!dhat;B+{QI){4W>E_b!4aGixge))o^t z#R0Ax@EJzdG0cD>u(qJWpiG9MgQfOU-Vx#bz3%X?(*ex z=PlztTw7MQc3o-N+Ww(kv)}sk)3;{t3MC#XKX>`^x$+})*yOo$Cj&4h!?qX7Fs3N@ zA_r<=IT%e#NpzLES*RilBZ5_~Wf6;$f;__w2*#J$dj=8$fOE`)W1CWh@{d|x5SnitlDyk3|` zwqWZb(rAH1!8d}N7-q<&I;N$)=8X(%!ufHsl=$V% zUj@qzUF7&{`Z9g_9{Sl9`Wd6cIa(xs$!~0+gB|9OR4HHx0tquR90nO0yhPA@>@OUd z>^?Vie&g0_rtZGe_dZ%vsgl49TO#3kYW=zRMt z_jKOqIU9jFib09q9J~NHhZ@fmB>vhSJ!6ZWv4=84iGxp?@YUc;R$VnxYnl|VNP-%N z5Sp*lyTDZuxePNJ7h_lOHr;q?55x!o%r8la@g_5?-o|Vfuc0krE@Fn*ZV*Z{f?c9;Mt&M+2(zZ689?WhPA4AeSQj{$% zrfGaycTdwMY2BN3c+hqJ3Rn)JwEYo7S~DV_fq~}Ie>`)<_2Jbls2vO~lQ3^igD=8x z%oK*--EZ!l`p?Z7sHIoYO5CN(9AsVZ|@ z6d|zPW27WNSf!d3r z-`hibJUgpwXVviUO7!3KPbJ1zF6>p9K4H21A87XzH#P`ZddwE3ZWZM=ZVon!D#JjP z*hR(7s}}YPSTS-1vtdN$H8i}&im1X;K5Y67FP*v4Xt5ZM1?I+qf5BX_44Z8@3_>>M zFvxdOC+C!%$OIaQn8`#$Fcg`>H^M7I1dZnKx@)e$Hj0kso}p8@nf%kjH2E1z8C}55 zwyoyY@GFH#)5w9LALikCiwnE3doxi^^duGLE{o2j? z%iOX03uTKI&*zHujuW1KYT}lIZ!X;E3!PZ~5v#VH1iw=%WI!}&t;N`1cI;Fu-1KF# zQ^4|fFOHF;?IhFZieX)BP)Dq9KVQwzhP_uGv-OH3-(A`;rrkuB21C{5qsyQ2$Cl zq37c{yXZ=Nv|gYO6Ekj3!*Mb#a4byZ7JZdI8_p9J)1t;aF2eJz1W%VL1g-)u^$Ov2 zRiugx`&6(olAJkw`1X8d?h4xRbhZIDcHh9q`0Dx??r423_iJ58W?FXLUjL0L^BJFn zaeoD=CZ2}-3$H_Q7&nLVV>dTdD0JU0r}gezhmY}t>nCyr_0`AOUAt|sNBG&COJ+O8 zkz6fA#8_Iv$5vQ8FS~d8D;&!#i{m*GaJLe&qoS=Y7}rlW!(^&fE-r00pPXX&yn^|K!7 zN7vACs6$-St?L&CgowY<3VvE#Vk4OpV|)=ItDxQ~_OYj{~Ykt@V%GRG!b zq}+xsGSB_(dtNfEP8cdoEwFprHG6@*$X;&WU^njVk{b4e$Bv)+=E1zu@p#a3{a@F& zul(RPO~#_%D)~uEv$$cg$ZiQLpBdtY0UJq# zoiMBGsZbxw$LK%TXS2Co$W5#7R`(6}Nj;Jh8s=AEbP{1T+SsBLXn=1^1m?41UZqP{ zGBqVrE|6#Qvju2c+?_4NIiR)T-LggI+?2C0#B++OKuM`e zzAAIP1q8QPp^Xs06jdo8bW}liJ6k(US~CV^`{_o?H>x6LK(YYCu89st`TjgpK?LD%sC=EGwyv)evA zwl&6%A3sw~ab^7EQ_t)5ls|u-QvKF>9P0IqzCb^sf5?2SVlTZ${}!*1tHGgO>`>Eg zoAgKZ^*VMtbQ3D6u|o#UI71gK0nIGPHfgIxK@Tx?^4v@v`OqN&~`h)&F|4`J>iA<3<_=KRp;qMZfV$SGteaYIjOZ5BbM>kmyZ|cXzjQUSrEGvC+ z%Qs(M__}^8qlNx!11)e$vepD%N+-41Z4PR;+wz_9HiI}(aB$k=?XgZ+yV0=*i3}Of zBodPluEU12Gxsh73Os6f@(gFENjk3?nz%zi?j8c>QT6(Tgs{t`ACd<^&(Hoh8E<@| zU-$`omd$h+BcegnIvuHW1}$-l%vn$}K;G1HVCV5F-09fxxUu2MM^cBM7yK29ufjgZ ziV!yMhK&^A5Y^~t!JX$*12zGEOAz`nqcp~5EJ8+Z4~BN{;P3&gK`ox~Y5oi^6^Tei z7=N7(ha zmBZ^7if2Fn%aXlZpZcq1^XAQGGL8AGH-gtw$)B|Lb{prga`C}h5SUh~tEDG-OXOJtMtOI=l$CV^G0AaB612PBOhGLbpjLhi-mr+Ljq#f1zK{zaRV4 z?2;=_zrL?*ZOPZiY2<&#{8ilaVVl;or#?P17~S;To^yZC%=olR*9CtXKQkEB{NQUx zF2SKjZy~o;V0jBN=>ZRdDaBd>+U7}w?s(Va7uYZo?2a{MI8uvyLc}GhXn4ah1a5FVMLg+Y!fKrl= zILsS_ZGdosC6ycZKM=xqf**}e3PaBnSQw8FCwvqB0pS60F#jw+kB2{9<}3n}$38Ab zh!LB>lbgb&3+ZCA6tdihGp)0^_CkBHjnoaNUw7fU3*E&Bq(P*=RLqSL#^3~@sn`}x z7p99-q}dk4*`#!=fdrbZU_Zq5s6TR=o}+*LbNx}s?nvPuFq|l|<%qlmG`7(at-BZ_ ziO{D)jH>W4NT=Ws*FiRg#8fWUyV#&|ZTPesIrI4{OdJV%$ZD}!RmEZ^4q0Vlcb#d- z8bPYaA1mA2d%)XUKw{|Le@UDqA{!BZJ!+bm1g+bV>nOHTGu2+)gJQm_se^C;#uMTw zwMZ>NSZk&@OPsB)L^wB2CJF}&K!EoMDTq`Sz(pt&2=GihGI2E7v;0&8d%!k6ww`dkk>8w6z(;S*( zAO{_9D{vHZqxfOMaIr`#l8Y=Olo9F(>om+m3HJ;?O_(fBm!`|pEE6ry*k;*gIZC-Q zeu1!1oUc4@EqAOEHaOmJJjygIn<6$#VTFb}pM;ps{f7NGr7zSWyFWkz(M^wVl>zJn z*9~~{Fn7oYZm`RXHOVd@LBIyqJC8li?%8CP$_>HFG%QeN4`lYN&Mz3K`3y5vabtE3 zTNM+DWhJ|=-2SKe@GGQmDuPTzMUW_`@)C98&!C2GvQE-D=jbFl<(wXZPfdSJAM{tw z-;jEgUH2Z5Z7{ywyxb9!r1s(;NLFdOnXJ&sYWT_Tw z*q;{WbkDcIoaHM-upG_D$<-?JvN8XXY6PYv!_{`?5=0RMBXg}9DL|&B&q6mE_*{;X z(_vnkCRsO&BJx%Xu}1JQ7MC@{n#1Q>@~jW=JuH2!{rEwaVt$Nef^{1IjAfQ}gEfLN z4xIB4pgA;Ql2B1sz#qNYfv>I`C7xY-bHetu!ZM@(EZ#p5xl%G|r#Xdf(k^Zrc@tY# zz7w(B_6!oX*Sb6N%t&#oJINfPY~Rj;G|VxaP))a9yQbrQ<-gUH8~48_77Up|35nrB zA7pC%f5w7gywL4NFqp-Hkva)lA2o6XSYI$y);7nIh!QdI~}|cp;Go1tlpMZbx<+tLb)R zy`U3l%o=^KRIEQwacUVUfxXdOD1l5&Ci@UA4q77>2iX=W)jHgv(%{}eZMeq07%AP6 ze3V_WScAO9*Cho+Ie7;1*W^D~lXdVK95Es;Zf1CC<1^zj<1>Sqq0EHL#Jp53PK(!q zT1ZRK5)0xA;tPTWp@M{h#Ddg`sq^E?;>&_%p|XVeiAz(fQm>`PH-5G8OO0PBiZ2Ql zg^Cg;#!n1R3{6a!9X~rbJ2X2X>h4%s2igV`b=#4eaF1)5+kbJ#oC#}cYijcLE!c6Q z{w7YUT2-{C@5udw|9y?iE-o29>D=!0UiEXf7Y}=X<9i1^vlg{zu{|{vqJ|@TL90#R zbt?&w`?P4j*5*`dqx_4VHLJ*a>W9USg4`BUdx`6vfYuuZrhk z`8UR2umOPM+c32`IDJ#u3gEwe^~D!oWl;Y@+c!&2;$-`iC2zK^t>rRKeEKY{XXdhO)dm{(H<}G|AIqNhw_*I7;mc)LOSt8;Qw_kv(?O&DRBvJLK7b zPnhw~T=M_9nu%>mtSfeQ?9$k(Shg*>ZS*lOGjre>`vLeE`R{wbRPff3BX1SF)ce8B zL+WA0G^bL(jY7_jrcJ*&b?Td@O}8f{VL%QX(%cr+0iYN9B@9LnT_(L^YKg;FD_Ryi zYUnDM+r+{>;PzO%FnYnZV=f+(UWf0Y7jyF%(}~0kZ0aKJ_LuV;YiioQIr9YGxN~CW zoApOQxvg74J$?^Y_}i7OBZkq=)PldAhw1(X0ygw(7U<<8vB(feg8i?QS{8`@ZB(qa z(RZV2JvFw)fmlCh@mokw&g1M7FuHiyh-WbJnZeuZMu1sM&x@NFR~7eZ+_g9{4=*Um z^T;bsTM_aYp*`ygxrB>l#>!e>eylVGOq~TJ;M+x^U zXze9~w1DWMHp@1NmLVNV+NW|}1Y#A@Vs~15VP|TX(6!)VLnu3#-9k zK=OD(U66vovNjENIDE-u2>mRhbS_p=li4`G<#($n(#740>vu3hC}s{13!(5EH&?9K zym>{%<{DkUF>J>}53PUr?cKS%W`0~(_wmeKxiwsekItX}=;-fU|A>o!t67ux z4m|q!aF|Fe+TC{e<8abaR8J6LghAg{SosPH@TpYhaM##Ysc;vO-b^-jHMaf6!f($) z&@BH8erP|83ARNv7d{#+t^-CEM%2ulS+S$GHvg?D?;qhd)j!6q->`oFrus6;SHFJb zh@aRRdLIv;j_0!2YE$ft_6u*4eTc1E1k&|(Y!$vntYo(DF>|-El9>yWg<9XQ!5^XM zW|ido2kv+4OTE8wKlWaY&RW3A$;7eWCYOotk$tu|T^5%p^|4cnjdXPxLDx$V=MWi~ z2Nu<1lYj@gHFtr#$UV_*KFHVT&om$S%G+IAj_GAQb@As1D~GL-((vd88dhQ~Dl|>{ zfA?$dBdZ!6n-NBz`YbC>uI zS;bL|=61fDW_LBXoF|Ic;A%4_43j1KenXj~!EbUL)=eTAtffdECCW*pIN5J2iwp5J zvHPN3GI2XC7OB8(aTWxkpmxHLQCW3$@H!dRZTt3@t{Vgh9H;}_1H`k${E z%f4L6Se9GAaovGe>dSGyDE{%`jzYteM?K{!ftD{JT}t z(4qgjYVc^bXiU8`#gI9XkU3td)hBe^lxp=~wh0A^kz)Phw4E?k<44hH;glY#G;^REvn@djz{Tt9%ud+B@IdBEawVxKHe_-vx#$ zejF#pSz>6bHp!YzknbZkb)1=N5wU~2(`qM5ast)0?NZD(y~ zvxZ2BCUI$Mnze~H!1-w#GE_i+XPz zyl~<06?um@|MHi?hn_4xGHmYRk*{g5t^WJR#k+;PooQ)(`)b`298K0NtlSe0@6X8@ z^ia=&WM@*v-1R#e^3D*n&AX z(~ckv*5XdssRJ>$tbVke7PzC`7pruiuf_)5?z8rWmhb9kc3`f_SEwav6ju}c2bs9? zLbKoY1U76z=uW2OU$3d@^yZZJKcb(|z1)`iVH-B=-^7*NtlClh_%$9WcZR=3m?acp zA9+(t{k<;(F9&1342k(N4lp+%B2WT>FR;OsBc>_m!}is0Y+sH2wV5dKU%ebud!ZY= zUChr_%FX7Maho^`dys;J2<8)y;bR26F%-^?bRlHHn?Gq=zO4XH2z*!F`R+njv74k> z@Lonbh#w>r;B868bPPX67$uIDiY!yeWLm# zT3jV<6(&2qq3GrIiQh^{s4bs zKhvMs5B|h{%%9lr|H+?t;1B$XjEX(0-7H_n!+scdosM7?Rf|;tviZ4aJ_4THSWB$pv-)i;dJ*PQ`2-hC(pY)CGR!*4Ho-B4pxT9dmVZWg7V|qxnjz0Zvdnb6`LINtYJJvL#-hhK zuV@ur!7b-2g>@o}nyj&C87plY99zg1x{2Gwzb3pUZj-jjuUR(P-f+Cly~)2Pyerly z2ONjFL;OkMxH#S5iCCJAe>7~R;r=z>eS7Y^Z)@}~&;8H8&Vf5t@?#m?tm0SJu`{_* zV=tik74Ki|q;(ZpI8#7GNoEKcM<|wZBNk;v#XC{m3fz1^R^%DViW?4S#CZh@&+Y-{ zJu_NZ67YMP41&5mWBv_R0dGi+tB$ozhumQ^;s=*#qb$ES4BVKN)aapRuDaE#AgD2d zUrkXv2rboq!T@=oTC7f`GlZ$~WOa!!S6w4)5LU@As!P=^ber&ouvvaZtx^N=W$I&{_6%bcOsH-6U7rKe1o5-?C?b_6o;bSBC#s7@U+=8xAdpa z(R7+F6xCm>f1lRq-Ee?(g#HwTmkP2BwgZ!8PP$0zgz_`RO`MF(IIactW5j89+w5rD z-3~hzuFZ`wK)&6oxQJCOqAGNoAurgR3tCrbk;~-fN z;slC>m1cEVosrbfxdfLOsrsxwTZ|*dnM#tNc|$@-Oh;rsSxvGg*;4II98H`dcN<7c zc#efk@jkV+wYBX&d#)qbnd!ctXjJ1gWJ|!8Y^=b1rHlH2y}P5kQ*-wv57CFXetdyY zfcfc%`5B-Lz$)x#8{`<|EN~aoVs5lL#xcfOR{O8X9W7j8$?tt074AE2CEzgI=91 z1K_3}YAvEgTrpoH6p6#(s-A6q!y3z^#BFEwQ~cQaUfk}wXSv<=BZZ=^bzd&u$|Knb zYhB-kI$a+!T&HQRqMd%Ll&r+K{Bc$>l)w|~HU-YtgNlEf_swLRqKZj4#3N1>y_}DP zqC2ThF_|%EEuG|~pF$q0ff$lDZ(Uzr|hietY%F7dm!);mKEj%iG_-{MX7CVxwPp>DLzqlrO( zR!0F-q#;OQ7V+Z~hLfKKHBBe~?XvGZ?=~sI4i)v(Z>(hksMb}N9yaq1RU9+ zA4T5bYACV<@{rcl8{s2P8@0-ChFV>v&IPtwUxc+bE*PkZSezK}6D8hjb;^P#IuY@P zGpt_UaMQsd3Pap=*mNlyivfhpOg8Jv*)}2-RV&QjDWg9rEGwstJKGyixh=~#ZQ@)# z7Idav7k0aU;e*Bh!>a23rY z4p%VJIE4g5PR)VdACA0HW z^zOBw!-~nYOrOp*uM1u|di3+l9af3E_oSz<2#0WKlV=4sC2rCukEYhLU9!FeUMHtvUn%y=8|2u+fFnW%Yb z66Xy>DSVPu#Y-fU(zr>|Nl}@u^Ovq*ScVufM3X6@8cI^n7{6o;&%~4|zH-g- z)HabuF^nWf%0^*wN~)Y{7AChzZ4+tuguHi!F!+*Bp8hyFDJAW*r$1>oxkKA$I(+if zC&|evDW6RGq|Icl{glVnJw0*#OHVyj$$$0Pq>tN8>zFqw7avJWNlyM`(#IXAw$&!z z_wl4pQj?SPnG@Hpo%nR+OKihme~=WR`n zqZu0>lWq>U)CO0LKACR2~!ElKkQUPg-wFHX7 zAZA+eFk50~*(AHdeq-kH+VlI>x-PFfH41 zvSQ5toy&ChcGEb}BGUYr!F}*;HE>^pDv18WduVQECKVxdWFno&O%x|emLU}30Cs>3 zS9s!tKK;ZA$#wkrahP{B7W?XNaTZV{WKeh1DWr5b(Xs8x`;RBJJdxSz)au;u!$mdE<|;Zrw3x(Mi~smCj4xu@~OZ2`BfMDkx5aIVpiKDd;G3Kl}PAQ zb2{S@0cmX({-(At&Le@YHBaC$&qY4WPznweho5I4OLkov|J#YRuLkbK3GbbVR#!DM^1`}t+1+IVk*}np8 zjqqd=JLeLZC;=aMbrY`bT@&)82UX1#i|APAWz_KPJ${uu~ zfRLuSr6+_ZqY|I6H^Jfn#j>)Df@-z|zz)#%Fc%MB{Sl;N@fE{pG>TSXv>9PfMu>Lz z7D!=#Z<4A5UBp$_7jQc(nk^kNd-Z{Rd!|h3xS(_QWnJEROTY5+pN2m?dM;N`!qw>7 z#JtXBPnA6{Jo;#2;;cZR`dX(x+Jj4SY|sqg=KqHilHiF54}aW!avua8}`anQU<=Hj$HgGC@@33AXVLS6y9uWC<8@ zfDIL#5BtgxvG!h6kjze<(VK=%B!mwjIC}j6-S{xwc)Q8w ziP?HV*m{LX(u&knp%SnD;v?Bxsm>dV@62JAYXV8gO7FJb+`<=P_gcZe_y2y5fpE`y zxes+^MOy1F`JM8zj&;jCmfNG#aa-U9vNUmig`Ta$9$AS=6(2QK$BW z9wokKp`^qQZGze|R?eu`AI99XTnbFTp_8zdesukab@lmGrk+{Z>K`tf)c>-~yl`#b zb&?GfdJwt14VkI}`Gb}7+<#eR&z6*oA26`Edgqv;s7@^w?wHfAd+YplV(}j>ol*a7 zq3Of*D;<0G${RIpdjE-T%Y)r7epZyNSMr@f_p{<~zA4TQ<4MLl+)v~xGH3*3_%T8G zf5~QH#WiQS{`K3%pJC-Q`Fn_;!gnzA7~Z0%xurw?!{m@{S*$YH^C&+!Di-U{$P&K} zbWbTT4*W6I3G*AbYR!>?@#6~$#!u*@O>NquMQv%>?iz8zgn~Zf#`WnlaZbw?&7aPH z?w#Fbr3i4b=bl3jmw6tC6BR;H;-@lSNj^pKeWk;0oXcUe_*DsR3@iX9{#l{}+GyT$ zI0p-?-*rGo{b{2*RM4N@u0KoXZKv~YZb2v-G%MsPx!o9N6rx*6*DhUVVxN}TPnk^A4weYR_>X`RMBGvUepg@waL3{5M3 zsQc_TOScUciag^Uo>}VmO^=P~)3ryhC-d63?cj-==~W9DZ&0!mzOZkx?+c+8IT_`Ce1ya+HoVE)DU}5xSb%}N zmk_OZkUr2m$U+Q81t4NphIY8b4y?Lzo;kRT!04V}Vo~BJiAaFBC)QvD9U9bTgVFBZ zS@V3^ii(sD?_-NyF0R@;imh~5Q#`tI-?y8BSG$cw7ev!ITT5?{~N~$5mzd&_?SFrQX=C_9VnHFlp18;-)#n_q;h@R zw0>r4ivdj&dt|h0-?VwhF`0uNwb|ymotZ7-2XsJR7GfQJC|<cAa6>W}%mEIj0Rf>LQ`?x^>b{Qw|sfzV7Dw^z<;q$gZp~LGfUPe|l&k2{2S1DZvT|^iF@U-OH zQ0-;tb(;nC5|#<7OegSUBJ_IuI>;|$r_Ts;mtJT7);mS#jrzP%zoQ79X?2Aro9KOd zR&NT$ei~Jn4J{P%7e1^P9)Q%b9k|oPnLxM5LYyBrOT6YvVJB3&QmqBTqWTdo*_w)T zDI0&EcjxzH^6!2>{Py>!{O|9BUgi3DeuuGElVAsBgko?SmK044R|rX%7q(S+-wW?c zmJ*{Q6!>gn5>bvq69Wk;IDR4mb?{ft7?rz?9uRW{!@AQ?xvpP@9!E?7M!O4!e`A;l z)_<~L)+2b+xT&;GMr!wDX|g;uATpcXEQbHRY0Qe|nfZ(g`fPfAf1AOB+h)%j*L!zS z;lWWgfA2nMU}g%+rVk%K&V5oja_)eEe^?^lnmX{ZBC`%be!`Oi&nR)pk;%e7I^_?p zhwr&Q&iuSvj!a?KiEFoLcdK$!O?28()jg!8F(*cigIsv~vq{EheY;g(Sj1-)&DSR! z@@0gDdp_U$_U98DKku;{pU?E<*@?$#H$IQGX5N1s_O1?iu})}xZEm|QHW2G@2V&y^ zaqd7M*6vPlCfM8#o70&Payt`(?Em?;Sf^d#-}fu=6?Wx?P#``o5ETk0*gcX1=?$@@ ze^kIJ_4fo465%6+9qT&7j5Kps+vx7iX#X7yca+Owdhd7-8iPI!2}(fb6-4txNWmSV zg<@=zZ0l^S7BIFTTx=iXm|`z+Ob<+tn;M#$Fgt8x4uiYBEHuF=xM4dYFa!>bV-@Ip z-$8lWfPr~=gI4R;xCDJ*hmIR2J^gZCd(LN8q)UVI1`W7BZ{R@v-zZJ*oj$4iq^g&n z?m9L7#v-#wotBtu=cqvqNMa@uX8LnVSm;sPGk;e%3u7(flQ>0v@u0P};x(zxrO#RhVi<&d*k$X@e~a!+$j zbC=rYyH>iFBFpfAUtuYdjaAcb43kDe!N@uFu?^MJ9qO-Do#LKar0=0fsBb8wX5$gh zuCKesgCoGZlk_R9mK}VA@**Tl&7erN#&uR}y~yD8v<6;ZZ}9r>uZM-ZuQOi9=M7%R zbs}rLW}}Q{@7$B|tofNl_FbYN#ADN3Y$4#eh)dGF#&esQ&*d|W=Wc`n8NBOy*t~uV z8jvfJ*>mxE_FQ(ISau`ULgc3A+LG{@fiiop`I*Fq&kzV|<1>(H2)c=TF~2r=tww1f zm$J=j$2@u}99CJT(O$u6kBAnsRJT1~A=6_FVa@^=X7a$1ER^?SZ<48{g<@yLR>$%i zlnv?z>jp$|H#j%AHn1I`1k18x^mvAqeXfpU>_wu8;~8dKR&g@2k> z(Kk_WKL!Q&MaPbvpapvMziC4`zIe8=>Ym%TlzyYfEv^4&V?ll+oyBZJmSFs#Ns^$0 zCcfRon*0H@Gn(V`jOOe* z!59~gWin}R-h;_C^Rr3DXQOuW37HB$YtKx`%M2xCWV#Z9nbJMqVe@5vC(-zhZ#N%| zVc$`-V4oOQFc@RXHVV@y4@bXz2-!AYdr+-3JKU$3=~3&z-+HuI|3>)F#&LO#3DBqcsZs7SF_#4Jl$+^lJ{Cca2lC_Zd_ zBre@02j%E+wktZ))eQT>x+_Mc<}TMY27){<2%Cdu5Xaa^8+sVIk4*-U!Ttf!{SwCd zM<$f`rv|1ZC|$h>g?q=65#AAjv1v2OB=6L~j5I5lSHV_;CFSE7Se7S7kkJz<MK zi=072FJCqI_xIPs!rj*y|Kjt8tipAy57ie1nV~5ezED)q=Zb1vALe}+KboIUWcML~ z-89iqey^_@a${bw(hmM&xa2BS`62jaXLWUZFjJT<{4 zNcIpBnnaXF#?*S7)bgvmi(A+f`~P9?y#u4F^1ktV?%XMvUNbYvBr}s_k`PK7A@p28 zLWfWVqy&P9SZD$YXaJRfMnN%xh*AUuL@Y!$g8?kq0LwmNdlt(o?&>Zo>!Q0#a`S$^ z=guTU(Py9c{p0sj!EibE+|$puem-fTa88mT3s6F7hAew>M}u7`C-|_YlStV(MfNyu zlEF5~KcfIq?gR4bVzbD=)wbz?C6i;zy~liy1tEtvS+#32j0d}xslVKF0#y|Y`dwWIdA3a7o~Y`{^^@93=1mrN9ILl-#=sDAN;-@ z>1k81DI3$fv`5V~)%((}n|tq_7my7_cM{M2(apsCBU96%6Z(w;iIJ=?%g)aZW^2@Y z>(Vld{^v5{YLqe5n{qq2aSOG6r!@W@@p1gUyWZWYr-@c&s8fDVd#7MetjgB1_IO!g zHp+(T-5qnOtfxA6PHsiVskw5;5xE5&%W{Q|wp?S|dwN~`J#jPMi^$gO4(<-wCVf#? zch@4+U_XZc3I#c-tfVa8R$|MSCX>kmXB7IWpMw}c9Z;!zGmYFYr(>j-)gpA>6G>j> zS?v_|Si3u;0e`1e9S`McqShDng~o=Uzcy0Vxinj66C$MneYVXb7%aWA4YrP@hK&AY zSmh^AkqK0Fg_EAA8hwwET7T?J6X0oK`h}ej`T?yrE?XAJD+<~dbSUUp(5WE5pg?Xf zcaS^Eo#cGEprU<6hl-9BohtGx3hr)ycfoRboxD|kR(?r-PyPb`o|DtyH^D9|vzFPk z@jBw~$KORlif)c&j&+W$vO{IZ%1)K}b34rKIJeW>{N){%cU<0Sd43vCR8ezMRKP(v zJ5`H4caCSPMh3FbUz}d0i7TtUnC>9kx#p3m^{Tz z>l1atjX#^0A$c$qmj_$kz#+6tH`AUY^lO1*2;j&66z(SOEWXm zZA&xLbC>4i;?LPRxp1~da&vPsGBd#78xDnneRFfNBN^dP(2$v~v1MwasYy{!ZEEIo z?Xq*6=5WZD8$nrZx=m+xI!Ef9K1$Ppy#fbh>n)5sI2QV%+Obuc!U{A|L+ls-`8&Ne zCT1826{ReX)PP0Fk@msdjQq^}tag!(*&TE8a=S#zBjZEk!<6qgGh<Ya*DkXuU1oDG``)F(ftoTu)j;v z9rKklfBCEOHFJOJ?3}knc{$AdFPy1n!@|lZn)MF*$FDYi_F3bSMwY!+`Qqso&eJk|tER>D|@ znU7M1$mA@3{xkk*{*`Rq(wv_a=TBmvy{K_u%XVqA)EJW)&&WO7cgPN=rCcU6Mzbx^ zl!nV>Mo5fldS~Xyc6O(?Kgo=+R2E$v?r=q!5ephebb&lKmz8y#;2swkn>H>q+cOjE zYpGPNtxm`hsWvaQEb%N&sZOot>#90f9aYS+3nxj@m$Ajk~PPs zP0YPsnCZF}^5zoZ7A|kDNw4#5%G&OGI?K^2d2#}R_@eY8F%Xg`w0@F2VdNw@YLYxP zYZQOG>-wzU=bn^zUGEKhT<+VubYYHvOy1J(-l-3kbU_+Q<+ieWD>dQfXY+Eud2__V zP3_wK{r!PAciJ%QwZ#lsD8-$3k2o;w^;;=3rE~G_;aDd;4xX>O@#?yRnT^)nrOy{# z={c=CJjcE7O{Ej5^*vfks1NeRZ2Y~iUQG3omB=Eej_?(vmidHKn-3Zi%JaBU{{2b( z`-`UF`;aSnt_;q#Sgs7^kW#)(t)T(AG8?X(D|1%OmANz*h3CqsaKQhoTp9h5=IvKb zmT7G_^%L!;exlvU^**oDkA9j8yk*XiH{Tg_YGZn!YO^ZD{V-2xWIbFuvb#agv;uJo zZ)j!B2r;f_a`{X9Gi;vo1`8+&Nev}^8bBGMBm z3@*C6P*#{@5GNO)tSZw5?b+g{5g*0sG}LDZ2DF#g1>4C^?FY`7JrLYYXZSi;sw|Y2 z^LrMpzt$F#cVG)!5_o}H81Tv)-hrK!gHtByr0B=$%qQcfvCk^o7|w?U=o97K)o6a zM%@6v)776aqai7R0R~cQYj$)qLe-E9o4q`HYc}P=5=z0@ta-vV)=M3CoQps6wG6aGmyYBj8sE7>>-ehg z(m1x0w(Me5+cX+Xk;w%hOtsc7gxvVq2fu&S~nqkk!@*54BvtjugUad`H^C zLRx(9(mKDFub*t~B;M~l^qbbXr)`~6o*iVuY;pB08oj}>5=ONIZ&$1yd=u}(4$uy8 zj%1(bxz)OXc#gNwk4-T-RxPjYk+$z5Zb(yx0f)lV`mQ==v-y~z4m@9=FfDK+F%KVU zr?h;BvBWo9%Xh}}S2bTSGoGvEX^-@X^-<(~1iTWY3$v)x;*b;SEt1dTZ0d7nWCbTWN#pMA;*wBUBqdoAcnMV z8=y(@ly)y3v3Ue2xqCN3O5%6%GwlaoeDTGO3(t`KSsJ-x#}{9q$*?nE)ks^gpHq>+ z8K$hUWM*~NSUkF#WPgJ_mKg4`Iy^~0T!F8TzIyWHc{n>^9)}~I9&ooV45e+^;jo!v zGeb0rWr=T5v&3(|J<2MTt(WDBOF!>evSf$SNU5(aEiE{y#as1Lu-CExO-5%cY{R&f z)02F`m=4qOKFVCDE5%$sPFe)Y{F9dn7?RUsWgvkG;siavqgp!gJ4&qwI8^Y%a2sgL zk0>)x`xEW`mb8|Z)_M}l{6yd4^WE;E_E?eI5wC~ZJWk#F7qus$40vT0iV^JxX!Bz& zGx&N%d$2Aa#&Z+j`;WC?MPgkJ<Uf5430gY$QEIJkHGk(Kc|ss{qU12iU&w|ko8+& za~L6LxO|22CR|cJu8;C@RqI==q_d~h@dn?mF;*YlFKzcA-Ie@ZZ&=*Y@@isRGy=Vg z=iPt|r?v$?rnMm7qYH=DUHo0)HnC7xocOMI7hh|)2_FgzV()qpe>xJmY@>%f>l-<- zHQAA57hn=$ZzFe;VnE8|ba)T2rx6DT&yfL^T$2?b-Yj6&cL#K+m3&5&3KKVP0e2Pg zDh2fgwh9|%#e(9<3mF9m8Y0QxKf$_HD2oBXI_05Ze+CZH#y`zbz6TPr*kkt1kMnP1 zH{x8uxoQ%o$bgG8@NaJ*LZT#i9G3w6!ni~)ATO^cOlW6XKTELv+`kU5x|s(N157R! zL@c}PF%;ef(h}ob%NLe&mLzH#)G8dlXxJMKw-0@*Vd>!40KTzn;_UkXG`ng1?E7Nl z3cnLyAJS`l9nc_Q-bS>|o2tv-1UY?CUp;1aBuZd*%CIQ7IKb<{J_Oz>--jT4#Qg9* z%=h68X(?YX>-clLt>Q_skHasQpRchh+PRF6WZcWcKQNv z?`i}3KAa(lqa5oorW4@nZ93_IUSamvB|obd2~>K8p0e!;hKkw4+-MCgze_2c)=ocj z>*FXP5?GTCe02Qy@atzk^3}H^N4;=$;mi@5YPPTCvnJ3!{bNyx-lURlqRmAUSv*2QII@(!YeT9-pGc&RSC5QG+&P#5k^=y40^7FX*^Gk^{vp{^TnX0)fe zu-;G?+RNL(?~ETzgYik90UErN6HAL4?D`9yKaSYl*q(b zA2{&i-uz{3E+E5~?FCHx7l6_H9PQIkyY;VP4d?{oj=W1Q)Ei>KIeQG9%+X|5t|n@D zF(VRe@Vja|>p-Mkm}CP?yC9P9ff!+vC;n9Bzn5Y)9M-&#ga^vXZGK zb4#|Ayj${K$+;3eH>&H)3}s2AMeFA1=NRTBX%md(+C)$%7-+2AbEq0_C}l>7#0}#J zuLP3o4zi4E26ChL>^G;wD8BW_kpuo%%b`R5QTu-1;oq!<(frqEW5^=nLmLn5f4n4) z|8(m;-+Tus-k{Z$W!s;#KR6eOoQh z`+YBL38wn?A!|m)<=;@UXDBd zSKRT0xoZ>35&vka1I3}nh7AwXtqcTy+@auXq+1rLa%V_;f(?}iF$2}!B{*VuyEcM@ zn(Nr&h~e$hMUMdc62$Ou++Cu}J3)DU9Dld@rM=BZVd52K>J+0sbKH+K@GAxeLVzHVY(fMXIkE=-a8QtM@Bem9PR^!^5&wmsI4}s-hw2~ax)gcF zT{`lUW4wb&z8roQCk1`+vskr}a-B-Jlj~IDQ5JfaAvrsy=fvt$?S9|$dxGk7*8|VP zg8E2T*3exMzt4G{s(vNh$@MF>PMt=yUR4o0lCU`9}80VLk-3=VEaQcHB2KURb%PBlhl;*nRUX zzi&_nm4}@X7|gBTdQ8BIr1IDo-|+p1a%7(ov48OVDhOS>^tYh?Z0%2M8RnxqA7hUQ z+VfaU6n3nx1m_0yA=Y0YNo?Y!Wn%FQydG&juLp4qm@8A8UKO)NDRpsmB1xcwufZ;mJwJYS#lmXNzAoCDzrVYCIRdPg%+TG@8C{XKe$Y>YY(;+KoLq@0mg3~u3 zFQn^`Ylvj#ly{_$!CX=Va|zi?&eJAGjE{<@$vRVNHa>}6UR+d)yj&78y~z%{9zozp z+~$_hm>EU$_2@AVJ~(Ey`a5tnCyZZuvU>UQ>XS>yPv{=qv?XroyZaKk! z2gqhY;r8u>vblYGVZn^uT8XTqn6{P;n9~ZJnZ)VS4rkVX!0D4mA}Nmy{=eh&aS-St z5oNJ|{VuuBU5hrq^g9GU+JdRq7nZ;9gu2#9R|GeaQ>WR52W{A<$*_}mm4m6s>d%bY z&9zd4GkK3|gEP0k+v_w8um_V3uJRn}5j<+g_|%+jo0luhL)a6!Y`PX)G6$OB%{Pei z6Q@aY@RAwOxp%RqmlEcPv_!QJuv2)2V%h99AvM?DNoxX&bN*=>@?-XsK*`nCnV&YT z(A6Ozh+qs4cswRI#Jv0h-Y#5Iw1V(E@i1iK?qZU6#BgFzy6TDHBbt}7;b6z(>`89{ zck>VTUe&Mp)2sSPyPG%t_h+B}w{#VIfW}YYYuqC^kssJwwm6(2ms2;u;&&Qsc4`cb z7PZDIBu6z3R&yYlRO{GaRq@HNosJ!_*&J52SzKaN-BWxeBd;VO7MKAitqmFW5X%@T z&X1$IVb~JUVbQohHl-xsx+QWv709XnRl@4zI?V$q;I0J8TT*RGs@>(+6jeb;xhLG{E08nYIndeTlGFhH56 zY*ZdmrVSkU{?sXuTyt11>o#R7&K&4Fx{3N3@Q7R`XN2oQk;{0eA|db@q&hhF6#OAg zMQ0IbpgM0U6+)Is!J`CWwOug)+t?qFFpR~iLP`7%8CB(Gi`hPUrpn6m zo3vC}8tK*POZGmD_LDAk5@%Zmc%qRta4Gg~CaX!`kg0dN{f2Z7!V8qf^F=4o1wOPq zYOxK9H_M*2oMSZp9u%)Pe&p(|jLAEoeA^5C3$7n3-SN{Eka^8Eg5*@s03*&a#0JOx zQ*^fJ-27}y5q^VbE0r`To}|S!KCFu0;@L_#wa&*Qd@m;4qVwvCq+4w#l^Rn>9BO)C zvvrcq$p*<4Fm@9BRy)UH1F`n8LfPyB2a8dvb3U!9Gh&y=jSz@Hh8+U7{V*|mW)$8hL;bAbrSF0kR)<$q9q5Ho8u>wj%e+nT+EJxy~<_{FrR%jC2`)L~6l z@ryOi8bBC>g#-}Bf(sbNL5vH+ra5XY^6TO_jRz}3%R^g3$nIP(V`ia z;F;^*d|wKow*67O4tadyX(hc3Xf7*sj0V;g3Gp~a|F039Elm!$)ctUE@Dbh!u~?o+zpQ@13tZV=FdMX|9)@b{ml8p zIY3@Mn!}!Y=%Ia$cgV$6H}@TJpK`AJk@AI;3Lv2|3b>QNtC(Z(++!^+ zbaPZV-&)E>B2s~^L}Rj%Y?TU%s(=E;}eh99o)Y&`o@u)-W)Ug zjVa1E%6m^}BH^c&J^#m0s6IPu>4Le7ch%js_Ti$!S0j-hKV5eW?Is@vFlLBnrH>qR z7@U?m^RsOncTR^v(3@jKcf{eRW{_~m2-?L6j67>cV$CI-cWne}aqhb~j~XYy+tS9R z)=~}s2;pL<0(A%BpVGvHVXuQS#^fg zZ7KWHIl*5J4~a)9mCTPW$xHeClD%#4Qwi7R<-~s1JaN@q{7U>?c0a$r@o%88yM*Eo zd(EJX(k{XpK$I*vSS>jfPUe*SUb8=#m5sb1TBnnby3PtFJFgZ=EmOb32)@}KMN z5n!L#WIHmaG+tMhAtMYmJJV^9^zCUTzz$)d;2cl|E2^Bm5T2?0P8YO7$G}4Se%l@dF4-cjq z(#qS@PJm2!?Bpr(J<5JVO;V0KTc~k(QnNK7hp#4-l-ZEJ!4V)wGQgLpBX%TY;S~uqE!M$($;-)#u7oV2D_*eoS`Oxb(Prvrj z&*n}IKa{ri0p;vZ%3t1mhZ!ycDE~(Jas7342XP)f@pXPycarVkNYufOqzA?xT=0^) zjY)|%)!Ad*cmppH?Hu@E;*hP5w~pVus%+R-Z-X$Y<0}vEJZ_J;y*Z| zl2yZ$+86D=aMpT-nUL25Ob=IelF1gZN(3B@Bg)YY*~)Or$PtsnkYoUoWRk%_L`HUw zB55+%HCD4%)YiEkus&l>qDjIj!95YJ=oj%s8;*7X?T!>$mH7};#JD=^(f(`ipzQKU z^QSQq#N*r{;gBSsE@YMy@M2q%%vO66 zyx6XI!!azft*_l;)R-K)I?V=Cqr-}*h$gtv;3q-rWVhX6v09*vSS=<1HJXtc20?&l z^(M6WdApkecT0fXXv;O_m~$=dt?g~HdzPuvy@n$a-e+BF+hp2c+iQB#a?tjg?L*tY zOy^AhGM_W2Os-F|Bw59I7(nnR*^`Yq#&(wW_Hlr{yw1MBxY)ANxW;n7eZBEv%Le-s zMkggp#IC4T==JCmFC5){{m=ybb?FX{Hs9Qm0K(q7e)2FTCZR~y!+VJFz>@4qKn$`$ zGy%mBbXFXa0f}yagH-7{=fXv(;RRe}IRu>pH?>T8HW}=CHOPc8Tm8 zTV)q2)G{j^Qf3_pjvQv402Au5=a-|ZQ^)MbAYOU9)e}@d*<56sT3n|Sz|FP6g20gT zY6@k6Tx8Vj5%*B*B(pwAvN;5+gP}!&)*(Vuv{@NYOaY~-H)9bx^bU*8LTBMwuq|oN z8t|_cKjJLJGyJb75;Cn#J&RdeL^A<<_F{h@pqvV`c0=Cm%({mWsQlflphUbwDr&s8 zs_M0SW=)&*>qnZNO>~!&eNUf*eVBvjHK*WohtdM=f)&nyyTTYSNF-wdejc`BE+EOt zdNA}k1YOu*_0@$nS+%*&G{cHe{`sCg;V~wvOj>c>BIGN<5lh&~9AU5ZCvwpN!H$FA zz@oH^fas@AJ(1H5Q1mCdbz8i2^ym{O2#kK**bkO1TDs&*DfPk+hf0PY*`Yam;fL+R zhfS?~LUZ=lb^xUB-5c#ES%mXlI)qxeT>{^w!69(5g!5j;X)jGyb2p;CB&h_9u1Ho= zP0mF)WceS|_;xkf9f9osR}`48izqPL#F|zr%(uT9!1-ZY`7mqZvJLEdF`uYir=i#p zU=+nhx1Af>H4C?1J0^EIrG8u5kWErMCI&#E+!Gh8@*`riieTS{XCz2g?J zW`Z+Q^O|zz)mK@dd5O{jFtc8aY$Pqhb&zY)5Q~5u$n#{|J*nN!I^+2w$hYrHe}|3p zq%fXg!?1tyJSPn>a_Gbi7o#g=`wN76vgk1q4Jz$r7exsc{zo!6} zLB;`iDoAo9D<$204qdEYMP5+Z_!&CKHJDOIwoZHVl18;pl(si_8q4|W?WXZ6QRp+v z@6o*f%EK4#eLv0tntEROv8f|xxg=`8hU+9BVn)$U#Nufuz&DwUEcEVjNL%A*%Hh220zr zv#(#Hk_`M~#;A{97&Wpvh1`TIc3R^Q4xsyskxlQG`WKR(FJuwOD^ zKK9>z*k@s3hV0P${JJ!wEzK`=6f%r{58-_RsfxSJ=@gXxef>UU7hA)Eb(`%WbDbju z9#Rqdat2NlApMb5?i~sOB7wr_0~N5|FX|8xYNzBM>vt1eT|x+>vw;qRGH*&fQf7$6 zY+w_^N{1~F(w{uTUT5CpUoPEL)A;nC|E)BCsQmT82R{08$*!I~CQMYeozdl_XmrLKau5|s82Hxf8K~anIpU_JB;aRNtUoXY|tTAWK;^7 zLeL&`zJlR;8~>TNPN9 z>J%o+-avXFEfDAw?2z6etwW$kut$22v>pM|JTk>{BnTS81ht*RR}nNw48>{d(E6G0 ze6bN+4A<7Koc8+68(*FH@xOK+D|=}Anl%%550}c))Av2TvM$ROsTeYHLP^Py%*=zE z*F2JE4G)sXjLD@iZJf>ID?q$0?wPK1ekeaer~U~0G#O`d7ulRX$X~c4&#{f7JJCHM2?+ews=?- z_@wq9QGR6kFN`X29#vKu9O0XnX*7$a*%x}vs(9q77p49G^>L*<=h00admZ(8me6IN;;%WAYXkbt5O1?DT03e$5^sl}IK$_8RM9Pd?fQbqanb zu9@(VHLjb)H2G5C6O%60=1T^##E$y%g4x;GA3T{rFR>rT1Y(8Utt=A^XIk9XK3?`% zjAoVMR?st$+`?mF(Lzc*1(lwY$CINSN>VG^tsQy|Ls*WzHJYu}`wo>O?tPCFbG5pQ z_G@~8_I3(CcU9)wi7^jQ%D8(PHV*KGJu;H!5OEPRV{r+v zX6oyVhwWA(1hyM!umnixoWm2>JU(88U;oKCT^gkjZ>689Q3_Bzhkx}p4^g<#OVvH4 zSF!e=ZuysPDwkKfUT|}Hc4!IG(?&J&v8xUACvC_+b^4 zij5Ap-@+vnN`b@m)I@3+AXZpfUAlcm$O~B}gpP2fqzJnstbzy^0GMo`8Qb7#~(Ap>(7bfwZ8k5k6%$vD2v%W ztak&;yZ8C$rz!Qve^5SU8Rw3(q0^qHw!YQ!XKt5C6*^*25hG~O_|3k6Mz6-T%^2<=tW5 zOuG(B{eAS=T{m5Q6;m7b+A&dg%MxbQoNKbb@-WSL6MPZpxXwL8wz&dsvjk2bP_`z? zdS8sP^;oxjT=KGsGBjc0G9^6&r41MVNwNv~&EOE0OyHgc|10!Xu*Rr*xq38{=1Nc& zDx3w-?r_NH8O$Ms#LJa!?qbcBKI-O)IF!3iG@m2V*5MPMfV#aGRLEAJzxgN`k~P-m zP3)J|(6;Y{63)*YS{-RZP^C@4|1PFY2&uFQp;XWoni{ zcaxa0j(v`C;Bg~TCC1@3xsVS59}GSOd@%aj!2*$_wd|3s`aMZ@y-lMt!$5(tVCopO zQ9|%Bh*3fiRQ&`{Ld1wWRLcvU8>^4)KWkqIiTl#*XE~PdToy4@m7zn#=fo!xBRkq1tv)jmKL%)D?Xe_mf zTD!^QvG*`RaSF2?qYuI+xp5m%JiV+NMPhlP>F_%i;I= zeGa$F9q%FarqlyFyDIVH4_%7k9L2P#QA98TiTl>vQ9XOr9k(x5zS+2Oj%691RdV%}(!LuUK{s9PfLw4c=Z~NA(c$9(`vh>EX*>jScEoCTbdKNy znFZJiw6H=R(0_W|V)d9|BSv0bF>aa?Vh^*x-<8jhFoW+akFz;S!I#SS9#4k@A&Zsy zzb}bQUnX{4zgwB{wQ{!5H|<`GJuY-5HbL`Gsrpilcy+SAw-rUIE@j$8p-k|+ieVs6n;>atuaP-Hvdbrt+^d&>4ohh zdj#AaH#Q$r-ec>OKe5QF^_mWQl?Y?+%~HM?*DfvVwjV#eXbq;oa%Bog2B*<%NHLUi zH*%~wHnB!X@f}Xp*I3Op#>P~&L10EdTL5EdLX(P%(wW*MZ2DPy-(e3&cPd*n{^l*8 zUVmm6Z;|rNi>IEfink}b>Qt;XNQ=W+4qbRB^dig&(_eagPz+ruCZ|0kI7t{?i#=jk z+&lNio7X7cjU731=%6vfD-Kk3W8KHS)LZ=e>*Igb{N?ua#S8Wxy8SVyBXeJ_FL{2S zyQdGG&ulxGTRFP}-G@CV&T(mlCq;%e(qXV5ei3FH?nWt6C&b*>Q=?6))iet1u#XT# z&Y$EL!9lOqR)Z)*|}!qe>Dsn-t?|GzgyQ^ zPd~jxc@N~4eMc3}o%e`xHJs?{e!07EpC4!(kl(`AW1VP(YYI$X*E{pmrbd+EyLOp6O8|4Xo#&gPsN!KPkM_!}& zgZi8;;?I#YM>Yi1^P^gib}E04eaoMZ)4`!ad5~Hd=~2J>9Bb#2`bYBecIXMSI4&Yq zGU9G|jH{q~4#HPY$|tx4uS#5l@Lxpsw$D+qs4l}*%;9;Vrh0vd;p?sW11(=*0V8G^ zF|){xMGXI%mLTTYRByPrTrBq|h8ajPx0Gpvc2Mk4D^?4|++r|v&!w6vbCCM2#!9zg zwdF`ZBbPw;oJXtnLyfnl??VcUy>F`bg-nd8t&G=UD7I&N#}-hYKv%So>gMmN`AEW2 z)&qZYr0tuAiKr7L?KZ?@LoR-Wg|w$|TPesasPgz}ZG^-n0! zCA6ol{DfHjG)9z%uM?3Rf_nMf8VF+mbBp#NbA&(VbE+@IbHu7b#-1mPVm+=<{_4c? zy7MT16_xj1-LhVJ8RZR#A0MdijI}mT{D}3&xU7!Xub-p+k)E?}TAJ`2dkSX-#b8Ld z$0CTTvWK%W(gTjpAaN@8`Azn0sK^LWK0`4Wg6xxmEJM(yX4XYg>kQ6qj{P1Ugpp0o z6^IdP494kaO+&_ve=Y;kFE&4HV7UA|Ajk;uph{r*UlhDZDGN9NwD;b2+d}0pTb1p~ zLUu2k@*vaCxhM>yUvsl^P-9j;9N#i}EPDiLQ#Z3m29_s=VdT6p{w@mh#hFZ)0lz|5 zH3^-C@v_yHQ4~?B*L@xOm#FbgMHEvf$f+TRH8Wyvm*iXJ4@5nhXiO_Ks z2pH=;wE?6h^SG^J1mGT4-OXN#m7yQ8Jjnrp=b3L2`a|ztk37`3_wgB(%3qZ4uA2cQ z2;8}w#TggQZmAf~Mhw{@ZfTzQ`SM$DUGyz9Mp6;6x9Cn3abC2_I{}h+0-_o=(kAcJ zk-W3we~@=nR&Q?BP~{!&83gqI`s2sDK5+Gyua6$n^nkdnSI-sS9opP{NM9Wtcy-CG zK!PY$-eLQhdF_C5r3KBxIMUiJ)>9s6M4QgnZtRZ5+MS`Bf$_!NigUFe^R=|$fiJ*w z2w*rrGj)^L?Wl*&;nRA0{-pX`dzL>}&s9EuC`t2|aIWgAP#)(g>R-gJZD~e591k{@ z7o+g7(pnzl159YDKQ~tYPF_F1pKumX{fAoUG#D5kPn4(n)$+N( ziJ|({@@oBic>TP53r0&^!0Ydz)~}gB^|v6hQ(U3eubIi~hpd5mw0ORl*RPh(1qLJP zZ}|$($8wyES2P$2v_~z^{rVn2#_;+}V&iiguOE`HW^inLBE0>$vC)27Z)14evaa%JWu`{BaP?d=sElkZl0G(A2zybHkAx;|?zGIdk4EXv+X)1owI39%1Pkd`JszTjK6O-Vppq4S^1h z2w={dAwF3?w|BVjjT;|3P&at{PmfpSE}GnzQ%Y+=g4O zV{aR-nm9f(mp6AdKgsfle z0j zd^-xv!u{#YDyBgAo|Ybgv<)#(h&O zH$U2Z=+VuU)1G>&-`JJ6fbR3PVZ)RkhYcGxd{xaRu$(U&(SKmaK7Cd{-hP;2#;j?F zmOmfLsH$4~$u0QjleJY<8Nu=i<5!M`;K0X1ny0k^%cL_h_L95wHyV6>t(}Vu_S|;u z4cUDqLy%-&8U?zf5qZnShtBQX8A7zv(!FACV^{_U`qJ%yC2RpD?J;H+}HWEsJ|&-%o<<5rjBdrREiY-Qd7?!mSZ-m&fpwwdnhZF9Vf-M8AR zy<5EGlF-6q$hn)yoetw5w>*Zm!N&*A=g1oue$qVKbe&Y!RH1ppt$bb);jZ*e(gS-p zU6{kq+wriq5GS=q*eAo$=dsw_PKQ&c_O;FB!223=Ias*M;aI)wtaOT#VZ%lQZ@uiP zB%8K640|vPdmN4KJr@rH9|1lV3BypNbtSv9T?1T$tXh-J=JmN#ZS8F#Zx?jFz}w$F z$aXclKGi$ZJqz7l?tRAV`pu4O{uJ+ca|tn4tL)Wn9S3*ydT?0NeWl7lYJM;nS8$F( z3cz#K=Aq^XW5MIODhCn%9pX0Patd&fxAXF(SG3{Z0p9?)oKz2&Be?!easl-3>FRTm zYZh|-yMgX!=-&&t{(WirN!KTo*L{ocLf*iAKB?seAw3t7XZ2l7O10qQ)2yJ0x=Ydzg@zi~5^CPd@6S~R7XuJo0QU}!G;B75m# zFq&`FewCtM(_rh>Bbw{C+Mq_UaC;+rKk>_5!gLiC*3?7^DB-eCivI*Ug7V5*h!>5l+)q~rf zYls>;-2RH*oZ)`O*33PhzK>JddA#;y1N+@@Tr9kzJ0PTKttR;lHwn|GI!#UK6J@ zZ+}f`Y(A$nzP5Y!YumTeW!>~GzoBp8w>8NU$~b*3x5q?aS-pz-$DCOM+B?#mdTaWC z9KaV}+CQf;FY1yyMZ+l#W>>B4a9U#lf*uJ{KHfzVFx2L2GIAi{#5;yyQa}r;U2Yo) z-P;LWh_-d@L~DP4-QGF~Y(_%+m4Chl6tz*YuD!N*Z>+l-Z|gW<4x#fM(k=u4hZ7NF z*lDcT#k@&GVPs>O`kYMgN+%)T28>4H;ICJ)X*1!UUIqfA58o~-?=ebb?tF2b@_jO! zbC^vAG#ZTH+a@SEO{uK?xdT)*k>57mz z$ZHC;FHd$3rS?$Lciau>Vwu^Q7%_)?{>;-05wtvd)uLYAubo-dsj%sMl4&&)R^GB; z=Iq6b?o#Ss=_Y>6ZdutPtX^F{o@rkMInk_l-^+5Q-a28?i|xZrGcD%F^7E&@KQJrn z4d&5I%HRB$@-a8Wh(c1!c4@NIh<4#@@a8~7yu4l96~kSB896SNP3|&}`})emV>dj^ zbYn+$>NsKQBEPTseZ8*gK*jJ8!-tI;J^9@FQuh6T0SBt8rVRhfeJ7dovBw-n`;8;k zju8*aR-R+cK`!bcCxh&*PBiNf(qN#}8hv*& zu-1s`?IhVbAvGgf5(^9t62f&`u3v7bmZ~*v2@>3Cq2|*7+-)jPsaZ_n1e7KrwmgqH zDa4%EunGjYdU@AA1M+7nI7M&$w`j<(;f%HmbQ?!FVQ@9zVep36Y$a zjJeKfz%|CAV#G)e9s0#PGwX*A-#u~7Rs9PKA1ZsjV)W9h@7l6HZ)nb#`2!|=m!4&J zOuKPrRn@eWSa>-@a&sfLtieN8KE5wKeSdClUfvivk`=ag7&3It=4)ivmOHXG^~%2H zpXq@Aa%LVWNlER91qojq+Fguu(+4aMcwLjdtQD*VEo+Zhc^;Y2JbY3iGvMPluIFFx zHE{|F2vX(lrcdpK%D-c^mu)s{V5LL76_`)rU-2O-)8TZPO_EK3+sU8I0+J2%=g6~z zw}~jZA@Z1nI<2kFZmM&x5D{-ke^VorQQscbhIbT-KhmLI1p*&vu> zO^C7F!WA23Uh^u;YD3i4;6)oifwrw zN&ZkLQL+eu>`1bNOj!;!0*qJ;j|$NtdvaM_L;{t18bZx1h;Y!>S)a~CBmfkk?+GHF ze0E4nCH4ZQy6jYr8mwsbhX^taNdF-no5MHDif_HO?s(0;wRej% zmELpa&zrmJrRUaccZW`FeDlBA+;!^t_LcS>^vw+m=v3L}(FBmb+7+|xLY6H|pfQz~ z?9FgA5a%p@!;~kddF@~ib8G4xNy*7VN}Z(^*3ooWMJZY=A1Ojb6w*nW-N9gRZE#Ca zLl-pJO3729W`~elLK{|Nj!T|DA^!Qq&YeJLqil%JckR;bYYy&z^_BgwmOd=bZhm;j z!^&ypLzc&~9^SFz_H*yQe=aV^!al6izz&JIdaI?cbgynbe5YQ-qvC!bkAVgU3jNY& zmI6%*j%f!2bF-#lZ=dlGZeT{GF)DUy-q>evpJ&DWO3&yg%(Vg3rt6Qy5af;=LB96~ zVp{W8;v4Lcf+P(II&oiMRj0$gmMwH7KO-F&IU0bsX_9%w1y4oNXS(p1=ZAPpi%Eag zx^NEb^r$y2;q?ttm%5s2TGtjykI5Qd3%_xVZTrYQB+Z z+a)$M!<>or$Nd8V$YeBMqvb5`5%+UGo6aPdYLX87MAsgG6gK+Iz9i!a4~`!&~-Hpa1RT+kgN2+b91fefQ0;>(!v*>bsV+r`RO?`_%I0Ta~Yr7g>Ln zhJS%UMD2$>sFnHonI#OAGki6|;YbF6Cju()gtIZiygpYD$P+Fg#G6!v_$#y?qndya z57LNMcN=Gui1jKFfCGnQ%dU|rpVVqjf-$%6Wdlr1S7?1t`Z9RzSJ;K$Jz)eICB)~xt$cXy$g2%(Xv3?~AC!+?{_mS&(Yfr$wd`%Bn0~EQ z&hh%m#$SoCGr}wXylnRh8e>jSV{rS7$ha*huY3{N@OWBJq3jX%c+FN_)X|U~S`|DL zh-TKB8wpZ?sFrCo5n6uGA2fNBtb#KZFfA9BrI!WELS^9*=_7(8LL& zeQP=gtcmB|iu^82PCP3#+Zz(lYMS4OpAwpbdoOIgB83F4jYF8bC(tgF+AdAhY)gvz zJhirl)JDJHbPfRRt|6tICmup1X>AusToT%)+U+TAtV?1ZA0cHGYrc-Rr1?HN%Al+B zqpSh&ZYp99pxqJ>vi4%7wqc){_?;0M2dBLKr|%&P*b421%L~^PZY@lN!GiW4 zcZRE|96C=XsQ0*}22mTT9h@+k88J+(D!neJ_n_HN3@)2G`q7F(x<}02^6OYfsLy#`bT#%Kx#V8n5b=!&O3q7em)QuzCEA zUe)v&RkQyv^Ez|W^9|xU>*PtBR*xDjPWko02exeo?$ghkH+RU}-#I0vYQ~Xu?D4Cw zo;Wd~kCcJeN6vzzlC;XOTFdr$d{L+8MQzmF;H(XZp43!>ZHUKdVEvJl74Leihu~5J zaU>R1fvY6UZ+;$G%_USMke33Y4{_x4G{enr|3Ot%u&}!+A2ofc{L&!qTnz<96yliD z%A2^_zf%sg%wxpBNc(yj;@|GVzBa;dwpg}z>6B~8=`1=eL$uDIM~xP10>nzw>0<}8 zlTDH&0`?HL1=*Irr&CTwN;IRPBq{2sEulO;`tQ`~v-QDM>8mO1S~h7tCW|O#CmS+= z=7UsW+1S}6X&u?go*WNw$GAaP>KW;h(}f%Cii;S+epQ!h4k>O39#ihSL)C|-Z*UrX>H8BIV<%<1Cr_6%gce~9?cG(`+&^=oxUO=M^4<1r4_vpIy_l0Z13b(rq_u6%Y`5?sWY=%5ocJb=U+A%S zBP*s&-#hf!ys5UctplfgA&ZlI58n9nL4;yGg{*_FT_=w3TD-AC z$8xz-CyOQRNuO_c-`T6;L$?d6cx?T@hOtS(odKo+uQOQaG&{2;X9sTYMq)OclmwR< zO>HP}>~R(tqU~y7y{BbFgYkT(6U#>RK_~j16FQp1Ek{@+>X6X3KqAFIE>u=k&HAs4 zdN%9Wy!kzQ&gESPy2XbZHfT=YJpb+Y=G<~oXSNO>ao=RQkB|2jvWFFx*2h&ph!}t* z;lk|@j4Q(Km?G>pyP*h+P=o=mQ4U@Gw-jO0f@A9WT(xchFv+kjtJ0Ggs*`Tz>bJn*7 zaz63Gkv#zM>GkI6({H|U`t;wGFO_e3Ea%~)7sYX^mxkI$X(Gnj2!9X|!+oZJ!LiEe z!ATa)Y&1lzhy4Li-kAnyosMAttXR)ld)3yX$nwb62=&MT&_30g<-JmeIy;NQn(fNo znumX*6Jk*8#a6%l;+0$f3(LcDhpa|E)DbvK(+FJ`k-}_`CN*ksu5zqK+ZznE>3~Ud zbe4RO%PENQGy;psev=SA4EQ$WtU1U=rN#@#tlY8IYxX?K`ds_b(q@?3Am_|_ZSvHY zsz`PlvFvf?sBJ!%m8C9O*1fcJZ|~k;z5VuAHfozFR3d(924BCK!fmoKBKn;AkkjJK zih;8odqD`eHNKE~x*Oe5<6-D;&c-Y>P{n4m=mSQ+RO($oW(!b$)B%T63;=hio;gI3 zKY2l5u!GYxoKpuh*e-O;9{`FG|ABl!Jct6`syO1>rMPV3bk_GJW$Ntg9uMQ69@(>% zsV}j<{epo&ZujoFfk2RbBi`C{`nl1|t5&RBxuR)3zLjH;>`gZg*$ zK`*5~V?O?OeXjlguFvg0QRWZm(4YF;zrz4!{wJ&*`kWK&+BKLH2#SAXYn%Tzedw*d zSFTvGviGe+r;Eu=LG(E+7nPS6$ziq647lp!r15;7yCHQAd}UUqtFbz2jjYjp*lkHN zn1+k++Tx5Ny^xk4EW3P=!n}dsssE{i-HWOcs+53s1?CFMve$Op@`Av36 z+|@j7%a$WM#HGLdERLI51;t(El$wFFDHXdm#+Alt(gJ3WbB`^?m1c9=!Ifqr00Itx zz*VfC;NOCkFxHOeE7Qp24)cVnWYG^XY%mqp1spCaVH!tr8Fo2enu-#3lK9f7T^JK; zS6CPxKN6gRZRQR$+omR8}*vw=W%I$Q;z*xi;`!lEU6Pieu3xFaj z9F?GIXuDkE)}zc<8g}exsIQM(RmoBWgDPYiqz#BSOO>$IBfcHubqoG{7uJwT$dQd2 zurnA0B-#U%mGHL7$&e(O_OM26(jG%Te?+n=spiN7EOy)?+IR16KKHDqamS9PZ+7ee ztqAHw)Svh{`jsj4lr0g{IHME61Fpchv@HASCdfxUPdA+^l$~yem?_!9x>s#!rtqsi zVS@`!NqhvBF}_5RJr$SKi`CdWERLAKP7!$|)U#dolfy~vAFmex2r*?P584v zS?6y0jUaDq@2k?Nqb8AlAUY#qV{j+nh{91ENuS(ka}{;dfi%Be)JKY`L}Bu$YWz`{!hZfAwl04O|zK?P_979I!C;6QjO z0Ky9zEZ&-+lv$gT>NGS0pA|tX2}pRdt01=`cW&;w+^zWcXzu5^ExAc-a)d8s6(5hQ zp*&v!KgH1T)RmsC+23z^<;rJ{MCUJDJ9>0<{^I*~MWekYjwf`yk8kVM^XD&dxJ=)^ zxpK-5aS8qK(spslg~y-0wzvr3c>ElU^=I1u)E^&!{VwlM+F|sF;&A?-yX5$P>C!Lf z#fca9X(^=PD%oij95$ChUlA~*RJ4m2a>^n0;(%)6RvE-M;5@Cdr0Ub$krY9fmm2og zc0~bfcpoM(O2CF=$7$AZWWxmdv2B~_Vh|r!@eOfBRJP(9 zA|6Y+0WxN)FjBVRCLeAOSga$A9)nxGQOWy8SE_7P$x8VJ>~3V7DUFU$ISB~KZo)_= zs25eBt4w=0jeHGlH*VYAMv>EWncctz0M#`Yz4XRi!0kQKE&KV68@qG0vu zARH?H8T%jLvXVm{25TxlMAjr%E%+5YNrkqnUk4cqHw`poFY}MS@^bp01 zL2gA(*#DvII{>4qvcKPbWqO~?q}NG zsB|&GM5U?_)J3pjUAu_rS|RiD{my+eAwhTl`$5{gdGl^N_uNx|2Q|>Fu#YuE=HVW* zzA{XJ5)rm0$|Sp-1I!YF#%=;Wk`m##3L61Mbihm`fpa8=dEMOntLYNrtVhaR;#^nR zhO*s(Rl7G{V=fes=f%jRPmV8JcD#1yH;+F0jZ_OG(G?hpUJbzu5-)__iPY9)%$*A> z+QV;+mj$CvG`J&NHm=LSxeC~bQ-@715!wNCOuq@bv8&1ytKS2({#tO1+O~d!v`442 z+1#W@INr)ccaa4R|37^rc$|lDg=^tZw8T1Z;G*aWd@r`H{Y-uF>D{}ZW?h@6Tw92L z*HYx7$JCD=S0CN_@LCqeTo13kZ`#!N-k)|i`ub?yWu-mr4sM)q*?wzkSG_CJjo1`d z7 zC8bK;i>9XbcuSprwnysJB2{Lc#3WYGy7`!QcUfH9-g#Gi^wg8jXN}kf?E4lthOTWJ zk@ftOr(T2C_)fK4T|Vtl-pnWGE!yz|*_38tPyZ9O#&yzNm}>?*)0g5p%rz>9_>Fo| zHrbF=uay|lBD$?6-~q`9#T4P{vQkJlT!xs_tP~hCGs#S@9USc4+3KGux3jiGw?182 zx$kvTweQ?ZV&5A(X-$Le=uH1xJDdKec6O8p+j-+f>5o6*c;xLMmU}+N<3;SF#o5nF zL-IBpk^?q$zt?Lu3$OxJhc_HuIL@2k=&&a_yJ|ehkmEkL(O}`%E_nXQn8o8Pok1`Z01OtuwVF{sG_Obc18avkq~?1iDMMq6 z;ZjfTdaVpPVx=Q4=ed_^@g(ko)y5C~gSQzewDw1#1h%=@QXM5kx~1ZX3TIW6*@bo; zgkgbpgBAg-r^cP(2#($n-Jt3E@iy+lwx@ef`Br`Y$wvJMZ0ExUUnYMrUyGHHZSMtd z0ZzLgm`8#^(K~>ba)l~q`w=)~DK=L@W0bjIPfXO9G~m22Y&J(~tV{0Dhu@+Q!b8-B$D z{+53eOW=`Y&mLpg9%~g$%sR!r_r>3l7+tmGqefty*7_UnasU#8V9|(UPwBN2X zz*-4T9Ol_$5USjn@Z2FL4nSf~_!ywKz?}dGzKwB{s?L`PYk=0#W0iXbEbh7M@E1YXuM0pHxX(n@e zvR)XNY_RDKaT%H&lQLUy#=v4ga4-DqQ-6hD5fTHb!ThMc1*bEMGoSyK&dB0loSobhL~jM`^uS-TTnz2vgH7v_$o&Fq^%f zVm29=W-*2`uSHG)out@a9cE%WU9qx>3^f=lm_b%}y%hu^kS2cSy`-TmaDHdcHKhKQF}kLf$0FGa=DhIS(B~UQ5^<^(W)>~b}<_Y1Vb)@lQbS&L$*mn z6z#>if0&fcAw+9`;7mkpglU@Xw?rAOqEqr3!mYPpnp$G?5`wba#m-F-OA(ZWqymKG zBw~=Hwh)wQ&ds$zrlsaPWD8z+*_Au+dG(*n799J@!wV#7$@E0$<1_q4?_H4h@zGy@ zGN)q}tRmW&UlD(nM`6r4ewf86vrX)y(&|gQii=ToxBXhNsI>26J1zuvu2oNH^DO>`+!40`PqBvh zDFE^_%usBu4g;v7i0~1I%f=lU2v*Vxabo?0S|3`c#(C?I-9nR}%cGPu4A9o9+GxHbq%V2RP4F$$QBz!89*86RzLmukI|RMF#}pQh=sks1nZqrzLDx5eER|Gs z31ikQT`*N%&PIe7%w0|w?3D>`CIs!3!2s5v$C?)e4Mni-s}NgP96P3&F84`00*(&%%QFwW<6mamNlEG_)?W>OPlOqL1;2eze9$xe^5&BQBds2Er`> zJ};iCA>%!aK(SV~C(coo5MFr;zNbI(Q|G6SA7g)vd&~Kjo^cnpjcTr(oaYC_=b^^l`SALW3jjl2k(xd!XWfCGJ*H0{ z`gBf`XurC41K`KSvw^%VEwaT^+rODGE^ebCYs521@}mAAZXbDQMbKp?`_p8nB#DX> zhD;GLfXEXT7~s~J0O&vVvZPaFktvd(*KjmZpGTlr*Ioz02K74N8N{pC^VCKSTQR#q zgkU4s&m1@zc-e#U>#Y1FFjaOT+i0isZ0#U4h3s!#F8X6(KcX;$(PXwTQG&dHYU|bz zey4NLh+YR=^utX*%)Dtm^#!HpE$EDuE<3c#)T0{mh?`7`C|L|I>m>n90~;0kt3OK| z%tYY-NrO#hd9cZ7QU>c3qtV2ih*}5t5iJ(L&B+R?*yx;kz2WbWOhbsKdJW)|U?b~H zNQjOUZ!@(v6(|K_4^uzWAZ3s^9Hm0XC}YGarul%jnlH{2OO%buCh>98Vdb!RTzO4? zMT}Jx)U1%qqRC=5%Ty9ciIlxklo)M^HisEKh7^5@&ZnfwiBbwwnj|5`l4edeB^rH( zR&t({XK7`~vK1)ZHcvlKw@6tkFO-&w_poK`9$}fV(6Y$9%)Hn% z-?-FJtdxjrZJYF)bdM^J$Xlhy#m#K9u*Krf+-TTg`-lD?x^kslenxsm+{5+=&sfS0 z`)$uF2jyz%MX|#Cvh9>|Qm&ECii;5Ondmb!`eHfJEJv4H@zs~_fAwVrOL_mNpWm16 zs@+K6P{i+&HrCTEw*eO%aU*}w1wR=ebDq}&pdL1QIu){Ba9Ax)?%GngJ^m=slZ-HK z&CcR*IxW1!3Mv;FuH+EvITtk`rZJ5`uk`QUbIBvqdN*yJnaEC`RG(0vlrOy6zTIQV zzT#0g4smk;Xm%p@&{WW@0e(f3Xi!X`7ntPfY($+Jm}n2nLKPXHk-1}$2qRZ?g1}IA zi!cnY&`&oYaC6AMGx2?v!kWLYjywmk?RNHBV4dn<6n2SrkaH`)jCS0@UVoCyDN3RQ z|GTr3agV9m?t)k#?XjEs$u0@m9?TI&S;sdsaS68?d(};KwRns=z&|Mk7pFJpF(JV$ zm}d+kz6tp0RLm~BCqjyLWw;VNc~UDEg4hZ0Q}WAxduP`WX_#xYr-%SQr6RdV8S7f+ zS?<~I2?Bls>@#!-Y1zhr{0#IKkMy3B2_-O)AIhlt@M(S!g(2M*;}wCIx1Q%1N5M06 z(C_rZuo4~TvP5Eh7RJJXh~EpF-NN^Ic!S{q>5gNY^5K#51uWGXiTQDd8!8i|=sn>u zc))8^0~#SnJU)?t$h^6^l^@ z(eWNvk}fXZ26)YS4?(=aE72XN4eZ8>i0Ev^BARozF4*>DUHaOz(i1CMZ@fGFIJIhlqz zNk(>wz~I|a5VIJJzR}X$gZ>G<7qN?JS$bW*=K0CaXJ4xaMUgfAZM)^pQRTt*)Cp5o zj2|>0ZTyz>uuaCLr|)OmUmBot}^u#NB5(XeDzKXeF{E`v*ZQrMTM9#Wf8OD>FPn z#LC8f%EvsRKN4&%H|NO_>e8B6bct<>h3DqhUO_qLo+pYJY>-$;pqiK}M%}vmK@Cf@ zZ{L2QZi&B0n3%usmbS;Re&iRu?PyAr!Q~R*5WRAln`0ctVuQ6<-jp0w9PKTRuSTc~ zRCTQ1Mbz;jfQ^Qe!_DG6gs~oYcj)v|ZI%ey^T5Q`ttTF!bW&PK^@q~wvcD0u=Z#Mr zEhy~JJog{?B35L3Bw-SRF_Xx6!}!4!5L!$>82>9V0c>AK(GKvJ-glKrPW_ffx!3$RDSMjnbSYv;GMKyaBc1(9WTS4uFr%mHDSh>b^=nf4g7 z+?7dFW~bVGO_d1BWET?@K&p8NQtrQQ1u8ocSk z-_BLJGXB` zboI~biKEX=+Yk}a(LeH`etkg)6u)~8bdV-=^QXC@oiP!6Je$%5B?Uo5DU}9iOi4VC zAxcLKQFKc=2{A-ejH^C|2oVaQDv%*F>0d&L8Yt``O9;gLTY`%6r?k+575-yrk=>ri z-974;p$Mbk`mEsVa{=okab3GP#v{RF5G}OwJB@Bd_PXqHtez<->BkFDkRu(`PR1Nm zvWl=)BXRnm(G7N%39vypmkGxWS&7`6UaxxVp>T&0r5~@TsCd5GmEWt1RPN)3ig|3= z=nPbz`u5z7ovRmiEBfgC>P{WA5@`P)1K-{XzKxtwq{NZ<1#u`x-dY*>@OyD!pzNC1 zs#5JOZBk=Ji#RCok?6xP=yMp%Pxzc7MEkA6%Wz;QdWmokbWo^jpaNzRqAXYgTo}hH z#AUUwLx#+G1fSJn_5Q$Mw48&uP|iVxeT}a=CB8TY@#IK`Na`lIT=h9#uxF7UER=BI zHx}KjZ`3ek9D#|xq+nongIGMupbe!*h$tdnpXsHoX=Q!RL116QM6WY^LI3yKX)#ct5;Z9IbW}veedJ9q&kvf4L*MQP)Y~y{i(wV zNrErfdCv94xIM{<@UR9#wTI1%b^rngQBfA^mO!cY#Q_>S15dHQxP!4EI!H=x~c5-XOMD_nQ z9z$+01bKKxqu#Wx0NA(&V*hu-*!9*8fU%_WwK)wt2{0`598%HW%4%;ngvsJL!Rz%W z_`KSL9HI5CGs^&A&T0#z_rxuMNz!CU*=;}k7mm3@O}K=; z?UsSEK-j*5p^fH#bnSIXN1#6};kRloc{f-C4Db4~yb&V!4^ZiJe%R{p8^%5|w?PIX zU<(+EZd$5uR(aM;+j?CS#*I0YIH;NAQc~xLen1+GIux{Aa|{GBZl8H_NpJPfz^O|E z2HdP~l$Lf|vz9&jGz}WC3Hm^@ayQ#lx?w{5{{1e9MIn10?6$~M4g=L@@?K_<{ZiiL;H*{5HQyoGZJx)URXxDE^Glo6~v~ znvC22VEV_k;b8qUk?=kPa|@J3)-dYiW>^HpJYks|%y}$J#Ow!EL*0x}>1=rnBjyyN4>@vuZ~W<%i<(m!i6rGKJY^4-k12?8B_{|hl5uV8`yMtuErVb@pvSBe8aLc8+kXx9XZ^kKi%sz_#?WHi%h3=k6v zT;oabWZ>*%-6K{hdk~k$@f{C+17kP8nuPa@@Zf<4C<}D?a4PS_Z z)o}JLeFq*A#ek}`Yy2AXl_xyM+t9I}YP|jF~ z`9l4%i?ub`{6`kB7y!#~^E*#Eyf!d(t@ab`0~<%ZAd?5<)#ToYw1HgED)MN~&YdV)Sm^#EXXL`--Cua1Lk&^Y&e(z_Hm ztGV+Gf_&z@|K4=s^$cN-Yj8gJVbV>rhu%r1#rWIyg?>n>#*O-dj91 zw{PE3)8@@)m#Sno6jp)V2m+SQ)(yhD$v+x7Hvofh6mj2MDOas}lJ}d8v!<#?#W`bIfM^eBs${3QG+JZ<3&%n%12^dhT59(PAwE zJUlmANIM#9L)jQ1hMs)+GI2A29}3Y@guxgFy@(p%GgIHjP3x!FsIjb0@y%vWy0t}f zVcyVb3(fUo5`_fN8g>9w3*MfcWJM*CQZ_MEtS5t_iZ!cw%f!x>hGSg4o^Ij8y8n6ghymHkD$6+ zdE!>^Bs=(CW3JbT(JA&@co`E?F+Z31yu)WyFHv-0oNuxnEi#+;9oZ!-DmuZVe!lpl z%ZtUaGn0Hn!oqrGic?fC`;Ke~JLS1-2Qbfd67Z?C*OHsC(do5AFS!^DSh&7V`j)*- z*fpjb{PiJ8W$*IWlzh*GQ}R{zt?mQpgyD#f-!7nHmJq4v5XgQJgvP^1J;0X8Wt#@B zDA#@PEPSy3XK61=KeA%*CY#XW2>hL>wsrYP2TMPTII`yQQMkSI33_QHpdpSj#C91r z*};o0A3}p8TY;i-wIGaKNU2z!dH$h8{d4;F>(^iUaq&=phoOu6_xq}Ue~m^PwPOH6 z6v+KDv{xB53}uHoK~6C1csn*T_8M>JVyGPw8_CY&(K4o3F>hoJH7EVpzyDYL`Y#^Z z!4EAf$XiNvB5aQtej|m+c%y7WEGnU2zD&_*pj=~=;Ii6`t{7Ym(XB>FA(I|AIbuv9 zlVe!gqWom$>o5xr-xgUpIl23Wbm>wsb-6sk-!#8hvfpBfC_=K`(1OXM{hggE6m5;i zY5lm(Z;BBj>_UVdNgmiFmupapP3wt-!P~>kV#A(b?+0}{68;<88QFKsrgrPnb;xtM zIXPJ^vRh=&YM;zf@)pS>)Q;?KXJ`ND$pu4A#;~FYi^ZSZE5E6q=7gE$Z1Gp!0r)!w zmg2E8PYN@$@6;`9lIm4n{B`w_BddSC^*$x{HkPZ1zk*ID;m+@rwEFvmPB3@-d1~*RQgLzy7M0;Mwm;U$arL>EIOi%ZdQ}8W1}u9X_5+ zgpPuu*r*bnD{x5!{vUYBC1tFXq5KALLTJ%%?Qq%u2b8)mLiLhXNOn~Djb?OLsA-nRORluMyemY^)k|4 zbtI+0Bi?`LVZC4U-+ucr9=n2*_EeVNXvedPgc%ZYH~iNAdI-;QkvLu&kHQ#$jFH@l zEb$PVaQLwLxcEMf#5DCN#ySIkYi+f}OGyx!1jeGZA!}`58{krwAAyZU0?KCljr{=| zgGUQ!31H*&RC*#`hj~n8#j+38U6(^nwcm1Wg?0_&k7pOf&)@=v354-$eN-5u94dJ}ZFxNQm zxY3fjVA6sk(2C4kkp(%}3Oiu!HRyn?7w^Jf-o*5<$7*VH4kXo!!d3Y*$)(p}?tn7o zcS^@SKO2wRe~J(aEemypF4T&J&OigluMoyN$BM}h<2nQn-V-+u^>-XHq@#c6Jv-*i z*+JjRFCB&s!9|>$J9pAGjH$OePlR3xnLNR7H``45f7^b+^qAx{CuDDm|AmPcp)+t4 zBw~gjYC*6ILioU*&MFq%mXV*A&^|u3OWZwka@!4!Z{FN)f52oKGBRrl9&}WRMg4?) z$aUlV$pY|RQSZ^Ex0_|x$w<9?(qsN12KBuKy{FK-0P8xRk}`Pa0R?{{s-PB18cwkK zuMpoNuXME#!&f^7CvcF z$H3x8ViH4t5N(RWHSnu_oG0mpPJR@rIwA{)4KjjU6l{OJ0a^q?Z$5(#~`;V}eA zeoO+wszV)wjw|6?tUdHc@ru2lfZeGjv`8i741jCpUO5qvL= zFAqTt?84)JL?0dKBkeVu2>EHmy!GMYop+8r^8E8hM&5bk=u!FVm@zL_7Zp{%sEunL zdqxaEp0olxQUK~i7=`uabG8pZI@}AW!mJ$nS^f3->!mNhP^wmymaLF2|9NEP%9l~C z{L@d>2ls96)29>-lX(FVsI%X+7f4-EtZj`?GB82ic)t7$z4PLs8Pd=gZg~kK9 z3sr^g=i_?^>lUjF#p&RIJh%t!%pi+8^21>dfk!3sXhpG1?I?DW-zvGj8*PU^qerf3 zLVWBZE%?TgG$P%O%p*64nxrYV@o~zxnS! ze(R^j$tB`s`gG&Zqc1b%nJi02%}Ck7bn+gExBquvSW9%LabL8#5cUuvmmHc4s;^B3 z{amrEBv4r*zjb|g3Fh;7;EL3t?j4*_#e(qXOig}}KbJCe^IfQ0hCVI_viU4wxu&B? zcLVnwfouG}tEhA05?bN2Tk+W(KAxlMe5q&MI%svH{WcdOf{amx(F=@)ruj(?xeO50 zyhf)@VP2!lrg%@r8;^se5iJ}yjU&fd`K4Z{1ygzQLa#AsS8qbxI|20;Ej0?jvf#Nj-Vj# zflOs&fxEd-#fEBPmFf}1z$|%jUH_ZUCRw!p**swK|9&>fa^Y$z33F?SrOlx}AIEbw z*E9B1e&<`(9R>)U`mp9=-V3jX&r<%*QUw^>FB^ z5blsAVi8{w4$^$U&Z^)@%-h|5v zsL+axF`OK4$ijI;g^`WNbH>X?QkPrNG5$p@?2uW^?~@HJ4P6XH2=gkEiUj^!Dbf`g zX0n;$Ol78SroqWu!r9R)5zKR$7wZ7*^<4mRkxV zt(i4fqAo|FA-^vCxL59yZTNUy_ng6<+jUHcGCC40>3JzhN$H;CmYBaQ@@I8GETVl^Kli`LSL+VJuAmop zXmbx*IF0$}3>woxvIH#zwGz+*DJBhQ;eS<4^nqiVTGbcE2(FwEF|a_Dd`0b|+l{re z9YV>)OpN=W#4D@~|IM7tv~hG@Pg z8lC$JbV`ZomH+Q^ANG($d>VC?}4A9Wh;lp(GO?=`6`tFZd*Q-@GZqvZU=wlLj)Z8ZUiY*F{Ok{FwZb2tx}u z1^V1M>d$YNuYlpF1C5^r*2yQ-`*g=ay8?6ga=nnWz|_IYDxrgZCeCL8P@ORB_dv1d?@Dyvl&D^OUcDww6&A~%LKbe} z*XavwvQx-x5b#Wfg-SF8OY!CG%e0{oiF#acW}d1AdF5*6NQAFLpFoHZjGpSX#^SK_ zZewAY`n+6qsfBefK@N-Y>#RCcp=9IE2imT><9h3HNZ(jrMsP9pRw=b`_>v{V({ppv zRoBwt!htCtoqrkFtIjDLMmZ)1xN)G*DPD!D?lLTCD3U;zohNbwsmaJeS@7QKV}cd4c7@VYtF zHrCunJousSKv$R4(z>*|J3v==-BADRjJ}8g%$9l)b4_|xoZoPZI_1}Sj!V$9wE5Pu zuK%J{sUz|*)w$_ud5e||r$rdPMEx!`kLEuwb@)BcVYh4)(z738670F&lFI9 zpbGm8CQ;D2Po1Yi_d*}<37tm)=wsS7ahrAxW30lny43B&vu^S<200r!Kt3mUT9G=J ztr1x5HMM_Tc->>P_Ie6_LQKZDrRw*k6V;<9PLLe{_l#3p)ordDN=Ud2G%B^s%^|06 zju&Mjb3}boKy5qs1Lr*3s%^I@hgn zqH1uh{AVhBp&_-WJ}7zwx5IHg7eEKBo7vDw$+264&088Pr%IOnnw>)G4$^ zH?GjNx~mSo>3V35ZmeNf>YkG<&~pU|$t+xx(O7aW*F_1m1Df+4z1H>{KFe$FGbyLv zLp}O#xFdIbPm5>n$bwSIvad~kj!908XwzX|+dOZ)V#-JI2{K1ZbfR$yHkpNi zYd|_K=kHzr0q@mm@6q17{)6HIt_{7(ZcMJ*Rab?OGTIwyEd0i6MbfXMNA;C!`e~na z)g7x_k9rls_pdLSq(n|E7^+i-@%IDIV!zz?A9#~++^RpW<9kKnMF4z31AXAx5O3;q zlQps0pVSd`5p_>-z7$NUt^KK#c}fxH*z?2**u2C*BIx{Ib?=}*pkM`_SC;GZ06x4u z>v^Fm*@V=i7cMlWVFgl*JIsUHCP{i04nwGC)^zID<>$9!{;hOZA)zY3Bt ztODBjGUR`&U+SLYJWij65-n6aC0wr>mKH4yeJL|Tf8i3&2%UVQE%R!si^;&d@O#$>VEG8(_EtGjVUZp~%X zG)+d;WL5Pg?W~lqkq)4pl{5r8DfGmD;txlZQj+Ids)i{8?Ws1$ATf7vS}Y zt)*Q=&pM+Ps=MmSam}k;!(3m2Y@MO&K`SC@EG6;MM)jSIVxbaC20`Mh@oKjESzU#; zZe+ou|0=A8STXv}UbqoLju`M@eZS{?jMf(?IADT&0S_MI-?))8F%=FdhUbOhdGF9U zt>Bb)CI-m5s9q!*fNilB#*Dh2kj>I?vsS&Jfu@D2hY6&yIu`B?)OEUhs@dC60ZWKW z>@I}ND5CDUT{eGDWEzn@$&S#ZFMK;Y-Rb0 z;l4CXMk0(qdUfVXHFD*${ri`#WM8kmcmIAh{qe`opQmq{-yF>E`MPp0+xc?!x%uIq zG&OrX-Jyo@`|n*z_brq^Q%hin1bvXtk*J*eh~OW~S4;d&n>B0dpWU~A|Gu+zt69@# z{*D{aOMiFog3Tku4( ztXwclIQjHhG0NAXk5%j=h$tDelw?USE-cZVg1mv;0oJ-kGHBd<>$ZpYfpRHLPJbq`>lCe^-9 z&C)g9RB4_5l6K9|9~T*}y^Cv8iPusTW9>|R!XKaNr;^NrXS{-EkgNcD554y+je-T5 z>a5~B`ZUDH3ld11_?#{T^z|1jLt3i5E~a0zQ)8Plqp9J-?G znQwNPlC!#T3QyuMn)Tu@Lj9M~*XiiLPa6~ZxIj&p9s#Y9K9I|a%$HxgKsSe|>)w^> zNlrbm%U}*rhZ4SH=T9^j6tg6~MRC#2pJ_bwzAgs!6ChVM46k`zx#O(5>YTa?HK=QU z5yxJ?q+|quJIbFop~3w;Ocn*KrL7f}_}A!edVbKyjk$FCb+CS*mOUgdXxR|ID8guG z$CswV4gRx=BsP9O>bva_x@-3%6H*Xw-k&1*+-wIv&|S4L>b^EUC5Of*J;z@k!+232 z4zIDbU{61a9QO^_TeK%h2mmXfeba`C8y<~{3M(^NY(BLxF{=5OU)n6ViJlq6ILH2g z8iLn|gC(qSN1CvR^{ZP6-x>6q2KV8*@GxBu-oL%h#ZJmT*v8`MzPgR-MD_^T#wbSz zeY)v$YXQFnS$AMI3i>VnFQd^dPCDL?ca;KZp#B1C9|ErhK_!r$*fdC#e*J#K4#Q}J zG}5n(HrNf~tSo*%_=hqXXH=RLqkaH+S0{mUV>};<-Pt~=0R3DA(hq7k&BxzIq7M)WBY5)@(O>_=q8n~6eyu_#Yf|^PbtPro!+SF-t zs_hHV3Gov2p#`5)qMNax6Ow<;LQ{b1VZqHbr-m}KRc1yYA;>Zy5D^mBmS&SDmZE1g zmlDwr&1tsyYM>P|9cw4??^$~#+uj??_M-jZnxVbyP=B;Fm5zj7Q*AZ8pTp;b`U9Fk zUkd!rP9|NMeuW^HNdV!L5xs+MT;xUbI6Q$iJ7%Y%$R;8~`~^x>8j~Rc%@cEtI6u%$ zc2NAFwmthqO_UAy#tC4oVKX*cRy;a1Lug1wvVDRP>58qoFLtm6i$PJ}|lH zXI8yzL)oNUc9(F_5(VbNq6JZeh*IzIi6=IWz3;xU8_#YWyL>r*{j$BfdfTsOf7w=5 zwe6R)^244XbIzQeGsJ`6r_bPbt;4%&C-ATAPZWE1>&x?d$Eh0%m7cQP)?47C#<cBLI>iasD=6&p*V;Yu zEPhXGevd`ehwj1o`?dUqZlWty!nupnDrUO&e2#^Wb0JlV=}+9BEGpElhOf)dH{lFF z7kcyS|3H5>^XFhDahk={;d!{f47qzv>HL(2^XJFHXh8g)w<|A#?9fzr&2M%&_01gN zdL;B^5HX*E55AS()WMPIh<8Y99c<(*0VNQD-&NV9BGO!$xW-=PEv7=SoW~+LTk(g* zIt8ZtXBVG>-H;TiaT>T03u#z1`Wt+E!@K3?u#K3~L5!Dm1Y*apH5f7wLL#x{L>D7DDs_y0E%Fm}8 zeN7UEP9HU>iL?2rW^2EnJ#X1VXIQ>y{Q8IK4<5ZdW$GpNHA@LR@nMT5Sz8A+9Xex3 zlg-;ua4z-1$7nuZK|X(pE)lUFF+#rIj-=N(l#4NYg&2dRAw$8h`UP3i{kEt|#ptQ@ zIxDSf#OhcAUAtJ@>LREZ`lll?0kbCKcM^)|;cq23!P(N6;AD#`*5)hrTF2yH0XhrAxkzZ+?Y;~Dh_tI&p5II2F#%isH`T8 zt8B`zY}84$O@;bFv(YUIPJ_Mnmd4-M2|;(S)aBmoAzA~*B63?}AR`X)hv}4bIkRg_ zy2~`cCA%ULk&)M&hz_Uqp=BmE5{EZJ99m(bbV`aCBZ!qzDV4T0&2gBc&lK(0%CGar z-k~5p(B^=T4A7OnBu^N!!#VpTQP@d(BQ`(Mc0(+ef`rLfk}6%9_+x+>-kSGtY3a2e zA1p1+?X{IvezZ`H=#pPJxUlSzXGe^=7Xi%$^X|+_nOUrUul~Mu+qSLDUGtPbx!*&~ zQJ|*B_Lx<3ZuXpSUV61?l39m24%V)~Y1hu5WLae{aa0;Aa-#P{aS}Pv8__q3>y87a! zOBdNZHvetJ*9mlP0FNB!K(t?P2ky0%=l5{dpjfMvV!)1nfmlnfSMp-Nxe^+ZxotYK5xU`malz}2D98Ja_Avu|#lbysv zoRG8e3J^i~Ja5u?<%$AzhBwY58GJZd!0^Jo;yogKl4sO=PqOcOW=<`d_qj6R`r}gD z+Ea4&nR~Y*a{*^A)dl#H^mJhXr&FBWas=kYgQzapd|hbAOTD6$dD%=JVh$(c4MQm# zrw5QtvZN38h}HK9fP2an`~ctxq1#aETv|?x;O5e^o$B5*EOFuZ-m(}GbJwx1&6}1S zT#WSSK}()pF*A4kg8PRpncer){x9ZYjM&>U@ZKP6`Tch6?Q}UQHYULpfkN# zF=e&LICcehb(+^#oD>(0H0m^vFNuYOlJ_5Wx6_f54E{?N+yrNs;z@S9#19&6^YyHc z`pxCHBu`+q=m?w!-Y)jAro^MB*4#lBTxKW%?v_h_G1F^52dMao%0 z%Po}#jzAXHZd041H6W*&#RpqgN*Pqyj=rVM6NmdS8Gqn^)tK>tebSp>e-x@33Ty-L zZK@rYOp!aWU?Zu|{}D9NDzlHcLHCl2#x zPOzI??g6qZx+~$(VZz*)Ffa`)U}gB4cxN#{nXBT7eQNW^k3(8Neyn3P>+4yOh$qh3 zJh1Q?9Oi}n9uvpCad(g}&XV4kKIf&^zy9X67w(z9pJQrC&ODE=z}^^-y?QtL zL>W^Cw^gzmEGFPl0fvswYQMn_K-ns>QXzFX8;4s^xXh(+JIWXqzY4NO^-kHS4yn;t zqpPAK@UQj6AGth^=TjbsDXyy#Mg0shTtI|)h(jT+gRz5K8i}TK)|e`#G8_#-ZRF{@ z6ynur+mkj1c04dUf9l35ZS00P?EHe;nl9g}9-c6k^X6iI*SF@sIC1%c`-d-{^H|`; zFWAEQr-@V3{Bta1c`|Z5n?P!DWB|L_?iLMk-gKWUs%uk{QQFqfW+$oDA;edj<0_g; zX~k~u8c%go0;i`#o)kltvAxwYy{f6WJJ(1%moAtb}-V8y3Kw!f74?( z?6DiGBEt4~#OeqN_(ic1iueV1+<_EsaS;F`=2RpbDyN zIh-VFH_=gAvUs^nJ^wyCbhO1|Eee>}@llrZzS@_+LbWHhEbx{T!QRC&qkmdmA!gNn zqc))zL|58c7QrW+hg?jzAuQ4g6mFeCL2BDgP2O*FTa>C8o4GhrSQ8CY`p_D-&7x9# zK|sQwX3t+iYj*m?u3t~R|JdN3OJ2CY^WbCm&%gXaWXhNY{}xLF_rB1(lTEr*+sxK! z(0*}6U}5d_aXyuFSoEnF_E3Q7q9)nx{xFxz9n;m}@|X=4y-NfprPwu^*Qg|+{tC_# z(3sKelB;aSVlZ=1)h}&Nfg3qnx^qMi@>88T^rNMeLogx$*#Io=YT#8dn!Dccae29 zq$k6t13Pmp>D$nj`E`EYXnOckx;`j)o$q7qdQ!vt`IxyLK1$QW89BJ&TR`4E*<}$o zK;lfIQAB_wd<$pA?Mx0tOHt~ERm>5v!Y4sxjsx9m{{&^QBAt0##n{8n6Lt}K%q?Um5YZuM1g72c8xI$m2v4Pb-gAX>~m8(*d~2l zJlY{HKF%Hoxs#Aharous=80ef8;Y?;CyT(r&5Q zOP3h?T>bLs#xV7}ReRCdS0 zMLn5Yt-1g0xAuSVtNMlNQ-7^Gz%rkbX8v~X-qPWFhv)C@IECfy{8$}dTdPiBN7)5P zQ~yTg#!gtbA+SpgP(Be7NS;j+qQm4EyB@G?HMOlSpE}Y(@JAz~5S?`DFDT1>r3QG#5y6_<=`MlH|?B$S6o6d3#&-?#upncYdo9G)#<$4JGXXnW2f`4 zXF-nB9X!T-k`rV{1{$&U)dxyTA9$4?2CH6uVOF0(j1~5o^}?*)Ll_&}8#(>swroY6 zgdetUQD+3t1NYV~Y}@q(ljfX#ZQi8X3aR^~d9UGUAlm8(zC&lY1LNrG_sU2dmUXs- zu2QT^7h#ADb1@r<7!VM_d9*rMSV4P)!zmTBs(9dk87yn!`N;+{%g&~ZP))o@NtQ$y zXjtZ+0gq>_C2lf?h*2Nc@j`G1meOi^YtPrdbuqrN|x(?xuEQDfa2=& zT_iMm!YFToZ%*8ql$MKaD*gFeqRCoa^jdyWK1*(Ii+Z@#2>*zvXcil*T~se?7gNs{ z>>4?`N4Y8CT8|aE)70OWB=viY86Ui-b>8G@pJvHv>d6s(rZFR3R)5zn2R@yc++t@7 z%>K(Lgkz6Y|q%27qi4AfTiBq;L8+Z+|B#XPu zv_2uKOpsW0f&+&V-^3JGhCxG2NaP4$dYza+o|5GgqBHcg{Djy*hVZtr3FFhUldv*@SJ~ zs?`D6x|sUPgw@c`p21m>4Ewyv<#nZ6d~!@2AfdobG$>@Nqs(Q1>nlYlOIndae4T4! zEI4z271({mA2G*Gm`5s5|6R0r#NDsmGpt@_%aa9QPpY$2PVWGvXMo>!k=ws}xv znf=^5Yy#{1!@<40kI*yZ0oY>+z(O=f#=4T+dJEJHf-dKsJY^2n}-8LY=rzaH0Cl^OobB_*9 zD%dv=n}I;C*@teL@AOXID3uO*8gx_t$Y#dACAsT zOahNYpmSPkzMHur{_80%UCf&6dc z1ejiA9i&<%C=YX~7_MF)GD>qKxkUZC;`2Z%i>&xunpwL}JR|i9jO27O8<;vp;1`J) z3-$^s3}c_WT~Gvkpa8PT<0J$N?ZCvuByqsr^ON6V_p$eXc;~mzm^^UcX#aWf=!np__g+)`tDmT)Y}9Ysv*)P2Anad)t!aoqrmdAZ3<4Y$9UQrk#+(^3&5~jw z<6NwiS{uNM^YVCF6jx?J(LHcB7$vMyuEr?X9UT$~qcJ`M621(?-4FIu`O%?I*>CYvF+na6yPO_<9Q2(ESMm3Cb|JfdEizh=yXi_Vu% z>M}kpZTy4{Z!cOrzRk!#2Niej-ec+P?%iH3D44sdW4F%5gRYOheZ2Uo`s2B;{!uc% zY4`&XSp$}bcO3QHbE8HbJi<1=&TKoD6{s)octJfs_3kN?&;0b$naNY`Uck~`*ugp$ z+_zQzp09PWI+)A*DZp`$bRtR>TL%?|O*ok^su@6wovbMf|6KXY_QgF?9MjAh z9r(EBKz8pA8YX|K$sXgh2y#rMR#p~nQS{pefA1RGiZ}xn62>2H;ekPgdwWBgJNZe8 z{!!C_Sg|`VMZ9vP=z-~DPo5e(?)~?>OrE^APT0EZ*d~^)^mMJPRImQ|%;wEom|48? z#|m-XN`Hq-AF*yMj~OmuJM!~v4bHO|>XQxA8zUPcG~CxvpNeDFSgT_7JHyu4G%u4Q z)F+Z1aJq89pHOu;?sO1WKh}Tts5@BiL4zs?L2lg#50q|S7LWqAaSy#!y<+a1x#z?d zs6slB0MvH>apkpL*j~_WdMTe{KcoPA(gvJvPfS`@IW{pSLB?Wpz2x#KQ2s%y#le@^ z99bq*Aoj32VMSc#7qvB5<}4QS(b7_Kswd4vlYY3coa4j=sW(eI_)^=>dr$sU*<;MA zrSESpX_j~Iob%`A%sP9v@02O>;=?D@K+O|}mOs)p*Ybcjd&oU^PhR%QwvDS+-21Vb z2Honh;!d4O9=Hv*rwzyz38xB_X69+jW~jeEG_F@}#{q+iN8dNF z!-#GDdbNm-FPJy6Ta)hD{;Vc(vGL8@_n$E8!n)g=mgGxaHhay9Q3=tB37!~~AyFd3 zT0~^Oa`C{{lIFgSkMwTt8#Qd%npu(IEi+P4pIx66)xBk>Hf`Evc1X(DQ8>B(2CPj# z(5_kejrgx3Cnf;ou6|Z|Xdek(Q2bz#&Pm9Zuh$6>v-hi&;<3Zirj08~ss zbrq?OkFzTj$ZScWv>{x^_vsrTTiQ>9$Sa@AeUl%N0lG(7m`y_5{(pA z;Y+eJ3Jaih3pZ-^R{Z7R%c;{FsXQ|5E-0i5?#Vt7r$g=uW6Rac?x>^=k>0L}3Gp$r zdo{~sA~Uv3>oq$zE+Mf?ctqP&ca(a8&DH5+yLP*NvRn5k%U*U?oh-IvFUCeC$)*?0 ziqbi~KwZI>_40LA6!VKFImwx-b`6{~8WQ*JO+?Z)^*Ik`@j1*NZ zOzqJ+QrXUKSFf^i)-J{tDd`_Vs83E@E=)|i+_)TBHaw)4B5g6i3Z7(8BDZgkgw=%R z7`VA9$TN%;5SPW0v19n;LeHwNC`Y;-S^HcLzNLaniquqnXUOf|0fQIc_bbcB`TeK* zM){Mgm#_nK%69e|wQ1VJuN|wJJY~v+m#fAqKr`yOvoNWJS{1maR&9Np^=BVnc+q4^ zJD63)|%w;A5FBRHX|^ zbTB+}ibPlqooeI7=tS5u~Fu7bz9OH?+u@@j(y3WEVpwa1 zC9q%A7}X_Z+%ZVKJm?ONsw$?u_2k%5K8DU;)-k^KwJ@5|jbuQP^`2`0AKe{?Fk0xf2Qcb*1dM_nq z++8nB9PJXH3XE`#p7_G@K0W(Qo~r)BeIJ$y)6>(WeO6P{xI6c(+jHl*sK}>X-mP23 z^sQUH23Rby=BKdFGPL&GoTuX4z|>F)M7Txyaj6Ad(MftLEq(d~W}%0xzf7InuVTg#WIS)W9nnl)O1K(?+%G;Hn0fGv$dr^gT?&^utUBKdQM~QQ<1m zn97;}kF2%S)zH&u;>9Bn5)0W68VC%&>^8O({?6M@tIN)*%T6hm)I|0P;x^;eNcQ#h z&uFfffp;8+Zf!wafzeigcpVf>w?h378YcKKjBunIE!DbASg`8H;S!w&lQB3LZ3GAz z{lW1Aei$4-409*CZ+2xFi&n9zqbt=bTh#9>!B!Tt2T;7{kXpocUN6VgVm}Q=U&zNv zR%ZcK(SmYL{k9-I7%APpT%pm%;Lc0FF%}OU)|!2(MpsUd)-~7_>%`~3UIS0&&2918 z-kCG^vR@i*j3C|fwPxKLt$nKWFj+N)MIyM+&HE^honp0N(?l3ckd{{Kr^4P3yM;p^ zo`MwadG*)(YS*3m@FaN~n1 z1Ix!wKHx4Gb3iC4I zQA^IjjI%m$l|6CnCo`FU=OF0(ur#>z}9 zVsvE+AS5aL2rP)grX8Y^o9A-o;yfqeSN0{Qz?2Lxpi@R>&ui-X_sgV(-`!vi_1X=! zH-i2A+n)SX$*2gN4cxeWZzlVPI8+Th_Q6LVfAA0HTwNUai1sIVpS}kDBIN&Exc4IM z1|cRKd@e?jV@UggHmD_#Tf=w&Imp*-B2Zen@nc6CjM~6QC=mYiw^{1HV7IHYzts6Dbz=S0S?5s8< zzG-Aj%Cgy1=C-)3W%d<{g@SR2WZ{THX+aLVdXrY=uwx&;-hfD@S>Ikow#kDx=~G)r zWfiB*{XyES-``3Ozy4fs-+#&XJ#w4mYW>}a+ifEMKjPj4F3M~9AKvpk&o-8_h0fBO zfD}OlY#<_H#fpmEAhy^5dqs^s#O`)IfkNUy)xYj5KgdF{pMdX{=g< zO)pvn!k#NPl&w^!43bSFlrLYGmt1fE*0Chgq37f*S|U8tsSojdoSl)% zyg?7$Oa7nci;M-o2t%%g2i+Ro(XH+lo1f7~w7PlPe1N_I_=c}JUvbgqR&Mt8Q2Eeg zaG$~<+mt~-g^=5%nf-7mQFMgXp1m(@mIJ2w$S*FB8ZFMQs=EJaRh3kJU3QaS&WX#M z%~}gl%>UjE*^9!f><2{#D0cvJLOu!B694LEf;Nk4Tb2Pm9wl62SzT3Vq6K+J7cbuH z(UgsFghi)U3pz6_0uL7rZzPxOun4>X3)7jXeVdx&($qR2)9@Qe=JwK$Ms(J~d8)>d z%Cam-Qa}q=R5vjqTZ2hvl+ZJFYuor6un`ODMxrIV-q>FGjbIRmwBd{nH*ttr3KPGt z6{`NQe~;|QIS>VQ~y9*DfF@<4-0c9 z{k8+TxP>Yc^`L|O#8_`XJx+lbV?8d00sJAc^7gj{xEl9)9JSb7Blkre4YR2>xUP+% zvN+IE^p|f%C?^f?NGpYhMMO6gn{XT`9Hd04$3nM1S^B!A8xF|3f0`?Q)pC2~{4>{T zE?m9-(w+lvE+6*x^gHTb{&8ad;n3iV>%aak+j?zC+ncvr6^n~?S|AYhUXs5) zSL&u8Bn{S&l_u!t=%12S>uu5w{a)TDp4Na%AXBGYv`>_OxhQO*TpHL(%B6~Hml{N)Kufr%QqH&(ARO zO|g9k-0V0=oLwsi6pyJ&Jjeu`Q7~rd(30=kmA&~$9#TVY7rx)%*HE4i>0!`AdRVIp z&N52K0unSphQg4yYH>>eRZK*23@5ExDE_M3)!M@_H+n1-FVvh<&o$&1IiAztGvIv3 zIn|i+gXi*d0Y7X~bv$V?Y1|0&MS#^;vW;%#ILcAlK3T~-@-V5OIZS9q=wWhoH@Ue{ z>uu~FNBUbN`~tpHsGKwH@f6`1uaNxvy)tJdSk3Wr=uKA2X54%^Icj)SfGKvOG^u{G z_#}uHDKk++x>&<+DLZ7DLX9qdDD&%O4RrGs{Y?CV)p-F=iq+jsW%Kd$Do1NKTcCSz zBI!5d@APjHLIbFu=#xSf0-~bD2)b^IM2e9_U#PvpMYo$@e|@v==2u_ctdlRum242} zP{%s3f%0MbLY=hV^XjEbb)KGemo8oPtT+0g0fQdD<9*hw@sV%92K$eE!{-F}`fzR$ zoujug2RcVx-SjqO;9>_mj?p{qxf(*5xpIRJ$%!}&5P@hsM{x$I+udJB=V%pF9zRB* z=t(Ycx=Sx%Tn|+Q$tiQQxytEcR#Tm^31(^gv-cC;7noF->~md-`M=sJ=FAd}iB zMJfkBHvps;g#6mSq+0x2MJK;Px+2f=>$<6&?&K^FlbcP2p&cwSIxGu?DJ~ipq1?mO z!4~366UNZ9z#Q!*9WMuRSHnCh~wyBR;Y$~IhpWci- zP|??T^%jNXaU3}93h)XxsbWxsb4(4rLPYcrxvQ{LF)4nz&)Veo=7z?;KKbwt8tlHD z&h}4o5K?#S^<3mDM~Uai=2EqkUIGuejmm8v7uY-zSr)a;?T7(;%F74YJ8D;}K{0(C zG~p~#fISW(z+i{9EcrMnIM6%4{zR>lFmCE7R7i&uvaqI85vvSu@J-Y@KZ{o74&MYd z-IeADK1eY<;^(%{{iwlaB;UmMs9^Jc*f-G{y1gi9$T!hy6yL<+9U6iv8%Qn_LPPj% zChaH$K&QSB_e1xScl{S)koQmW-3O}ouOTBZpDmZ?!e#m6I?FxFtnf!z;Mp7NfEL*< zZ<9x_2Y=pw@TD#Zw0a<(k)8zvk>`eJoz1#7I@A_*B%(aLg{z;h^7UPbz4<2O4!CO|$_>5< zL|RQMKfRj|l&E8WBKV@Q8O!xvHt~oBX9;W#EHsX`Q(h()ZxiAziWVJ0jkmD$VX)bv z&Oc71b&aLbp!qqE{Pc#a-@JpUvF*mpN~vv-&pm=?XxOs(em z9_Q(1234g?h`!Q%hE;~}Eq@&w44Vq~KT-(2U_xw%kpBgvE!*^TB777|EecY~r zHuw~;Ap2a$aw+@#7UcD$REcy4#3>v(=%+<*`vGaxrg{W%1mq>$RtMteG>{|mDRge; zN?#9eQRix@^!9Q16ljtTb)RJrD_zf+yxdjZm6nHm3N2iUHr&m2SP1M@!CPK1Q~qdZ zi!s6N*#ZQ3NZT`L#eYSUui`>gVMeTv)z z@ah=Asbd_O1aKvOuRreEqwnDQfZvCZH__~M5~?9l+ym(jf9q86LXjHb{QT9j{8OLG z!md@rw^nXhwRvaRiZ!#k?i)R(s^`ToXCsqs*B|Ss?k>d4HRGR~p%66!BJh%$qK6Akt z^6h3W4Rfr^E(;N2`z|362# zn*`fWGdE!RyK=umknG6%hCFcGc#}LOT3>pO;@4Da z&j=b(r_TlSN}Kz5zeXxo1}4VUr{G5wIaA{Ch;{ULKBw{C2=jpr$n#gUD(fq_Pu3x$ z4?U#0@_kvxFXgt6BV#Sb4~OFUU8k+@GX;nQtc;)Z!+N=nAe z+rU20Sla*j@4kD!|I&<_#xL3D&JPHQKU_W}cpkcZzrBz#qBlzg$P&qsJx9>$jOYn> z2T)?UuJ;K0W$`9HYQJ;nGOZb^BaqI(yoV|>iu1^m%SH?GWhyn$9HLI(n-Ufn`7)<8 z!Wpo@pC!L9ni8^?K&oQ$M~lnuqn$&)L$7Z0m$ojRVyRI?99 z7F08<{Kt%T?bx69D=;NR-Zhjjr^GpP1)b=kL+2)qGAYW$z@*^noKfj2AM5I<**|OU zh1IZ|HR!Q+ze1UsV{G}hHV$KZphgRPol4wV8Bh&@Smy9`6s93C>>`{YUx)MU@xG2` zoAMMqu91OGCJL&Kh!Z5>S+4LYT4ou1kZdoy8+1AsZ{tO5S3VB}St<=@wC$EkU0H=Z(!P_%Qhi`Y309|cHz>c!qx+a4jmNV-Xy1OQY;?K zQ_=P6oxEn!ZxVu7sM_!^d;@pSSXad+vmlyc@am#6d#DZA<(^!NbJj|g20fbP!DbDUa&ai$_mfe^-#>nO@lh8ijrJS4 zI8;;;E>21acX7g^r|;Rl={<}6Eg{);@8uo)c0Y&8@$vG<@`JORZWJ8;=cWmt6}*s( z?S6X8KaT?rz>918+i=R2oX8HVU z*bYu3JK?VVKhWBpKqC+vQW#{3{FnBqX06tlROUwS1*D-$Po?pU-m6k1-$fCm$NMhm zPYbQ4SL!ulSAssq<}RLf_wKC4Sk;2E9UtCguhiU@Ul9ZQk6@#R)jz|2@L%=J{(bi= z*iAXwd3G$)(48d`^>8EAxe)jp$CPoOhPtxU=+l z{GDY`!<}UiT}w8(v-B_?#}JM?%W%_i5qFm69ex#uo?pr)YF;lf1XEN^z?$}Gcvs_#ZXk{nl zd3W(M)_;{;&zmXw2+PHlYSVJ#O7|LzzS8AYb&aap^6+NTtGm7E?n3bby^G^6GZ|Ny z5DB`%q_WKbB8Bt)BpiHh_r4vM_qqzn_O~qWZQ8wO(^>g}{4s;On)^b*XA?I4^Kd~` z9#5t9U>&gjh-rwIxlK{P=W-5AS1=;5))3SD9UBg=79{3H{<;~41agi~XBzGcl zlgaJAj}CwEEtKg_dB@-p;%ssw4>*iKMSD36!I|Vk%FmE4KsuG{1(bDlQYQ6wP-XwL zrbY;3!#G`Jw~<06%RsT=>QfwKL7t%(RzaT8&oRpb5hMt-pF^HO5SM3YCs+Zfe!*qg zo6EA#_#UJ$;Cqn17_R6GZpU$-&j=*68AGfw-c}zss|4t`WK4BJ zzaeD&wp{NWp({68ZSjtLPgI$PNrQ~f{~6;>Qpa;I5N;RR{mym|lFIF@7J1OIn$ z_HSO3i%+~bf&<{ecb?Np^&G?zTvl=8rhXCjuo+P##E^n5erh+9pNGn7(7T~<7UfI> z#?J$EsIOqQxfzZ+ws;VM{!Iv^ zQ`cQ@sx)}GNtG72t?Eju_JQM#(-+||PEZ{grjnwKVWb!};ZnH6M6q9xUu9itSfxBj zu~dFNi5(5Ya1-g_O>*r4`M44jLX1-zfEXtsNBP!Fq4*?$(|DB|Kx|18ed#mw&a0o=86zXOSe4(XG2||!N~JmHdR+|^O?JqEA5k=20ioph!m*p zBkRB78YQK6@g7bp?h)fW;8f-C8tI2*@PB0)qWT7kCCi>bDErt7K$2Z!&#)I zn4e?p2HG0OHZbiq2aPbpCRJCn?^sY%TG==(u+dHHMN_HmfScyyGrh>Hp_humYun=c+_3i(Y{m|Vt-y3VqJI;A;vN9 zEpH`!Z?_~bc@G^Sg7(d=6c_Im|ADhh3Pcpd~RW`vNhN{QIGZb)VCZKOFRqpgdhd-0QpZ`NMJUPw!j8(uK zLm`uVV$eoZm;@8{QYI{Rk%#|7(8;e(>aprVLED1r{^2abUF2+97{h03M;ALRBh+X&SlLl&gxwsKL;m<-LuJ+^%qU z;1v7IwYB0hVyieE_@hQfhBRgJ$kqx%X$rVY&xU+z$X{&!?1v|)JR1xU)8ua?<3sZd z2$na(p;$ybm<1_)>|}#|9a5YrZ=o|0HgTzTE=6k?PZxxyp_XSzvM1FC!;nrfo_s@^ zk7vB3Ci7dI)YhToeW6jBg;19~kAdedco5^fj8yMTDlOgiX3pvGQMWoRE(;kmAg8Qd zeftI752R+!U}&1!>D9r1nG1Xl^qV1HdiK+b^1Y=M6N5Z_e8RK+!=nuzVabKhjVY0T ze!Aa4_S(DSR_d0NxEcg)@`TJ)7g@`~DZSg5 zs81M>CBsrj2bPktfFshXxj6^20p_le3D%TX{XjE{(3RlJF6Sbjr8|9$gUMH9Qh*%3X^x2 z0^c3KVYARIHRsy;g+vBsx0k=VS9?z$c7cspP`lvU-s7{&Q_|I*$g4=-XLpfnSsNqru5lXK2Nx|?;m5eysHBHd}{ETaj&p73H#wq7B#7~{iKn*^6hI-?TVuJ*xi2 zi&9)Ve^QU*<-U*DfhF5$KG5C4IAbl3jDM(%V|1A_F^h0JAu&zU@<-jlc?} zpQP=#yAb)pv>W+2_=r|cn|2zodo87}*jzKPJ^X$C9IAC7ydj-e0sAYt;0I7QST4}M zgt?fo>syk>X@q7Vmo_DUAd9Hm)_UxD2eg38=d&Wkk&6oFI zu-omKBNxi5MWaS75>yLE-ms?2+uB+KGuZeHx)DgPYujN*MCdA(CQh=i7G|Q<+9%iK zJIwMAA?F{=Q~vQE@~2Ew^8NQ^@_o6!?ECLah(_e4YaW0{lur*t-lH_)BAu%U95@g! z!5AK9Owl}e3~@6?mR^0QY}BZ-cdnKeef;_7k0a@@ocH{dx1M8Xo_p&`{oCTG`U=vG zWVgqIPcc+eE0S~*?Z-G`7gZOa95*tLD4D07QhSW-Hg7FiXp~|=1`-P0(|bNCl*dPj z0pX25Ee#L)p=9ymk{^N$9^L`|9sL8mjV=j4lq^|N@;K5DjIe($iw!AE-QEa{O$f#4X?3xW&&eyPg`b;GQSUBFj@-GY{mat$xoBSqVfH0kb!+v|Hgb> z`M$bd-bLS6+a6rN_qlJUO~Kx~qk4k%hcEO8-+SCQQh#oY!u#+s#XrGW(q)u0OL`;_ zIiaWz5#W~O?WZ;dA>dbk{bXW5Cd#Ie_u=Zk&+Vug;BYJILL}Zn;1VI)lODmr!7xNZ zomC5(`3W54fP-4RcT|4%)e9Gz`vxmlZu^Bzy7J~V)}M`kx4{kAEq^4xzhtxhIMIeZ z$74O5wm`GLYo3=`;`zM4^Z0_RE8?am)bF(VRdS;0|M&?N8a;xI!Ha{}2Ui56LL)&c zcx_>lispqnaViMg*Gqp~*|PT@GwW#c+|6c@T^!XKF{@~HX4-zqaB@MqSJiPEk>*@`e?#OMIS9Vx&Z&uR}+p- z5KKoGysW%~f9b22i(W=Qo_|W8KFHS0wqNKs`WN2^dZ4nsHXjMwai`v24K$W1y&qwAiS-mD4VUq_q0)D$;+`OtT@ zr<#5DKd#MQN~@Z^)O2#RwUYZfzIev*|2_858-lYFpz{;=w>dsRYoNP3*nUAcuZssp z1ZgAi?gHV7$B?u_)-BZbFj~YJ9i0~Gqh>x@b#x@k4XeH4nHP$|qM3TCCB=Zs2V%Ho z(v~?>hgII6#s5uH-KR}N)X&8Qcs0@&U2XoJSGq>*Td*6)4#r*I2C zFpLGNU*0l@4Z@Ge|F+GYGSo5BA;I_h!6p5!(?7yzO^1Lkq*`9}$RUXG`H^&}f&<3; z=kR{I#uM)&Zw98t4pjv(00MbC9RK$JUA)NIC9g@mh;3?&7aclOdx+ioUj&N;$gfK3 zqTYkM-5_Xc+|Q`YChs7PtJUi3?H~M5tjNtfsM6Q!uda0U*Hn5T^UN74YDx#9S4!3- zbTp6RW0}f3c3w=EYUSA-?RSy4GpDSq6hNY#JF9oIo+Dxta4i%pJ;TcrbpjljDrl%B4O}~MQ&(55`VAfIAa7W z5geq88v4t6(<)PA5h2|EiLkj!*jgo9s_akl@zXK>K=|NpD%8H@qoPl9!>EK0LrEIf zN<6kwO(?O)J|UAo!5gKbE0Cx7dlfssTmHC8b|oIl#S-O01yF{T+1Dxsx&nSIQXUl2 zt*>6>S5NL{8?L!jHm#rmK2`u*IZTNz4+y(L!B>cu$&o(?Q6TPv*&U z>1p%lD^W0{$;~SH2|4Y^p6k(rr_b^AfZuPxTmy*~iyz84r1Vuv65=w=JwxX+T4EVYd?PKrG1O+w}6L{Y0$4L&01HT-V8+bJ*S@osT4Zk2UFgMnU9eMMS}W|JR8`AVXo93DPrdu z@-&K$AeX@&^dcMZ6RUINYDBUbXsgP{a^l1sW5F0Ankch4m6J4TEX#J{y2g&;z^>7s z%w)MT$9Bn=u8#)13-iL6#A&h+O=Ex5@H%wFyTg z6`=O$GN`q=7(}Z&-HjochTu5K_(M?IL|kOzlKW25i9TpCG~5Ai<5G^3hANbPT6^V+ zl4C;|pGxW-DL;DNIbfu+`2J{>&x<+Gkx637F?%#2Qs#{_LJKTqIy4{1-`9M7D|zN8P}vV z7ybkYqvHvv<>9~tHavmmK?=HYB31R>>4urFPqD5Ha|py8se7=8)#8ujCLLurk#CF} z3Dl*dgU}<;=5j<3kpQK!*gQ43vA~0HR>3{yhXbF>#YRDSCMZ3H1Gr_@M-#j@|J?L4p*Q@npYbOKi^Q^8URSjLwbs z^3R;uH)?#lj$>02W_O6{J8)23_JuiB^6zJ!82ZA0c9$NWmfn8eYvuhGznIxS$A&RbEP{S=%Cez|mH#sxD5-UcIzzP;&BsY4aAf?SJw_Rd;_ci~k`Xv(7U-AgXoQ zyDacf1vAzyaDU#rc*ooG7kv8s7{AGFm#^E!v`?mAKSw zX|5`h;!>8@9fhW|;Vi(sf&>MwpOUP6pHS8AVt81Bpym?>fYKcwncm}>e=HxqdT4y| zsMUj`3#<{Di2*J8l=aG<)+c`0$ncz?fcThLUsGg!dSu#?&Oy1|x(2VfzM-dB5Ek!m z@D6QZ_HP+#5n3$$XxCtIrzW>#+u$)3B^?c>$Z@lmWDVb2+9_lF#vwcZJ;LH5xmY}Q zyP(9iwWT@0tRJxbgX*XeMNh=_n2;SDl{caDfB0ElD$k&}5b89{W$_fN6<^`+PsbS! zEE~PAg5i(%KcGF2ItZ^*o*ul!mcS~wWHBp}rFB_qoh#w|>H#RkKFrdiVVIu!)u|J& zB7%g%><*n?y>4>g3ba#yPfou_zH~+91gUV^bOBPZqJ|Nz|$grF%>zDx-)`a zBdT=h|A@bOh)1Vfv*&*ZyxWNzDkxykmhoj2{jpvFR}{4^`ALZ>(T4xzaIS7IgfhjWe?M~@%n zML`JFKx0XZYC+(4B4;hzk=(a zWbYX~a2UCkYb6yyJP6TBLP*XU2_jA(E{GrSqxAkdhcGIcdrpC5Dm6MpXY;cZI@qMH zL@^pXk2(+_&k-F62$sPQ2ZINWCD$`}TIGLv+H9c^hbhibMMTBR%5kcQDe>tTay92; zex6i`fO$(Ai&gS;vm&4l2r?$XL8Jz)&2+@#TCP$y7tgMA?k*?(nCDnZFJYS@%X0c; z6m3A7rLs7eaoVsn`6iMri|CnKur@f|f!fW*Gks8&RVR5NGv2%DGhMWmW=~h=zT+@x z^>Hn5hvws+90sj5H^88q(BiCx3ARfrOuZ=@nlG`S2PFFY_X!aF8qFX3lyXXaK^VV< z#bSBlii5A3qCmohCGC_Mnb&_%SNFksp>aYiL%s}iC{DO6zsvW)7L2FD+-N))=E~ZK zQ*|6L%0V3as{(4{ScQ%Qwc~_?=P$C?kT;;ec+o*y5+BP+o05N_vua#bRu9E)=G z@9I&mbw?^4w+RS73{m5l9c=o!RMJJMo&h^{SCh&a2p7O-B0r*t*Hr3(=LzUB|E1Ow z@%k`WxZSc$;SqX|2tQql-p?1MOjW*d##^x1s6@a;u8p$1sf>VYkgv|Bia6qG^K4<0 zHh8X$BWSS#^(V_9$(e*`2}Oz|9n}agb6k(6fgzEhxM@MWg`Ei7at3|NI=}oXyFU%h zL(FUHr%heDY@@vY(ixYknRBapWV0;si0_ysa^B+6;$-IX{Cn?xEH9IPm){vR^26MS zh_}zPfo$BQ&w6&O=#(M6KL6ms`Fw63!1@&9o+lFhHz#D75~92UqjZ)YDvep~g{n1) znA@FOSq7DQTGAr*@uYW?)WgZpa?I4<66G1RJaDC-#t>EM=~ok`@_aQGNae7#i8R}< zPE7S=!;_H#4n!b2m?Z|Hx)^wr#2Oc!F38AM3uK|VLZS<{22L~-?_z`34;i&9DWki8 z*+$iaFP1K=KjB(D?$pGhC&r9_V#-+gw_TgX-a^0rD|ZYZ<}OJ63SY==wKX*A(vp1} zHr^|It>_7V|JFxadV25L%*wYG77iLj!EUUpyn?T*miqHD2d}ke(1XxI(`6xN4KZ-B zab<)x4cz|sW7lT#tP`@m!nru&WX|!|A6b_mwS0g*5%SyxHlSg3ly#9$@paLuP$0p{ z2#^1nZ$v7DMmp+b$D99!b@|<&J3nu;uvy{BGk?c7qlA)bO5Vu+CFfSg5Ql~<%Sn&dPwvR-U$Pqy-AylYb(=?tW zuLRZ#-5|v24_oLQ%7U&C82fd^l~zK>1ku=!jSe|RPZ36VGId^KfT-mfxgN;Z$RC7R z%}wp+B4RjXC6Ijy^6`u|xRVz7xd5aZ94D&MLS-L#nHDb=u5OEZ56i~L8?JYrA$0z0Wlw)T;Sh@yQmH^om0W-+mUWsC0<@GZ!5Jc7*BQL?6nqu1Abb1%S|xBt&&53h_vK+z(Keh)^fdFwB1g*ncR5m6^(I=F)}9m8EKjPsdOMreXcrKcnVod( z;{wgM*as$u>;mwkMC}kZ3e^OY;IlYK9Y1GTKa@>_@T!CBVG7*C#YMeNyz7u5)L9?Z zFc$Vf<5=oEz6nn7EX5N{!;=;z$3Af6Dk`~)T<;)8;lTap^Ve8o^?2<@(nG3uSa*v? zd=~VZPx`8K7V1TtrJkyq3T$K&bQ{ly*904*gdO=G;**!~N!`gX^v=d7@qJ}1s*8s) zP~#>{I)fTFo+n+*Zfb2@mOjax>4vl>HwiV&$&OIQqkcLV$)r(D?59$Nob-%uVZf)o z7PXk#qEGzD7FqH6Et29hTd3kaTDT0S=in|^o5y{mmCkXrQ+aL!G%3DM_daVJb-MQP z-nryxXtTsD74;S1pW%7hivFcc7|fWUJBNR6u-sEhq?|-y0Dld>paxMZJZHM<57rJp zd4#`D_S_uxAN>7|4<6wCx0`&P(@WKgntvYi1HGz^oL=Sg93Q5o^?ylOe|0ope=*o! zPwSr*obPW84)%AhKgW;poTT@a^)FRHTAF@3DL9ipjk*0-?3wfX^lS;SVBD*Q(X;V> z!!sn@*&)ASBA!7!*}=g}u!_&ux4M{Z~2t zXE;6Fk5K66pT9-)@blnxUaL*73eR#e;QmUFiY`v0;BTJh&<}s6x<# z_zjuVX=uXlPxwxQ2k8U=udY#}P<{}Y;AZJr*8t*6X+-i@;?*9Wd&F?Fx zzUvPgG$$J_&ZvE04;~?r-CV2EOM*YqeX)O%$h=&3q z{(|poW8f*JmI||*M@49^?J(CO%oXG71rGPY1E{}Os`CL-5z+=G1$6Fv@!Unf{8agD z(?AJMpwDEVsEoHqm+lf>CT~NEM?=7b^U_fZiq1F-!agaed5IJUjLooC<&L0DZ&rqM zmUnLQU=A8DtYxUR#$z|L*4uL^m?NB7kKu@3(rL<>iP0V!ke!k%9r2qg^mF)}Exf73 zbr#8=37e6nfiRBTdcD1#$91Ij@P#&DJh~60Iz&-fE|!*ymOAY z>0TTa>J*B3JXfU>|G+$4kavN+VBcJ|7p{!VrY=4dTIY8nr+}w0ATO96dmVmr^T%?S zB|SH_V|F>ECok^YQFuen_@K0`Yz`F}>RA|0;d70(3!Yvv-$P3O^kaau3s2wqlk3@#eKH0?%MNh@f6? zoQ|V5eH%U>9{vFw4orURbUJXJcgmW$d02d_&cjEne4%(OXMJ_Y_7lgq?^s2LU))Dix5pY%H7Pfp zn_pnGHBRu0^wh-i6-4P+nxHvUYtyMb_jw&P+59#{+gh9jt`v*Mr-;@z)C&-RYu<=L z$%S~#`jPh{m0tNT3wGrSd-18iTcgn%<-hDOKCv!12bN-8VvwipYBGm1bDYK;ph<39QBysH>_{I4gl-ELhV5KhA5Ghlzj8s)%pBT3!8j%doI>m+khm zsCb+^`0?!b?bc(W!tXZNGXO{czkt39;kXNO@v^GCt)bR1rDWyxdLrK4+ZI|LrnVW^ zT5SO?VaBUeyHdG3eN81I`naAMx$3{$eB>7(qnBvrN2J38I3$f*hHN+ArV0nsdVnRMwxAh zoZx(x2CZ%?qVt4j9txsx`x1Ib7tehR*uRhm=gS)tBk-H7 zu+`10(%uu|VMCQJG-;}EP^GoFUCG%Ow*Dl@p=D9s| zCq=Pr$iE+AGeG4T0(`Sj?>o!WpWjEJwj(HUh2VRkGHAJRt&2bI4RIj~j6y>X>E?2U ziz(s5%+^yKCo)8yZl~07^;?=Bza;IBds8)d@h9ZlPnC>X2|CcA(s}uS0+gk9Qc!7J z>#y>z^f^Nm5COm6IblTOjsHf*>}I-{uC2sZ>_-c7o2lJ-!a`04{Ema5V;=YI5p=+7 zN8K`bWZn6iAx)jvw)F+C3~v6C#j5p0aa%t}aoek4m7AN*^{k(#QsUOnnCws!ROObJ zIcNwKI(FcIPuil~?b~1W%3Pk7#*5x29r#lyk{#i~p68?sO6gnLS3RL;$yRYZKi8tu zdZN@q^XFI6^OZUak9odlBk~VQ3U#$!O+j6)125;c8l4cut7`==c#d5=g|OipyOLt| ziT`R+V+#=jy%n+od*4~Mm)p@~k|TmeN{^TCox>~A${~VEvC479T4AqlEapv(zANB9&C1EbQRgM;Y1q}>gtqRL^Nzl2VDNrMsUO}jy8&?4R`_gJc1AqB(QY-?mDfM?TK6;F34q<=$LTl4ZDEWyX z6&O9mOR+F~kOdeOqA_}hXf`P`s`DSV=<2)|3G(|Q5WfQgS)?5IynO5V=UIefR{IW> z?H}zx{Epr~X)9Z0m)MqXzL6(>!{>$Qm-YL)}a1 zTf0@bWN#<@S>F-YUo+EC8#7&gYonw7B_OF)_Ajfb2&Pme-$QLoJPNsHWzh4pFvnn^ zz7xSkr67p{pg}rIbU4_TfO^5Of{|;cLLL&;Es5k;qV&})TuHrsYU1TFPh3OmnBChX zRIzzeDQP2&Eg1I&(^d=5uG~@MZttNKyb(qezIM5F>!YzPcWpZ_M>`7L1jwIU+Rq3YE5ehzr_9O}wyRBid|0>m3qsU8EeE=UF` zCPw&5PrOL+Neg8@;n7+LmJ#e@~-zxaC7x}J+1CG<|Q9#Tx!tnW7U zEO%7Vg9QAFp3A7QEf?!bK_Bmr=WdO*_=Q*lwV_Z&QI4uBw=P~K#qEK98G$xkDAbYp ztWFh7&^(;6_}y4{`*D~rx*BNQ&a<0Czi_S8v^w{r_%B>}IO=sPI!o({c}J7C=&ppZEgeZ(4GH-zlhZva5m8QT-O(=&R2Aj@m!g0|-Rc;hfa3VDSp1Hs#Q+<|4IonvO z@UeVtz$hvhQUmUt__dRAal&uQq!I)YIgn7nfztj%EK!|-x#9EB%#cOpvPvqiu2vrC z0G=pi44LZ0gNy2E*bh{DBZwj6f_tRiK3X8ySa^tvT4g%0dkHLBTp2wup=I6Z{2{s1 zpX_pMlKg{wvo3bX+A*2MF>OXfu`gQ}#*D2I*VGTYy*?#+PwTvdM8J9?#e?-TW*?rM zV)l$51+_wSo}k#d`d8R3DqI4pLPJz0fHPVrC{Q`4BA z#aHUPiw9XGi;-{2H#0)!9G;w;SGX;??hprhZlweqPq0hRD-(GsA zulxZ@fxN@~=%HGFh^9Xg09f+JLJ|!>@1W20L!nLDEttpJFV-c8- zFAKYOPh8_9J|qJNZ?ya&YPY>Z)1Wo^lJ{W%ZxHALC-?$%6bQEB7?&*|Uc?rz8Np4%>HcozXR^c+ag}PbAd!+=6j*3&cy!QLImlDjnk!3=;yO%rTI!4zQ~P)WlouaNH&^ z6_^beXDUj^xij&?FUO|0sT+FuPuAwo!$aSBC%bIlh>?5CI_1pRJM{b1sq$Nqod%CD z=ot2WMqx*FZ<59O8REfBpKR{lee)-qS|5`?oOEDHM%&V3-yeE1#dq$J$@Tv_G%ed2 z&}mX17VbwaZAoUa-qb9?i_2^yK|BBk2?_<-${tKLNgsDxe`C#BMP%2osde}6*)NS; zGqh!7!7~%yI4TU<_}%_N!*~DV+iQD4Oj~ZbL_uCo@iZjK)2c{ zr&!ao^|MiN|DRYx69RmV77WWX|wRf9!cxr0u)Wfp`U41^u3+ElvJ@{JV58pJ7s!(D< zQ#y)-$Mx|_0R9$1D2d7(y905Ir?qaA7H)CuC0go;ICN%Uu64b$w;wpvuYJ+r0r9C5 z#}11g{Zjr;X1Y2vy64nQCnxUxd0(HNo!8XGj(u*y{1+xBX782%d@Hc$AoYzuGRJm} z)B|AqVR)j|kkMK{WZ$>j`|n;eV?g2)M}J(k_?xkE>ygKv>eF-4p<$zrF6%w|2Zbjj z<471IY#K~vf=UxBxSoaNVVA38>bktrd=c1}nVo3~ged!O$|4+|yAAx!eNe0R$5_x6 zkzOo81l+n!1j>{!cTwvuc>AdR>%BXU%QUoGGixVHKltuXOq^bK?$uG_M!KaZZhHqE zb2564nz6di_~*K^M0r)*;L($_x(w?Wv z94blpf)peS3A@H$?vGw=;eAZdsXLzoAc#`;cD3@AmJz zmaAjJvxa8WmmCb~^5pin7EZo0m~EAR%AVA{Mg793Do2G2_q#ub`H(IP$68}POwo-E zr!y(6P%m{1Ji4#tujJ49p*(u+kXUv}9c4GjpU5}plyM%!DU%P+7S|lZm>Z#ch5*x_ zhB2`zLm-JM4O;~D&r(B48McP6gmq;I*4j=28O4yOEHCOpWus! ziQmT5Kf4E*2e&m+rc})i$-u$*0pK8^!tckGy;t$z3-ug~nSci*ppy#1yxu;{E0X*x zhs-JmtwRmdd6*^?rLP|N^v4tTcNHedTl}+Pr=DKX$mHx4I95ZFu3>X zvr|!I-(2MzB+J(~8{G1izcJ^RyX_}$8`ibQ;`g`qFL?IXT?;>ab`rc8T1&12eud6= zo^yVHv^3a1CzwMR8*QJ1+)RKZ)(>km9_nXctl1CVRQJI?#Z5+}59;ptP%Z{vHJVf7 zp-%f$>~*33{*V6MV@qCL*6qD(<98O*6ux8;-yIm#W7XO32EN0(Tpwp}E7<(z^v`~7 zq`rT}cU#InePsdBPBzcWI8&{70sZYRIv#GuQ54Jtv->2VI79xf+nXxx?CRC?sZ&p~o3LPd_q{N( z#eQ}pY3!bY;HwX zO=gD^7rrj4n%5c+;f({(Yc|rT2@i;}-F1cN&)6I{Jd+fKo?sR6nxXpQD2yXZO zNqh$O8_#f8|3vwMmc|W_%$)>vG&oKS52qv4T>yXahu9D0u%#|_)QWz6Ru-kV8NF&i z=S9;;=C%-oZYy5@{=(C}>%{2Za|`lk=SN6VRFCO>R^Hg$yWf@@a{YU@KI}qH*?^>w zoC)394(!mv%_S&4b8u;o!W|`99iH4UpyhzrJ1il7NIwc_ZD?6hpinoX7%70hdl_T*XSc)r;x2xfq9REzJrI4p_NHJr14S` zD6^@Fs$&f*5FA&Jd#v93JS44!&qEr|zSF4-eRJkNR{fchGrPw;qWjo5t`VN1G2SxL2qgCg8Kx(tgR565$~jacOEwyxb!SHEJSAeY zM2iWc5!ws^?;z2L-Q*Q6e0c63|2S7S+%`TveY|aW-HOjE1`n?Id9{%FC`tfzIy@ti~S#y(nWU?lr;OY0)4UCK$ zwC>v40`{R-Wa}XL>tj21923UEl?v&-=KQzkR`(JLca;xIP99pm=c&!HLGBr{pzUn$}1oSlWtR6_euuoC< zORMVqU?7o(v31h7Vyfmx@;6amrcsTPy&IiEYMTxzd>!R3%$Ur&E<9SCId@e1kPbuJ zN9T8LrClys0)pKAqx@X0N!d}|pBmdv`en{*OLD?;r}Rwf*D>4@*EPk%*Q~b$MVh1A z$NGwzgeRz9Mxpd?@dS7Yzr+FuH`J?et#DQPHw&+v%jr7$;47_38b$fTkG<8$U8`e0#M=IrCs zg@g9qeW&Mzv>LXwpD@=x=D^P6;Y<1obMIFioiJK?HucXgLfqFI3`#`-F_a#rL(Li4 zMp}aS!d=@7!oTevH8m)yef|fWH8)I1ytR2?^=+ zTa`TpTSA!`HauB4RQ$s$oF&HfE!#MwZ(K|KSJqclRkuC9p!m?7&YkBRDqe8BZS{>C z!sgn2({LNVZ*0-N>G=PCsL-!y^uV1rndausfuoD6>a!|nZ7~mZTV)Xr`UeCulihH9mSSy@uSS!v8$E`4Sri1;_QAewVdb`xI z!-8!C3aYC+AD?-ysED1G3gw;^G6S4r;vs(6-|f9?Ua!bb14kDp z_1-zZS5#KPC?JhEkD!q6U~Y(e;M`Uw7bfokg z?9hD&vKAatQD2}41#%O>%=!ft4vDZ2!@OxtzQvlfq|PHOl$00Qw2E+%kt9)Z0e7C5 ziUUqfaRntYx1%5yvsQUCx90a-JFZ<#P3#ksXLiV0xo~pdgpFIwqslku<}DhPo>o}O ziscXdlUw-u#AU_!_3fJ@Bo^(P)*+^F-Prp-ppZ)Yo-Iw$dE=Mv98@uV--K2X-KK1w z+AXreBQzx@cYsTOBs0Q5P+AL4%b&2D9V;~=`-`p)bX zRh_-)^slcj%FbH!>O9uI`iA&MYO!tfSd!Z56=T^3Iiuvl`o0A_KUzAyZpToneO#f) zE9F@6T8d5ORjFw&6;(IL>Lu*rVG4imf1-WOz6U$bv7T~)@FesG#XCr`s?mpInLL}3bVDX)nZ=}24md(-@bncL|^o>8?Sd!Cm>W-oRYSDLApZwWD6 zy^7u+E}Q$#)`0`JzB70Bo0~@%?QitAP3_cas;z&oSx*$S>@s7A!l$E<<-wo@o(}D4 zBd=me%9QUzZ05VR0u&d(Ha>rucJciq^7)Y?o)zZ(^`}rUZp_bQ1E0pJ)ift=;)5@w zB#ara$|mlj$FH{;lAWqZGmfk@vf46PiWc9}1PSoS9lIO>6*^PWG|w@I)mL;W?H`{u zd|pmL>Z}>#qmpN=AjT*Lta$)j@DGmeWeD*L`Rv^EXqmC*?@?bxb|Y&)6buqYjLWmZj)Z1iSIT#J-4)fLhP8mGr9)G2Dl(sb=0$SyJ)1dfw4Wtcj&qL z{4D#iqb<9)3GP&~vv4U3Tw}Kno{<}vGIV~o@mb3!cj>fZ88G6QH*~x@9&3j)&mj+V zxI#Xi$15bF$E^PG?CBdM6c^rPr-kS2qvi7?=u%?Ey|vKn${u`h9Vs0p*n_y=K>X5i zCEq6XbT!?>Pw0tMX1aYJy&cbea1(qYImB~Cu)FzwL`Tx_X!bOJFqg#(Z{E;&k|@$s zg?aZY=%L?<5JZ}T3UvzSVeOFa;6wWe%9&e?9W`XZP^dALwlw!sHRmK3Pm|EcUKX2^ z%8OWgkT`tf`g#Q3t)JIC8N#dIU zTRsIQ9jK-7lveq&p53#55Rsb}8s5JDsEMhGQ$}VQLfR#L)2>%bQ&eWZc)#p$R$MtJ zTQZm+fZhqYiEUS`Tfb^SiV%`Bsb^4TZm*V+d7V4@C*`zoSBqZeQ$ym%3@FtcT{#*c-JSzk6Rbc&9wvS^1|ri+yzI+^v z)|2O~?$fP&bUI{+Y_7pvhRBJ){)FA|=>8;&QL&szW7GbuhL!Y~{dxC`3R2s&LHSw#VleADY{_^V~zl^N$PZSS_j^`)vaxk z8qXjzUdY*kU-4Utws6@!EO!={Jb2$2tu|2%)udJX$X{V(3tC}%K~JIKBXvV}G5JBR`j5s=`h5JJ*m zP!U9w=zvBAjXR<-fAkyT8gX-UzF0o(8%g(g;zZH6aUBF%}bFB zDVtXbf0+Eob}_NmT3 zFgmn2%xT~{l(6I~2nMO?H9-o@3CtM=iizH6vZvOdRe3YTa7>61@x`dd77P@-w`Y%X zV-MK|Jp6+W~TKHyI>j+VHNy@Xf!yYunxGnhKKTBd>u9KuOjO$1S9{Lv9v z&K~m7kN12@OMYcEWS<4%g0M&4!|6t_s-gt^P{{`ATa0V>;BR}_zV^JQQ^_HWuW%j=xYxclt#G9`T{NDxZ;_@RX5)}?vLL?vfEEwU*+O$h576yeQx4fECt#c~&|HIZ zZM@`16`_)@zCN|uj++?fg8HM0-`%ZyURMIPa(ZG9y^KBd-}B{#d)NjX7H0Px1T68w%-Y1FNKFLM z(Aofv8KKNY2`r%7*;uYJL>NSqb7Y9han#bpfOv}DrnyyFTN4OMDL&&4O_ z6^0&l>b8=<7mu6R-nunq@W!Kal)+os`UoXWzlqG>iC%!U7RY%)6A*gRHwx1?Ab`KV zdS3WQ9R=z9`xl?^9XPyX=?RrB2;{2`tqiM+(p7q&5N$TpRAISrhQJtiZL|1H=HOr! zspl4zE-&o;X8T}EQNMoKDe2L%Nrgjl64ED(9A5hA6*_vG^4ga2S^Xzv8T~4?z8NEq z&wt{X4qNYX9$>Ty1bk{Cp~g!<=`SwKK$&Kea3La`CTN3JC)%9Oi>dH$BCZQ1D*`W_ zb)6Sq6|XsMC{>K%pqCj>m0>&)cOV^W^+oP#fmO7KcRp=!I;&^-PSrAuIkV{9%z`e; zK6O+ODX_OSTtxOQ;^SlVGQLb-&})eX`Jg4ExrEa z)_WWm%uVL;xh*wv5tzA1!bncfRI+=jDpp|jCLf;6!_H)_TirZDSq(H_p|HlE$QrgU zQU8q7!Ea#k30?o;B{11+L8qpQ!^P^U-ow3-%#9Ld91VZYH>asjrEi_uO(gf;1^ftn z$)wZ!4eflkcg`PD>DGPcT;+7p@~U{wAIALW1kZ>#JyJV5cyvTLlGw8(0;EWk~^6*|nt?eT99#1n1Np z_`FWYsWB9x@|+e15=dSBh|d_W7Pd6Fd8I~+zPaR_UI!siGe+zy=8Gajj@`0*hd!ER8)qF z*QlgyBr}};&HH~haMfV{XJG#e8gH$JoMhXdadb15eBTQ-XfzIuho;eYZ&%OsS>}V< z9PriyU24WZZ0}3EomTSo=GPv}aDGlFtvn-@wqJ2>1DWf5h5YlVTdS>V~M?0v%(l&n7p=UO#7HNF<~*alVgU*^pqw`)pI4E7)|pQi+8Vj zt*KHg)cIHXod|{Kbv8I_OQdP~k@^Kv)pET&3IWmx)luURa57h7q` z;+b1de(FkLLZ5nMN-4~9qcE!0ENRfv+NeuwtcGQ*rh~vc*8j#)+B_YHE!NlN1 zT@(v;IYYiB;e<8`u6s=aN`JpccO{QORp5J&8&?s48&6WnX5~?(2YGe={*qX}ADare zJzx}yYt3l=jrux1C;d#Uwjk(I)5$m7*WVYQJ`5goaitHb^E+8*2BjNr->f$2Wa#eH z>Pf!cd?{Mu!6%ByUOCgs3>sn(*S%(JSF-N)l}Z_jRT^F=rq$bu#I9)icXL72OY4?T zwQa1NEcrUqa`%8&A)Bz)p1K61YlE3=^3`anj732p2V1aac!J&J0zB$UQyo2dE(r1o z!lb7$5(N=$-kh+3{fbW*U{9cYCOdCAYp04M#h&7F34isdjJEEJ64vA~8Xj4uJjS2h zUg_%AGqKBnE^GIZ8lt;NN8kTL(q4V$Up)$a_v&_?Ame|o&T+QyRCtcIT6`pLvk+=z~9{aqv@js|`YlCDBi#KLsN#5JIuRc@g}pX8c>5 zC3Y1DiL%%Vk08Ddr`1B8?pz?2;9^xa8WE-vG{WiRj%~n|0M``={v+0d6Wh<9?8uv3 z*8Oa5Uc2|DaW{87nR4NY)vIToT{h6*Tr0-)dwyyUlI!00%r28b-wY$LMAfv+&k`k8} z8$m?pz%Al?uD3*4ACQqfJR3H5&!r{3Q*36PvZdP=W(&f%sh7q;S8Ig_JohE#h5elxvQD(r!ccpVf^(gIVlP@Tk5cfbiXLReb$`bZyB0(kiN@a zeY|%hZ4ZOAeUAlGiW0YGj@tZ8%Ua38|RaYOB&k)(VmRgi>La0J-OEEI#4g51ym|xI75J%V~E~GTWBoq);1$0uV#Z zL)pG=S3A)-NqS6LV5};aTFzr_+@v&DN|AoFF5o0<<>b70v9b0gDH0`>4zf?)uIUoq zCAzy6){O;D6JsY$b~@!s&6w6ng{urTd9m)PGd)s^a}vV!=tQkLVhBo{Hs-muW1raZ z=(xh1Xzdw8o4n#FE1qYu<3AC9ON>2pRNB=*BwqE^;HyC`R#}uA6Jwm2cqad+3nje&qR}%w?fs)tj&T3=rv-_oM&nJ)-D^Wv3~A*9}zwH;D<>fI61>V1HU1juY>Y~ zwZ)%j@aL)S=j0IlAMAN5L5v^X$8+F&7T%U8!3UyXvU|~L7^%<(%&7ri5GxYO;)C8} z@j(z)tJ(gcH>DZ;eRMOi`-$pmBG+l~8Fg2j(%AWteGvIl{G*6}juD?@A3xVT23f+# z5t=@d8r9LTj{pbnnHhsh1@Y-9hQS)vA>ari3qRrqUJnDtjMaUh9|v&%_;t!YkR zWeKJ6g2yJOULLiwLInCX8Ok1e#y?ws-jZh>4q;6clViqkJUzHH97*# zFst|vEpoW)wsWuxe2W?Xib`~XPtSa17~_U+o`3@(bW+B#+T%S!2E&mY|_ziVQ4 za##%6Qsmn6FqG=V(c1917*kXz9oZ(w6u1Jtw!WOVNyB?M7z~8?ti3Q`m3M3WLQ6@iW9T z3)w6UoAV9h9~?(KbGTeNkMS4bUWNHv;fp=*aHvdw-o~FGqgE=1RNvDB@EyZeM=iNzF;_W+ z=Np?Yi4{@^p3maXQ-pisYW9B9ZPoW;RLlD*w2p3Qe$L-_k7M&ZKcM)?2_kB`$s;`D z!xIVGd!DoUtSm1i(2UZ?tUeN&`@-JzG!4vV2d4wXbb-WPR6hRbi=N9#@%e^5_mt6< zs~SqzPdK=2vKXJA_0)4OD)-Av4=-?xdwtIrgnm9D!|0FjGKL?YM>_Ffewr^a-Lkal zV=)x>L&4xQEI2DB!v!8=b-7tHkn+F9XgU_W@b&D10a5*wdnw5iC(RvXd7|B{&^CSM zt=KVQ$=)gBieFDu$2ro}Ii@tT%wrgXNUs4Q7BqtL(pS#72x zO_PE&kekXYB=yS2Pq**BY~6y@13D>(_C4V!+raQ}k0I6o4}_$$b)vJyDB!VD@$m|w zchCbtu!2b;pX1_V^%>deDkige3FWN#I2-c4J->2ko}R|DQ~3K3n(_RTk~3(~n)Ce@ zmQ7cFnBtg5$j&kS$BtPv+K&FOc1Nr(ti#*^Nmhr^K4XhxWbs66RFBjR`gUW|idH9` zdh~dw5E9mnbpNgT-NsXKLDtl#r)^o9_s{)3JFa+q((CV}RU)-APC5SO?2$oU!9|M? zM)->=H~#^CPP0ciUN-3~;6*uJM*0mRgn^m-pYdX(WN5Oj3n}H6Q;94@H`7EI>oD|z zU7WP7;-^iRyLj1(zWtXza@O%SR^WDAMlyY-*Ro^VU;bgm%Y?4C z{=BdE!>D!LFm3tH4gT2)X*;IP$ciS^+U*~e(-%gB=+4s0{?lI1A5m0pl-ZuZ+8Fto zjdQP=bf4q44RPR&*pEK&vO%(YfMl&>jqL0KscWz@5ya)L*tr>y)P9ejobNiXY$r1v zH;8Fu*M$=Svm<|0S4`J`A$o4hBk%i>{Bf4}!tVhP=YP*!;F}3<7{tGW>k-qe_()Y! z8x{{Ix7u{g+S485?AEWGiOdrFg$#U*4CFg-#L=-sXZKFGmDDeBUYIv3H8~|A@o7c* z@%FWoPh%g}&3xEa>9G1~89f7K+?O)`mw%O(VVp;m?(#nV9GK#HiZ}q( zFR8Gt=`Hz9(AdJVC?41hoTMJR&$H`cC}d}mEVdy~I7E%Q-tn=pBGOf6&yEqV_KfT2 z=hJm!$$&luIbD-G=63AU(-1{y@nABsmt)56PuDH@`vm0^ox_h-ELy&4*j{Po0Ld@H z5@yh8{Yz%FiT5tihJ-}K>2+bYl>TvToiFwvL_F#2tDIT{D%neCHCro@EW zur}M2%W@E4heo#Yq;J5*Wm2pd$KZmPWNRWB`Z&feQtq!EJf?@zNQm9h`Dj9qe$!v< zvFvMU>is>+g>5Gbq60<}{f3cq=dSFei-!5c^z0_ZB#oxOKpv%lHhe5D{}80c7FivK z@9bO(J?QSZ4pwwCV~mQ9eY{taIa6iskdV?LwCjwt;^4~*I}fLadXMbgwNRC2nY8v;rv=G-66Ot?yna~smBD&)G1n5C zZcB1>2u9_R`ihb^Lma)v?9y7I$FAQzbW-~8t+?sq@*6r^>?ve1`R!ih7U|6xvzbW& z0oH>p1Oz<(b8k&X6nV%*rSjy$72TCj@*M?)9)2Wm*@}~cIxH)g)1|$gyfWr$>E=*} zZ$Uy~pH3Z@{*l|85})He;zA}9dH(EG<8~&8sJw$L{cz ziPHGE=S7VHlEd?-d3|Ea9Uwl zevgD~AETeaWHV)i6b~LfC&z!dPfTjgK~eOIHU)Ycl1=jX*fwh4+|ffb%<)-$v8rSS zmGk-xc`9-CBO%3i)M|53beNZKnAHFe8`~R=N`M&K^xFemtPgNe0)WO0h6-`xEFb4K zmHQ3ptQ$#2k29c$3$_i5aeo*?r2m;2J2CD>O;OJZdv;!608R8VdNA|T$C_fIBEs4h zUf#KPW8jchNS&qHoH1^cqLLX(RLpC$c*bYRixjp8s$r`5hvcTYDbiOTpDPo6V-{Eva z;K+9;)F9f(q>7Hq$V#JoO6;A74()6&dHmq5g9mTPck@ez;z`M=TNM?z4&pL@;co`>)86U(#OcfugR1Cay1^Jg>#D8o_Fr7oBZ^cu z5(}9D!*tg^HkL4e-w&}kcJ3w6yFbGS9{@&9SE&)%MvjICMzImzED#4&FV2e8RBIB) z{W4R0Wa^xKN`Pm~eezzqdvL!+)0KM|w-*l02Ebwc>$qI}J@7t&U$C+uEO|c2pHFhp zmSD1V*Ql!f0&E@peXHZU?OPL-fy=kdp~GHLay_%nS<*@4V^2H!S+JGTq&9CWfA27@ zQ@W3q;q+3|ZSgrd%AFU$*9?pJzj_wpVK9g>k560&g*U8xR%(Zy<4Tqd>9J(Ogx#~o zKiavZdr~%`U(J%Ej_EVH*kf{2rNh1Ka|U$mNdhfxFIvL_m(Dt}wyalBRBHSDJ!SdW z3*~^}4LKHfFv!{!IP(MsxUE7lz!<>lnc+YLwP2uA)(+_-N!=2a#BP$*=gC*s4j(*4 z=`>~V@N#K#!)q_TIk%u-?wc>ZMz#^CS zQh7sp`xa41dnQ}Pb37vu%O8W`nJj3fyaPGj%-(TZJ4}VrSKrNhq5YIGi+4XYa)qzf zU>$yOL{d_>k$rP>I))DHMh6?xvnMRx`pDA3j~y-Fqr9UWCi}^Zq0>4(lAYBpH!H{l zieiVsZzH}5y14y5+-KA5@e!qmy*(aZ4}q+Sq!Z~zwkBqeGH{;{nFOhv^{6c*U{7$b zzDK52=Uo4a`d{TU7~ZdW{)cF0Hd6` zZFlhoY`h$x!q4DLY^u4^Cu!NSdd8f5?YK+EBXQwf?*X-gMdFi5gWLA*kd9D;Hi_x| z;(}eOx&I{Hi@OY6k&(2kFg9)YV-qXtH+^vKAR({Lc(MBWnSC8IzJV-#OS(q0)xlhr z;*dt(nt=zfa@aaNE~k-es(&)sXl!NFu*46ysg`Y)AMcZ-)8(`u*(oE=B;d(HC z8s6u=p})+J=lp%{gOOhXyxa#QFBLX4u~>Ka^W)9W1KZJj+0^{JmCq=JZV-b1!}E5c z8uI(!$FY&urI6<5t;R{Edyrf2dB4?j*cyBs?!S?L2Rz(=Bll{0ox{IW*~WZD&ChXr z7tHClR5|p}^JG%VeP{eR#)%K)PntjXU_9n~YUL+_Z;ivdRB3owN8_@iC?c0&;jkX-W{Ge-Vkw$JIr7iQ|bEliKroMdx;y7T4#2gzP>sYyDSl z8KoRzumdNLUq*b?LmNDA@z=1mfWL;VMf2Yo&MLo_&)MXK+@G`3b?l+>Qt2J{cz=06 zOM2nw}O+Il^?%g2@to6A!g=hgmNQpg~urD zcBL|fCsN1j2V!+u%G+t$nDO)Qholr1kR^Hj zV=RxgAz5edMI?9!M_HAc#fxW87&5p=+*snx=(?;Rn(J`DgeIlvE{WCW_g65xxoQiP zIV2LQjJ1L!-I5lYg^a;?Yb<%wTYre2Af?X9WBk1&)r;cWe*hlSGm1|OKu?gn4l>=g z$T>_oAU>**JB@t=fw13Y$7o|RL-)k}0g#?<1<{_V8qHMW_H5ABLo2M&1^51!i@2Qk z_}1_oHy3P8=^eQU@4KIW*z(*)XS<)HiY$C_EzeVFiDyl*7V5SwGXePZ3wE4zu^cgYI!W&zr{wFSUN&j(+f9UQI^JIM|OMMZ~r?Yt> z#p(#tkK7-pe!BU2V6rq-t?@ix$j9OD2inB%+~YXEVE((7_fwIz@-g1u=~~dr*M&X7 zd|jM=b*=@lA-FFLzWi|Tfx9;ML(AUGuIT}C_wh6Se5Bv%>59YVX!q8rQN6mI?-f1K zF`4ANQ1wRFQ0r7O{`>yh{`NygkSX)Cv89gB_A|Qj@#O%(#eHqi0+$slhilY-gsT(a z9@YFgF6Z1nIxdG{1#N3OCx?pP;O>xn=}86-@z^QQk7BcQV%|y|E?WC};&9vu6x^*9 zaJVt~yFHK@apIUUos-q(uCYC)?U|7~;XM4QOF~0(lDmf+l9Icq)k*z7{*?4d==sv> z<*Kpa8SR$p)t$%>i*q(_8*9vXJ-mdLkj*n zDQ`B-x5n?BVoB)|F$y=0z^nOgC_a!|2A~VKPuRLJed6{Fy7gj{`#z1|zj>a206n*` z>9Fg1^Szw=xtxLL+na7Hp$|U?{h(P$5>~wV9*^JG!JnpL{xrbjzQ3CTIPg2;KQ=3S z?o_znEglxq2G<`g?|Xct_f=pJ)tN8Dpb2olp z&E*jL`x~;A=gc*qnB3Q(OaMaXut>0YSm6&&{^YV$GIH9Wl963=A|iursfC*_YY4r#Ag6euZ44d?(EoG#r6} zZoblG8`9H^0d5|mWyxt4W9ZP~LraDa3H7(8B@a*7UXhYH=G5_nuZ+n|+rOO*f2QZ7 zLq59x#TOrZ+;L6MXRhvk+OdelT_g*X4KFL#HlkoW$Nwtu-zG;2QK!xMl(l1LZCY3|bZ)2Ag6yP8n@Yc&wKfwKwPp^sPJiOXM`lJ=r`tM@ z?VX;OSlwf9?Uz_f&si5VM|8+Tzpv-Nd(N)-JMR5J6V?}PEAGU-k)4oW_YMs83iFQ; z!%U&9r{Z1SkVdPj2oNfKw;MJExZBF666Ct;Kq7-)M`IBT$s;0lbmRU52k`#`%4G5z z@lt+Qw94;tKOAT4@%0YEOVUXONv}}mDr=Q;WiHuF7Lmsxm%haLe7MZ|0VN=jDpE$% zgGj9pOSVA>4jLS4D%4&TXd)?8Q1o<0djVubATA6SS+d!xm-3v4Nzb>*1m(%&$B)Zx zyF0qy-^}UF#?8aHUP5Fo38NA^Cu$Lqi{>*(b`dMQsAh!}g$8{b8J4X15YIbhw{;d$Nq4cK02&&8 z`_jwKE$mF#jGtNvJ&jDeFcEoRx6@byG9OiiAg!P_-owa^m_^ECh{0L+p$pBeT+aio zhsUTPh>dX%!YFiFRY9c{0w2S|DhUG+DUVSHV~i8$xY(gu_z*Pi3>vG2c;w`%!jP1N z?gP2Vzd?PW6{77nlFVw<<*IVTMyhqvZTU7q*G!B>q|UCL%3E}xH2;FL59)?~g3g7s zWju;iOQ`Wy%K|5m6N!n!XeXELf?9e z9>U-!(2iWARA6|9D-{j^*2SoM<_!;Pn%ys|P#qQ$5E14_!i?14CvliBiyXDojNOJURW*jVmBh{3U8fQ;lGLf4ZA8;K<)7*`zz3>O*8miIz z^>&&*5Ur7n=`4B?LZIr@>&mxC5_w(9BG0<|J3kcLP*#r;<4ViL+05t6WCgkyYi{@uLJ6&4g z%w?sxMRc0Qt>43AczH=em@Fda6}_W*hm{)apJyeu5$`hLz;?4GlZ_$zIe%u5?4-re z@!%$l8zse!QV{WtE_ly)u^1k zmtcUPpAPtx)hPB7;?bv3_A){~iS9m)XeY?>oYfUx1k(E@0w5qevD5$nU_g{Ca?n*u zCb>dCcUj~Qb}F_Vz>)JPeXV6omD=DX8i@=MjuwP$t3rWQAd9U+^^&G}OgHxcF9;(H zsASSr4*K~Hat+PtINjKqXfUQ0)m_n-E;v*j<{wDI%o2;d@5sBt)shPD0O%N&5QrU& z>;nWcxuc5MT{VlFWCEJ*SFVzz0U1e2dBIbbmz0!DbG>_pe&#wos_)}VdyLsxKIXj_ z%Ga<)^d9<1v6xqfo{L(8q*I0YsC|*&a2KKQh&soed(d{n+dg&$Pq-P^hP++4ew z7zBflua8Px&{s2i7nG0nnc9*p@(DATi4mL1M#idW$&y*eGjcWcZZBiZ3pwPOP>UlCC2+ zHMj=B<2bv2VP41aqh0$M>h$+D+m>t}v4jv;G$`qoVM_sA(_X;X864=J41|8cC|s zzy%PEKchVV=u#$xXd3B7f2YMBDa4v|xFwM*n$>J%_5|AxY9Z3@1!J9tNs%gMM>^SF zI4#o(H7rRquS)f(h)i)KxF3-{AMCvMid?YsKk$pxieKavv;tNLR5|Atum~lLU(iZa z2J=V{^9u_-w~%!45^G~BuD|~{xq54-wDSJ4odA*3&aLxVP2M8%73Ei23`XQAo~B|+;T+h5JqJ3N2Jcchv*(c()h+e?Wv8;(HzMumrK3>W%3`wC zJF?x;O9O}4B9+gWE1FuD1FS&wpo z@&hrju!Gb>45NK z1pe?0Yp5<*TFt5w>)cFxZ^Urt+5O{S!|Q#_VbMV(EWFU_HsXWGD6p@`;9^sHi@Sr& z+TA|UF)IRW%$EPFIdA=s>xYUk#J6RE$e@2)y#Wp}x@BeF{m*OXP1bsBBiM-_;0B&W z!~Eyz7$=!64;y^{KBsb8?4z7+W%Nn?{)d@=*}2p8MGJh4cZqOA9xK{p7JsCxLJbvO zK&6UQ;Gl-=HnZgh9pXAJ|F(<2TOfTQzM`7QBWOfcMiX(q>KJ1>uQ8ra#8(dK3-faO zhmNb>`0K8Da+O=`58FbNW}|RAa-ER3Y02 zQ}U3J!}awlT|HoX6)`7ym`^2SS4(t0M1JFKoFr=`8ObWA)HuDQ<)#Y7C%gs~pYTJ{ z)Hy-T@{u4n)JQ_pXXgw<9e%WjiXqjze%)AIy%E5y`}J3j%Lt5pgpXZ#N>;(nXk>@f z8koOgg@E6j_4?e@S`qACA**Dy%oK>-Yp`m9YQAcXO0s(=O1V-GX|Oy&mXY;73MyHS zPnX3b&KkP-b`6oGJGz$7&}nu))u?RFMl2^wg;$F<>^i=rEQ^GWymCcZbmfXl_x9UxyEA+)OY_ND z+(T%Duv#r@1Bq(M3xc7Mk3dCD1rjm&frCY^#blR-wvmtowh7>5?2d-)%tj0^lvEY>!>LKsIm2!m|BErL( z*b(HT`g&!vc*@yZykGAczZ0K?4-I2{#>eo+*}}_Li*Zm|0~Q=J6dExU6j_Bg8&1QA z^9;zUClSw}&BM~wXo@9%#*P=B_~hS_sUivntT{I5#YR{?o*f#GkD5ep=dU|qK+D1j z<(9Nv70=;_5aIJfSXQHmdVM1xArYJnoSP9I}r`8MoOCAxozBQxH4=N)A} z**N~%ocRmqZQNJ3;-~TB7k28}wbR1AJ$mer)+-Ch2G_TWg?#SXCWoNI_b+t7pr;mY zF@&95^HS*}RJkQTt2`zprH&uhF4^@xUTojt@x}9)UA405d+8I@Dq}v1HbO7Ef2_u; z(**dbwA2u4Dr}3jzuU2)BQ%54uChdii=i=kLm;-LT_XfY<%UhMZFL=?AughtRIsKz zp*-Ay&)@)bG1VIFjvN#{{~Ap((U}<*7SNHI0joWWWyd4L7;aTEIX}O1XM8#SyhY;M z2Hd)JEUDKyvd8h&`l0`_eRrOJ=dG(`mgahG|NhD=&Ns!}<1B}CW7DT{xwHv5 z*aW-XuU(kGA%VrwnG7+7sQ`wxrEhefCXK=65dr0vO{s=*tE3Uyl>0i^8|;O<%qs() zYJr+{?2gjwdteS z96PvS?Uca_t~{@_Cm#~OkCaDe^vV}!;#IqH`{w$K%Ja(YJ{=0DPTcarBion%`QwE4 zDNmiv$r*f|t;zbP+tOW*j~|bUVP5dK_-F&7Fr(2nF(aGXa_H6?!0Cr5CM3?7K~7ZG zi)WXYfYpq+Q8Fb<4ovMq48@ZtD=)Q4T(c8hP%Il~Iz|t8RdJPcXw#lZ_i{~P0fEnh z(dW}rlR-}uoh?3EdSQ84R^Nt+vrlbRes{e}JJ+q5H@jC4qf+A?J2E$A^W_>QYo;qf zVt>FHjMH0|-B+d2BL!KA3J4RJR|Pah)@38}4*Nv}g_z1kN3^ehxz{;%va81zc1@}g z4HUrzI`BkXd^QkeMR)^Pkf|{)P?a4JpEdo^r)0uY?|eAV_gwVCmsX+})b*<$b`fbo z7m;M3$eN~x)tz75G4la+|lnsdSfBdyI*lHHXAEh_>5}?Ao5?~OWQBC#K z(wduDY$Yl6;PC6W+s<;9e&Igx|8Y^w!Y6iZd!?r`1suJb^yM7gLl^Sud*aMyv{KhE zDpvlX%$nL~{KOx-exx{+UH!>8@|g1LpVya9>9T!EPUhTmz-?~RkKpg!z^x6u8h&va zt7!5H4~l|p<^l)Gfh`GJ5nXh7;-*_jGC1Pu+UjoKWth7gRPzk~_&Bya1iK>J z;Jzzo*HhVMYzdPr@sti+lHZCAvqWNLloyU11%FIy{B%VY9o~7{=AC3CS>kZjyH1I_ zqoQI%39&@QhPn1`9Wwo&=uAUuFHy4YT(=CLX99y}9aE{uD>UDA-c?Nq=dH8w@z!zq z878!|dwXfZR66RXG4XEDOsp_0RNm!54o$cY#Y;NI%fl^>Bmu#wo8rzTfj>Z4wn19cw^^tg zv3(hZks-$pe@q3TZV8ZsET>+etnwtjy+{Hnz4@ah@&+OAAIe^Io+Ll*P;OO?{uO_; z)8E*4*WOPrd`&~u^rJTknK1r?>GwX7to64jeMQ=ibx2}fo|JGyRIDM`ODCEP zK8c0N&AS(}v5{@xfb#fF$*Q(Obh%%s1Ixgc=`UhOhNNNUK_Cmo*JsGAEE-dsX1&fD ztJh^m6T4>#ls|9X-nNmPu0c_g1jqcT%64VP2k(o2G*jPxqC>T8EG<;tKaI>^&c&K~u=wL5x$l_Q4rf@N)#!MVQOOHbv;}I-3FXXnHO>veKb-1ap7| z+6YNtkQkW&L20N#*wi;a5Te{Bq&J!5aDD0eRlLK%a}D_TVqDGZwC)Mz+OaF>oLlYc zr4(?n&wXb)^5|2u3?{O_;@{`as+5{Iqhk8fCOUnk_;3(9*8IBD|zy&m91VOZ0T za=r8q@MoY<2z#{EZnw1h8Cff;cvkf#D=-boXL`7t3PU~F~ZALKvjOz`$C1Mh^6Wn4Tk`%#q2X%7u}GO*tP_zBocJio+Z_H3~k30!lLk7!}LF;g2 z4|KNc;ss4;pvI(&MF~BPrYMd{KG-7IZCqw(%)y3os@fC>W`$8`*F^hAcss(Lh-+pG z9p_E(0pE1!?#cEX>h|z|nk9)mS*c{`DX+NRSH1&ohxR#~oj`jMrCjLQljPAQpMPJk zj68gp*p*k0J}2FE)w7jhd^;KR50I9E{>hMVx*&~NuklOrN)VGYu~CI79{B*{iCyv9 zb*g9~&Jj?T;&1dR4~f{6!r{J%YknrGTQ8om6`Xnx7RVUjc8b{~LZ*}Pp0(-B0d7X& z$@RBxe^>BeEu5#GV>GWk&i5Nf=U+#yPyf-lUiqo_w&z-K0L}leaCqYX3ml~H?gzP- z#Erv7<(FRDfddij;F|!c6uThSu2yMKS5F9nJA*4ot(w#YN#)-Dn}Qg(-T-v{lvNr8W$`8ay8=P+_ujJ(H-?Nyh2CO}| zeK_6zZ*89^{{LY6h#x!ST5O+<;9~=~QImvhyHB{m$16VAAnIbcj;p^7JB?ZYy0+z! zn^IJQ)vr7>u-xDP1EZ`@1GeP9X*mndTR7L?oCOQR{fpbo=6QipWE^8(e9?1CnX7?j zk+HYt|M88oiR_>uE*z@L2fzPCKyfYFjg|2C@UHGVl0#w}7r(sept4ojH=}UzmG}CX ztZXg%LVq0R@TUrPyDlxs5D@|#3|4~}7f{#^YtC>$;KyyIr}cj2)*uvW2`e|*Hnp>q zw{b8_o2zTI%znsbl98LB=BJoUpkw4Z4?iFPAs$u-GfGWXl>de~%8()6NzZrn`I^$d z|A|(>9fw-GF2H5_FYzI?R;BMoo}qEdE1&&g;qo;$G~ySL3?j8367oG+ubkLU=!@hS z37XS$oM~pqKOtz>yBh8>EyQ^38)*Tzr7S{wyV_#VPy@g3Zh#r83h>c{#V~e<@51f{ zm!=d_?!PIT9UfqR+vUh|tpi6jXUmD07?^Sd9#G}n90^E|f-wTT$RJ2I<&Q-24xGZ# zO@i{tH=h;;ZzU0kD!LKG|7s`il3~h6E{F2TfvxX-l-EOZom{N{0DD4Y>maX?XF`@_ zvU`Ts)~8jkvLMFjFOTkAEXS zy;eBAHw)RqIrBSJu=FH+qrO5eFpD;;aB`1z|3jFa2CI|lawPc&SYu&^wk7NdTp^yL zJo}T{s3XV9NauV)zTp3$vsu`)(BmSiX(#Bfmo#sc29^r?W~l}DydoowIL`!Cps`yx=!2%@&e+kU%XlA426EG9Df!MjM?57oUAW7?xyW#a66$tpF zWb!*O#olj_4u9Nd@JGw`|Eipne9P`ft)*>AM2Fm|duC%tY$My=g><=UvM9=}f}@X! z^3h7=GK*8333*Z@mFePDcG=%GA1R6W_a5S{1$w_!4ntHu%j898LEM;o`+Ernf0I{` zY~yw~0*<)TFhCtb^}YraO{>@852+$N5PT1S@dMIh<1=7T${A|xnZSTy)b*xPa{-+H zvqWMnoyiC?WWzD%X9YPVzoRN#X*%}k4RXC-tV9N<6m8hrJD+sQYqq}^V?(|L*{4Hn zL0bfTXe6_@-oG%IpI^9!_crn&GYa?CWH^MxgcvF%+;yERSC8s@Ikbi?y;WBJoC|3IGKeukOl^oi5h%3Vh|S> zIi82`bY3ho{z{fL5en|XNk;l@39Pd$dBvJ z%FdlfZj%$bo;p6E&xrcE6-4>_%n^EB?9*rajMz9Ip_$bAoNJ46x#=Z-RIt z%`r!q>rKJ8=_K$A5n}AJN>77)ZS}wdm}vvbQ3hD@E;piVr4!FO!rDBVwxw@<{5QwQi->gj?6cBQN7ufp^hvd)w3|ZGqvpK&9OZWP9is8;ecZmTsyuj9Cqq5QCnW>4>p1{l+39~@Z$HqjP1oE>-uG5nW zaktM2DFI zBxaO>511{+>N~|m^P?%hjWF~6cNK31 z%=bwwhi1hmAi!qE&7KRA`?@UYqke1#o5!64Ch0PI#>A5MIo8Cu#`c!oi z=*aHHAMy~uk^!IV)0u6{;j*zrD!2uSn)dNfPdPj{D)!2z34ug}@}c*)ZJhnq-p9%G zHN?=Y2<4z{A>qoO)vHb`;ori4pF`7LJX^he(b4@%(gIGekxgHV->YN5LD9Ht(1-?| z+Tg?7QPAEnZ3DuMh?Zp5EZ;BQa=G8$m{3z>5c5fatGFGT0cCED!~KXlj@jjU6WnOA zoWHW0T|uvtDa!R_*1PON7Ivt#Is%@i6>=N(-wNhGDi z7wB+LKDfXCN1|#bj(B<9fs14Qn6>-d-}Wl&wLe`2c{)8g-#zC}#VYNU=Hce61LlOD zVxu!NC7fU)bxa)C-0h`hPJfv1sAt1W7id{Y-x@~oi|F(&Y0Dqa?wJ(LV8BAvtg-dz zGcqrAWlh0QWsmaApuXqKi23dAs`S7umdqR3wd=@vqqIN$9gCa!8=)OX4(_5T&g07O z6W2X9Yk~G{jTf0jyEo$kpoz;M{p7l&8UlO9&yGGREZhL+L>sgMLIquh>T1;xWgq0m za_NhvXVp=V8=<(t)r4yNsad7>!OaW~D14on=rD%*2Km?;;qGISk>JV*@=9ejQ3UyC zWvZB?Djca)QCXSJ;I@>sLG+h+`XgnvGI(1pIk3GOIr)ofI%(UMCMGTYM)`D2$}IJP zb%d;{9htEC9)tIOC+V_~qWT5aB~}%pBMrw5euaW!HTa38pj%=v7pFcunJ^=<1K$W- zjyhBRMXYJd+Qjwf-o5d_>Vm%VlXOyo^3@wxdj%DA88yY)DR9SxPAR36DeaUlT_z?H zxRT%i@X@k7#QaWPIWl(5qhoX0cYs-6wCx!>W;l6tVp<|wf8y*TeW7epM}X%ncC}j8 zR0@^GHt@hNtAxoK*`{S#;4ZLCG(%S z?E3q$a)#r$rbW_7`6T9##r$a*(PA3Xbh%9AsY-0`>GDZzW}pt0sadr{v29t|oU2y< z^iRL|VbsJ%<((Br|NcISbSS%SESc4v6qPCcYK-Eg>&nf4O`M6D$e=?bd9 z=yseXf8aD2D!t2T05=Px0g08Rf5RKlVIA1vMI8_*TFT1E3(8l@Ps%HEHniYBDEG%{ z<8DyeaNEaw*}_9)Z<#B<7aMz|Z0y!0e*vf&;6L)Z0JbY+ z@-qp?zkT6_L*(4|hkf!VmMA~B2J8R_UA#OGkr#|tm>>SGYB}VJ9ZP6}z2$MZW99zp zaM!sP^nrN-^C;jU0WPbnj<_A}u2%l`8_M7AxowsC=XxkV59~!oe(vn#k>4cg$djbm z-TwJsz3o#;;UiC7zvjHa440uf?`=eB%8&}Cyd9+I#}86eMsuJgtTsyC}-(^`KCFdCzgz3sl)%SK;<2fC0eUFbrn zzt*}iJ5X)rhh@eJ@hT(1nG^DytoM+Ieluf+QoUf-T1wg`?1QUBM{TzB$G)T|-D*?$+@m+i*=EJ* zx;$sl3(uqN#;&5|G$M}ehDgh+k>==?W0TxGGo|Tw>33;6Vico*KP)?NFu$FUQI8!c zw_GCY3~b}QL8cS3Y_mgoO?ji{2nl-M^|!JzX*&*duF44_3Sw_|&P7uag_fK+tc}hQnglfPzVNx=>$uZpw}Uk5^-(td!ZVo0DYPrpjxYRP->NvN?+2b z%#(Y%=DS{kpH6>|3>>&`fvAJQ*n#{(O33R(I#&6u60Q8Ki~=M}h|ii=i{Y&x!i=US z`4Hy8=~-q`VM3-Z+k#*#h-8HIB2ryEU$^Hg<;z!yzw%T4?5EFGV=?LZo}}03ME(2k zf1LZYL~M7D9%5t7RIbTss#CbjL42J>p9LF?nHOqEd@L9A9+DWADVxcxnX8tK--ZoP zd+u{GSGh(~WO4J_g>xs3UtG2I#V>w5aetH24zhVh(^sl|z~;^Bae)ee4#=mc3E3cl zgrBYMNMN%hqx8T#*Oa5A2Vyijo>Th4>HWT9r%$-9$|~12x|4neLn04en%@-{UMqDe z4y6a2D%GS1&D)<}S=sRjSPnR_n8m5U!6>jE^DP+YGuXVrM67vt<*t((7QIV!Ki?!# z(l8>`KEM6_HJe{0;U{ok*Py(A|Nmj^JK&-`p1*IOaz|4*iiltY5wI7!3WC^sN5lfw zsIkNzJC?*AE4HYhq9S66BG_XzHZ+N`Br$62nna?;7)^v*-|y`69M#|d^O~S{5Bu!Q z&d$uv&d$zkr+zvc5I>53X#Oy6L<$u46@qxHK-j}Rh^pu52UjF~v?y-w3d_MG&mSIO@!zK(JGl@upSVjsA z_cq8)IA@y<%sF|FrAYkAGQe{@E(`J@FvixvB zs>jsBtXbNB=`?&du78d}LqB_*sWcj2$EKjrbcr zQSNLxySn^_d0CQm}h;Vy^#B#Ch zg5@CJ$y$|{JQ1xu9A$$lLZ|)7gS)?wiJr_5`0l=XT$5K;fy4j>azHz9NfU-OSv`(? zcMtFJpZQd&;l%|@P8?wG?()+t@(;y6CBN(LpV;+1${tN#L8DaEmjR88)K4%%t9{&z zGEESvLiyU3-7oozZ9lW0e`9R_%H`-w%8g}po}~Pox^g0ae0XoH9Q@w^4KLDNSJ9uK zIi^;i<^=DVb;6-raju5kd5>>B;J1&B8!Mel+OsN48a79s%)>$ETddwy=CyRpgfr{U z-?^%cu;l0eru97=F=h+UH*^$KU=h2DS`tCZq7xS_jAeiI3;%}K+HB0?=#}~%#23AfKLVjcd=Rw` zD;qsqSwyY?{@C~LThwRi|KuOm;{+f1Sdymy3|I$v3#?vkz|dzeT#);NIZ}CF>`<;k zxg4^j^PQWHO$`51s>%{s0(-%o`38QT|C|IIDE^!o7Z@|4%gn+XgzNNy*ndcVzDCK- z)quS`Sd@w+`YMp`8qC|Egbf&wb&E;YcQ@5SbjLp#vYJ@r6H_KL0kDCyTLC@O_5z(#SrlRoOk!c{Ft#m(;{Mm%0Msvv>drB z^RvEMwD9779HHKO#N1gGB{TCDyP28aT}l6)HRXrkQ$QccldDVs4(LPhwnY3QDl*|; z`Rgmo3jWEGR;M01fQo#lIxy#(Ql#a~mz#RXA^-KK_hE}DGw?oXELTbOuO`Y>SAgD% zWDph6oh~KHj92`RANcj-+4DZXn7#8g&tf~ar|mw#zB|Ofm82JUtNAQT+qNUW8^bm8 zaLf5MN8@B{4U2S?z>zEm(osUcW8nl@(CO^CYHq zEK6dpsg`WkeS5EwD-Alx#zx^pDNiQ()^$Ac|O0-S}~jd4oXJ3fWO-G%j#+`4QUeWAIjRt~XKUz%6g4~?YA3;XA_TdA< zu7R%fI=lG_@D=+uGi^O&FOgrn{|rUECMPYFgXJ@GrfMev`dV^V~^B1IS=Zp`A=1z=(kSLX9yUu^qAx>S&q zwdBOy@3WLEFyDT5=O1JmQwx?TXM&sT2=nuS$ zykRJJCRi6UQyKTRWXHI7vbTKjMO#Jv zX_3&l${DK=R_6+Cz9bM83`hmL_SN4!gXJuk^*H_NIjP|7>FLW)pJL0WYPcNmreAP6`RBe>F11KEQolvEnK?J8yrq zH$Rrew)UUXFZrM{kKee*EOVsk>=E;oJS>mS?PO^eCD?S((Vbz_5--|eHi7^ETLzOh zcJaZN;6w`o+L$n5;w3vJ23Q< zuh_3A53qQ?UHWm=zF)2%JjG|T8PcK6C+sqH>lUV_=A%NrCjAt);!;E zQIgK>UwMytBp*C+>X;ZSMWt&iIt0 z*x|Db9?q_O|2+)jh->VlYiWEn(F|)L&P`5YjLtYY!7QUECqF8PA=0WlGDXH|KDo5z zle`yi#}>KNTe&i4*6jK&tVz~uLQW;=!r|Geq^PqW%g<$)~6%@w;; z;UhN0^AD8v$}pU?!{_M-sivJADyqO8QH7ZT091B0DKfmgwDytYDed{YzklO@uq(UR zfen%|)e*5C-K3ptde-tCJ2P^Y&;6?APy8Ya{gG{7GHLe8&l*(k$!z$;nX`BDdC9LU zd+~P*_FSWz=YybGT$KJ;9|ABw3FE_os4u+qs)8)}I4(oP6(VmC!-1nrgr;HqK7nxc z@P53bSI-Hr*)foyD!nfEU$&f zG|nf}(5DaC_8A|o_m_$Osut_dr-B)V7B1e2 z;|6QDIEZiqQ;gaCm_=TGvDOMs3G;Vx@>9%4OrDbor7MsjI@GtSyW}1! zZ{&S={MQJI?v0(;C#-$e%fJ49c8u-%lCiyeq;i%YrJ8I^|1qpQYhgC?%rD0`=K&10 z7V%nt<-*%r94E*+e;O5xv4W@qB<2YhRgm@BV0I?G9ps!Ehry?mDUO0t)F9LurfVfXi#xv^;W`H{BA5hPfhJtdyMwi@=3rV zd&o)lMP@8;12SOaU-{(HoE6+*`Jp9pAE`OkoD0mG`LbnvB)`k=V3Xh|VI4#t@tEUn zN-TK=R79Q$xfF9kwX)!I*Ah1?W_g>0cUuN#RA;uo{Fe10tC9Wt4!LLSR@?o06IVp{H{08QH{<)}j-372a)vFv-Y4f_C1bPYjgrco= zed1FA-Y`0F^cAP7G7fV{$jll;vLiDGU%rupu%am$%~$gm%=CaAAV6R?nJB-7>3j6Ae=x$bTxJEyx-~hU+4DB zI_1Upe$DD+-IJK*9=mb=EdP?NWFuGaN?CVm(E0SetyhV@!H2tq&J}zpYwLpt!wo1W zHN-n06g4a4U5pRpJtfyH*Ozbjpa(G2YCr;ilHq9W%eJgq1qJLOzv(n@EWahCt)9?o z;(icc$cg$Ec>CguQ!)BLAmIrl`oPEQrZBfK!FK9fe*Y2cBt86f2fGDJ@)>+SoTc-L z{G03>y%TRCIJX_Y3DVfG7=)~DI(?cA;FGWke}k3P8yV)>u-4H#+F9UW6p>0t{F^u%+4FLJ%3>jEbk;I1v?Kujp3Sz)69&tzWkEL zN03+LK5`>E5FbIC$w4xCF@4}HkjUD^a_HjgqQpz8`+j%!4msrW`M>;R7Q1z5_hY`- z{mTk`FKZ;7Pk;~d&pwtw{xz?`t{}6^6}}O=FI1|(!ZJ&mv5fGx!<=L*D-7Pn^)(LT zupYU|zH)Fa77*sHiKqyt0otJiMmdfhW{A_*j07-M) z~yu4uhZK51eQHHgM3oAD^b?boT6aSiY9h-_8zpcQ0x6 zKY#xDk2IL&pZ%J5eY!uf5)cTb(Yp?Jj!dRk5M<)53~*qD->Cru|j8(JQpcTH>zZbW9`ldco(+#=fvK* zY+d?=lhWOr@+S4}FOtMY9eDiJsRI!q5RYW`;K>sna^o$NFJl+``#0Y(cfNzyxR>$Q zjxn`%>#!@sHtUF}gp%vL(L~k<(w#a5g<{JGvHp;EaXwVR^5?W9K4tIs7q2e=C?kd^ zu+-HnF|{6SVw4@*ee1`&SNN~?O_1OmbBq0fyaoF80}*S3$$~Pn>Q`5zepO zjN=k{T^1l#MtKXTL|9wqO-V~?)sf9u^jUmd*EANM5jv&yOI%&riLIHB6lGVNty{c0 zHY6Y*BrYj9_s}8!EdQZoG`p$11OG^jZ8p}(T)-!1w{!_wtd?LP*xbO$%_PNF zNKIQco~_<}_2Ton6EmQJo0?U>wd23%>ss+(i2FX)4doe|H!PT=c4LYEtOGBQEQTvh zNj?yeQGqU>B02>XBh18=W(1*PWC5Z60VtlXR5}Ok>&hL+ADs&0K3e)|_x5v=^po8Y zyKkgjI}&?ho2JMgY()TfV|+Zj)-sBXV3G5_>$xO*ZZd`<)~W~cF5&MaZxyZ9PClW; zZf0R2V)cN6gdxqg_DR{fbM7b4p69bSmOMB_YOz+**8I9`M-1=JaUdkY7jhq&eQ90- zAafGglZ}~MKvj1)F)Kxs0u*;ABAKth3FlA^)4ImRf4Xo6>)0wOW#)9OQ?>Y#jQh;y z<;=19(s;4Zm%!$GRoY|PS=L={q5U|cakUv*eiZ#XLCoAqo1sNo8fvg^L@e5N$ z5Qvz6iUVZ1UG+*ASt8X86J!v1m^2xzt zmsgMbcx_+{mU?9Isr6O;>IBcLTW4{PrnKRvwO+GVFl%D>qwk}H2^|;`T6!tgm*f7t zXZ5V=&;J^;b?ad1!>wE5B|duxo3%CP%j0Yo$1V?R=M83mOPakQ>C+V>lefh#%t?)G zF@Je$$_E8Mjo5SPFva?Xbzf7&g)nIgRsn$s6!%gA+b=L;#@}xy<>ZW(#^huVk_wJI zS9a%oc}xI&t{lp5jTOiK!6$2$PW@_Rm#^pd+H#;tixu+#QSdsyD`#L$Fw;8cPIWU# zq;MfR$PL>r+$nGm1xr?4vZf_}%eJ#riT~Mk`Mu?v?kswl_v}UYar;?dWWgV<(m{)h)Np>JXJS@k%UPl&Gxdl9TSh@Un4!7?SQuNP0Kax{Rw ze17}jXy(gf_Q+NEFU+5IA!+w-!(CY=jeQ`^iGMZOF=hMq!1Dmkht6#}%o zj~fkJXnYbp=*qA_V?&AenxDw~{rm4rrtsEm`;)%C{$x82zIpK5ODVu|bpAO$W%0k# zO17DISvzdj0kWwee49d@U04ZBQ!|FuxWc$7u<6Yl%PG0;sjkB ziu4hoDPKwI20JzY1|OWxxd;^uPCOCofnVmbhR2RC*_#nj4-V+>e?5HY1pu|5wO074 zH2x85ChE^taECb1R>=v2B~4-u2y!P<56T#^?CPBxhxwG*Q}Ulz&Z>+F?xl3FjKHB- z)q|FwZt`xm_#S?bc`jK7^I(UdUuUcenSWteT4} z*?aJj!Ohe89}Bbjmn(C0?*q<)c1y{8UDnFI zF(-o!O5#YIJoCscnmp1k10fgvg)M;HA3E2!Wq#f;LBhlgsukR&-y1hhnA2=dv-$ix zwwJB5KV9iQXE95rZDewXcFQ`Atp7Ee%f6C$_lxIPHGYimTvK}^@#ZMhg$j`G;uF=8 z#tE03ud4qbEev~k?i??ln=9Wvo_plqqr^+tzg7n?(>~t70kSgKLQ@ ztnD54@b1}sp4aq`siWBViRyk707BetARBlpvHi}=Imb_! zAMTbofd_}$v_l254Th7fg|pFkSi~fY=jwH5qg=D-yQvfMsMl0Zvhi9wV0Z!V??dh` z!ZkWa@}iu?$S;TN9=Jn$Fb1B(y+~%&u%VV-4oL_VWR{bW7njgQWhAuy)9Fw8%jVBs z%xufd@F9$ox8@&Eo+zgZI|A|9;UanIYfIgPQAT0hoFmbBf&KuDb>Hh7>eiq#v`I10Y#&) zsfFn0D1#|ih!6VFpWjsXiRXp%HMJ1^A1m8l^nXn2pWZ4tf5r=j`j`*=UVCo*TfqIQ zL_eULfa`Ary)a$@-P&HjJz2KBfP1n;`(pH$qXb<19y;U#iqt2A4`fZgFI>8$UcUtX zSRieXpQv{PPa|x>M@8_p6#g2Q<$AFXm$47kL`%jfxmm$+^wCfHMS7&>h(2%{*H7{o zWqBfpNlASzNd%+V@0p2(A+*i%WRx7%7Yzgs3*`FJZgr6GH&gXRI;PWn;lUw6(r%Pr zoFeKlD$T~FrjBDi{0_=6M%Q{xeJ_xG@NN(BuGu$OQ?VjLMJPPvyQfeQM=Ic`#PB<> zYemQPYzmi}5Bd@B)|U?AUC24bkkCO8&YJL{f~%2jg}VtXw z0X&wK@sISK?9`y(MFa7-fGcf~wqagKCs)a_mHQe@eUaJ`mk;uAr6pTd-Y|8!4c!e6 ztWQT9bmS_zEwemah6%-Vi7CU_FGw?3vfQrNyvyyrC7LKkX}2XYo4@1Y>G!im?4YN=rBq zmu@d~-{Z3Fh3=z|)^-{9fJqTiN!ae*~nIZZF3Bv}}9PKj>1ry}&=O zYOoo0DD z&GK|vonCsDF~c;=a%#cvvb!ZwE-u>xE_%DQbJJhdzSo$Em!Ey zvJ2G90$sI;x!jMu7Bz&-g=^m-gEe&9>IKs`PidPAO{kWA?~SmoJ_Opl63xj=)hGX(k-fM%PLZDDRY z2_rMi$J+qFRJTL_Fo~T2$*Q2X*+nF_Nn!ihYCaUfm;JY+z*${Zo4If2YY-JT11F&+ z!nE zWbD4x@L9<$LPitiYtVAg`ARWUcArm3+JEU%(*CFXIrF`d$DDH2u4!x1SM6Mxw#E|F zhP}vpd+$YF{vY~$DPI@g$Kh@o;e>ftzAnPa*2Arw?B%EsPDnea<5ba*?7Y1EdvGH2 zMZ?HdLEy-lA(!?iC7j>QyXP{eyc_T_J%74i?Ybsy<<3>KNchscF0S}~d}ZYF!-=E7*c>FCDK@pt%x~Yw<1cdOSZ7xH z);hCF1%M|y5_}C`IYi*=t33xFRunqMi~S<_8M+DW!H4Pr!Ou4pZ~^$%tFV2PX#W9& zv=!A49WERt#Dg46K?KBP0eOX7od@c^Ft z6Fo(Hy?@AKMH-jMr)+!CzfYO=QKEm}lK7(^v*;gmDTNQ=A7H9hw!P>de!pVvU!WiA z-=B1mlL@)9@h|Onq(#X7en;?YwH$ed+18_P#Y)giqFPq8o$+>g!)@0$H2JTPVhO6L z7_Z7An9J3OM61}_u?umX`?c-Uy?_5M39B-579{UlCjA%NvU}?ut-7>h(`$S-ckztR z=1RB+3b^6YBI%HTOEE;n`egM<07RD*E5<(Q)W3V5w*5LYn`OI_7vyBFN|63**QHgD z*4DX{ z`g5&4XpeQ;sskMjp4oO@$Ro|1Kq%5Q2MuJ+P~{igT=li;IT4#~glf|@+@&E&`xSRh zuPN?nYj$eMcjZ2iX7ykk+wb|DWuz*tFaU+2NjHc-juWP)ji< z0Z~^@CkUeAuIVI#S5_Z25qQw^lKKeGL1U{va-@7FUJPU|9Cr>8d9h6)B8YS#HA$Gz zskHniS64SgXLf?6s=a@hQ|Zpi^;t3iV7>+4iFUs50#}J=3%#K81P) zbSZ_8hJQ@i_M-oo675Ut836_JYSlBuUxvQS4kdjcJG9BhwBA9d;bBFd|mlFNr{Fm53@Pkkv%%gjsPW^?}kdwQ#@6cIlt0@b5 z5B84&eU5vk?gu3=LnGOUR3X47OHNj(qDr19rxN0$RLr&1kTQ9%)onrmd`YVo~ z;>C*NXP^RqP{iV5h*Gg2LHdabe4qp(c{S;1ghqBTNd{dyHS;<8Q+F1Rnz{y?^ox z2bg-5Z7=%oRi-`RA7JWT79Sdy33L(t7vZDf-=}PQ(SM&3?XgEt1%34OSU?f{toZ>| zg9l=)`x0AHTHI{IZ3%mSBV+_KkK=kQw;pUU+<({y$jz*>utE3@{(trt2#wZ!t7kv*Lzb2)H>!I3Q&^>3YHOQCQO_L5D1qDF>;rePs`KH(L)! z4_Ff@uhkGz0CNI{ZzXp_vO^^lBn)(VRdSmUP-sa8hoSD?k`0T_CnTI-yA**l{COU> z3hgcHrK{UVrLS6*K4*Exz1w*&UgTvA&%pd*Ju&t&+KIECVeb^!w_`vQ>|5x$j#CZP zrt)w!%O2(2$sqrx2r1Xal^p*kQlK`@({+xA2-osE8MI!`W?&XSTm2FIR zF*qhWh~i`=b_nk9-y->g*i5-9%95pPiAsw$5IC7VoobM7NZ{!bv9IdFQSEeK39{Eo7C)!Md$k^o?o~0 zEw?ap-cx4oAbprob~Xh*0!82oVF?*+BA!6*{)km+fkz$cOjIf%|M@G z4HZ1>XsC41AbU92U`fA5+UlS&+18NkDC()`ds_g}gj-oM;LO^k`F|)CG^yUUVw*0? zMfB9=I8Dg$Tmj3tIx!*IcxYgBz@#h@a`%=- zwsh?o>7SCY%F5kmV!UPL4$nc`662LUP{yEeyr3-Tt0AE|hiJIMy&^RmaCY5N8m%T{ z(m#dNE#%eW<6TfFBdvvu%q}TY@MB%ZbAQupjps?Sw6#>1skxJ}uiGvgU94v`l*qpU?gWKA@54zX+e!LT2ZcZ7=$tSEjwD6Bd-kN8k^-ychq4 zW!sDX7Z$ZAS=D8q?gSJ~5Q%*dyVZ4A=U&nZ%cxCTGk2&Ho5#0qHfqM4=|HgP9LfPV zUf{d0L+<->%uS_p8hLoZYUN3RtDINhnw`x8A6~oukOdz7J@3%(R(?^auAc+;izY86 z%HU;R4yJ?fw9CmRdn)4z0iheBNQh;|eL~b(azfVMW&?Av@;l_J>8Lbw+#*SFG8@e{ zB9DTINeI+zUCCS6x*G*7%%`$M!1^HC76rDWj9xZKDpjCCvr9IzS=b5_G@K*iqB-CN zc^l-@x!i%j%^k>^vF>Vmol%G*UoKnHCC*CBNXHFMqpkpd&P{o1Nm{DS*Ok@wvmmNr8tYkj|*6$PYss3RlrIq ze11u{leY>x8P72{CB}?uj2N?8G-gm(Mb%D$1t?56Jrx7O|K-!jCUAUUE^hq2%B{mb zWX&XQNtY4FJaAN*G0Q;$k1bYOs1Jqx`9*1-gU>?P+j0T8&S?6=+TQ3S+HWjle`aaz z74m2qO`xepYoim5-?XW0dtt9`(s-KQ(s@C{C*{5P_?ti{k{QCv+FtaZTDHCDKecpw z9sez5@d5t+CeVfYFTzL1e{0$HqW`TW+QZ%!{agKC0t(40&fR~*y6S*^sY73T9J&*0 ziG8W*w&L(cU0x10HLG3`|wEL>bB+F z8;2&0PO2by)jFo~z@a`4^n*jg$f*Wgn8&ib2g_Q2e@Hr8GdA;)8*9beZV>OlPF6?2 zm+pyow0(4tD4>KuFMk?@uM_$D%yN_1K8am(kDSW5Quu+LxH>fc9?E*>Fh41dJ~NL~ zIs9gse$84RzPis!^lwJMDt7JC_$wKwj^uVt>=Rq~0abD0m|qTRhTn@HdKGu$Z=(8y z2R;*j34Dpa+-s_Tv+>~T94kEIEjfoGsu3zq{s2G=LGYeY@~Mi19Qu?XgcbL^gPnZ> zo!#ZPK6A%TnbvL>lg}eOk}CK<8FRqE3%TvyV^~gGHx#0_wfwo!Otge z=f}1^N}RUiV%*0wPzxhGc{hvH9svA%@j9x>C~Rg1zo>OjpG~J{diy!_+?1`$(6bWl z157z3&e>>>rM1T#2pKKbUg&^BW!noGJyg2A%?&vRI_WU8;5Sy=9{t<&py#kCPSSIt zEAWJ`(B_6%_m7lqFV^KFTL1KxwY}*7Xxa97?r#EJ#JXRsz3Bf~+4iFUV@2)7y8peh zSA8sauZa|fO45+{V$-aZfrPvlPP5dzX27`7CkC*&8{0&-jc6C>-qe2ixFbW@jIABQ z+ck=5pn)*(3JF=&H|1Uq9T(`mC4w}uNG{#zNW2g&1mW>g{ z>a9zpzOrL%k|pCTc%HB{qW&%N{;MWLf>6<0M1u6fBIScR+RR63oNF;kk-3)B(pxER zw{+Q3hiFA>ytekgyD!%M?+g&B!gUZS8&RJVhc8ry5fu#xAWJsM#Q-7o-YvxuOzJyY*CW3On3n}Ec#b-i+IiV8!VbXmQsY-q zI=A@vP06wWb{1Iy?;$usl(FISWj+^j3kiVe&-C4v`qI@h^OTR0r@9iPkZ#mCG7+g|klL+SQ9{#VQ5BWwZCr6fK&{@2R37yVx=(Y~}TAfS-^N?!BVpPy$8!# zJ#_IatI8)M=Tlc?w}Q$MdjXoLUh6Xgf98X|byVw&AW$ z*CJ3;oAQAH4mQUvGnk2!r<=+5&>YY89XL^ z)!H=LxoP@L_!L|y3KDh6i^Iyspd0|GUIgv+p}=%Q0$XtXB;U9Y14_7R@scWOjxctD zhQnhrn5#YzAnYwm-Oe`#$Zk zR?Pcs1<0$7-MYt8DhPe|r^ZjD@3D>u_=<-k!M802-;```KRv!v|_t$&(KCol- zz1v>`C#&9ZHB`&7?~C%vGo0K=@eoC#?QCw_8*baaab50)z&~*UUxF&y4#G$Jjo*vy z8rPXsS+;al?=D+5u`24A7M)|-A^}J1R#DTY&eZ5nYX;p9fR7;z4hE}_flVUE0{y_r zuv#9D_|<2>AIkgvDF5!^^=l6~77EF*8t)EO|AtS~%g{O7*4gTq7Ui|hJte{@ zrZm?`>q$E%lP!z}U$#9sA|kMMOe6lJ#=gYiJ5pw_s_d65xb&fRtXDs}ZcOc}xLGrN z@~{nT`M4n)YzpqH<=@sKeqW7zG$rnUnEnGHFcx|aI_P7O-E18_OO6FjZF9N32o)?g z7FQQ9H?z6CLpdk2qhon9ijH6`<;skucs!3x_}gMHLfbzh2FA7rHj1eo7!h%REqWw1 zyn+iAzs^Y6F+6eKyvVAxW9mlN$6Y7I0hd_H7u>hmFl5|vwqe-h!m$uv6`tK|W9fi- ziBsE&v2=%z9_6OIygZyS9x7SkgqeV3#TXnAMc`Jc-mQi-U)tQ1FX!msW%j64(ZTFq z(H);W&6PYV6^|9x=Ek~JK_r@=uwuoo)m=oGvcCFwSaXN8#F1O~v})Q`UWCZv4)Sg5 zfExFoxq0B{v;24{!l4lvjVZv~2)y<2>=81WFXo1LbhbX8u2|h1WOv7MUQQTJ-ZkPY zZ8VjP}+<%r}Ab;C&&MDGy%3^479h^w&%)Nozs4`>_sTI zhrFn5(^h-3;zzBMZ(BL7F~4HDL^0DW*KgM6BiGEsSOm`6ShSdF6Lv6ojy1*PE_4Ae zu?IqXalgdh#5LQ5?vaq69XzcbPrGoQ$Jv;Wi|J$3TJ|B^zrwv;#Jdc zKHn@M&Q}VnTcdVB>%jW0m=rxgIpyhD&BL#vi?7Ef{sTq-a#xRfof_A!)keV5VtQX9 zR}t-&1uU`u6iF%Z70MmXEN|qE6g~=^Siph7o>q@(G^kNb%%0Py_FP25&BwU)cxU&* z;XB&2oe`lVK@^)b0UyujT`5pkUR2Nr_rQKc7RPGR{^8q}jZf$ii*f!h*zN#fb&4Rd zxCY*8xyUb|0swn;{fHTD+w2&=a5vyT0tRyTkT@)~F>8R5jyeMd{%bSRoM(ujy(X!7~!5`i9wZew( zkUG0o2n?lseN+z_xvfb>H)bUwr~~}}ju;xzI3$EMa9#B2xQ$y!9w-W-)8HymI+~p*ikdz!a_h!%pDt21C)Q;^>zM7V z#ag^{VFdN&fgcl|!?m*v0biGM5kqZbS19LA>A8)4i9HV58;|3;zm2^v=ZHZTa=t-6 zE^L2)$ez{h1BZ}_&IiLlV2b*Map_&n31PrOJ;`oW{QZ4A{rx{^Ik4Q{KUzO*oCIyjA5~Xh+flhdce8<> zfN!#HPJjij&=!T)!k}2Yo@W#V*(Mc6*{WSF8-_>@1?g7sfGuF?d?4a%ZJY&c+AAfz z54MaPLxtfDW~8)L2EHd$mS?PIYYW3=0eGsFymFl7)evcr7&pPtU@IDISDmL8DQ57L zlgJKamIJWmD_Ysq;)Ga!Hs;M{YnUdB)&n=?WOkDCNY;t3(V{ggTEjQ3Jg&mmgjgYX zw?PAa|BAEo$J%$C^Hn0Bk*TuW3*2rr{ZsT@_!IFRv8Nx*0x&Z!TFJ5`%#8AX_M*Ff)*Yc9392*^ zV#9x>z(hS5^n?%=5e2$}A{8Nwg>oa{+jyBAy_^hYz`xZ{1epT9$v)YjEO&M+2H)9i z#w`{zau>p_NAPv|vU=Gea?*#IROM2nrjWA}nkZ@Ep^z=G4~<`!8)w|iwskU>_hLXo z8$U+x5aa9!_{w5Xz{TldLj;35X(T9(f>p#c*FKU_GLzCo6D)y(5H;0ZlP4`;6auE< zV3i+dLlo@~9aJybAQhv5Lkv?KY?2)pgAOIJC_NFjkTLimHIu0))uJ`*}`+I}l|xv`49l9SPJ)%xqN;=HTQaVn>`vs&itT zrDR7NEucc%7TKB2W@l$7GhPx~J8^qo-*j68Ojww)mxw7DphcKKJ--|(zvP^POGM}g z>#?5J2@Ss3vxyiJo4Nw8N!%>_T+W8@9N^^OYD#VEIS}%B5z@~EzoU`{KACygfjaI;k zV!br|$DGT1*qMk_RIyl4%0Ai7oXq56SV_2J%49Q?hm}$)iJcaWq91ek7<*YZ43)|k zq-#MbT8K&q0;CmgDy#D#LVqE9>BCl0zHPe@U(bW41} zvY9grJ>4^Bs&^)g8X}zC*GA#p;&+QY4YetD&|JaO*2_cj!iiC!c09pl3On{s%-X2Bj8IE};ic+4f` zP_Ke&re1b|ibr|vz9rmk+2rJe6H;6dWr!o8-B^%|*+=`NEPG|WV)-h!XcM8%FaIy?QC=M>bMN*krb#ALauFeF*beBki>OC%IV~OE%o7-ifu$8Wk&%gATft<;fk5 zOW}vDfXGmBA0Ka!CmmdZ4(JTYEldtEN!5lS?Mooi>Q@`aypWj)_hU!?I9uAVZ(l5u zrbU zzu@RmX&nEapLqQm^^$AdxudU#u*qoM^D45LKwsE!wqKHMN9!7FxJD`{tUY(QAfDF| z&m(C6W_=Fc^|#TUM_Ql1dteuab{v}mjTg0{GQVr{LxA^J7VLwm%56>G1(WBNk8Q|he}uxwl7U6(TNYVX_j z(cgbh55?fy+oBKm_x7RnV_&(jpa0QQF`RJyTvbdglKqwHvsAyO z`!3Oc5e(a2fZ+9B8Wsa9;FQM)%cI-JfV|kEiZ7_O(CnZC9SQZBOXZ^@VL|c) zc=?9{4^&)f{yXY6^+QJNqrW3X+*Y~5_sBHyhF4;b(+e3)TEa1@+S=69I1oC#9N`C^ zB0~UwV}&wK%Fk#2q1xDg1>?lh!)?;jxs8;H_tbZJ+|4!z@44dsfhV%@(Oe=|4~k4+ zH?I2NTCyMPbov(N=i?s6+{2JZnEANcUgSqCuOtNO@=0@W5$NrlIY{nkoP%V#ZzTr{ zLTcFp?Fs&#Lw}Hd`7L_`(2m@ZO_=uIH2lvOvA@_~d=Y))j??H5gXLkcqqV`dl_?DK zT@UpU!cbv2%FxWv%FxcxiAG3fW#JF(O)`zGKd@-Y{?u$xkku{7PybQ>$7fodv_EgK zKEKgF(@J1``sNLf(thOG@BfUo|9yYt7iFHJo^_sKhq?&#ruG{xXWy}8-*yO4y zZ~L=O>FnQh*k5A|jTB#{H|$T?c0LT}Phm{)<D7AYcA#v&2>bSM{m8$cZ#$2*cC5_^`JN+Pg*dl5)B#iI!Fpx%}}S)@-#m-g6|)B>0z>dF@9A8=LLf4SBfb zHT#>FliV%!_=)js{cjBE_E+(%tN8qt)S>*X(jS9 z8+IqNY4m7({35>J@)d96zdG+(DP&L0+K~~HKKZ0?zx3mYiOw@ywy0Y-Bf!eXz@ z*P{O=N}{zd_D@~|ej;hGGSLy~nMr=HSaYI$`rPK^UhA);V5f=`UnS06`2j2-h$`-}noJ9lX{sYT1?&BlMRYC-Fc z-FvL*+oMOT`0hPAKVuRK{8Vfj-FHc+juk8Js9dgG-MY~&>(pKw6do5J9`5Yox67-1 z`Rv^zR)8*Fqw>{c;IGLuU73Iy`ufnJLrP+PDsTV$@4(sc?twHFZLl|v6v4*GIE*Ds z#5Ffx(ecB&wbpDp(rRhs;fTl%Eq{_GTjue{e_)$L`yiUX4N4;B^DQ1QKs3k&kQ3;6 zcg-uV8l z_zu2NCJ4UiD!$JIo&TZlQU$=3ppWXPwn_u=Fuo(!+gqGFLHJw^V1|%j`dbc#+YGqWbhK$_hQ97ZK@A!@zJ0CcE_CV*29Xo96 zYr)3$Du3Gp;r}FaK?YUrp!C9i+J$TeTfC!rH^T%FgsPhYpi8_BbV%uL3V^<$VT59N zllNQp)vW&8`A!qo*QoLIYU@#T*K{~DiAE6=oZjg`hqIs1$by5?J0jcDlNuj3U76|H zr{;%E*6eg~ogNy>pa0c2rP-o{6(OM*XyWFmMZ_JTujw@A%^&L-bS?t35YtasXtjK( zI5;UbGr|=~l@UJpC(NqR7}T1Rc!8AO80fMgLvn_n9{^pJ`m#%_p~DvcHGjc^`F|}Q zHaw=|Z%d)>4oh7%EhgElijD0N3*yJdN{09og9Zi%Lx+tTIVv=4;|2^RZ^MSL@DU$< zynMwsYvX%CfAOqw9>qm3m^q;yq9b+@QS&b~%qyCpe&z3~Mlfmmn`DO=rP- z38;S1ijWvs%gFc6dJi1f8>xp69sBz0WBgr?e1@;>m)Y-&44$3Ap>8FryRA5)j|${j zLo`3mN>TWc3{hH5uvG%V#mYkTY|Plf;U9lA;s%?0cxV5{jia`l-V+iW!hSwGDJnWT zYSLM$oaf?UTe@`4Ph~g!s*OSNtiXPuq3lAF76Y@VhlGhx1tx%t zRf`=A1AslJw?s8=+<)g`KJ5l3K(g22N!`q$q5a^rxi_YoAG?vC+PTY?VT<`d)}>ah zZry9vgkFfi_(lr({R#XIJ^Jph;)?NNZ(Pk=Pj29?WzuAinKbV34IX#n@bu5ONCzy9 zZ{EFoQ#xbmAY_FZ_88i$wdB{dlKa7G)RqW*aPt+blHA=AFQufUoJg~Lsw8F(8Tg|8 zp=r}rXC68fvw!@l^P0TvF?2+<+P^{%!X$Np7L@U$zNf!Eu&?CBrTdgVxpaw7$<0ke z->dcNax^pQ4g-T=Jk zNt?EG=$M$W)iO^>-1FgpCQX<_i<7hWCL|mlJ7MYe!wnlwTGFlC;lok;CQpg&LHbg+ zi=cOL@`vxS@Xv<`JsdB-$AL$0itl{|{Xc=eJOcW|HxNcf3Ect;VJOt=#sUQuy#p3* zzM3?5>ZqB_&T>sQ@YgNZjDE6Y7My6(mVLlI_f70_Xw}b=5 zd_ZnvnWaq4D5xjk7vd*%6!1xA@`TJ_m4{;rKXP6+ch9DENX{u}gWu6OblJi=75Nd7 zhZ}s<55L2lA-_L_Laa;>5jWoua53eNhk&?ChC@9X#-5r#^2r?BL@Zs@|nffJWOWI2L{2 zSv}N7$JRo=yBmOI`@Q=MFnlS%?z6 zU-72wSIZWDVDK!qu;*n~RlS?=Zvy`z;m054=5f3Y%K>=|GXcL6`l6a^usU7H^3qsG zMzuBlBlL_GIAt}-_@xgU1O_(v@Y1nDzH*U0nkvhj@DSh|Sm;+XFgZj7M&-j|U77^GGl;4i3IcO5%Yt z)w`&N+q2*p`<#!}+Z#CA%a}*Borz-wpf70i?l{X9zjF}3Lo}MO2tz|=&TJaJv_bXm zEz$J#n&vGMyN|HaQXYoBz?JAr#MeWH0D5~Gi1}&cb?^-+)tmC;G;`tlYUqk~ktFa$x^M zIp0J^ju=rhv}>C!N{w2z+PAA+t5)rH?Q3D$C12m#{xv+R`L*v=v6d3vD0En>z(8l0 zu<*{4n>L+2xpR1!i*rC=gEn<*YBDPQDroNp>I>~adkCQs1Q(fod1|lv4I0$%Md>p) z5oI=|&Q#~{vo&h0u2G|JRP^iUD8A1s@4eBNyTKcD!0@U-*I`(CB)&G>!u^;OS;Idd zVAlM}b!*pdzi=k2vbl4o8a4U2)IRU^ zo3_|0vv&p1EfoRF1SLo65t5_GUVMKN-wzdF@su8Eyz(*TCK~Oq&Vy&kBEz(UUobYz zc*w^|qozy^3r*_Xn{Vh1+`01E#Kw(3V+EGiTf2Ab)_p5r8EQcvUqK&Mz9vT)Il*cr zojtSk?3vkrrk=f!3O0?DPSX$A??(&Kwu7`-+N^$n_h2q*d?(;XvM_8Sg>s>ofX1`~ z&^G+KMa+&Y4h`$tGO* zx!2GYj_5sXgk7tS<;qn`bhEc_*{TG5oF|brt;4CzOgP-tVG#?~()I~p!a}z~ zh!unJ;{^uMQJp&#;SdqNu6=v?s)j?vVE0;V2;mSK8b3TV)QW|J9k9^lLplLE;NA-G z2!VWSgNMXvI{*dx6zGBRs+y#>kZXe0^}pp%DBz6r$`)uq^2p z?&%rdn^o@}@9DYuVbkd7rt}xBb)Yxy7=D0#Pz3o?u>H~fDMD>y+o2Cx+jt1!qmc_; z9)@zG*i`%Jn~x}sT$;MCjNNg)&$@lyt-IuAif%ft>5QnTrZF+YJ9eyJw|Vp4lje5r zl(Ho_Bq4HaNYp0{dws?$u;Ad>#Kw(mA1nzCtx>&Y|3;0Zzk`CibX^?yQF!>^)7~QmKH2uYvgonoW=0Eq2 z4-M}pe^@w2fT7J1>EQpLIqKY{OXo6k#JUx%D>+G4xEKp`rF0#0REfMo4B3M;%~;5I z*0t88FSRD=y5*@2h~6x!Ns}fqO`Go=FtA_Wl+U|$8&5fy2YY9m@-{_UxIw zzIS|=t|Pk#1vaP;i?tX`SLpu^?e;lzi;Ff%o{qL|1}~>;m%h1nDX`r>w{GqBRqPVq zZlAe(@3`Y|TAnmG;>Qy?nZv_-QGlCl>n5oV6`kpwdWf{g9gbeu($)prSa-DK&Z_Dk z_5o%kG^`bvW%jsc)0;%iX}0ss(Ui}(k7q+;`%kcuj|P4;x-zh>xF>o2!L1{^4<0~x zGDCOJW`J6S_Hi!O)j*gX1VghrsN__!1xzQKSUCP`v*-Ra<^mzFM{5PPJ>BOy&BS%X?I+7U1F0qjHr7K~=o% z?c5TbOg2OMN7N90JZ9($oDzW(`JVKB2yN9h-;*#T%ebC2rX;<>j<#%XMJX_-PP;gP zQf%D@A)yJ42&LhHtGjloT}wVzu61yyI<<_Z@_hk5SYYJk-5}7rik-b{qN7t#kcJWX zhwT=+q#R*HvOwezA{>U=P9T3Fa$%^&ryFp(nsG;Eg|@-L{rU#uPv3sQ>76@oi-ZOW z3JeSy+puA^@bHeaJ9X~dX?Dl(@M`1bk#{4TG>N3YTBdgFWNYIz*u%j-IOL!>|@HEn*hT;GeQd@o^s! zZkUH}fZGSa&15n-xVyMk(Ga`TZeO`BabJ2zLu~fX^d|gl9Nj#tV4Be4+9kRa1>D54 zgZgt=jWz#@KvLJx(l^0DV^deg)bH4_--rnlYJ@jzJ2|R};?Adh5*iv88p~$)>ZPL= z?&THJ9IT+r`S-xd9u`Pwv})@pyH$j+UIRuY#QUfaZCes;l5ExBV05O2^?+BgX!8K; zy%(&}Y*F8lBl`6nF{1C9-MiPU&CFEJ%^EXi*6fc*&*{16i}ic=uK!|>kYUnq6M%y^ zWVqN0TY@ijt~Ir)9~2b2tzSaleyNQ@p!WkC1bqxG7xi%vJ}Pfq?QG-X)~)H)%g)X< z0V_sS^yBC#2P8-)erhFOmuRf;uQF{#K-op%PIId-bq@_a5*juobM2a*vGV_8>^%UY zJevRUXP@V}JBq;35k$&SEFhf&K}1ySil~5yV#N+o!G^s>qsAU%MU9#SOHN}FTZ|^g z7)`gNSdti%n7qdL=GDX~_uT(8`#eXB`TqXuAve$L?Ck9B?9A*wvscQpp!O$iIhdcn z1x2YWc>Gl2=e<1nIzop)`P4~@eYdt~UVg)(SclN(cTp#Dv7>dhgUY@Dh1FY`eyyme zxB9S>+Eqz>th_D_FRopGcGfORDsLunE4!vUgS|Py(;M3bFxj}ygRMq^_oTbO{~p_Q z+O#DJ2?GY`&K%BB_Vjbe}OtTF)w#r30g)laq?r2uz;sCc}wHd=W`JToCPqeoBigVCnY?0#{vqeq92>@XoEh4`uvS7I(3`AJmG@@vT6 zQ#cj-woY%CTROcWEUa5$Qet^nSdW2;NifLFDLs2lki0vGgu-r~sVp1RIx0C4%&Wg8 z7g95Zrv)^l?GV%*0o`*2GSNdOw2RA35tTQtS1OOTLqYu^x>{Efo+!*f|6bEOW0w~1 zKT!V~$x%1>_XLlu#xn2U%2^ZK*u+XLc&ql)#i`k|-%zgow0@8Hp7N_S zgb815N=ev&d%KPfvutltEWcIx8u8%;`oxE;AOwgwBZ$*{6fsJO|6vQb`Jwz+v-F^- zS@Ho~EBljm6e$6Ii_WJa&la@e6p`Hw{6nw^7aV@-TUl$ zv2ehx?*|lY-jUnRSkxq{!?;PAZQ1-+A-iy{Z;cddW08`HamkT~1&`U2rbuK2`*_G1 zoKc$+G%P6Ur55;I`F%3~T{M2FoMR`Mp-Tai2Y<=hDxH)^*#kux@hS?{+>=Io7@YeE zf^{U1mti+r^bi+#7)1Q0!AfoS#ka*N9tH;l95fi>N#Yd_d#4sQ!{#ntlgfa1x)$aI zn2L8sh0$08?00d2`aXuLDJj&AZ7qzuM4h@M@BsSZh~n@m^LFf**SjpdoGD|A28|mx zsA#MxrN(=`p?vkGIYoJ044q#&X~BX?ljqa>QC)2AlA|~sJiJ%SLpbU?E0zOxww8zE zN}l`@;*HH{R(cwd@CG3sZqEgB%Nmyz<7QhjtUc9GKIiJV!t}%T!wb%R<4Ee^S)bI@ zd@}2B>d~WnHmu*XXZ?mfVm1sV-@xXtN40wUok1gpE9VreQlp$3KB8JQoxgtl{0G;s zL+Id>;$w*aATIeL08A){JQpD@NxmxS7&?KA4^B6d>T@p_jkLRNy>GEtq?6cD+`n7- zZuf2$yqon$c}a*@@^oQn53**`ObLf1shqm>W5$4-s(P5+>}KkY3@o)N$CfTV*7i{4 z#d#&(i|0F+&%0Q8NHkklJ9O{Ac5VOe)@@>mTL%4_@rw1JbZ|BMsCwkET?^h@{p*HZ z!`SJACFSKMEMrk#c{!rSXv-QUPmIxf@iWCRi!~!L(u@YVi!r;8WXFz+XeEnBk8VDA z_4L-*;9ug9czwfSD_FM4trXiKTKQ&fMYIRSSu#oT+I>WY|CSV>Z%>MkaVkBh}A zswYCePD6JQJlfZ4tY*v}+SAmq<_==zCkIQcz~US~DWiS+j7jnFh=q(vt2%jVPf|jH z{MS&d%$eMh0 zkrsx>7O~t+1m7LPnh!a(CowTDJ_a9RLDVNzo@DHc1o578aI4M15n@`5XJFwARIk@i zUl(pCh`Qm=jkU}2Q`nvELL0PFbE?!`L5fD1H9d-9uC>)S5*w?y9TMBDqA@t2ng7_f zX{AMjO5NS{eZs;D2d-Ir_~3G6Tnrfbq4%N5t8+g0J}z%{l6CFUCytvnYh0(K#63BE zbB3+T&p)_o#X*rtqta6nCil(2rO`Al>^=_p6SZ~Mv)PF$K3KR4Cvn-2L0}ZIw|lpa z>YMuljK-Acq~x~6$w_f-@&*si)&O=pTw@jPjlEC-$Fi!eyOfiARP}^XAbv8*|%jGP5s_^ zr=qmfY@Vi<2Kf54P06v|5KTEzV`E}b%=QaAz>2W0Q3Op5r(jJZ_k+(q%)fiEW}||# z{QM?QE-w|gI+GC_&}@Knj%c#p$Wg}%^!q8$Xd*;`B(4{>do{_PWGXkXA8Y*@&Y;-+ zoZX>GEdMu;M!NAI)s<<-c3H2%ok9AR2JXz71qE1ZVLyS7f3cs`aCk&L`zgiz5BsTR zJL{twP@>QcvV8%vb*3FU?2cjTL$+8X>A!B1%SVrfk0fm>V*bicMOLdg4xSS6FcanG za9O|#!L;B8And<;zJ48>M@=r#xhc;KXcmw^VH#Ua_`DwA)4qVFH%Vu9W4*?WQ(iBV zUoR?BIu{kO6ZLTII+koqe1M-s<|Qw~OO^3*r;2tK;om9nCE4=O&qL8332%WQl1z7l zN})-(>{D$RbZew3R5du^{f&C3dS?0L8P1^zUXy!>V(%2VC=h&eG_b-&Gk;f=##(wtQ_Yf6`pG&U#PR+P z?S2f7C1_JK!mQpp2xUggwYDpQUu(mPVpZ#Q>A7WT=_QkQ!jEGNUL|Z-Zo($Q-%K(0 z>Y1D@Z|ocr(z(+d_;nND*2Ugw7hPD8lnkd6&Sz9>{u{ZU%>qIZE~0j;eEt8lqqPzH z|Fok+LvUeuCAXfF$O%yG=%hhxM9ntVx2;@=~>TxwXd)BMWN03*z#7- zbf1~gzC02;XUWOp8r6Lj=L}0p$?7zp+-W!-Xr{ew(g4s8Mnj(_Q}24tkeI{0nB-dL zI5sONYH~uN?5PsuZaepl=PNVw;4>#<*g$^N@8q{P*lU@zk40DRQ!XLcpcvTS);a94 z0%w723f1;*jv1^*_3fsvX6O2lf`$>{TWe7)htHXpzwyNZ`S}AL9#4)jur>OaIAxl1 z1Pt!v2wiiyp_{p(y(K?CKQpyxP|EL}qdRoK^2F<72Sr-10}Om<#g_A?umAsb6O=I3`TEl-B69bTPiGAD=WUM?zH z;hIf6ba7o=RI~)YZ{CvM*=>;0$~CIPGi4p3l~i`wwN-~(nXMtOZ0N&bkXKvq!fiv< ztk;rOl46db;JN0bwiCfAKNvPxA^E* z@O~V;`gbdcjYR+etnoGI0^|n&z*Cgq5^;{eY~4tm$(T7|W@%Z5UsF+CkYdF(Y%uFJ zDj}9uHEVZ1IypVT1pPvOIF0o>KfHF-V{M}mP|qdTC`t`HbFO%j^PKGtx`=yGS4gX& zt9|K=in=Dy#;3Y2sMcvahLeKmOj<*Sl$Nv6t@&ERzEL*waUZ8G8|u=*UG@b! zk(~G#mH#ftHTo6mfsaCK0w~)_s+({aRobAkyO3R&Z|4>*%_)V0%qgv++B1*!UBW^O z2P(G*7KVg&$0AZ0*|vR;f#&37^T6Dc3{z!MO8bnS3v+Y(=FZDaZ-)Uw^Q!^}>DHoN ztS^jWTYRTUl@)&VVT<~9t?1Nw@siG+D!Pidathf(WlAL(mX&zg ze8G$O+C~K|G@|C~Q@b|-mv8jNuBOm|h0kMEEcf;A5L}pIZW-S;Rz9ooMoT0umdzNn z_`tp?9fSN-KI_E<)XZuL;+4wlH!7Lqc4!D!gaxMX_L%Xl6ugkWsC`GPix`O`fJdw! zvLgx%pCL-S+#w9U7I-&fzF2`z@fVJ7s$0%*vK23QX@!}#vMCvLM4Z+2&6yJu1+zGW z*G+MIfg#UoqS*uj=uVbEma>;Al7bQ@J)0#C6@Mf;#8_#>bF0`FE-n+Jz=p4P@QG2#D8{aB#gZjT;d^y&7^|IH-I$IrU=xN8wWPIg-!W-U z=jj>k+qNB3%G^+6g!FQ-Z@aW!vpRM{uzF%ZvsSHgy0>aMnEB-np}I(iu7XZ$g7c_G zik#JYU*rXl{`3R`>K+aP)nY%TOdmtKGDhdv8gaZRhYvKBio9^PalZGcwt0XBF;8=grmnci0hJ*cAgUOmB4zT|6%5r@PuO|z9oB|&h zH!J}}3?|g3B&~nA{KygdL9`w|WYZslr~0_QX6&s3+tYgS$dTm_*V7Mu$-{>#Hu!_z zY*aicKNaq?xGJ9%7~WqD@O@jC5@J<~5A_@^7-uc8x2;Pbe0 zx&i(wVHJl@Q7Uwih6&)ur0dD1qTXd3K1r#Ne%63V0lzHY<#N#QmFMI_y%&dCk!IxrQN-+aTN5bpL?>7mnK72*2=d1ANc{p3&f2X#3JeF|QAm9`bVDzeL|4-jojs zX22%_K3A@^;{$Ht@DG)#4e%{=QjOzJZGdkP5Mbx@E9B*diQu!Pyc7MRw!?r}8~g}f zu0o!x@2b@kDQ*^?Rpr&Aw!dYQ`VO-^mEJd|cq7VTX%io*{VjdR`@0*5PeFd_c>dN_IxjW_^bsur{!z$rWP|wth5-Li zSw^`{Xx!+~)3x|CA4Y292_qYD4WHA`LA{`BGzjCE1Ix78Y`<~($Qvsj)8?Cs@2-^d z+$nbanaVw2+XPW5C;FfRJkXh`e9Pe8xB&mSl3E{M{8rw;;es+%T+jO( zzBT&WVuL(D=@Q_hIsXDt;ubE~BM1m`{+G#Hd3%A!;cGPf(+%)f zF&7R0bUl2%xQf;Q;s^Z#`h1>4Lt!Rj8|{ z;`)J?vssm8Vn0KiF%l=bTd*{v-Z9C}7r!5i&UX{PtAytXZhN4d7Q6F$R@q=bLau!@ zd@qf!rNYL)BLG+F-&DNBB96b*7RccmKF*&8X?k)BmtQQW1GyRkxt@f%gmE#IVd0|o zaeSUnKsSxgoBH^q_m1j*;ryVSDi3{-Hm=dbkdub5EHec1b>y<{Cl1%}(a#B*9)8H@ zAEH>GL;bAIgQM~?PQS06zAi!Q2Zhto@M+$t^yO6?ZpS}O_!t+!PLAY*N^IWM?XvIxIQYw&%*c}pyFdb_t*M)Hm_O3SC&cL z)qa+OIlLaeI-hVuInAd6jUV9a9zs5o{A_^Y6t+hHG|@-9K$rLbj~w1#IZgBd2VH{O z=5qM6SSNRB>&H<(50W{&4Cl2!(Atan5B~F1e2m9ky8C?IKgaph@RjGJ543R_&h>$Y z&*{_pW+Huu|63uc-dfPBtLGN)2jCkc#4RiGXqF1Awf1oS9P)ABYVmF20;THsGki$% zRE}nEc<32|KIo5Ui9fA9Tc|ybLsfj@Pj{2!N7^m`K8)bD#~2^KX!w(P`^_95KgB<^ z_0ylv-+UDx^ncO%ZxV06h7Y~>hi*H`MY_Y`cKp+X54i&m>*}iED*tBmM-cEM#8nTd zUBK4pdujBS3X}PKwA1&JB02q~wmTfo=?jN3o^TB!>b)Z0=lztz`9BCg3wVEA!7dNg zppKiv%2a;;e1rfzj021ChlW3u@WChWI2_sr@;t2cXn=oH{*K!@2Vwuz$G<68a5&F_ z=un9M8rp_xMJ+0QjDrHhU1J1O*ZHZ!3ykiXRq+#npBMiReEkEAmpt2f<#a9oM(EWs zhS}gVmGik>_>EJ8UDWV29jTMozQ)Fl+=cOw>zDfY>N?e>K0el?y?nd@kJ_bsqVlgSqxUl)AMnlL+^!+H z!M;=V-33lRjpO5|JVTrR7_#7J5QnSyy+H>UWUmPqSO(;#;u`@69`xxrb-l3FfX>g_ zIyjlnqjZ%H^yyrU{!mW8h{N$y7sT!12>BGpM~$G5Q7K*HdSWoq7nl00{ab|o#k!1o zfyevtYZV{*6z`t^PWaTn>UvkCoNj=>O87v-KV1(W^E5!EPkvdQT?x3h4$53VkQ^`% zNe;GXE(bnN40^y-Id5fIoPIlMFNdRr;Ag8apTqH9uWlH(<1q37pC^68;jnfZ+V89b z7~=0YijS~Y>PK%QyJP!}ht=p{uzJ`JuRQA5i^tY=zhSW)eEXnfWJJW(9?G|(*O+nJ zSo2lAPwd;&qUC6%{Kc`Ka(cWT(DUW=Xj=mx1o1U`NIzx*IqV|8?$RZn(`&A`+N92_ zR;*fJw#cW zcrdf1I5Xm6>d4i5M|{m<&7Uf^j^pOfAJ(Y@ACmt#rzOiNYpphd7Ww-oReo*L_ zIp*cEnx)d3g`X}jYVrQtvx}oUMn`A#Us1IC!{X06XHP9i%1LM$92TE7y5p)77&qK5 zz{1zW~VQN1>AE@zw%QE6T81Lv0lvnl5ee@^r&_BmzLh z(wAz#9hdvp;XAa|@b$h}WmNjWe@*{B^vW>XMrAo>NIm-X@M(FVdR6-8pr1H>-{H3P z$_hI_4ufjxllf!E-=_Zw^vBp<_y_%pTKp09@S_a^@JBSnCw*y{2>eC7y_eD&^7gI;{#mVEr|Y#h2=MncxM~NIzl3-I=&134 z%kp-PKZ&m=m4J8E@RxHq*`Lb|G=5b4j~^BPxQv5U;77%$xJ4LYVjQ9z z;3~cu>-=_#7y*uQD!$H-j~}96H{J;UjyB#tFBFLYo`lUb)pMr7mHS~t+mjJGV6%0Dm&v@4taQGLT-zh3S`AeK1 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,GZiO*k^1+ zR@J>Tc%Rg|N%1v5iwpB7a5W$zE~QsQ|51ap1_pXJi^|=ypkJ%Rz!2+{ni<7>?`qG* z(;sLb*WTMZu9@{*R-9Echec%ed1BeUd5YhbMN7r^qV`n8{VkIMBC_JMlj7pS77cF} zRo;K`;w>X`a;?)zXvnzdUTFWQJu3}&^6+KQ6vzg}#?Kfv>qy}c{@#Z6Db?dAp4TzS zBEG?{LuZ8{J_L%uJ=&9u1!Okej|7Tr6Q7!CY{@afyu!kXNf=4mFdIfy@Plj|&@Y-= zI1+4>&Pb`bHI=x)5Jq>6xCp&Poom@QZrtKa;;=qHbMuNWkBe5^(5&1J7o7yjJ&X8pbdbe#6p}!odx8}_w zQ$`(|HzFw_!hChsTe5#u)nC?Z&1`)pwyyjyz*282ypJ2i7bo5%=n#oyn*_x#tI7xj&6Zw+43cUsLS><-2* zOgbsnRTZ~SDLJX7$IY16a#3_^|1fL&o__H!_{O&ElGg`%U;l&$de4fE3+o$Ko_4H! zNb!mf#j%>tTUB;h*}wIOsmehZ19<3!~y^{1<;2#6tlPMx5o~L&T ziieL#P^dLFG(9BEim8;*H9L(kvrVSa~2`U=!7zsP| zc(o_&A!PcK(+O!Xm8ck8GNr}PvGv4BnCO%kmZZjJZZGdLIpY4-4^I_kvj_QiWJ9jA z``>)`jyYehc)knk&bG9QE$KEZE@yD%=x&eRv9;$woplo5zdmK!X9MT{77GUM+{0%4fC_MjBgj65Z^9$(j!X-rGz)nh>Gko>(MsYT25*6kD9CiWV?ql+yFdqWQ_ zzRNZtBy+MYvs>@9_9car2KHuJz2#6|Vq{QMQoKi)#anIGJhFLPEmBXvv~*dAu%x71Yi7?0U2NNjap>_Iq7RE# z1)_Bg^k?6&%zd*K^%nj=yl}XrAg4nTRz5PjOCN(QF#gDv#K_3RfH==E-$*qg41%7Urq+L}^i$eE(6~iqoOBF@@pMny&p)uIrpBtW>J~wOu%JC{ZaLK;6hew395noD6|fV zS-8_YM6y%$(oHk_xCvLh()%C0KL)M6bgHFBMTnx**+lONdNIc)hBefA@dus^h6 zgJ;ji!&!9;7B5!P7o(h_`u8kDv`oy0VVMh(mN@#Su~4uyRNhPboGMs86!7NQ<91Yh zBfdsBrnqaI!x*yz=9n=s&P+t}o~KL_`9fz3I|`3eGVxgBnwofM?)C`U`T*!$o^ndHjX0>!q?0E?N;8@SVaA9*_6T1tLfDI<=OfDUXW8_6(<5xr>LSszXsz=8x?g@> zFJ56o)`RBL zI0nq$dsmqV8Z8bgTTmA!F<&c!e~yRT(G9^Gm=*w$j1Pt*9L%1P76W0MhNu^T?81TJ zy{dZ6=+t}dzxG9x^%?vNduG+FomFRg^j0HZ5@W?vq5_^5c}%Z8!CSDleB_Ra1x0!` zdyM&sb&!iEbX~S1vKgkx`HLr7FiaZ>H1P|BWl-s=w{mX+16Ln81E!-<*6^avDT zvF3qx z>&epD9wk6G3kR=tT-P3PG^1}d{EycZiykgM#4gvij`tl;nZGTguhLRws1jOWH@FHb2w$+X}yi|xYo{&Y{+LpKG-y5KD8xloX@n3clZiHo#Z&K>~)Oe z2wGO#&aSnC48}a2&SN3CR@o)U3ia(pF;Psq$OF#s$@*i8AAeo%g8l^|Y3_%#-dGI^ zhn3yLjBTbIY68=6w44o=61e#XW098@3Q2iW?q-MfmWTHjv7%7dSuCrpEB)o^FE;)v zX4jpr;|Jet(d?b>A(Ml&_ny7`)6#|Hlc&9hX>50OO?R?YRn&bM5WI~QP9Fa9%wXV9 zg!*_I^2rM`+c>ha1sl3yFf=cySon|8lhi8su#?HgYN5_9yPb1x5EuJxblaGWgL$17 zDHY<7b*rYlXBZuK2m;MX4RGZbM`+n#%C@kvnR&hJ`_8GUhvS@7h9W!R$A#N-w z@=t&Eu;Z)Ay#s>ubs?O2bs4m;Uk{#=WqV+1WSG)5v}KjvFEl!=^@6rxVb!zu^c={7 zcRjwLbYt(rqO#7Z3x~`P1b$?=T?T$SVvw1zzdG_{1ulWK*EnS6T1J8|jxsr|*J zOCcSnrF4kA!UlcPrfd>Qt^FT0sP3I-hxw=E-vC=5RrlAeeSiFT;vdKQ{+HTOISxWg z@WdDlX&Gc=Y2h>;nqYdP;Y2PmxsNhzB}3dmi-LQ>^Fqzcf4;m}TydJg!KmDoa;%BZ_0&8)ynCC>+$-SKSI=LiKyA4mmix`h z{iYYG>rq5C+4<0K1C^DIH+ZG6us_uCbvrk**&Epz%=Hlm#xfqhL5bdoMhWMzRpceE0ht*L&LU+kl_@J;A@{Ht>fy;ZJtG_eKph z%I|tl`4`WaPtWPS`BB$<&y%;jM>={>={%BUI*jLt7u0}%Cc7k`!-gZ{9LpVU zzytT#|4ZpIop?ZBG@g6pxt|jrcrNic=qg{HNAEm`-sNiw`k*lz{L^ZX-wX@6^Io18 z?>Z;`C3IpsXV6UN3?e=5`IUxq2TcRm9M^MowEKCY@f>&z;GenPo4dQ;TTG+b%knws zlIIzlu_)rCM>{Ul;hyrt2IG8gNp?R+`ShILYtOjedu+SqJ<`#8N@u~Eq=CPg&Np|S zn`j!t-j&b6Rdq39=(^4e#=Ul4rW@nL1K-Gx=a!!C=Y)szy$0WGqkJd7Fk;{yG5C~k z5og;>GX~>cEkb_8Y?Jrc32up$@6nGjx-5qDUIN|0*SUf$)uuMg(4Jgc6fH{_Pt57; z5Zesr{X%`MD8#bXX58<%0W~gKd@j!1IDJE$5ual-XF5XMJR+8o-oU1_Dz=nOt9_UJ z_gNAPuUn+95?91|@ozzqdeA1RO+Y(r4&9;dc{w?ug(godH2FcLp=&=}M?;OG>u9We zdE#Sw=l`>nFO(K!lopP4v~brtS~$#t;pm#-SVs#-lL^N%j&-zftfPfv9W5N| zXyG6t9P4P|avhEEOSpuSD7e#qm;?Ei(B%mEmbiv@pu7&owU-Ietnl26R?o=bdSELLb|E2gfq#bKVjP_AY#!Kp zA*bI~ZM+k;23#eQgWhXsH@w_H*YQu|mAmQO$gltDI^sBWkeIvaaMTb14o_EmauI?E z$`Q*}uU*EsA96LS!>_#aw$b06zV2A_$d~QE68+;BYX6AmNBY8i#Dpea_?ARBY#K&0 zr|1SUTA%AaOiP^nZB@Mqi!lMrRQ2uTH+*~+Hgbi>CQH}OeDQk8I6Z(JQ`LC4FFZh@ zFT%zv$8gu^o@k8jh!8eN;!*bo0{vH%X2+bc#5Z5+%eaS zYn}{Yt*gym6cRSDOP8|&XH#;0JUl&39u^NvHF6^un?;*~coE&$ zuT&7e>h1A$J(l>goAFiM_~L3btO%Aw z)R_fA{fpSjip%!zDzr;tVa0cKS?a6b0b#^l0e=hK{56?f{3XQ3@o@%!J&2)GZ%_Q6<6xA)mOmagGF>B84Ui`{{jAz?*jPSfLBxgHjqKhq>vZ>|HEGd zYH$X9Q|>P!w%RXOSlH@{@6=c8vWUIlFSTFdufOTTBNi`Dj@?EGlbA|v*cXWTkMkO5 zDex+=n2Vu^`&+o`81Rjj73l09%8OSj*ea?zM^AS*xl$n($?BBdh5AeVHQ8VMO`rS~`5jF+ zb1x9B)4$NG(1MogpX-%t@t`i$gh#Hvaubgl9yj4p!{a7Aay>RW+@JBNNyl^Yh@Kfd zYUqsc5R#3?-6bzqhzi+uTwT-AP7PaCHXNB?JuSV`B$yOXGgbM*79pUkkYY5D~0$g?sV zj9}W1Mv3O3uA-1g8ZJ}}2RC?YaJ}xvmCv{|>F{Ano%G|k6vW4A1 zEcf8h-YErHU1MWn5^Pxo-BaSM;laTn@o_1A^U@PzVq&}Q6i0Yc&ORn(NEq;3>BQ5P zkZz?qm8KYJuO$@SNYbLR8+}@QCgXK0P!HlE$f{19E|!+ zqdKP1lEvX8hs^720;>2+Jrb3%<2uy{KS;Gsk0IdM1gbhJi|xiZ8i;We_3VjJEYvlU zv2;r!Q|_n!!6r(H%f?@>U@MJr?Yh`r@txk1fAw7jn|K}nR#W?Pjd8LpI7GQd8J33D zV+=Ld#g2+AdL;jnkN{$A6(3Hbiyi|pv4e1xcwzhrlzKS=W7-h*#yJ8ogmPd?2O0$k z2aE(_C-rSP9$Y6>`B!>NbnWdx3*mSPFPCoP2g{)B5DaTu76y(c{wL7W~2GAK?B^6>AP5Qmj3D&C;3F;4IWAw-Oh zias8vJzV!KC6k&@GrOH9Q$a@O9PM}#$z`39?t{DuP&y3t11%t3(Wr`~3c`vUPukVy zR5el&`NmF0;f6Z$HLZA#j(_0Qsvm|wIZ%2Qcoz7K^Bm_Rl|4@l<5abe!YF9+*|QF4 zdroD~ODcO_O~yN4A0KaDU{sB<@TT$ZurD-3x3Wir?W>!*LV8c6 zlZ9EDAEo4QS1q}A$W2rvM6}>;ol-lrOKz8(*tKJfBi~iu>>|4u77-kT-X9zhrd+az zg(kO|ot-tkJ@($Yn}L^CP+-UAE!u|!d3nh?T_|;*734)??Cdk#A*7>$ldm>7O-cDh zW^gIG*yAk-l$V#6PXK_mP#$se{EA~*_l{i?lS9M8!rOI7?bJ=VL=c;Yw`d;T(jOUI zm2m|d@Y;9E$jZ*>(gvxC7hLu=;zfiBeqS)h8qmnVz<6& zUzKbQ;bEw5G>GobJAR?6g~4$*|0OkU{$IL8?V}6TKqqP;#vQCoPMJsg@F?8Sut0K8 zjor zw!!}va>i8bP6 z06R5N`~*B1_D5=-*nj7Z8wf{NchEfTBG`qRx}k2if`P(0G*F$h{m3`Qna|ztp~3Fw z?!GO8?dk?M&W>g>AFZExVyq>2E?`(_)jaiSE^zDzJHzb42~GLdfQNizocS6=xQ*?% zvmabMV?EUk4v2H-bVTO+xc(1wh(X1H= z#5=2KY;t>hUS8ISekTSE$<2+k@}sViCAD(S9pgrHY~Q})h;et!sVv@=mzij_#^vM= z9b60)fI|UrxZjCGV~HXcuZ-U4#3ho(B}`t_yR31!xkCn>=rrKQ3> zi9y~u^^YUgcPZL+3(}ydX_2Oa`3|%n$QC((Gbo{R)F2ue5k(7(V=veJ*f3_QL5z{I zR>2189;}eYRz8YGS5d=%7l+7dBKdUARB3Le&5?0>Fdo3?iRy=j5gI)kCIwbmZPIbf z>1~G!l(ouv&lsz_n)33jv3YU!T$;nh6(Kfm%IIO`Q|?NR6KZaUL4H}a_w7t}W9fZU%7+m?9g19#^I}1SyZWs$YP$+*T7=9;Y_)c&HlB=hG=%~F3&1ZLHzodN4t||K`%Hm0PV!5Gy388*^?%2o z8Ui|txv(~YOl_F;B!d8&=}4HQzd3n^n4nEzat3=~1J7=$BTq{}mXl{q>&R*4bD8*{ zP0&OO^YO+!BYzr*8%2|SQ@cd=G|ZZ$ebvP;t6_dq4pvFq8)?Amt7KCytKVrZ)XD-9 zeIOUa`2dSgB*=lx#k)n2@tN8syo;hIc-K;#CvuzQLwcDH`6(5(AC#G+l^He+w;kB1 z{&ZGaFQ-K?2w%8hn1#_6s!a8UY50QCDlmL96Q&C0EMs1aI7+Trtx@x7N|7icGVJev z0J6u`@si>)z+BPE(AVOyQxu~q1q5rJu#IGs2466W>nN|RlQ+J zmH1%bllXuiS&+Y&8)N69Yc^|eKTavCH<2{IZ2#bWG)jo}Kk7{epX;(d_`oo88fVLt znf%Z`e+6F$fR}mTE7sObCk(#2-_d#lz3XqhbL!<}Gf<^xhSd^og$XLuN@r@gW}os* z4dple(P`7zkF3>V9-=?BpsKHUr`Q;Wi+Ly9vf=#uY197w?~2p?D~p{9K{2l7+)RP~ z{}S-)0UfI)_Gv=TvbnTRE6OKBfMjB@#cE4z!+?fjd7xX33j!N9Sl&rRu~_V{7{GQ; zn`9L#Zfc{r)`-KcJPHTs8&u_@3b(#1n?l&x0}*1h4PNVU}sp2nM1 zxDl@)JR9sTuq8OwrLHN!8s`I^?7VQ# zMV$A^XQ8t&vi8DZ17R-_*_g>?gpp-fvU_^Fa5lkt-o%d94?)65@nB4ZZ zP%sT63P`74v{2{rA2vMFrpFKL;zQPoKCU$f@t_^LF*Zixi_OETL&G{7$~Bg`T&2m4 zkP?C|T)9t<4o0c0wcRLHeE6MV_GI&@ykTNLmHr?tW{@0qt>^mEnA5PN%AotF;Ujf7 zHdm|zBkZPn{57nwvI!`O=3I)To9x4$(Ed?Q!%`>301U+}fM}+n6dKe-%4Mis;z6QM zj1cyEYIlmeZk**v`>7OK3Fv-_u%H-vide_yQq9!81x3LQl%&o=HPYIN65-^OUCy$| zKI~Lu5FHIp3xP_q)Kq9BtwJ_w8)ox}HDaOCNeH%=(NXHuX6`VZfqvYD=Il(0ao1$V zoYQ#v0)>-QL~#$yi%W@K%DVu0`x<$J8&8U?3mVUZ>VD)G2ryd;qoP!yNPgN(D**Q% z=$T|K;AlS9U{81iB4WbZ;#cOS`qbSh6Do7ig|b%sDt=wg{PZQv!5re6XiIXk1Z`%7 z*~3)^T1+4o=ut$VT6RkYbq@0qzt-JQeacXRN*9DjKJX}X;Qeokf}#05pq2w zza7fj<>Ke%xL0wy>-#KFAebF1see-&p}l9|fS{%55C#fXrk35Do=qZZK;A6*ts+K8 zV;TaDu_TZjv{8-NDH})}q5Z*XFVR+9Gl)mAk{k0xTU6@L%#X*j%S4m78{Z&OM8Li0 zNjA1@6V-78pS-C2HZ*r72rzKO!DbHQGXQD6j>k^90G!faJH@x3a)KGlYp8I&ux!&N zrGm<*evu2_mxK2d{Q`YA!C4fBK}4>0L%_-hKSyOfUM4Ea9_L*N%DcQdZ!X?FrC+>U z{yWMnDl4lyz{Vo-MRWZdeU@S`NBIqW34|?GmLJ%(XviJl&R;#oB0nhSeI1WsTdrh~ zI3_AtCsYvY6Qy*oWkB?7q4h1v}BbNVqhA%WvAH; zju~(bj@<gqqX5uZ60=nPjIjP5^tUT5AD#? z8TAbeq#l?kTR8o5)u2Q@+C`76sk2Eq!Hf9!3ke-5aCi@@!p1V2;%s+!u6a4vXI*w- z1gLV_l3k``5`^)Ft(Zdm!p`cp;AA*u{NrY?7O5R`vp06_(LS|>m-)nrn;x)nGzK`v z4T)cAiGubgr|a0GwnZ zHWGVWxKKHe0nC|O5=`YeCp9n*uvJt96)G0l#Ujc~6LGBgJByO~l7XGeBHchI_-N=K z0N^@PL`GB~5QZM|6ozRQCBDFy7~Om3EZtqMeFE{kQTOt9YY#3pUypGMaYKWdeQ2A+h89t4n zJBtGj@D%MS)zyjL_!V|1d*HRw^?hxRiZ{hs{J#09t?&BMf3dYB zhv~c%=aAT71AXCD|lbA0Kc1!FT3 zd}I2&*k@MxROT};y;;r^OT|k`9rAP2^3#*TMn86M*Z9cclb$=VX-nUB`Gd#aKj`VC zz0tpxKRtK3I9h!t8(NmpCAr(Ap`$Mxm|^hx4fuMmK|RT}Bx)zdM_uFS#(&p6=p#3N zv8#6WJ*oWQ*cDtdFyO)#jRk#5HKvt5oCS(<)ao2(x{r)Jguq`idH z)VB_Tr+vXw@+p=BFU{;@o$(}aX^h|2P&U$%({JsnP5hYN=Ok!9!Aeik^`=#8`saG8 zzwr6}D%K1dz;;MRvhk;Ouz>}uD~flbeH;{DoBNs%%BWTy07tqXQ8XWHsUv8Ka1uks z$QTxxjM_SWgKfdaqH?JE!REd!UhF!?!}WtT@$m$hn+qEx0kb z!*5l;R;NIsm=fp!hxj%u6qRBoqbIchZcG+A64nh;z7A2)cb_u_Er5GVqr$al(M%SD{#Fqb0zn^O((j z#U)m9OuxbhgSP~>fw#cpJ0-67u&PG96<>q5%(0Vw3Er|GoA@2Pb>gLD8oU+xJB4~% z-m(}9^oNKL2?QUcgDX&B`9^THEe>z`K=fwM6K@@>m4ykt%Rfe7qba}sbPdcc1aH}f zjzj3EX+}Dj^1bo}T9>!!sEHx!m#ITaM~EwI59a@)eBp>P>Y!RI(&nPiSxiy6{$_qb zecyD@Lz%*~DRh)Bw$zek`??=o_{($bzOijvA-nU%P z*g+3%iUq|ql#%6dqy%I9C!M1D8vpgWSY+w<$8z(M-;Yok*jJ1_OD_T2;@l9-*12ZE zYL|}}1OQy*%^p5D*Oz)f&bdDu@D?3%pOTw0SQ&wpw<53k${b~(xazjJiwJN16bwc1bkdwO5(rI++H zT|N1*V&z{N{JF@JwU4ltq?iJan5wzTOgJw7Rp5aQhg8-@jn@iTGic1Z2>JDqrh*1o z^NcOTL@+FYm=q}o_Tu=&wtp|%KU@rx|MubmuljA{Z|s@~#25Z>0ME7G zHd6ULSs&$u@-oVwXIiHJTf!X0Mk{t@ANEyf2`kY~vgo+;mw7@(Y zeE`xg2>rwleT({rANqsoo#(N37i6+Plu&mwt|%TNj*-B-Fz1t$j&#~{q6{}j!!CLd zdAB55!BJb7IzF*q_mSeQFWLB?#elg(ircYK;th4J=4i`(qoNBVPp?@qzeGgwFL`Ty z$o!2@)tpYZ+0vDa(2xbRZ;YFMsIS#7Y42jb7->qUuH4eum4UaX6K}%KQ{qWj8CT7m zS1BFIXO?gYPYBh*EQrOWg(e`Bct)@%Lqk*M>34DdV6(_Ik3{hhOu2eB=N8`=?gc0Wtgvj$XQc*Rt(YH#MRk zFEqD9>w?`Heo!?#cbeP%j+q_mWwPj}Y{ffolkIuPE;Kh(r#_I6P~LM?*UbLb(MFl_&soGX763f1OFS%2 zObDBRojX~sfsy5NVAX(Au<5R&rVxM*#U})~P{d6WuKf^klklT+L%eXU;^T#DGoGpV zCP_=U2e@$8kjWb#e@TP4lLiZ@HmLD+Uj;g^oODUr=;SH+NhD-H{ud8q->AJD z?dB?Fx=-%xin`~O3v(Qg^543HSjIds-#Dl4B9_YNDxP?R?U!uoE8-LJvAV0SMA`2c z2DUU!D=mKzc^lt;5Nk6(Ve{>%PNyZ3C` z&kJ2@2Vzp$Zk#)JLx1C@{2QaPrvXXIHUFr%ExVbjiDZ* zUKWUf$`P}lv`%+ph)8ImNt@!waNennJpb939=jg7CuCD#mp&fd8!pu^p1NQSJ%=&h^*qsdPVd!z$cQx*CmzX|EkWC-?jmQH z20G~N(g}&;D@ai;Q6oiMx#QPEb?|!Iy_V8eF!u^nSjOaUiYxVpQ z!TQ#K4*652_lXY@o!I+?MElJYvwNCSds`OxiK?cloIF{@?uigpCk&P-zW4@<8nfmLW^=RT_I!#LueejN zlx8lbJ;Z(zRyVsaJ89?SBIG{!Ms372(=-=j{XG-~@}_ohGv{u;|C4rdGbeApceNwz z!&TbQKX)_wKXdoLWA~r&Urhr0BlM3NSA&-NAFAPR*2!N~kpG`n63I5y(*U)-+253g z8!0WocJl1B;5fE$qaXUw5oCq{k-Vg+OE#ReLNQO3*uczQ9s#3s7M0|m$apb-Y(ZL5 zlE=>cf~DxJc+)Po!-&ZSx_BSoPYdyesR?Nfoa~3DZB5#a~*oA zvNE9kh3ZshKfQv}K4B%?vDu&gInf($1e(UOiJsW-alz-E6*hy|tyB7_ck zwj?4nOe3-VXJpKb%SZ~#o@N=Ee@GHix+dt!{QfWhU&vq?c_~34q$+nJr6eCb6|qLb&;LZK2lO;{H;*xMNoM0OTm5QF@DnCgmF1T z`)JzX39}yZvY7q1mW&)2$hS8#R*8d7 z6&w_v8mxVESKT*dlP8ytvb!$$1)RJ5KD)$39AAnx_;|)XCi(Ub6x$Ry_(np{i=*I- zWPYMiwpC&p;cPGoPR~5$nL$0fswy{U4H!n3V2L@a-_&QuqhdVFe$`Yl(+^FY^^lKh z4tT6&1R0?T&uzeS26>#5{B+eUS--#=9L`16t|anrN_!d=TfBJx*1eN@jo3E@wLE_D zKeqCrF|uCUv3q)pwK4sNqmGlreZ5gU<}nvp0NT(lOkZLEK^BMLm$z#~WPEWpq`=#? zqq<4bq%xbDkmaVv#8&Q=u*L({4R~I{h;=(y(VU3-GeG`f)LacP%8f$>PB23c0ifA4 zyT7LwJo&W`d?vJ%abPspkmQ48dZV> zjnxzbokk5V8rp$6(aW>{_2Gx*Pr!&4vX_6Hj_Q{?cL3sM^-S?P+0 z)L51fRSXVU{s9DD9#oG1ABJQb6_Zdqs8L(Lfxen)%E^sxAKj&`DLFQn1+?&qYFpj0 zOLeST-NL6jI4jDO?4K2IKI>IPE0f05OOEqbPm=M{^+_?B@1F_WV1v;AMjTVOy;)Ry zX%;D}x$IoGh-&sBH4WpjY>6sYNP^2cz|qnlsrAO5^9G4wX^XDf9BmuPW!j8ycC za5b?Xk zK%9bG!W!vg$)O)z0B_qleRyIL(p4=cAr$|#(D(#ZOOIE^Aiz~M&bDpITCve$m-vh& zup;pUOe&v=ZEPw(x98BqfqM=;au^?f{^X%YjDBx|2Bf})F|G@&k8*srLHv+1Z#Hx$ ztSCXl4-X@)8Naxdsc4a0nhs@0R>t&5?i|%ZWn0Csel2YyM!z+BWJZ(^9EPgZ7Ezts z_vq1{UW+p3qJF=<`)j_ujAU6e9N zjcV7k=h(en(u@}=S$oIy>XAeXJv2UJ%#^stptb!KdNgbT#lOTshjNFZq}`uD)W4K^ zssXcJ>b#-s7~+-zw$w*Ca50_->(3*e8lIEB3VrmLe6MMr81L%^^10uuDf)5e`;T4k z_2cv&4itvIOZnes8J1M#ZK)C85I-8b$R!|w* zed0$Kzo5^^*vc}7e;S!Q$o`vdB?}O~Xyr46f77Yc&uN_=V2f%6yQf(Tu~g$?RddE` zQ~LHvN$Jxk^}5}j)45yb-o4Gobp~+Ns0(wb)cFI6c3McHU*pK>)C?$nP>x+eH*wyq zTxBAb^ZWA4$~Kfu%Fnzbv2EMEci#2nQ_8Nr*X?T0iM@M`AHQbeTr3!rb)EnC_Js?d zkaC9VUF+|J)c`3bJhT;BZhE7ltC;EY&qTfW=87y*`TmhZkMM_O+lRcOa?F*o9KQyP z$>$KKu(g=Eo)a?!rJ~^a^ruC4gL&bEyY(g_^V-9%6HYld0Cbh zRt6e4qrg>@8S8qI<5hdupik#8t3Jpm>7*Ehh`rI6uNnBjV2|q-@KdoNE?+^TlCZ>M zj-(kK?7noAJwi|`p;l=wH8dEsBa(y`3P*1aO~mE}=kdz&u{k7+nnJ9bD)q^n_!cu~ z_Q=V}>G^|rdr)4h{J8jjiR0(qF=p_%9$6i2`LE^Wh2|#p9XqyfQtq2s)3URt892Xa zi;9m=6Fb@Xw3a=yg*~QcesEAX|A0B;OUtMA$;iv;GVMeCo$UCy@)HZ3wYt9}eWo^H9Z*fOv1w^dWM+2?IPuj(Lk zfJaD>A3}3LfAYZIdn`0ug5qbaLuQ>#b!1%)5Ls7A^TWci;p0JiGm{<(HtR(NYs*Ux z;N+wHSNL6yS|OGk5bv=gujuzHyIAJr_t4A5>yyvfuY)hHxxoM@U#z))s@cRnynGOW z#6vat0CpDsNbS5tKXR>FF8>0gn=7(?U$FCNyM9vY|D=$SC&0GM10Ja%@zTCfU?VedDtfC&u8r44cmzSXOOfDt%$Eu31CvX?dDTE=J0`=BF&xp3H-r;w@^NH^SIm z#Tl9KH@bS`D%Ow@X3wJjUxgE^aIAU7Gi4MTWL_z(qF%^?}mS@%!Zqn3u84&U?TX?*uYLW;6qoxQ+ zYzQj@Gn^p?9g0vQMM~oF66+4m{9YqA*v0xoEJ%NylqALUVf_fKJHoFIyn*yf0}Tz- zd`MX}-jpP}7J3U!x0Hio(gPcCz-C~nvMDE7UadeNnmd{z!c8BFe@Z-pp$VHbYH>|l zU82N_@kAU0@ZosNeQ#9y^X_>lv$8E1$TqwA<&~pPb(j|96*by&F(PQ$Snz zk8t3E3eNpGAaP0Z^JG&nZgL35CR2OMS@l!2H@OFeio^a9`m&sLyry)mJFR9ogzHKT z6m!J9e{qi;-0Q7|%bUwFYLqDkdYjaYIz;#HY<#JKZ|T48(0~6IdyuVnUrKsw#LtS^ z90Z?h4873z$nZ=?B&ea%%TF4Z;7tzw6z3u)LLtOaPW-Mmaicr+>(^;?TpMw+;d*CS zVE68UVe-E@s88=Fwtw;IXJ2mL)dxSjwtxBAr(bM;qIaL#)XdB;*jt}xW@Tl5E>gcB zw*%WJSXhYotNi9>F*8GmSQ!n3|x4juFsJBG;qjyWp! z7W-pu+{Ca9jtOZ(IwqeMER9=ynX-*{)9-xr{*59~Y4P;RnTT_H=P5W;WwB4s9QjTh z&t)0U>|rr%cJ4P*kF4plZ4Q-Lzms%TXPF7<8Z2gTVOJ7uT6%&lnJMA=%X|gOWY-*D zqf7+MU2zIaOs^^lD3kTb6{nxsgIUFfCS`U2o+D5?4J*J4O&*96Q-COnPax+%OQQ0S zScT&V;HrGQLO-J@3!lu#sdlU8u`BvVlldAweZZ4S!HnVhJUi>L%lkzF36ALo_#K3T~=)Mw6A zOpccZJ;@&#(9Q9w{pzAaYkqmE<~cSgTkKtFKaPEQ1WLkMkGkFqy9m}K6aLb40p|qS zJuXR0CF04zQVA;nSur=^4pz(&d#AX1_VwFZJP|a|En=O0yuL=lZz0c3FyLd^qQO81 zl^U*!unZcVNpnK?X$;&)!mgX_l%9Tv2KCNTRdcri!`xR&w?^Gw(%l9!tPmbRoj`XZ za5q(|+m7zEUtu=bfx+3qm+?EId=2sw+ufnRrg$va-HRoNb@SO*`sa68TpXF|=2mRs zZnjX|%Q_}2(h6*0kx$q^VO_evFsx=ew(}gS7GHA1GCab?J>L(ql&iDk1juL?m(T_! z&gd)hlubgg!L}nOtFQ^vfe)A{*q~`qn>QLxLZa%y&glzEQZjDEu21IFCr5P77%_2b z(ZHcu2w;4rL_fxtFMaYd<8LYdv%>zuZ@ytF?A9)>;xf`-{FMEvXGAOTIW9_l9Ifoe z-kPIqa<;y-A4CcG{7(HK@OgY-eqIc-$~H@+tdiwz8Et zKf7j$`0Bw!k1gA6KP48mV#)Ik-NPa_)NEy+Or%Z7jd9Tk7eoPIwhqkQ!KL(bNkjPP zr6=%{2ez<&dmegHU&#MCVNV%5pkIyUN&3DdzFZ$Me$PZPfVYg*&+>7sXKE6EqC?vb zFV_5v?QJCr?y_&$w4>(fmyaHLRg7uH4lJ=hwrSU)r-29Qj)x%E3TX!e6e^X4niA6E znf8&Gr~fbaWDkkij&;g>woaWOmQ5%T_gv$qyZ7A9Z_XQ>Zqhh;}K;9+b@=3spS%@6w4e- zl;y1Q0z0wcz>tu+|u-{mKZ(BVr1xRF*rI z&_)b)357p?-+>JxPaAnbEWLZry<+7B)}pxBS>6zdW2C9|f0T=jalefP*R|L-m`%+YWU&ZctLd2;ib2VOfR zzLRvHtAWmm1lB<1&c_IYfUC_4><$Ba4l zIVg-UeM2Iqv|@9_`px>B&0-6iYM^ZJ_-uU|V7=~yg#m^9Gukn4h9hr`9WTLYSZ{}Gy5qk_+Culwi{ZgS_y=0AL z6q)g6Hvg<%sS8)HI9_^V^_n#XuUDNIN4(y=nI)}R(}>;F|54_zjmr$Yh3jw$yGUgc z>&Kl~Ww0Jazd_|S;{KX7DDOl)R)Vz);0NjA&brU!q~p=Ym{eo5HLy0O+{(M+v_vtn znlI6NW%J)1Z%kM*KwM$Nx*e+`BG~-W6$4m`ct{;0d9-=+<{#3JZr<#%T#|Fmc676p zWx?97ZrHSVMwQV)s)6CISwTB&lXWA4DpE>b09oVmMm(x}D(R&whRqp8wEdRDKXZIJ z5m>y#W_A<9*%kIOHMH?PLOeHLvz>_jNJ_*5ZN8aj?$v*!_*+1|{ z{fTT`)SuRnMKf2!YPQ8A0OlhYVsNKuxFdU#+nNL$L)~6=6qW+k*d1?BZ0g(P&$@Jp z@>?{8_JdG<>_m`T=d_QIbrgzNQ@6mb*j#oJ*d{*GybX^SviFg>hko7Qq^zFXyA z?-!39FmM3=#uhhRiUTa<$BCsK@l!hSM{(7C&E8~XqS}r{tupn&#KZvukItNabl`wQ z{NQ@}Ou9Z^HnDWk!nLawEi9c_hU!YTh*UbS>d)5Vy2+5xf3s^VMTN6w?VL5cAa`NA_U(_Yxc`}> z*Z(GE-DejT%$&J>&a#f}ljr5#``k14uXz6K-zBx7ZwH#%$uq*;d$p38v3raE7d53` z7spwTPU79k;@wWHhdADeb(qXL{Ps6V?0B$d)N|r#HuSksH3vsO$A*fhpJVFZrLmzd zXpNdZumE~Q8%18h53skN;AN_$LSP^r&>zCwH7jJ)pMrRIK>NYS#A zudn2o5xMrqQTZn3w_G_(0CGn_9IwMk!HS{2VU@3o~QfpEBH6@a1 zl)ELarUsPwApMXFrABE`N7(Tyce_eYhW3?}l+s8o;w!&u1ea*IO?pYJB-ouEd->cn zQw{?_AVK0mmC7+kAF-{n(uodA#a?=6dfNBwZ{S2)GPOd=#R#uHm3)M5H*(faZpaP2 zzEOTx?whD$rIive0oNX*>`rXKulj?ipYI8-RPNA#2sAdT}t9ySWvxeG!ROmfw|^S|TG^rxru^gP`2z9jgXV&GW^%7fFWBiG7JpC zTDIL$4+ekV2uniS@e`PhAMm>ozVIzJ+CWphsbq@f#5bV48;sBYj&&7lr?XG=Zzb+m zsV4ZL=>q%|@jUq^0vs<%^wHKX)<314(TYuN;ROIY5iHVhkH%(%L~^1aYl5bdVr_;e zvyJT7a$5*&h+A3isY%%byA|5z7wueGv*}ALt1S9*Q_aeqMe}Wi-3De)Iwel>_Iq28 zwiTpgrF89f&-9&(cZ^w^m9=)vj>S8t-_xxt9v9d~H^l*KSFnsj#mB5V96;s#Jt3av z@jys!YLix$aKtq}BPNNHO_5-W#Hyx9uw1s4xBrh=z=%jTiYUy}zQGlC2C_gzyklBN z$1c@_7F<~jCb!%5Y96?UW0T)4={>m;i1nA{N{M3^W-%;=O=J@tUDZ?iwLPfQi}l+v z|0=^3t(=>})3JM9LcsjX?t+2fgxu5^%x&`-kmS702~6f|43C=@vnduhIiSTygO-fc zun_4^X9ag-TXo7H?>TFR8f*B&Xgh{}Z-46N!D+$z;E=RoKkwS}{m4$i{9uTqY+gaZ z`~sz5=-z8j4o>Tlmo{YA&rc2S)T5_gA>Pb2_|Ozqqw;Ny;Kob88*>Ps;DUwn-LL>x zsg|(V^M46zBAa3!0=j%*Z8QbrwCM&I@vRJUCNkw@aK|y<@80$E&`!bZv4Z)91?2^3 zi#SdKQ?LO9 zYgbYKsC^3P=G;wsO6_0wi+e*ULQ`IKZYf18Y?6nx4+Jn`2%JWFp3QC8v8r9Q*Pd{1 zTfI%baEe*S;*5N5V92)935+wy8SPQTpYtKU%J_riEJv*bLvX7^TJn>-#*0Sm{;_vL z5DRf6@m~Hdvfo;V2$ACZpoHE(J~^U@_tanPp0n<)Y!uf}rnCmYr9(>xbJc5(_i<)@ zl5!q9&>ipF@xQK$+7YX-6^qQ95w8Nh&y(nkW6E><(=+-KeaRXAv5bzf=#N#Fez&BR zNn?%s`8@;?%1pJvCIV8@>pZ)=fXI_kQppRqiOoGMP##i*~>el2k~-2@|0 zQ-W>_LraZM$B<*dz&>9UFj%LjMGwJ6kEdD3ufKGtuh+$h6BJ05<*A?5bpZ%&sxnon zOVy=lKWJs17B-IsFh6l!aHv8i!Fd%<-t@yR?w^?uxF>#^KH~Z8fYKXzf}Z2c5y-L` zc3{isBNS)@Gsut5ol|-Xnf4FXQT0@t!JZ0lFqiM&AB|l8xZcFukH#rOUVbZaY6gHP z5mA2QXz864LwRx$BR!FS`YV2hhym;wv8IBZW~VE}8e9)x3o0-$W>m1?U(`2#63VTZ)a@5xHUF8&(Ipmh29Aq-Ez4kEs1rXUEe$9X>NOv;uYkadR39$*sKIdLrX^D3(96w(92dKN z#y)3Xd|X%jF(=pc#%ba2f~1H9EwMBY(#!eUZn9|giH}8;fPe>W48EkU{X2i{5&qZS z;K~hb3HyJ@dlT@eimZRQtM1kb**e|n&IVaKArK(@1|(sN?4T(7z6dA?f-vB)1aK50 zD2fX1xFJSFKtzm+C@#2-`#PcygBvmqE~Ak2t^9wdZg-~>6q)y(?|I(m`2x4^QdOr; zojP^uRMn|dVfq=C;J^txptYsgHxCKsEVMaeS)onI;L|>2i>d~&OFtB47dKq2-YYf= zFZ%>udsq36C>d0ikaS2^7|Swj@IW<<9Y%b1_(O5?fGV)VN+rX01S@}+vrmLqY($w3 zz>mYPe1ca1B>RH%}Wl`ip4AZW+kFyPI<-f`mv)|*Y5T8edYkn1|pt) zrk>V#u*zW7c_Zff{Wv%==Pi{Yxl$x`p$tsF`xgM{BfO_MVhla)V}8r3J!8h!nwRjK zD~5OMSYckuZ?+an@M$xPZg}RIr^OFSME%~{)uYGO53eZC>4<#{*8F?@GtY{j#ZL#G zA>QXUcx};+YC|zU4I7X&Scqb!i3~((^SL_?!!Jk^k6VhY?5tFf!J!-*enqfYY#EO~ z_;h{UdNIFlJ%6cU`0xs|f*-COJ9rpM= z%9p_>0n|UpE+~bhm|6K|XTj}_1M6NmJgnHk-wNidJT0y=zmfT}jdkm_e6xab<}aCL zGG~6+tbqJl`*Z_~!E>3FGg>NR%TV4j_#;6lBArK}tfUlLMJ7M+G}r6MP_G+XF{pk} z#n}4wb8e{LG^ehf-(5SV!sV+_UUF7|_EY$shu6>Xuqonh&z!o$<`gLdiojC@8_hU-KPX7SdKP02kR(5eloGLvtu7F2mT=nqIC?CX%`uf+gvi}~>tv|V)7n*O-1yj=c zlP4{nu}y>?Nm?IT3Q0xF-cG$AdrwQ7PFeb-ViW9paf8^jkG;K(4m~IRvrRg`fg0=i z?z_|F{JAbu?GxR$iEjJYT;u@zxbT2|oQuZgAr^9eL%Hyvp`2+87|Q*j$y})Q9Le7{ z`Lwp6`%Oc-inH0%wKlB-{EtOftXaP&wPUE)uw{}mkE+EoYx-Du&Q~QD9I%kkVn-=H zgA|S3BR1BH8x&Em3~ezlL0y~y7m+1gQou<5Lc_;$3BXl}X9K{MgW|JYY+gN^zejw} z%b}sPn0or_m)3JE8(3H}1R?rCRf_`}hfRD41SFI78=@KqF$v}q>_Fo~A2KqZU`swE%LP9!%^@(Q zbx0UXptG`zRZpq3L4cJX*&x6^5&I;(hRR?BLe7O z$65DZ)@*xb_2HwlS^Hl;5w+FqHZdXZ@;^=dka_Pn?-|5nM)nbNtr5OwKNI_fZ#0UrT$G7@-><&@wnf{%nkHU{*`Qg2b-(UX3hp)~4)9j5&@T_Iw^f~C1 zfw37$xS(f3THAzW7+4-|T+`sb!l4e?I-1ppM$b$Xzh*_c-OOCL8 zl#Q=%Ad`ANs~(y1S;R}Et5l&q{A`2#39KwyChh?`a#>ucM>f-kBT<9KUv(_^4>4+S6>6bbNt3kG54>+75gSXB34w%9I) z+7MzLndUMATV4b9&|gjKV;KxiTyoj%v$0QmI~fN~x^m9#%7lO&nt&Bp>agsWp}HGnN~nH) z*P4&bC;xWWr{+;*FpIeMt-Edz;d(^1cy3Hn*-7)8YM$`LHa6b(FaAQgP^;OLzsf$P zHQa2c;jnC&0k;%l&dc5aTz($l@(#Ye;%9=(;E2AORgF;(pXBk?=GR|r6Zb0)vqw4e zRg1eVxXXd>Uyy@GT5bVHCasw1phiO7YP`&;Y5CW^X=-fQR`ZxL;JLe2{mp#hFZ{2* z6N~Q}&$2g)NOl*0p+acp<@N09&$qF0?89pD;@GCLAH-Aj;`8di^S9WfH_%2D+xud< z_9615xzR*e`#2~sGRC&@qCMc4;rHU0$oKgJ-`@2td)6#pqYU)TM^+8YHh~#1_Ksoa zUBWKELp?0MjV9^DzwbZE0>+ZfWkV&erzJ{fkfe8m&8D zAa^Q0)eK)#*hhGR3B$>KFJ8<`c$tZKt&Fgw(}UQYMWq$TT)F(T-YV*xJ49SCziNj_ z+#x;8g7y-Bqd#nDHu?9Lmcdgb&4a_Iul|nTSA{gk@RzN)$X_@=SxJ)rk!Rn=2efg& z>)ls*b}NcV@{Y;~+hsR#?(cZerQBKH9ZP*(Y0m&rGCE3yPn2Ka+!ZNU*|$rD6We{AaG7`R?CUu!<8yLM1ig!)ob6u2?{ zOdrWfiCf$9zvO$B#;|Ay_=g9}SRD@qSOd^bu%|^0_+Q*{(Cp8jwD`X%LjBR=e|YiT ze~?X|*k8#$SN_l9nSSrY*ImcIA^w+6 zfJG`AK*e8nu&>YnhLaay;=9(o9zvxvyeyMRAc`WrShp=pz|*oej=24I{Vgl)ww}T3 zDA8|uG^Xk5vw1aEz9eox)316kVbsI|)iF2he(z&pH#Ah{Jzi8Ux z%ft&u_HS4`ZP7ez7CJb+_TF#Ln>KC5ec$#|J(n+@ws=Fs5%I!2`S3aG@qYhrAE=!+ z^}KKItDP!wUBCvb7bxrHnyiBrYgl{X_nL39T|AFpDc)fNpKoMc#lGi>b~oB=>S`PZ zsnYCbAx#-#86CFs>=ZlY+sE%0JH<}Em1mltnv?6<`)sMWhVo$dDWAx5J88xhV*ng} z$CNJOdz`UE$JdLK>Tz+>I`oc&F5*M$iso{*+e^ou;Rr=Kc`61c%8tchPe0NVoli%$ zh%&BH6_e$um2woU<;x0uSCeA0>AUSy8U7*qJ{gWYx;MYbAJK=(b3Z&f=3OuwBY(3? zV1tS&A^K%cTse5~vSoAy9`vD$hs__p>eQ;?^M}}(tbr1N@uQJ`dM<+7 zq^CZpkk1pNPwp2#UazAg;r!?3sk)P|21kL~v<8E@wmAOt#*K&hDAr(Z=NmU}q`I8m zJXN_W7>{fb5tl!0Mc}Iu-`p%>a2a-H~L|9)<8`~LmrDOR^`9jj%lVPL)jZ$Ihq3^O6WV%tfW?nD{#VR2J~eeh$DJ6fd!3$m%SB-$NyL2INXsc_tvCf7)5v9>do z=V_vn=IMGeIKHB>0H#ji-QHSTEx}5RwH_A-STwJPD9RjK)_79*_U~U=U%ztyex^Rj zIzG92%@a@5*4NiQ@x+?dPl~=%`}LhVwcoaF{qWm&Dj)t}->FmTrcSM!GPN&X3;=x* zbN`y!2G+4*)$09L%KfWXHHeQIYS+*^lJuK`B<8NEeF3B|{}qX+^fSW%i9k}>Thp6V zBFySGitXxHmcpyVrB<9>%1oug&y!RoX-b9AH}X21M)(g-+h+jhYQ%~0^EKv@G8|X) zx{caZ8_f}%jD2mpn&&GOctpLDz{9z073N~p{3GT+tn>(vvBELm3_Px8jT^DWr@c9X z!r7z3rZgIJWP8MnY$E9DUoNLbGjd)Qm*-%QDiH@>9X`Ffv~zNNv>p~S%V8Hb&7Qf6 zE9~hDdzDlUMhc_W7Iz^ju;B1 ze`l^TP0=?9mtV@daE*vYd!pa6-=UH%i(Kst$Tf5wIUGlr%@bKm_yuG6@Fk+7*kIQ1 z2408O&{x?mIwHW_xrBYxU%G?=&);FQ1z|yIkiNpwy!gEX$&T@=0P1bN zn0f_sq@Xm?wHt;yA$c5u_JS2h5H^g{`Cd5;3x#2Hu-6^NLrS>sms8(u;ET;V^`A{& z(ITvxh!xl)W*uLA9evhazF&O5Xthl)z8LR6nQ1(de{R+x!WDdpm6!bvOBcv6?Ib0cO>BWvBkHb}%R)7b*!V0=GOYg~wx}(PpdG>}pYa!2}aenW6 zXq?}B4ow@H*YCyu-+a#w!Qc4*;5iij{|3)_?9r`L)B5O#|&m2MqYN1N2|-KrjA(?j4kwImpWfTCbwUx*xG_?8#QI{;#cX z>^g6g7ynQ7`K`F0{?^CV05Z=K)^fCOaHyzUpi%ay*F8C_z80Q0k2n8 zyB z-kVds1H5Mc5IBDFpc{Z(WHwv)-qtc$ie3YD7ljbTVN9VX7QXk?DBmwixbe_U8%XMI zXuKK{7J}IP>8ewB{}(J^#bh(eKO*Z=-&e|b_J|na zyI+jZdQB52rit`03>YwpGQoiGSFFjj^Pn7SM zH-D`jQR%AZzmqqErL$!q8z@kcso29&>#wYMa_ zu)|Syi1_8PDEb_6li5++#5#)$*dxj~wo{B);HO!IK~-^ z6?=s{*uq0w8@6o~zOgG!-*II#JIeEzV*VtqHoy1%(@Mt{Lhn$Z#iBxX9Xe#J`(+{V z42=<7fVob>j3ba493YF?!j+p|+xphVt;V|Jz6Zo8;Sw{jr}TTCr4$@*i%W3~mi`N4 zow1HM*u{<&zOCCDwh}5%9?O>UC}Em!i4MNm$8C&nkY!j0JptBu8IC+=7P31*ie$jvhWb!Dl$x8 z*yV@LvHX-)4vo=sA2BBz>wX=2C~T3RMiOTWzFf258?e}c654kj`h|uafzu^(=iAlXw_Ef)V>@gl;ek1yC=|Q-_-gY$L5-wx{ zKr>=wn&D6;l=q#%62w3E|9PHq^{Ja~8+q}ryRQGcG2JTvedf==XT2;xjmjo8G?+h! zS$gkw^Ekq+@;NY;m6jH?+|Ta=Oz|~yHY}Zo;w`^*6ky))`KfCIFntmiDkElOWT`yv zw8A(82eQc$Zh19eAE-M`g53A5bS`@WJnEnD^)X;-4%5^hP1?`1|#s_sH9tu`4hEmI#anC`Xc!>w|OD|Fr0&TG%^QDgTs1WNarc@Qn)jwvz6r`%M3m`aw~fyG2&TiqGbSzK09GJe7*6ULX|&wAKi z_dSdMzOL?j@y++YC$E*mt&&h$Q6EfIS4Z+&x80_vDc8m5QR`4f#WqI#s=mp`q8<`x z*DLMcpxxHe^rjomyRZhk7y)Btr??cuxNl!2Pmc7n`JVdvd+voV%aNadwT`oqBX>M9 z5`T~E82RXD@4olhXYalHnQsSwJLigQ9~s>6=G8d+@qYA;mhCL9pxNjcjw~Djjsuvy zIKbQMfp3JYR6WL>$`)4a{xcoz^!lH7S3D`cO=D$GvWztGG+*$b`1HXCS*EgY`V{fB zc~U$*W%_pYs|nL)9b7YI%3NPHyXEVz#U)=OPiDJObX8ZQzoFR=InIQAcLm?N-4_F+ zQ+CRn$nQlw#kK|W>^EuOfDW|E_cuC#$2!$23I|nXU~?gz5tD&u8?m6at{Pk;ab1jSF|Mm|-GXZyu6?*(!u0_z|CyChII}VervUcSY{vnz5f@&PPz^4a zWx3$C(`6fgYYeX0xR&BthwD~c58-+e*DJU_#uZ5?Upi0w zb{-~Qo-~{Jiq2cQ`M$!0TU&aUv8vYeE(B2t<--57^d{W)+uFZ{tDCIBEYx6Dpa!#0 zgITD-EYx5YYA_2mn1ve5LJel22D4CuS*XD*)L<5BFbg%<0EdCFVt~uNv(#mKctjw= zvb)5CUW|G#M!grK-iuN1#i;jU)O#`Ny%_agEbBcP_ui;?;sEPu zzb)6|s$4+N4M5KY^jtvC1@v4%&js{cK+gsATtLqS^jtvC1@v4%&js}TwvW!gB#mXQS^0cuvN10eOc!E9Yqeudvz0G_^*Pp`BT= z^$;|opdRL2xKMdAa`8ups@IMlx4iG7g_llS4;S_0#}zHTbkf?M_dGZ24_WaRWz~cY zcX*Pv=OqsteBRLYJt}%s#ieeJcdc7^{sQ7hwN)R`0mS~PHAkkR*hGNT|FaxPxIxfE zDkbBd_10M=Njf?;Doi>ek{HXtJ^K%O2QN;Pr@n!lHl!7wOQrE=#ZN3U{;wN0>=S+d zu!@F>)x5vCf5W@)QYX>6PcCPJTGvL3zcx}(8(G+VN`=Y#KU*^mwl4mbC#6Oq+BH06 zSp9t=SgjE4x)ANU5be4U?Ya={x)ANU5be4U?Ya={x)ANU5be4U?fNV=+tM#IKy7L1 zFEXH|5Ro#@p}&aJr3tiL=xAxY)Mn46*4Y-`Q_NGUQg*%h{(eeo z%pbAHr# z0=7*-ouoi>Oo8T@0?jc6nqvwy#}sIeDbO5KpgE>Mb4-Een1X5t^L&Yif8+9Nj$Uw* zH^50=aFQ3ClW5-QpcixfVzG-;7p1W_l;W6{;Pgpxz4GbLv zq}#qjQ^E0xnYe5?Ymo#bowcarJ?hi{j_yyR2%PfxX|Mmv7@z?IxIjOj_Q(Bvd)Q}D zJ+}XYy2J7lR@~2RJa8$0Slsj+J747gVO_9IJ@KVfy0N!b>(5EZJbK}zNf+W0FR7P2 zap#@;W~)E?^&&uAt+vuD{XZCBAsPllZZJBv!fckAI=H32J%|b}2Sc!hE68%~w z*rF2sS|$3mO7v@$=+`RIuT`R7t3@!u?%gX zEYJqZ5K@LVPzI(cLmMbV8z@5?C_@`4LmMbV8z@5?C_@`4LmMaq@U!q?Dta&?FRApo z7#z`aE}n}~26`_3BiU#TY)VVWA|$|jG^ORVOg|)Zo(s#djTcSnivBFTcG%t2pFR8S z;o?g_9y)Fu^>u&9Z05ChWX5e87TM#`n{L=^e)Ea=#mV+g9XD<&T{O07En~A#>PmKd zYZ)6l$JGhPLQ?TNffOZ}XrSj3JhyP*f2aTZ@AP{TN*=f*FTf?F0_TBC^1vl|;F3IW zNglW)4_uN5F3AIz#PObs!e75{f6H4bYM~CGjITMRHI?L~qHK4{R zEWx?jbK$r*?%MJ6qPs<RF7-6OWXBHTLke>tY>o`W96g1( za1J?a%NUOrHoo6jMPW3*&*QgZet*?3EAh$>!yd>U2!ox;VOH%ARBSzv-_0^V>s(6Y ziNyqYDGOMJ+1t7Z3Hk#bl*WZLgol-e)(iaqTBVW55rPs)1vt(Hj-)O6(_u=SteY%+ zaYpu5M7YGfMd{G;i~NB9T;Ly)j%;Q87nS9p|2i|V+NOMD2ZyQh!jP-S(@W^zGl3Gy zGE%zGGEzEV8Tv1nu2m_m>aeLO>t!gbW$S18aPXJ3O^LT|)#kH%#l%yBe$^fHYu3{* z)wznYUxu=`f)i4DqCzMIK#AW4CwWBjR&cG5$MZMLcVYGA-qA#EJS{$wJZ8lK{9v3p zVtW(Ji!6R>4Tl|8+KY@(IK*?U;RNFZ;WVEho(1n&dBGA6OJ48s*OBs)9gSF}MPB|m zbNq26KK?kMd*e-kIEp_lH0;ToDev{I6*ilDcT;|iNpsBopESIybHfX^EBPO zgJ?tTFC?5=8NyxK+@|lS6-wHK!a%EtqxxY-0zmw6Lf}x#@yBTaB;|l?&%gz80KDVk zxm&@b>ZOg}O1f}YFdPv4;V6q5*SN`&BeKo=(?eRoD|U4NfRrV{aHJ1}2LKSBBvWL0 zY5fN|Kq^=zCYA|X1)4~vIWr!hNy_-+fi}cAQVvOYuz04mbD|E#98LtHxT-~IKy4G3 z+8xDZhlhjU7N@C~`VnY}EAh0TS`?+2K}1{Pwd5}`ZOPwX0g}ys69>c(!C{UXM-`9g zEwBSP$e2_xKMwwQ7C(cBta!3!CD-RdUW4t`OG#u0_&yj9&`73(^JP3)OH#HIJXw#j zOpx4&nIU6Rbr1K$Z2XpJdS+arE42ea4Mc6anOa^;+#sG*a_L$feMb<{mUveF$h~d; zevb0fv<(ijT&-}B(VMbfX?;_&@=17VifH{Y(^BI{uNXl9@V989-V5C*|LAW7!QcQpTfY~aZJ6QL?lW3}* zCLRI2v*KyVD~q4hKfu$fDN81w9nX;bL-6#=FqFrVJ zejEWYPD(fuwSFYe$eZ#dITDBoBbX3G&%jg0F7`w9{Ua37mbiXADQ+PD5Jdfa1Uiw; z7RfxT{BeB$R@s<|rcJlV_T;B4@n|4EK@G@VfAj#GO7dFr*W$lmngE3Z^1{#Bk}8%I z^0)6Z@nw$y7dKgd!k zPY6qrr!6g&NGPRBXxXfE$WQid$j>TWpns!Q+d}#?XipT8|ERu5(g%g%leoS7!rlu#btN|%Qo zp9VcXEv^SUxs;tm8A*2tq(bl!Y|9Y8>*yGNrvS^JBSzwD2f&^Snr-TdP>OAiA)t1pTp2}b-${gBmAwdYZIUvJa} z!IXVrATDGMcJ3}w=8A;`R%-exM260HE$uV*2?SxBnZLL_+}$~gE@!Y7`B z&K|&p+6(I2k{Z;HqC^LPOJk*H%l&fSa%|&L=AeM6F9J%U4`LejO{B++2HXHH z78eoh{brFeN2H1?c&^01u@YIJ0MI*$&Y+(xtHd0X@oS#E3p=14^7SIFkaY3)Y5usf z)x|NQHQQh*=T^@q>Eeg$$AushcL4T&#P)64%HL4j>ZJfKwrhtPzs1;q>RjsMR#_!g zq)slyHY1uS&o=g?vLY_OMAo~XE>^v}*m{dDgomZ&OS-TFGOol0yaYVJP57nwMDeZQ zDCOCvo556?hjM7q$7QVs=t8xG8V#^a*eXdIRI21dNk{UfD%*iY9q_nCAL0Vy#h@yU zF}dV3&|U-eF*>&BL%%XV)S5*p$wPi(H6AA*eom5f@XuLT+~?<|fSxM}=VvG7Stz@H z9zmXgSqDi6$`ROHA;~AzDAJ*=rejkqzLI##QMg4xXcqpolIp}-*uHDgvGKTMFAIRo zQ?`+oJmWwYwC8|^XBI(!lU(oXjn*Z3!QTc^E^7Ux5z{|N0BVH9`{3Uo^Gh84@wH$5lw(2_Buh*1nXMLGEgWeK}gLE z@Te3e5@k!e`FSP)Clv1>jr}+T2yHbcIZ_M|Tn+Y%)TSJ;sPxM|^cA2R>Q-{G)!wBD zl(Gl?EHzNJLGqZdx8xF3IJLb%F#~N6GEed}mS#~vOk|^c@YIDpyko|JSLQ#!*p3y; zd>gI4Q_g`{@h#J0vMi1tH%6>wOSbQz_$!t{(jdAeJEWYkcndS-Ko+J3F1BRMxUD<3 zquy35Q!e*izg?tTn#y{DJCUD%K2^gwV;P5nz%atVc%Gxb z599}~z$}hGL&`5W4@+7A-j`ECD;?^~9>~v1=g*Mxv(i~(7VsI3f;JLafG!4;BdvJ^ znJ?m4(v(KW!{zW?mX|QMaBqP{JvaUZU;&kp7!7$P)3wlXA)ZE6)}dpr<^ zw);vT2!3mvpi70Z3iUQ!$tJd-v+>Y=r^@zAJ(jhziTny?V5OupmOkmEf$ns24U7rn zF#3RQ+WJoO=*ek`hBtGL)%Av;}QIcS3kqwsRnvxCGxja z{ua}BRw{qxcPdLqDvO?teazN+!S9!)56)vBgq`RkY@=-Bu+MdxZ6@}*&a*AVe%C+S zR$|ZVHMVQ9?{$-HGxomTjk$aro8&<`1M2|Tl9AyJximb}(Mk^7Jb2D;b1y|&CFIIS zoVbwde;fY73on40_-mT_;)|@V<)U{4A~bMW@y`8MU-7;F@1*tjuahVLCDQ(7{hjpR z+2{ZI7yAqs?)1(2e$HRX$E2(~>PK4mkj#5~+InG0wXhiUF3t$t1J96n#n^lkyyOTE zejPHvkr{C~^9s8ttW@AWNf_UW7UIye_!E%_#Nk7UD_=Bs%V^+71nxUB7VI|qvoT<_ z#sT0!cKv7Udip(bWKlmd9X`8CUY6EyudddS1_V5o9*!Pj|W25$$S}FDk z-(X(=eCcCIzFCy7l`BI0a@h}0=IMghV_A0f;4hRV_K-9*tNQymFH0f+$Z3uSJ;|r1 zp8f)1*dr7SLvN=6ACl56S1WCNWr3blr}b#O;EcGmr`_gl*>nz%^)WdtHG$DD%RQ#d zJ9f->!?6Wyq%x0<6!pFvME%%f$CNAZdA)Ll{Ip)wQ@H~9gPyAyc0OTW&r;x}2fnxB zU5Pz8vuXPeC2AZ+D7U?2IT!3&u*bU23YWH-wz&XT{C(Fh@#&sDaQzv)OQ=_9WsQeh zUpDxg3Z>`SWdCo;OW7u=J<`QmnqaUww*B^>zEiVis9!#K&mNWuSET8C_V{kw8T@0Z zd;EVCYW-0h>yKqV68vjY^`x~jo$~2U(RGi=-6eAOh^{+BU-|x)px=8&67iYjFnb8? z=q!XNYz&Hr4ONQ8wU9hGf4Gpv!9fBpI4XgcM0t6NW&IyL%C2fMS1D;tO~=#&OPhM% zt0wzCzn8BR%kDiYtBhTEl&|!O<@oOVoM}B)HuYvJ)n}TH`IJ<1m5;4CdKA3(2Y5hE zYLuRM=j0gfVtLY*ETFqf@ZCLW`o z$Cod|k9=Led|9*Y%A#cj>e?0g1!6B^BME@*qo>D;Hx;emPc1Jfz()dBw5fOnODVdt zpmCj^q!#8cD>9EE+k8T!NHim%@Ado@%kv41B4Jtx02PA9PAtn`X<@NXjwl0=Zb<`^Fy#8?8V-qq7|&eihP6sbHbts&{yXB`5AK8=2rKpWH$i+iIBU> zDYxSDsi<4pn;8g$+@;f-EV-+=d?ywtr`9U*zQz8y1m`yWedRiWLosO!r=D~h|Ji~Q z2$Q3gGzZCWeHujJLllce@EG&t0*XuhfUZ2EVRwwbAK*VV>dB{%S@;CQTJ-}w+WcVw z|7k4*-AI321}Q4{U|RUFG<8eUWvouUL1IKWwS)r}cAYW}{$JFoEXFrN{7X4z#SX!Y zaMRHbrJ;}Fz%7jFv_;k5NdaCk485iYUSM{sFPeAyexgWq>Z^?}Ncll{xfKC=0|vY( z>$El2PjJF15C#~f1cToz9;HpS%(s?r^L-)yv}-Bz;10vEaZ-*+f+Qb8G|~;d@l^S#c#CJ>XlW%A>*zUd0!b0(Z14ap-9mFq_>)2{=xqOTJtccro2a6>SyaU(@j_cWELuP%^r zTa}C8D5r#~#`<}>6^;FH*!k>y-(wU_*=mmE+ZM>Ut?2Az4&cLGO3ZKKL#HV?j;k*= zj-p8BZR+dhZT_glH^F+f5gg?dW&y-+;$y+#_xi4+Na7K`4aeVEQ7t$DItTCxh0{W3 zAVc0MGSu}JLahL`lnZUl8OAL>{*lV&I|%k;TkD#5C9PC47mw z)}I1uVvzqWJ>C}9j#a`N-TR`md2QR&>_d?wa@dD$peVNaqFKLI%aQwob8IlwqeB8b zZtU=fLq1!K=ElKFnK9%H*|5cUDNK#gD2#mDudH1GQC_=p1spgGd0^Xv53nKPu?HU9 z_JF8l*BmelmR{}P@^Ci0uEGn1O_yiizV0c{-h6<=IQ2Z2Eo7Nk3T7%=C3yHhN_zOntL4qA$g0 z{ya!$@&sy-<428LWqQb8tdm|#DZopw*%aW!{&Ww{U1IRcR|-#k3|s26arP2}%RU3n z`q=o+-Mg0M*OU(`Rz4}~T2wH-d%yDY?#Qj^T9$WS`M?riR$15Xou}syE3f(I;M)dg zO*%MP85k3DnagF~gZJ#o2PgUV%lGShc)9?u^K)(o{MH5K@nh2XI-s0omd% zJQFSi%40;#ws6%WlMfQ9TH))qp^b;)%PjGwI@$tO-}g(a$Jzqsm24%+D6y(F&S$_@ z{Ld; z%(j^X2;7Y zBA!&g;El_7>{!0+;fH;T^&Y2RpnkAH*x>iFqwK>lDnxe`(oePS!w4K35U88q?ySTl zeb~*icaqFC8M+|#PDiD@Io;ph@z;;2Y|z!YOXe%jKyw0eMu5|Dz;hCZ27Oqf)dh;B z+P20w*^q4yY}>|$V70;3bb>ukaM4+=cy99K=Pa017Vfh7VHO7X3rh`YR>zy!kQfk? ziH+4-zIbdKV2Z~uujLYz1du)7bOO(-EuiQ(p=UTz2Vu}X2(LIaG>1+=h>M^Y0gc6y z*;~g&UvCvjKZKrq5va9I%aQn^agc6=x^)6qf?G^{3T$JZI@H#H5SE%=MOq+SAUl{g1+A>4!g1mQ&LhQAO2-27#c{Sxql zFMnrV3nl$zoGd97!&+vSelit&3Fa} zcHq0zw&9?Jy{-I3O#}bKyJZOf8-a~q=~?Wuy2Ewrrp>sv`y(rsJ&Y#78>iRRO`o=I z-83|ZWoQ<}lfc)S(?iRoSv?vVV*UXt@D?*F_MOq;ACXkcJL_a)GDqg z4aaa|7<5KV(lc%Lt00HuJZNkT!x>k$7={zJ@SB+m4?s*!_5Q$KJjz};%3c)RkBS~g z%?7S9g{!zUvkBhJe8N;aG@TGlYt}Fg7GT<%HH~+w+gYbuZV?|ejTRr=g0;LB`jL$X zXh5TT|6Bp?G*3(9!+;NU2^wO)*32<;XgsV8;4{ulPjt7^6Th%r{vL*TG}CLP=R?e# zz?AQT-%8(-zd!v{{=Q6a)npz2kk7DYj4An<`M0DeOeFrD&AX6)ApH#fp_Sf`f1uxt zgsz=>Mvt!>s*5QANKPWjWgktCeKfX12hNB)xN$TV-=I^`%3Ig|J@cNCpn$ls3|W;Ox| zkpIpz+HWZwcsSCQsMZ`us(K@_3Yu=)c8&o$*fTIj#{|Y@>Wy*&qm4YkA*ON;$AVV} zcv1*iGIObRTzwQZ0QpK>Yt7H8gPZm)(DLHc3z~XpC5^8lZ<<#N#Fg@`LCd?wA4YQW zh?cGnvfxmg@z3*Jg&v2Ik?qhtaYnY+V`ShAF0CMi$#eVYB<0c)mWD7K zap(2ll|r0}W#GLqaFY;}g+p|Gh|WtZPWAMezMjhAE-y-_j3@e-gV+dN z7mw)bA~wb_#Dn^I%GC>co-!X-y8lwilVob`eO=tE>ulofRf?$kUR1wasy_br$;5Zee1cs${>{jY zq`CP;p8kn5!gglo&&gNSh)rYdou|wC!LNQ8w5^h~j4MoK$Olw}SDTcLBdpT&3PZf8b$?k)4}X`9zx z(qWvJ>z%cBmEol>{oRp{D8o?uyx3=2x=X1z_%DXT5B23Dab%=Dx@-K5!f4*Rr#WIq zJfEDLsOu3k$~*DjtzgsPYHc#_R$bUt8PN$roRt?kp)q)zFay2BrsKhMSs6+y-DY+2P5~DlCX*G?tA6 z`6xmLXy|cgq!*Xc{8TY2kNC5&fa0EGRP8?i>pXX`zl$w!K38mAXT$`uC|#U!E;LZi z9a*BmIg%>{6mAvOs)Jyuf>lr|Q9ZZnLfqCs12uaF0WeF}imyEW_unP=f505SN$zvR z>vtLMj1v4Om?}QIy>~)_R=XlB-rK{tvJ+D}XDf>ME=N&1cT|+>EUsi{a{lVFUmx9h zYT1lyxzeLcujLcQ*Y)mFx-l+s(^dI=#9&wayiwP|P2nZtAJ>mx9OoQ7*nB8QXVI8U z?Wn3T_PlOkF{;{8hm%gNqoPHHbnHr0ZP%~5|%HFB7JzBZA4HOxp6_lpeoSYeUrnnfl zEAbxH&Y6?LqpXuFy6TBn5afwdaAKnB<~&SIjMwa(yVV#aj&r-3kf?@n-&0Q2u&Yjm z+cmdaHMrtbnBAZchU#`B!FZR-Vi-Q-0}dk!#DJDBlOP651|AfJDRzotSC|9>JQ$z? zFE$Uc5rYs_J#7$mdlX&yHBP~K)ry;`b}cbMx2xFs$-)dJju4AaK+(pz10}I5{*ov- zz!nFl*)>^|onFp!GEm7+Q000V^JQ5d*yIe2MMX0`lc?P(#~!IEnJNb@Gf+kL&bdaE z>buAy6!Htx5{OVrTq{C}^F1mkDM_a!5<)xBY(?UXpT5)sYQN@HS5(~z^`j#Jt>*xM;ZkyN{peooJv>}?@$mOUC@C?g(*&# zX2c9iDT<1c;YyrSmEloQGF)|{=3-b*iC(vqmQ!s0VvJPXh$>HJ2u`GP010BQ3|6m-EW@J|KT1Hs=~4|CTt>sb(563R(1^SXoUjaohI6@XHLMNq zw>=I&Eg#yxv7KhHh-0K3;;301g#+aSiUo((QRvpB(_ncLRTYEk(v8vLfD;R3IAeiS z5U6xeSpFLyl(s;jm$uHOwC#s8vOOb-w{4O?{=oZoO>`B+P5!gHD63nKoQN4~Ri#oi z4hz$wqB`Uj^)I|YO-;=!9rSDaXd|&*WM(8wjNBgbT$haR;ZYe;_Lkl@Ya*W~8UPV`4M9 z6->V(F)1&rfL)Rj5v`}h8o5zQip$O_Iz&Vp9h~;A5n2bl7NtZ)868}P|Fvfza-@pL zCJ($uDXC7o@FB9E8f$bxsMF333zX3XpyG_iR&PvAMckBFyNnyw6wxZ%cRPgSYJBYn z3k;FVtHDg@O^!eQ()_Fbp!SNKhfPa@T?N+Ioqyq@8lK`KMRJ2k5Q$GJ8+p0;vbftk z%qEMiyo|=OE$OiH!x>Cjs-R0_Y3*2A8yJ1pvqh|S3%gz<-f*3WZwoR`3}q4GEA~8# zXHN(WEYYlN^)^-c4r3$C<1)7g^X076=`Ce6s$?a~u5un`E@$75%o3$vm`9ww_@;K+ z`@AGG!u*T*^H-uQdm=CLc#^94)o7#^Je$5s`Ll|y z_VpOA$p6~>S9B5kvS~Z(U&EO8@rd*!^F@*LzUY}ghr46CBp0yH8-0Bl>!Xb;M;;1r zw&|<2k1#GufWIUg^ShD`I+i9c(;N#mT$7F@i;F55dNO^r7${y5uZe-Luvrbyuvv#2 zFK2Z;kJarJPm3Mm>AlLtxkHCsRxozrSlB%w>L46kUHUwm{oHfn))&M#;!kWHi{H(9 z@7yU4>>fII?$G?Pd3j^0+=>lDHvMkxZOnMOF;27DTHJ$qTOPA$p*i3!hgJcLi-0DL zwXmWOX_bXlO?kv#TB)X9_`KYn`R@Xi;F4lP^JBZn#zWDtXsbzEe2R_1;svL(1}sEK4uYR~|Pej}`L<9^w0kxokiad;)Fa5VWE11zwiTPac0gG5x&G98zp`$hOumps-KI=Byz#nMUb$}L;qEccTg7nkCd+5L7|!u|cZ^l{%(x5f zo6Z2pm$}gTSWy<3Kze{HqTY+L!r_U?%Z>BX`(0frv4hn$1%pDGiO36oZTa$Z+g=m>3t)5irI#Ku@~bEn=*Lg4_}`i_07o} z9zOBF_T%3^^x$#6V9mq{Yt~GdxaRKEcu!iICq6ZBe>+ikI=e>>dKBX}!{v_8v11{`jbDe`-B~x{L|jx?r_&xC znXEaYof=ynorDLM8WEYK#YQ_-?S04X_t)Rb*2i{sCY+b*Q4~+=dGW5!vFq8b_4nT@ z77yAosC<$*D%|Wi>oBPtujY{lj~{<<+ldnoOt|W*36s{W`OJ-;H9kGvTo|907Vk+< z=cBT^Mn)S>SC{B;^Mtc&bU3uME>V#>n_|z&jnj?v$gnVX+@YxSNIUL!BL@`_C9&7z z++p^}6NbE{*>QL0h?`=K$f$1EsTm%PV(ht%OE+=>g%@rFFJKwLw2hd$G0p4N=-4Ymz%88Yy~JP0FI50unk`ze)* zD-z1Jj;!oVFHW6MHB6{svdv2^j9QvVf;d{)*Z5uUfT# z)ze*5Qv?6SkFoa1=q}D!JulJx{?X}IKKlFB;-SPr z$=yX=_|jgHr%v%c@pHI=|NsutB^1hhF)3>Hqb8_kZ=({r7$S$g2IdwfmV%md|`# z-gv)Aluwq@VVKRbe9@7)C?(4el+Q5S@5iC6ak(AshN~QEi;)8!H0&K8igQ~f#jjWd z?)H}|mwgpUCAG@SQqQ}iv~-mCw(%{!mX~p2>dPg zJ3G@bYoC_wpq0}D+AhOr9Ijucexbc@G?wYQc6e5kT|GszS;361O<(L!hxzc(lm^;? zP0=&-3=S9e7-1BG&q_<4(H_(F#v%GV^^0o;=ZGgO^_WGGGv4sryLo_KST*(bDVT6> zEQ5WOmCapxuL@Bkp6T9=abv)mZC5<@)RH#&!Xa*Gz8LPooHx#ZjeJIS7z@d-=~o=T zw0V-4#kPzSGgL8K9mh6{*{w6YTFhpf5iBmokye|XwX{t@sCx<+Njos;*vyQ-8aT67O;Gjxvhni#N4u(az33i@r#x!ca!AUq!o- z>@@o~7JBS9n&bbsu~_!OiRk6%NP|k-3hL8n%!p(8f)C!n7f;|J7^DTh1cPV=<$tqa zz&=nqjMpppNZx+DQO-Naw_jEHt%K5jf?mP0c=80Je4Gq1AO0V$FX-&e@C;tYroU;= zP)h&traevx>4G{XtY}uZzRUL-7n9*nhhzvK-U~2lT*8`9@3HZ>|YU? zl6(2!i~1@#Wot)We(CNTXLK2^=`)rz{uJ3RX7kWd@!{d&F+DTGqwPkF&iO^Lk!rgz zmtfuUc>J{6Z_RP{S6NkJtTTcAyCAuG++}@h$}Y_8IuHw7r1Qd$f*ga9Bz{&w>b|U2N1D5lW`p(~_LJI}B9%yJe+5thNntY- zX>}!)H}tv~QdpdU?lUVJbA~ZSMhSX+Ow*AL3f2H)U_DB9k>DEuQI>o(aI`mTbg$gr z730ey$Gyz@4e4KAoRLvu#Ln?Xv`Z_mPRqDt@S9=tC*5fLb;#_D^s2J-h<4sNu|`cs zMsZpHp_sldnlfEa>E2d4>3HMzSL!sdw+Vxbp1wj?zvknck$Fi1dq@d-Mo# z$eVsBHI1TS-{367 zN-dNqED)iq2kU2I9T9!BjtToB3_jw}Qx}xRdgUAvc%If5QC5X?isCHo!FjHMyIjmx zn&j-NIJQhpaK(UoheV1-Ls`@J>M*g#yfwFXp*`~QF_Fcr(+iy@Oz+u$Xu0^<09mD(}uXRF3icy zjO-yEu!mhWKzZC>_g|w-8?XwEy(?04N6Rgw)lgJQCF{;ggJ09EM`+z>j3qeI7KJP^ zhj;FooDl0QQP*}$NNHb?xECXmzLo70TyAy&)+jqy;+v9dk4fpw7I&)ry0UXp0VZf8 zcw&d#q=Mw|p1FwyQSCVHNrj1SM@nUGfG2}^IbnL0M#HHzjP7Yvo#siS!<4PZLiv#- zg9oz1|8+-YC$_kA2ZvqBP0a65+1Z5I`UP%RLUPZ(7(hLSj5{RcU89ybW8>TR>}(EK zGjc0a9PY%zq}-n2yj@g5BJRlrNx2;oc?2eq3z9llT0F4F_MZM{&?_C1(dKnxoSc?! zq~&F#W4oo1mL5m94BWaic`Gz%p-j?~Za8KSvad7^ABl)WLPfU^$V(Gn+v zrI>CI-RbR_ykR+>*w_Qcr5nyJgiQ61S2)VuZ;f*|ZBT5HEy%j>5)Pp|Dh_LFx{=9aC6$x{F&>Zc?dz z@1^w;bto(+9fR9;+uoIRkw!By-h$#HbQOix4d*SRo61frz_&E2BR$S(D8xv_Mlk%B zJVdMnrt$NRZYa-<7*Q3wbHs?x!&ndCb!Q|OBZjHIkKHBWuGIX29S0F#^-5E62^~{W z*(DOe7nNgl-=Pko+YbW<4emc^7=CXoFZBAp>!1wnQpNktoP}zbIm?L)6*F@-lV#Y{ zd>VD}Jn8~vaJmW$&=Z1*=!RpXacZ=@p>|M5Ss6IR4lIM&HHQm~nO6Rlyswr2>{x&PvlxGD#E70Ql=euNcnK^wHPU1wMkv{y5;i3* zZ(t4zE9!cu`re~LaUXg=$$Az17~LOM2hz<3iv^k!dld6@!!XZqt?g#a=|6@&anHf` z`lmQM`)k{GI6wO*+po4JTQep!v5LSFSr+TWy0QXjh7}A=i=|qV?9d2|!jfW`g%rd= zV!|>*H{v{Ua79Nicf*(TY&{ODUV1V0I@ssvh3utC3?xZm#o3s1De+>`3VR;$)SY<@ zh+rDfwP&8fQkv|@F2#Sm8Xin*U|iOjr5d^>yC{IoE&_{CF3?t-g_(t(62QrVgxBM| z(9a1Oj~vZqk)00VKq<3}q1ebdy;8)Kix=7Wj<`TWi-Vm>x}l*BdE-ip>0TIDnr+C- z@~?nG7DE9=9b)?`LNJDtT2xlC?nP&UE~E-e9){QOAd06rTShM}E(JKclm}V%My5J%?Kfl0$`{fS(;`z6QuOn_sGXlB9+~Z8mv`l5WA&k#?9JD7 z@8sTnzSCKJ{Kcs?hAX+~v@hKeRn&D-)ekdXOW-r23bX#)uVcRWcb5-7?#z-ilLuW< z_H2aF#U0~H(8Jg@(Mm#OytpNnWhROb5?)W@=XsQcsjh?v5*8*5Ni|O|F#73H&YIiP zoefHK>^}VbuIST{=fbPLI9WD2q($J%4_sK5D|ekG`7HUMyL>X!!iH0%z`Z zeYZzU>`;~)ADK9@cjlm{?uhN|YL}kBGyZ~co!^4)xbMHaM+y#4l3;pcC@UE#w; z>}t&(J|L?qZ03CDck{dn?X=iGMNUi@(JM33xVs>te0G=O%ku06_lm1uj(RpcqSx%K zodeusCJvv_*Lk~l?f9yy@xw;-iOkhj88)!bS+Ch_el%9xjS7MI1>&EcgCPKR8$K z!2ahvxT>$Qjiy$O8Bv&dqlMAXEQXb6SsAHNeaM>+^AlE!>;aK3;rK(-vQXfk+!Yb)vnxRt5}kYWLuIgxp!IaHpUGb z8{-DpfB{oXC&BdI2`zzu=_H|r9(qCusgMGJgcKl`a_NPHl)L0|2iEXEv$81(ci-KY z`+l(H)z+DJ-krBU6G%q&pl?(~#FwOnR!7)`Zt2hD6o@Bv#Re`*&!aQoIL~BFL(VV2ZgxA4=Gz3e18QJXoGySW3dfxhZvCzIojh zjk#uBuU5r^vOpTySj?+h#&Xg83!`_&CvWddawhd1FnxAimGi00gy14eSg0vK$eH(O zQ5D^}wV$d;K78^^%D2WnIk%YPAFp);+*l}|GWw{7i^Xcz{)a5KA_i(+763QdH z4D2_!dsTFR!Cu^TV4wSQgh#u+mzp|ytXJ2$^rqM5<6aL(Dip6I)l^(&))!DV|WZV=_ zR!GtdT!fps8)1hy1aH_Xc=&(sXc_{+NI2m35f2%GHeo_(omxb>o_x1_&>Y?x` za3Z)h%9`t~d|k;cFWyWvba7LtAE|E%R(c7RAH0Js`~i7>d~6O$Ly|^o8U0$$%}%X9 zK#q?~D&k1bGWswt+*dLD0`bBE>Oxz~HW&S?K*p7J+s5g5`2ln06Q|0`%IF;Bd5@gb z(R~d8=>;B&XzndhaUgFjQE)zVqQKS^CxtIAC&%g@oB(|Se_@OcL3>M+lT%V9bPC8^N@Rb`R8!~f*~-Mlh4QvQ+xVHC$_g*vP-S}PHzvv z)3ZG;Jt#dYBrPdGDe81lX+zWZHz@nYlop0*J%jAgxn=Rb-fEK|7|8l%$_H$N9B}UX znK&-BYh6)Tusz7W-8>*8#7AL{jjX6G()oFZM4L?ud^q_mj~TlAX3BE{3_<{x5EC`D z(O>0fObz9RYQog!0*g8v2v zUQA31)T#1QxG7UOkMYyaO!DE+p5^ClJ9c3A5pjDn-PycLJhJ=1G5JS_IPTDj`+7e@ ze;V@CUpeltzEAdUroX09pJN9O93wxc5zl7khuwo%;bJ_WN5uflO@^6-HPv+zIF$gP zMesIn*rh}xL~fIuFIbUcFzFz8Q8zp;o2X~Sj7sW@R z3XKr)<2v&wo?9l0dt9f*@gjb>>^&m<&yz&g#m8`{n<#E^z3M)hOW%T2^(RH~F)l%z z1RgsKfjbSdHdq>AOp8`~r{WR8Vop#=;I@LM!D5J5Z64gJusWRJ1Ade4!?(mA=SsWRJ!vE*L zA$z{>LsMSkXP#6~pU%HFlgC)gCH-g~cuo&1X^@2f!o)WF1ttA<&_j1FdxChPc= zaG2x{h;SBcXPN4f$)kX42`$7m5a4Ki9(F^Qa`1>4NWEh7vgEp9<%OwiVwUow6fk?B zenoIsgY)Cf5wQh2fh!7$wVLC4st$9>77x6l;bT7fxO+m?j-UypbM!@p52Y{8o>Jd? zMtJip<_W~6;jK4iOJY{|0#X^7ml~-cSnmw z&9DFP%_Xkvn~}qa&-r3G7c%b2D+%u$?3Ja^z&r$log9+=!C0lCih669HNZ&@r)I-`d77# zt=gc-5TktC;;UOXd@kr_T*{j=>GkgeRJ|@Nk{6r$q(qW&mM#y0W`5J-t9sVGGN^p= zoXsyEykEP6Qu;A{?LeIIVOuoEXK|MAliGNB@qJm@tre^KJ!j3z-)@Q7kG!IaZ+2>@ z9JsM9K{L6$@9WPFo31H!-CR{Rd}+Kc{;3Oiz1Ex`r5^|880s5PwaSa&x5p`e_b9#`UEKM z+w$Dn_eO~)J-;ErGru$y+<0J8#GuK0gv+NkUVd%K>Un#{^yX>Oaz!9nXR2#?d3>u6 z;e3Thp77-wriarZMNWhh1nHe%`90pK4Ar9!!VC|HJI6=*)cP9;FUqufLoi7Ld!gjAaa>JVJt5qC75Z}U3y(5lzyAf$hPM5p-&99r|>%j9g1Ejl|pIx@>u zlvSOXS)Ijy(b$bHU5(9e5a1K+?2}ulQn0^*vg7zX;hj5<6K(;HLl_D^_qZPWrQ>&AkNN!8^_|Dr z^_};3AIF}K=d=6&{`$L*|Fi3{|DQbHeSPO~>3U=@ExLIXg6b1QLGodDc9&Jd_UsR9 zYXtHQu%sNcQ)CfHa1sJ^V7O_ZY(u+s0MSDSMHrAEaMM7cg0TdJ8R`h83~0A@DDcpY z!F#-@aI4MO#$n8>D5Znqf}H>j!L1PIM-2^j;!fPpi3wc``X?rI>6+l0Wi*Zp9$D+x zTs{3odu8PD2YL)u*9|w0!*2ik>eNGfEIDqsR~}o^bD+9sOE9@%4)<9xh|G>MJvn$8 zeZoV3uDgNzH9#a9ZBN%oe=qu@zMMPip?|$vOZ_=$_tvtEN0nVzpjGsjt}M zrG2?lM{{jKdk4&QhFH924Wi{C(duROKie$(hE01w<4u1Iso3G^|6)Z5dv|Y+Q0y1S zfciSTw{gI%ME+PBUJm$!Ew%_&3e5cT7MpO#YjM}x4eJ$7KUki2ROX5bZf?)4%iI&yj4BLr&4I^d)+lcKI$mW~ zN>n3g>yd*=2|bB!#zuO0albW@x1AWk(Jr#aGeqW^N#rtWDHOs$#|ZN4~Bxl7{VD z$dvsrlf{HI`zd-HI)|*Dai8>1$-P*M$ThO^>j1u{?U%m&J?V?IeJI-V#LYx`rtm&; zHCcoKT#UzKa(C(!um%8K3|?lc9^CfKtte%ENqINYHbMf->91nK16V}-@W}85^G7{+ z_xNVnI0l)i$B7@yWTfo@}g>*9V2qJN3-;!M+!{ z!Q||@K^K)nrayCPUU*Po#Jp!byyiC4C=@jfbGX9;KE|Gd1+@(^)#{bmFO&#_x%np9yi| zv+n0cNKeG90Oh7Lua%`OOHX9Bn^~>D^<2)mn;!h(JGvjwr9Tlr>EXxPIv>kx@mPA4 zbSEF-vBYCKOIw{ze`SwFf4AQJ4D$OW%wbaJqaM`Tjw=VI1G~IeqHN6;k?n`%l}!nIDikPmf`w?+WVwAelh7 zuX^EY_Dn*Mw*VuS*@wtNWJ$c}DT;+9@-i0$aPS#%dF9kSyQfXr+eWyjP7-ePXKUBC zYdJ01`z`=$dvEk?`CpC8wwN4m2|W=>-Fb)!eF z@1Bqgd*i~!jR?bqttDY3Y5jWo2K|^U>*36(tjut}s7dU8W&Qdq-ILU087*JSy}gc> zL1o78I#=9U=1(AUvAb_(j<84AP5@s0uD9ovX*1`67e`hdbc)jj8jCTwZ zl#c&&?ZJaPrnaHjdF8r?9^yFCQaNlTS+#cM${`gaI`$IMHg(4nCr_SSyHr25?Q-pk zW$V{3TT#ocZRz39on5|k!-l2HT~7bX5pAT8`&b|O+ig<}OEEMuj(mr)$wON;@bAiq z8QKRkudN`Bw^Ze^HKM0*<;{vF z`nSGn*M5(=9v;Fg^Jw_opsMZJDm;hC`hg}F@cxF&WM-Cn&g6>~uWlM*9`JNIHIj!1 zIWQ6{$kcp2{dD&nOYOpb+g6d*c^-n?V?G)G@Ya3{>nwA3(NDSFyl}=cd-nXt=AUf8 zkrWx3#0w|!W%eA)X-KGD>>Xmcg%i*>53G02<_wiS4BjLty15*1hBy#en*ZF{>F6W| ziL*M8J7LiCYaYIEf!N+Szh++d`hky~nD+QQogqGE6@BmRH|dqtQHcS%IeVv`c)GN% zg75nV{gZTZn~+m*^uQ?k>L{&WNYt9QF4Fgi{o-3|qC5^}QV(XJ7o zg;sjgz!-pDf&T@W13EylIFLh@20;#eo73#tLmIiilU@gR?mS3$yFBQQJ-gPmPWT2t z@^*dd>V}532>~}gH6*NSY+UWo`6!igg;EKd?JHTnSR{-^-%W^pF;Jab3Hhv3Sp2-go0=1&u{9#0FY^~($(u-WK`B%k9p@G zUUQ+P+uvM!`!87V%)$l4L^8;z^)A|$xuEmlFWgh}pIxxvS?a?@#!Ro(2aS6C;Wt39 zVHMrE5X*rUoonn(~KVp%U3VYa_RqTzf40uDBAb$PO{={|e7wLHl;WUSqq z_~)bh{zN~LFDx0{W!Bi{he+u5`Lo*M10y`cQd-l~v-c`G z?8@-&N!*W*z4qb3lho_zbiQ}#q$y)xA)masaL2|u*(-Ag%~tm+93Q7IpPZJSoqd12 zE=n2n6ovvkFq%FnK8yZkvV0SQj!0ItNy^`cs|J!8&IeI}@CDLO9Do`p3QWE#xPTD} z!&WMw4Gg)+)D1_z4Rjol+m$yd^5yc}>cn}4*@NjkvT9d++2c<~lR1_Isv%mFvyxr22)W7o`5|m5qc?1*>f{`K*N` zM9k9MA(}A|*x|5Bu{p^#fZ1=aaOrw9TeF7@>PpCorwLz3=DVIC8g>1ipZC!>rF-wvWvdN{^W2k0D4x&T_NqRJo?fo zlGAY*!g~avFL5udbKRatt{`s8Y?fpV%Mx_IwTxZhxlPkzLbGsi@+nd|yCYc-gB(1g zhwf{$TlkuhJp)I-G-dsRD>hDzow;P!hN;7o^E1OYY*{}4;m0E5ny)*LpX$wcA#n*{lVBA0!#b zL)r?Y(VpN3sr1L42?=SElB`wWHB|sjRQkh4%xaOt?=79jG;;(C*`Hfyx=&$mv)#td zJV=Vh$0-BG?MqJ!2)e&MCTjZV{&`I)+4bWBjakl`Ue5HufHWtif`b&c#`*@NJL`Lm zF$AY);M5uJQ*lmEaF(;SKHV7@Fb3+SgKQ>#ktHiiN=m}%>68m7YmHkyg>YvaqDI^xc8reL}iGhF--OBcP2?8c~4%9cGRI0y9NJoH8Cs za2kRI=jFaXh0&`!NJ=ohLL!ay{7%4d{UwwbcF^;|$mpe4OeAF|{U(%K&(j0+Ii55T z=RSD$2JrNG0RPsIe4ai^&+dc&?lB$(Z`Eur5fFcsiOqPvA7UoqvRW2Xhf@aA9zvVY zRPnNzS!Nvzs!MYylY0bO5COI+3!}4_0g+C;o-jc=^)pPXA(+uI1XBJWrc#8cLvUv2 zZF~t|ML26p*`|kUtIKf5Udu^+fWE9}&BHw^%2F*Hp?Tad?I)sbMWe>N+)~v&JWQz? zHEQ^%Q7UCNk%!_E`kgLrFiMU#&y&16h7$}@gQtZMYV&82iT$KnhNTR%g{}!u|a<9tyf)aH3YF*6A%;O@vmf1tvsP%T8}^T%xmR z{jFN9M$Yp$xF%zY5kL8QDss>EGbS7H6K8Sx^Qj?;#?+voRAX8|`&sVugy>*)VsM?x zRmSm_7;Iukf12dF$R*G}e^Q?FcH;K!q&AvEiiDRHPhf4v(}?TuVcb7B-pgtWN1JVI zk2aXQNc=l@05-to#TR&aN#~H5FEH`jG@!Z3$z41L?R^9%m>TbM$8F9@NE^XYn^`SP`lWQK_w(Y@nT+!Nxwr;$B z!|CL&&TDF#=bG3$dvC z71T>+SYSiai~vc9dPX$fiY}$-w9vfci8Nyvc(V))+sTw7cP=!{!#g`X3MxcQr7Ry#7X9co`&UTKxQs#|%qub0MTkBTXejxLXhvYWJ?zR~5~aHurb=BIXK zXQuITI)SVvmD5K}#}7Rm*DaDGnE9PF3`cQfGL1bR+`hDN`yByi>0kd4kO+G*S7`f76AES*1kkB_6gs( zf=!gzMhUASf+NXLZ19NA)A$g%zIdt!xf<7=rX))m(&M*y#x4!5V9$_^N+AA7UImHB2i6j|rYkzs-xcCWZLXan@A75JM98 z_yAjOM6g+-@*CJ38++#Y?g6D`UJuFlhlEU~-_1x%CA<^f4zC!W9%W@wTC-N|2bm%# ziCDAf27GBsya82+EFxy$p8TbGO4R;F6cDhy0^LAm479D|Iy5h`7`dD zGH>3L`(~j39`}&5EwU-HCI6qKEh90@lD{RfS+Z0L}nwupmdHq2K(UN$vLIufBRg;bWfCwP0FTvmu=4I6mB9?mDfY z>lCvOssrzk>D|Gn|2;`Au<4xr{z3WbisCN2qW)VF@LXjjz0{)z-p@|?#IPPCFx$an z=WZ};FSfk(zmQV$ORm}6+4k?+|Cwx(&+p&AJz?xv!TL|c672I%8I+3nBBEUG*Z$v@ zKE#Y<_dA3Sx9{H+FhtM9OCX7m5O2osz{MWuw5g;Dk}bvpN?aA_G}r?( z^zk7*`zRB92;JwN{DbfFP&~e>rOH_I#k0Xdqg%W@jX~Ckg5aq)RUt{1#C#eRVDfWV zxcol!uP!-X4I8C%K8Ghv_|N8PlJ)P*zyIOH3fcqI1a0{m^>WOkuh(ii5_4eUS#>G{ zKqu99E3^0{93xpC`~m&1TodhE9r+uYqH8YK@wSAzStq-Do+Md)c;TJL>38&MMqO3p z;{)^``p_@h#I?l4_g-+ZTl|yf$lM(~p2^8hAT@P7@>v7i*&kXx5@a+me~=WUQpglm zwPHR5TqZ^N7EG-E!aJ@Y zg)0ks>+E_Z*XA1L8q96tSkOTBIqaPh+{cM8Ec+H2RVh;J$*s;)o+S*{NP`n8yfhxf)vmCO1{>V zeHjn>EH!tGry_vG4drvV|x0&)}lq;5-E@o z*v;>vZY*0?z<7XRlR{Ns8dxU_fCJc9o5P9MOXfs2JPcDk8p+anrN7c3aeN9q8VY{x zOfswfm?craau8UgK03W_xcS-k5Ww<@T4NNW|;PYE?(!pT#={r z6IH^ypU||W3;Bzcsy`{|*Bik*)*%xP6yz!SSKlGSy1hcj&RuZQ;rXZH)sIJpgdTi@ zgx(luXkZ37kzpJdU0`J#{=0yFyuj(yJx1Wac)fX9e{O$Q+fxmW5 zvE_s|8?Ti7xZ7vsM9;tGC>G~bzIDG!uZXB=*s`n6$CV~d962W}=ww>dQ#C|k%r*)i zTqw?%ztbRIPS1RMun(T&NgtQEsE3?>eXc0;+iD+i+#%b!;aYlRu&&=?cRe(x&R$?bY zX^n92(6W3%sWe--^9-DzWnw`D%#Wnv0%BJ5*W(*YrLl7pl`FZ|6-v{#M86%Ri*glr zUR0X4Ci(3oecWG++wdiJ*Rv-8V6>VZI&o?jKd-$0aTI-(k%XP~-RB7zc^jMOPI+x- zYf6Lf{fn;+xVHApNqXVN;mV~Ro`)_r_BcJ`u??;_R~FpwyK+AbNjfxez`;R-4h|T2 zC@HF_V%NI5x^=rMilV@i`)>Y?dlK)Kn)MPDi9qqiL@FT)V>RoRQpM>+>pMpI+ves5 zK&*INcWsN4F9@9*Amq#6!6oc^`B+?UlCEd(98`8p6>RwJsI;>J;g-FEYOZ%LkKp}3 zPL+q`eBL+kVx<=3xmjNUGv zspm80-n(zS|3JFOM#WT%ysP|eHrAZ%nVWwTS^L>)j530Upt>j3iKz`<8dM*Iq4l^w zvTPmVNIAXnjpm!tJ^1z=9)FQj`rY8(z4=DrUHJ{oySnX5e6zSUu7)?l56w{J%RhNz z(hq!7UW#I*TMjWQ;;;M{&gc3s9L;+_mQ9==0^Izq}1Rtr|#G$lf9Jp`!K zN=_ar&?mT5j+i*%J%J`X#@%Q}67m<1%9ps-(-{w8^%f4*88SW<_lk7q`Wnk#E1_2(NCiW+gd`rPH41IE^!> z*BpC7I;+^3lx1z8)yHZw!f*rW&Zt$IkM?gu`$de9KVo-TZ2c_w65tbH1&qw{g|`sN zZz;SLJCP%o;$$^1Y)wm6`NBxe!jF)z_|zjymw8?gkY-*OlBG{fFf?)3`Wq4w40K^^ zLTp@N9Es~17aJd^`20<;sZ+h){Cwt!;VmsQKY!DE>QrxhYZ=}$V&<6E*0k1E{%Bl$ zY+ToP65ll*SCBF6Hcjo-P3$lC>&)RJa3QUH(|gJk?>EU|TsnOC%u5&9jV_LVB%aPD zv*Q6^AOlBZoDj>|hdx>nIZcC?sRG{8Nx;!s3zVWK&}TEsO7ZsVcqFZ-IUO9!6+wvt zCJ9bq4Yxbs1`tqOtV@BioIr>{%jAjzN*>F0VI#>q4B8abZ$hq!5z>WVN)ABU7+0Rv zv*i&u*1)sKL-&Vzjk66{uM^>OGk5~rz~e4RmFIGZ9WRO5tt0|CBgK&lLAqMhKnRiGffqPJcRvpyP&B)sfxePFwPlrP{q@?cU{tK4)TaMaCEaDzh8MqDbR~ch~c53^cOY#AVys)(HiO1i1>*dTqMbg>De~oDW za`%ARyuhp3&6ZS!BG2*q;-Bp42|)hZ5Hv7^lD^e8P~6+V*Q4BrR0a9AvP#2h^E zVXtm$*A#m@)!NijGN1?TSI{L*zJ;t>8BTAGwC;-}o+IgFm1KJtGg4n}_t^*^Vj0$j z2fss3W!VYC`g9+cIBSC~(RZoK>yJ?7 zt$uY$TXa$BL6Io|wlRVJ%{^^}amvy3=|4=Q+cb&Zp$E*;|N-?zTU*zu($W!<6%)R&J=nzNy%eZ(K28uu($ zlihcSuVz$;COIW8xe@vf(8LD$Df^VCmeGJeOgrJ$JH%?v4IQrwmly0N8KR^Qh>15XlF32_QztCU) z);tn`_$2%%3|aLLisM)RK;JI?7y2Yhy5}t6G1%xqh`VOMR)CMCL*ImQX@Oi6(@2Zh;zia==d0?aOUT+KfaOqTw2ARW8yNuE}HT|=^;eZZD7B{-7= zc+KZ)dT4Y(uEl@xl&>i;n39_ul}c{T`iX;rhD7<^IA2xnz0|}9ukh@?l>B3nIENSa zh3Aam^%iVD zTXbXjFbT-8D*z7-K;@H+fN%_Z10G#>oh$P1v#=ADY!No*=5;d~=!j4o3>Pb7GZ>m+ zCgz$1m+@F-3YLnMQ|N3w911W=7=vNK2CD*|R2+p}4Pzt?$!lw`4Wsk7U!?uNY9fpG zxc)%~ZQheeTD|~y)1yz(X@BkuRNhQSKxWU;04u9l6%<_27!tRE|4cK<7|U&YKsRde zruHkues^=I{{H3Q|1adfCd-xsN`uK{YAB&X5k_b4g2KiXy;#0Eoa`{Sm(#gBQ6c9~#(e>l5Ui-;j`evbER1hn~bt z9K%mM?7M6#*|=!)tl3)@Z6s5d`5vCcxw3yxmM2%6KxF9X|ZLj zWgD)?g|pY+m(RX2oBO8o$nA52T?NAV>nS_r^YA?R9nXt{Kh@FsM7RMuAIO3Vc;dfq z2sv@<@wZ#Vjk>*k>u~#hovkAW?$J7K(>->!``m6ac=$Gr;*fb;ipt0iI{n+N{$F$k zX(YcV^*wj~4?QG9@6kgt@E$vFcU$~TpBrJ(Hvgx+j*xo&Z_}uQ#s2+~b*;WN$hS%L zKk$G&^d9|oJ$;Xzx0w76R{kHEMe#ej-7lLcoBDrDx&H-s-IGlJK0)c(+Z4Yw2)E~f z{{t!m0;Xfqxnn%;oLV5mJKs|SBzQ5ZM_PfR_aH-Q{QYF&o@Cq{%3O(ePdoN>=N`(DgX9=_KI)Zb(0y{_hE z_c-y!pYE7v872im-aCtr1WVZ|$sJ3_b67^6_-ha|(*QaGbtZC7-kBukix`!SZ+nIe zId_I`q|@ofGp~^$H1YrnlY5iw14roT$B`m`h=16UZ4S$}ShGXTS;BiS&~97{nIj*4=GO15f?itqVtvus>^O zJSw~Y)26y|^RulTP5+OY{XtkxM;Fk3R#VzZTOgO;-S*C$O)0zhckSacLsp7s*ony#sv48cXaHu#PNz4}UUq7~eM@Iv)^Z$n?JaT*3B#a($uIyE`O2(Yb zdxR_3BVT=$ji*#&+i^_cJ{rN!;0CxJnhyu^#T&59xTv z{z{yWJ#Op2&MC5I}hnQP#f$K!{VK9`*4-&~Gm9J)JFUfjF;vC8rhL-*2`W>*yt;2u$L z^Wg@0HO=(o`Z*jy9+Ug(TuS4H5ZB96&Vc**0eJd9dluP#?>h_Ie{(y;>qdajUO=51 z>NZii0?)nE;4~mJ-2GP%Tx|o8OYQg}d>TD+;^n8~m&BYn^AxEd6;HkVRP5r|A}f8H z9yv_%PSC#`IZXfZ6lz;$lAb4DIT^bo_UTujrUyxnldqnPTM~O8Z6yx+#1Z=A36g*G zD1H6}%Iz_>FW>x59D;gfKgrtYV6)B?cqF1T>N?;xwS+^{R3Ivo$OM2JrHbWBcFrv< z%~S`rV8xdBZ;#*+sKb9=WiPcwmPAIC*dt0KKl6ydnwAR1ZhEd>rR;?WWG}JX{LvEt zpfV{aFt@O1Mwf!=B}F;GL1Z+2cyRyuNK)@bQbT(AsOvY5mtV4%+VK;~KCk};xUL*G zptoApg_KXv7kei~D!6y%qXdhbe^Ir;v*!s3?B6*SJKv3V*FQ{*DInld53*#1ZOU&FU`es)4 zgl@Ju0Y zATF@;oq4ZPoIycqjY@AJ{2xBSR{q#_)WUS-{ETPlr^I(J7mIZ9YvlNuii!$4QLcPf z&UbN)YYGU;DD+UoaX(-YoHn9C?$l=$f-WE+T5kYcqE5cu$5Zt3zOlN%l%HtHuMSEG z2uR4C)P+208{3>vXiJIjGq7iZ!;)mT(4$z4lg?3*3ECwO2}L1+VlbDMoG@XDDklu^ zo#xRB66YNs5Evg25FZ#2@6G1YDd6M7pphIE-N?s^KvGYb^nrO39+wz`VRg%u974>n zkbMaT76D}|i-rPn+>jDXQk-HFvfRE~O8i|B^cwwc3Bk&cm(rtNB>r4t!v3cId;1fW ztAc3y?|Wu{5+bkK*TXU{J5t)`%xO=(#%H&mw%Mdl{$g}sWcw?Hxp^feQwu!!wDz-N z*J&jsdAWsrhT79i)7ajt(8apJ;3&@ zTJEi1Xw`nuJBQp7x!UJu|YF zXIj&blys`}bJIQ4l#eTU4#%CNsmMdHx?;~mgTk|*h=sHAw)0|*1mK~5o zY~ehUNKQ8fBPIbRxAD4jUnVyuCO0OhHY6o9o`k6SWIv4p%vyAeK>d2Z^6ea@uh=EK zvRCiTJGV6SuFR019^5B6xzFIn#6%jm={eh18`duVW!DD(`45sL?i;dEVU5|eZ%bX> zmVKLI!q_;!c=JQl_P&X1(h|H0G8sHbop3r%2C4&0NeNCz`ox-!@D<@LmOyo+Pq>ue zD!>HAKJy4XSSt1__ZKZT0LbtoddCEH&7avlzc#_VBSN)WE?=#R*kMkn&F?-lziUv; zzdlTq$UCCQ8yrPA`dQ=b#>Uygo5D$D$o#ncP087zwS9}Mh1TN6+R*HjjrsBOO}iVbd7Y+krUYc8qsMPI(GA#7$JNJZuf=% zG5~o*5y(VILc}LamJhqT2Wkpfx&fQf83-r9rvGycPFn{Ar}GvBr@#u!G54^jBZDit zTL2)Pmt``6ynx_jNhI(>fnj(Zq(}mmY(SbJmUM$m1|)q1J1vc`SBGkRebr&)uVbQv z8dr{qus2NZu1d_FmQ1p2gLGNh3CWp}?c;-@$MlM_hmRfLpQ!3yGwNP6$v+H7y@|C@odgV;>*A1S=2RRq}DjQ=e9PUQNH85bxXgk^! zEx}Uu@r>lT#a^o(?rY1C?;ZH;2;GA~c4gnmT8J82i* zhI|f%ta4&pn=r0>fp&gUc24%T?0uk}|G;!dHf_5nI98YhUdP+$P8wi-LSziUlZY1< z1BY2p1X8BILMkO;-!Mkfxzf;KRDeS69!BYG=HV6)n@9Z1z_crtwJ41%PG=kJsdk22 zA{mPKbdR%icZ|0rbp-5V_hD%}cs1GGS)1@IR?gx+##+mGLOKhaB7MU#>95pAb{*@3 z)5f=HQ6LAikbQpAqhwY}gomNt!?SsvFZopTUEl2KQE%{wNS#&Eo#Qe9(3_ByoSc-H zoWODMDTygbNy+hiAV6k{XQbJ1p{Mr{*HL1bl$SfvvV9ycZw>RYrY|N-oMxZUiQ<^; z#FCkn-z7WKvUQ9&In>*nwq$Xd)jMpwoFB(U1ji>Nr6j}$*VWhd&Ca!io6Q1U<0+Ue zR!i>4HO=0h^?FZR+VtWcqGv`*N(RXgJhO9==zb|T+fxX$gg4aI1;r<%ro_hw)$Wb@8AIx_>{{PQf`y!qJpcR=E|W|5501|rGJ#BN&W#K9ck-DB z2Q@bjI+!JQ`Ul13HBXu_I4>c{KbVc-xvn{5#?flQWm_7wpd16i+@SA|a7} z5Ebj;)R8|Ebq?0ECRTbmF*+uN_l-|Zw$oqJ!+br%`V8f`CwJGzCfRq8?e?g6p>Eex zgd5r?O!PJ72Ki^C2ZULYiLxL$tGFpJEUb4yUUF9@NwI_((lh*1hdfVd1=;o>3 zJx&=iV$Xt+5q^)8Fu+X&T4XEAvCFLq8ZC zXDzGnaTX-#EDtdv8AQXdNU7 z56tNr)DdjKmbCg9RA4Olqcdw^o{&EB2V-yCmoI{Yi(~=tB5?7s0!Szy>l&O)_ zC@{PwMFVWV5ZJOwK(gzKd)lPsLNUYM1-8@)xPVeR^{!4priE@yCgR6%jPf#;EX}ywdkC32v@|2{(W_Scnf}SAI@UTv4wf2R3WkSI2qLzY|Zd9jYs&*450K&;$WdO<`z5#UuZjWCl(34-a#yeHS`MQx?K#x)Lo(bU#N9`ef$hol{fJ|g5 zgJfDmH{=K3SBQPre)Xkqeq>5*B}G>!#JiS1c6Iw_eE9u9Y#J3Cbb+KO(p(RHO;0^C zYE{ILEeyIzEg?5e?!<25C(`XT&B1wC62|#Dz3iQnGzv&h_s7xKu5AApeE9^O=kaIp zJ@hyZ(extpoim`#=pUpZ8zq>;9f(=1udu(;r2ch)OJM=uTZ77My3Wz$SCR1(Ch)!J zk-u)3*=z7^T&+cHeAiB&z2S?oWCUFX2&xt6?~RAuBm2P8OfoS&Z|l{oTf1Z~=U+uH z*{INOzoO3+#bU&6fp5)}hPtp!ybG!7<&F{F_lU-&#K@Mik%gKq;e&~X6?J(3BGE@S zk{BDo-J?68vM}G?*=6~Zs~EGdK>PMTvxYyvhP2$m&AJOOOy2c#_UtQPOYIs%8gHRz zz4*iLV8dXmD1jUHruZ|E=nC=XFjisnJ`8wK(n6$(9vOvrnGDRYqE*-<@XH&JB+E+w zol->s>anFunBt+AM;5183V|bOoiV6>Ktn_SEPSzr&ui@6FEgctX3&M7WReTdFYULG zX1a=VX69r!1O)~f5~62L&CBi+90+4H624D!cxg@FqmA|Rq9Y>gxurGzj`Z(6*B0Tk zcleUwq_F?e=V)@qC-l_trS0vwyl+nS?Cgx>xTL_q-g%kxvon(5+G6y6gKiVPS7fN@z1n09ed|XBw5A`H~cNt)Q?Q;80>~1fZL4qzd%j4V)mo zeBAe`vtqRvZ$n_D8C^tn`r5^HrV*u^rZU2qLSibdr~MUP}^_W^W;Lt zr?oVbE-7*3#>6Kj#V2HDEV;cYU*zLMw)9>Ei2kwGK=-ZdjLf%P{g*RkaGrtmKPs%@p0e`G%E)ZU`55mqbPW}WUDq4QkX zMgsSbBm?OqBW_f|JKG+2U;EJGh!<_2IuT_k*^&f8MmZwhua6_S!#d8TSYy!9ODpBi+7{ zbPL_`&&b1g8Ox>sFI;{GvH*Dv`F=VLme}zO2-IjqAB`+P^}%=Ve0MrYrg{f|6G;ae z9;Q#3v(wTC+5U{`6`3&H7Ud7Mxl%mW>^}#!@v*(nV5N`K}wH?bpe2`P1@psqHan`$*nzBy0Of(PyN)?d1nm zwY^Ws#GB8j_qnqln0la|Vmh+j)sO3MtX%m9`&~Dore*^B<-S{W{`{(y7cM*`eV;fH z`VJXPmJ3yQt`-_|6zsksc<9T@Ks9P4MZ2=d5quaPOSBO}8{2K$ec zrAtI)gj8z`8SFPnmanr}450!a>Ss`grj1naiH4C%HO|cbE}8wRH8_#|WF+>H;B=8f z(g|~PtMw@zmb=)AO73K;Hw;Qxh|oW7SgO+>o0m zh^&7C>uy*W>#*6(y4?G|alOdIFM1oru7AphT7#QU|iai(f3%6&sZjizvGwKd#i3JD8_ ztF}C|Ykac9k(`vD^YHCWSLlCowtQ;)$6SM-CMdKxDzYrtsPY3cLkOJZ!utqu(N5ioWt{a3);N1dG5y z`;QRRLWD56{q+w%pexAz{Mq(2x`MmBWJtx+6{P>%$#ni?q+ouhzjqT0l z_l~U{IE|=}{yB9}->9Um5ji;#Ta%*t4ody=(UTVRkamIoGIzg`$v-uKx7SKT^A zC&sG+t+-2vg98*J4w+;7jlxFWmtb9w9=lsT>#z@8)3}9d%(Z<0?iCAL2GP<^W!J6B zh9Q#Dac{GZ?{q%+y=&B1+yeZwC=>+!!}4rv7q_E zj(cla^{>{GQzrvj(yEqz9LXtarzdxi%jI&ZdC}s0Sh-sSZNc%MUIeCE2B)X}t zTiUp5D$!xr1M+`h=U}?IeJcHYI{kK<%XPs0NUqv7jp(N1{hNH#54Euo@YgD(I%XZv zfpBjuoeQ!PvjIU@EVyD7YZ1`P!~eHY(Ab@H|7jncMC6w)5%~&`<>(4hHl21M&rPSt zNg4mXYbV#>YJK-z>8o2uT5&U0{-W>%^mNo^hD&SN+bkSxMxeB&px{wS6cGTz)MM#i z+k~AHChW|8qouUpJ`zz+*OOuO^!+}?EpL3t4oq~tcY#=kmFW2k^uqqt7vEZafWDzU1Mg}XwC}sx%>WSY><6pv36vrz?xqJq60^3; z=iJfS8zb-PN%URcKJ|DuCIK9)VDi(ce{VWt#R;{YP<7f@C+fM z#t4mtz06@U2CI*?d70pl40|SBoWJem-88xPXbF=;)1RV0(I1Xyg?vX+Ns{Y%F6?+_ zsF4c_&3wxBF?O2>2@cD6@2>9ukHbm^2OInK3khoGw)Ha^1ATqbsq#XBO;S;X>-bCWR_zg9${pP#ZALB3n zUbHlJP`bV2uYAaVg9~|Jt9N3ByVuZ?mX3Dosw`ds#4s2QY^LK`oL)!x4(${(1YpDS z2lnq;+}Pi6Y|(Apa66Hvasj@du32Jm;xQ3^&Gv zhldC03>qJ0lGPM#^=uf}5aFwjKrV*TM_*Z+lpJXE)A}e=!>pyHL7_^Gk7o!kSfWN( zlcitx7@~F!dbeGv^AAwzupXR`m!CRT?eDJ(Qiw{g5R#}d7=3gha(2Kk#^0dU83i2h z^Ck<%Hs9 zEh__j6-uOK=fiK^Sjt6rKhEZgx2e=B{Mb4-kg_s5c6878>BMTZ};n z<6zTsVExcwTR?y$kC#0K%7EicLE)yK2@UjYsIAodC>1qLh^)2Aj>_JWQ4$ByS&F$xig|T%ur$#~J z$%PsL`b*nv96DX9l6ivb*{hKzW0p7mO95rvnOTPT&lDT{*Zk|F?0v%j&Kt5f%H0}v z5AI(c6>eX8??-+0%( zeS7at?`wKXcc(-4J%MZxAc3%jJ%q3(U_b<9je>}50?MKSvP1-Ql+B${L`Odvb(k5) zVH6z|aU4e-w?Wi#8A+GlukP(m!s@&}|NrxTB$rg(TkAQes!p9cbxuB9DlyuXE_1N` zn5f*$4b&=?TD5Ch6$X&$$_OJ=*u`_QA3bop>(?x0;USsV&YQh( z)`r{LcWzuWfA0L*3uoW9f&OlNdcSZWSw8F62Zk$*;S_aoy1!qQ(QHpCikgjsoN4(k z2cM-da~g{$6tM8ThwQGj8*O@@CRx+V?t|54SZpRM)oQAZDX$s0 zQm(KE!sGLUi?lkMqsZ?oa@cfQG3@iRFlQ6-wqf;G%~Pg#M`6oF=mPSHHGxV17%Nw% zqK|M8duN#iE>R1h2?CpQuuc;aAI1r@g(;}S8}SL5E#as#RI(-9yXDS1iLdC;lKET4 zwCtR)ov3PZ1A*Kc`os1KJ6pzVnZM*v5&huKJ6n2le@zqK`Mq94tOV@Wiu#w`U}W7d zBeac7CO)n1_wTT?>s7LM6}j^NU@vclb$}kMO%T>de20iESa)X&rGS^>0Fu@#yu^Zr zb14)59XWcwfgDw;MA>DAU6n%~rXzTIFRhX9r!@*?T&Ahaqa$(WF!r@@m~SPS^psk~ zB#;)D`XGIe+d$8l%$92*3(8U{B`KxyAW4bMCqdZ#j{QyUJ^v4OR`3M=TPl2s{l`gY zgM9;VV%ZYetpZ2qGAqp#Oj}YK{o=aK7Cq?$#y$`I9(+fLO$=U$r`Uc2UBU@G_%1MP z;%^ix(qgIDdWh4CpNr2O5}P1?W#6PjSqvC9?ZnvvR=SuO%|qdF&VqSEVf!6B^U{kZ z!RS!Dc|{gnYZb3ii(`)|e@U&9iciF$1Na1tc@-M6I8N^F;j^YVJYl0b*HkwsHOXLB z3K~Ht5aRdrDDmovhNzJY>f?4k_BTNt$@Q4ITlr{6E)Y#fuot`38K$hkZmS7Xywa<; zOjqTDLT?Pdj^Grv%o?z8BW0V@fqC1f#lOR+7fy7?h;d2rgdG_m!vA=h@#> zYwvxkS8hSMs$Z|7hJo2VU`(W+Txm(A(jEc?45F1N z7k<_3pn?KMSfL_?I1`K81SP1Iy(}hBJykMgM-~IYiEJ(Ch|ztVeiY(2m{S663B@HK zbCFyT72v7w&abN)lr|Zf zf9o>xU4!zocjs1iJUUXpuW@d!Kf^)y~cD3lHU&y1b`v_4-yG`SaFUkxwIYyh&t%&+uu{oIVxNabY!?V!UVdeWSQ^z1p8)c6q~L08};DC1ck+5@R|&2gHbM6vu@@pwVIxU^j0Nn1l3u` zfZ~#5XBnsE{fuCn9F;$V`AQ(PbWQNewtw+V6+ z3O4%n1`K?IQL8ul{%wdI=c)mhBC<`fQC^9ANDk<4ML@?@?9^Tcm1xY3uwjp18#sbu zp(u(oBEE#l`f-%N;1QJJu?556(x5cYgf*K7p^w%0U*^85o6 zCr*6i5q<>M5ZmAJ@FQd(cf=KnDfqhl*ck3$$1J4^jwQ_aKM{DTp8GN6;@)%G)Jny& zptW>!sWrGvp;QlgYwp~)=91PE^e{bqf@HcJ9v6Lau5(X$S||y8w;?H%2+U}4c^s~* z&;S!du>pobgoh1R*a-D=QDu}T5y;;h%r5}5On?CgWxwJg#zO(;AOp6kXZw2ba2%U@ z3n^xagoxU$QL6rBA6Q)MbChwqjyZSgcigGp|FVf&%I!EBTWL1nq^F9DFieRQpolpb zdW^uk$!joJ;7`M#(Hs3{_+0I&(Z-GoYPFUtb0(J*4{)4S37X`XQ-9}n{he>T48mG^ zG}anh`2~nYrzu?vqWbZAP6492&fqiZwMGLd$pHF7i6*&V1AXhNL4G)sY9LE+4mci| zuZ48U7|kyTM2IcIIw)~@5~CIr6du~ z!Cf1BUND&TKD|M!(HT@)1A=CQ!1al3#aY&ArD}&mEg7OrvDn5tTL(;3WY}P4fvHFcjJt)xZ~$P;Zo7iFMd!e^79qSA2=&I^o|mX zuqoYSHYDL+BFMdz97HoFzt5T(^qP|3j|LuTl0r~`PJ~%INP+BSVXUALEsaW(wv6%K zY&yXqgv50)PKLY`wWgW$2IBg%^45SoNSDzk9km1WDcOZJ8QjL+ZB}xe*azs;h8{FG z))7`Dt=|Eqe0H4=Iw9LU`A$mT8l3c55B6o0g<+&o6QG z98fbkmv^&j?s=q61s7JHnD4#8Zrz5**W?8FQR6~o$!T*!| zej_cVB^%)rmHme(_ZcnOz@qq%{C)#1#eX7R9+6dHuf0tyLo2@n?uCC(Z^zH?5xN~N zx)N4y=vaU1emY6M^ z6hd-o2^M)t`41Xwv4K9f(SGv9;hS{6fZXoZxvg!>55E@}9F`Yo1VZ$J79u*UG#flZrA_)NULDE5VMl5C-u`T{l)Kj?z=e`=JI*oipn ziGG2O#onb#r|;eRX2t|Q%ImSJ+?s&FVEpRyEn7@JYlJg617V-a5cW9S<8Ju4!DQpi zrXLZJ_+fh5asAT*c`+S8$B={MC^<+UAkWe2*nV0~p5q!$ zu*eA(KEc0C4$;wxg!PFO(n_2sh?9O2 z`+-F{)gBf(!NMox*Re2N#i}7o>ti3X0GEuH1Ei`+eC#A(ItbW^s|+&VOKhj*Bg|Z| zILG6rvp9+j@KzQV#lxO4n+~yd!$_>O*cCW}Y&~P*Dn4mR%M$~uGsF2VS2(?2|0i0P z46f}vX@qCEd}(p96y9T- zYHA1F*z#m;bw&hbMlz}g9%;F8P;E^U5}aR!1e2==3|?|k0ya)mvS)t!NcfNN4aSKH zyLktsI$rRyY{XcCyd|i`R+CB_Y1?ee(SK@6$fgL!R&T zzyoCP0}nhf>#c{bn>FjYx9N><&7%JlgTgm3sBja0mXcLuC0W@*|IUm#6F>1k)AGzS z^rmNa5R_qTCS>K+Nhz0R^;$KYm{sqHgf7bJOSc+r++9~K_KhpI=ndAQD;4{5 zEdu;Uf_A2Wb{PDnG1>(Wwgz^A7m{S@@C@Vfvfu@O9+zr%X1Wl(7|)V2aTiV)FVI;W zD&x~K!v>>Mla`jA8t9chFSj_Hnx3AjajUF7qWz`?ak!?5wv_goni_W6Y|e1%)Lx}6 zQ4P+bdraw_6Vw}BnrM&o)Npamyd0LbM^xi7>Z3iXnxh6}O%<~SA>I_TR!mCOm=)Hv zseE$Z=9I1kf#i!4OsTp`*+18;9?>iGD2-iz5XbLF7{6bWTtpbm@x!SBR-4QloE-WO$;3OJ?IKyNjQ{r>RT{*^MwwYN%&g{Qx66tTXq3h6@_7(r9nx9!CKAyYtS+$~X&S9oW3`|e zUMD&(_TS=m2w!V;X7m$%aZ81WF~7r=7B7RIj+c=y7OSgW=S0sqicc4FEV4Y2X)C|$RN{#m7+Gql#Ru==Q+X9ewYm|ryy_rPR28W&1 z?6ydCF_3y)7F}lyAdT1D1yTlW22!8HZ2@K@COw0qHqGTub^&1wh$>CDMv3EVEatdL z!ncg`vWOc?bCK1|D6N3)ITf4@4tGI^V|Q(k&Y##>RQv54W-XkJ-Hj~`z%q;}B2y0J}k!xh_=8mSxb#Ej{W4H*zkO^ps1^4RnlPYkGwr2b5M zb70?MHTW1cyM1VZWeWkaHUUnYgM^0?DGBCqdMFY4I6ZwJLN!zqA%A&3ww3(*dGam! z_IdK}*jD~mE6E>e(Mmcc_VFM7z`6M^Vo%U5xc5AZZs7)#S%5p&dH$tlp5(hq=fyd$ z>zomwPaIP5jfdf6`uJh;Tk_k(pEVwv$&l=oh$aOfKj@;ayJ-bJiKF?iCbDTffI^9|MrDfH9%1ZOI+)gRhr&^3bj3GhiTDnz)4lnD%K@@j3yJ11reFXq@ zcAt2QOTb`W5l0)lx9_6HULAYnz5hw$0YAPIo{WaPz^)~zglhpyl(E3^7IuSU<786w zUX%)1>({JLgT%7Kigb6?O*(*wBzgpwtif2@gB7N-dn)bP^T$J86sU zA#I)gP6Yg9sP1p>^ymT(C=R6mebmo`H>ek0%*V(%a=J7YlNpH zO>huxG(w`FT#Ezsu|5<01{G^)<>7twaXNF~VOq&$9p1N#w8x@r=rA&I4IEcbT0|G-kJ?!ivAV59F z!W|>M$+kUoruZNHV9(q`w$f|&$YtaWn*KTc{4+eC({%FY=fw8;XM|lHKp(cF%w&`) zU{56@@C#Cclj;(J?J#k$3*tFJ4@ zXz^s>;cJEwcoE`iV#lB*nmKG3%_PmSV_Xfrhny15#h!+|HM5?*ZGqwOTG~!d4XZ~E z_%Kp;?(w>4OxlBDHUo+w3z4u<_64>Fej)Y@*Z&2!3x0u>k=W~A4!(`olgBYn{F~}9Uktte zdO8$;b%=jS9v9A0*h{8E=drhDgukU{$>Z10LyohTlzSoE_{M|ehIMRZTSsp_c#z(@ zj&32d*1_e{Iq}t@Zm$j=LelQ#F^UErq!J}uNZ8=f?*$~OmNb7!#?XUb(tB#@R|^)< zuWIQ%U($nQ%$KCOmL#E$1JbwoiEjtUSn1n>`BHvXUqb$pg9rwW#lhpGB;pVt?-7&{ z3?hq?-41~#7Z^(rFew!UBPDE<@g=;k?ckh)q}OQr5^2w-%@E+#kR92yg_Mn^zdJDJ zAp1;T9!+}DY1w2a?T-Y_*<=SjF`D!|Fb7xepTj$3m@bxaXwD&II80x}S9(o0*^bhl zrPH&?F8UJ6Kv`{v<{ThBQ8qHMwm*n5qX%8=LgW(p1^BdXoPT_8fm2-R$VfUej4SDh znirf_L_ajs6_$|d_X;*5{#)G%YrZCt~QxdFXM4)y;K9_L(qdL$ks zjr-rmZvDjvRL*i+3#NmlJMyEJ9MOu=EY9%4RzIS*qC&xc#TjM^n z)|EcnI&?=yZE5bz-o+#Kk0|avGdHI`@2;WN$F$~sqjuMaa&r?&GiTX`^&Xo@dw3{I zTQE3h>rm_CI?G<}MU6GtV^&TWkU2SXKtM6Bd0#NOq-00a9}0&JD?B-7Q=gLL7vVS(u7LLfmrUgq4`B5{G1P({{;J#ZK4QTqP;9be$w7N|Z3cCOZlG5-t+LmiX++ zvO(x8URq!Q)WYhPS_aK!gc4!a@t z*{+P&Wh64D2B#I!?fv@rylPERd6`ns+bT6We@2ZfOx_(3cGYC~b(%_>UQm{m7vXf; z*N1<-xh{WrKX*okyWjBqI(kGK;7MB1fXrym%sQVUHFx^D9vbVYrA?D(0`Vo+Om12_ z%BqRpc1=#IA}}DcXEbwQVH)8BTCE@X3hFXbduD-LF3MLpvwJ>Y9m_YM2>JZW&2o~G z5_Q_(3Ed`lrS%$JS2wy>noDkjPjs6zngY9>jQ7RyxS~dQ2wE|VuQH!T*%HWb-zASt zfk^KnIct=O2&K`LkZFrUEfJAQxG*Lb!SCB#QCR@x*usL!imqT=Wuz27TynE|WTs_B zN^{10a)ViEnLV;{^KZy0jpX9~P9zb@O3RL>h8<&bdWGUi$|`fpdcd>*OM!4{BrDA$ z*SeE)igpYGmwQXMMj6ini0LGvR89>!gQnH)NDz1rUSZy{}YTnRD z>ezTVySZ28wV@Q7+~x_ha6C<>p}I4i%JNnLo{CQRHo+eJ26#mLjqFYA&HiVA>Vo@! zg9VNy7nNAp&`GS2jDujxzKj96V8vuUa+n}DG0wWa7GTn3Kb`9;cp8RZi^vbfS6XRs zCb2u8R=!d2<^oSQTDxpL9a|j-?xk9Bh=v^LH zz&F4bz+c{}RP_x7s&jmvYn;iQADr?x`JD7Nl``ZHBc1fcCg(~+A!ldaWal*=Uru%4 z+xmJND=V3O3j0G!Ra<(_50RmHK)j6+K}A_}c8Ws);w1!Un;Z^fk-mz(XKC1bAXxu% zM8lW5d3kNEHC*X&;x>}O>8T7`bt~k2tXX03W&1LxI;z8=#7C!^9J4zH&dcp9=UHNB zWmNp8rpE^laV81~g{vJ?Gm+Uq!Wxa5l^Kdwil2FT-`sfv!STZbV`87uLpBOD_c8Q& zdy#1{4|0IKjx~XCp%)!;F#=)86j97(V`hh?1b3I%R1CW7vd03Q3eZ>l2u55&*oj#P zN>Sp1EPd)y2?AxX6Bdb<*cpIyG?vK72nRGLwMPSkeO)hoX7xu3uI&b;(H_sNb3!Nh{2wAICSxF&)*~xpbhz7bW9rC^tR88>WUDC< zEg6y$N-`SFf#fmykpRqBBX#zO?y1v;Wo4$P!B}-lD8D|QIAsWV!D`&7Rp6>4R5&ey zoDkf(F&r^yj|L4k8_{Ue3%!ASo54apPtsg_tsY*@H5!|Zy|n9vg;vv`L4pQ1{Ioia zn&sB21pWan3Q$1UMdX4-r^W3+wL-hmWSL*ldPiY@OLsQK7f9cQzY) zY1ga&q%};QBxrC`KrW~?$ZfKtNV52{hC6t>&BJNb*e1EL>r!htkKIa7Jx;k&KG>8-EK(g%%X+a)}3~HGN-{m6r#ha0q3?`OEp%z-R&%QyYW}k;E_b@|m#cKx3d2vCiA8(SgFxfVy22w(i zwCwzFTELeI+-3IY(dXjiQJ>M+r$>*5QQ;Jpcrwza1Zc8We?$*bVlXl5bb7rLR<9+1 zS_}MMj|+>V)ez*`M0nc7S77mMHh@!Sm^4{HHyJq9$ZNE#1&(?xri~hf%B9!qbmlnL z^+ybvr-KF*mErPu{RLJL=~^Hild;V%z5{2q&|)4`CukikD-0Y0=fFJww<}mapTVi4Y7jc_A5z4~MRoox>r?9?z_EU^pvetW~5o-}=!pojMICx2%>48iN(oBKB`^JKz4Dnx4L053@*nUHbdtx!_ zSvTNdS8(JNjw;&kp*P=0Zz3!2Be&dh54q(&vXb6(AH7*_u{+bUTg%H@v(ub7Z$`MR zoQ2o;Q;JKsjT*YGtf${EhWCj%^W!1)nVKvIk|4%U;0k z4#aLSSwhYam+!EuzV&c(fp2&lH2%!X&A%@QvyJOM8>u zV#N=WWu4m+8m22cBLnD)Zd()b7FpIU%D+yY{$JXpd`oMkn#l`i;=2_3r$mSpoax-D zobL)kUI(K$0)@Q34`?VV`I;yyusKZ85(oamN}#Dk`s+|el@4Y#P#J}3!Kg|4iyS66 z;46}Havz*KUcTnV@)z6K-?la7$IrDP#{ORE1NZs*xvfLywa(l1{%yoQr*+6b{xPI= z4*h)n`@8URNbB77w{?D}pC!H%`)!Hu7!wexE1c+q7dA*D;=L@%D;n(DFv~VPEZamN zFNH;>Xck|BKTy7BR+>uSx4a~R2QR7!-a&dwLPT9ozawFKh6TQdIGmoL-JLO;YJRC1zpc$vnStf0*EGM}{4#zq{}I^=nOr=NVYrZBAAxIP3Fdl|fIa%s1$)7i zfPEH8U=JMy_RyExTh0;PiH7p=2%t;ab1k=zD{neM|APSgNWVWZzPy2@($eqouBm+7 z38F_pc%yarL$}dacM;pZ!q%eU53S#^>$Zo6Be<8?w$qacw@yO}QnZ79zPG5gVEDtg z?c9O42=1ky?;^zrqf6-1-k&~FSTN7uibyw+1!xIVfW*mmmz*%MEzA&!&VEE+KbR>@ zi3{i5MI_?JEDA1EbP2@flg`2%CdQ(&6`~;SeE>wd+?Lc6*Xms=qKN2LX3ZcCp=dJN;Ct^@ug%KaUo7BW}0Zi?egw zQi??G+iyc|w5;<3vf{FgnAO8Ru)OqBF>h9~#{+kSYS|RvV5IO@j1(=-vY5rJY*->{ z5^d7N{TncCa}K{z{1Rzz%LGr-MT9usnC5gsqldBDagc)F7tz4ph*=~=;J#ERQba+a zggyRT!_tO^rQ|_+(`d3Xrl&WLCbw|ArPxzq?CG9K4msiYB*#2Q63-F2BdO=5ukI~( zM*4Y2^!N1%ID~m5N{fHlgzTj^0HOOR;@Y~n?ZVvrhkR$1R>exC;s=X=$TIrZ(WFOgqWFg&cuB7FPh9ef8+YZV zbhc82?;V*e@v;EoSdAd zp_9oTO{y>XKmRUG(~v!MGK&c5UXPMKRZBQ!a*y=$Zy-hn)>4XCn%|qA<^|Gg=~GIN ze41}WvXVkeVxZC!+cv`I&4;~`Gvb)B#bewT>AqyV_W9D%%JDbZ#|`nON4>~agKWv? zcZo5A!|11!$tV#8K2?LNJ*fIk#K^!JRE?OR_p%mGA@^#c-q>hyjC3@!cjR6=1@9RB zvU6GqzR(1U9|Z8&yNeU9ICo2?ZWz%4vJr?1#0f(j?*xv2@g7hD&@4>m#a@e3i)3hr zO&P$AfGxZDnmLhhz$FMv!Z&8*goL3a*~S&-SNna18W&wc{^rsRPRY&=*C``3jjT`R z3Vr_Sj53XxemYbL<&0rj=%;3llm+_j>uFj#KJpey zQ?o3C-Na5jLlj|TNs$jF4zpU!VuhJNnCg4WXFwjvh^Iqe>t*2+=y-%=|2zipT4a32 zF*xy1;O|kH-`K|k8#*%P@drLzWa9n7G59+j&muf)@NC2L0G=oDyo~2fJo*WJ1ldOj ze2a%;kYmIIY(tI?n2lV4|@=1-&0QJ=2?ugU_fSyyB);M zEEX|`fp(x?Znoib%F|>MNyg8nC+X3L9->E|fsfr5qNWHWauMqkBMQWF*lFt!#LQD4&3Ju&j0wDsYN)|@?+*mA^XSI zMv6gXWp#lEeOyu6RhNWM1~RBfh{b8U>XI75>e9sP(!}eEu&X0Q(7{1n!Yw~$qB^mz zc)e0xo&ADOE7mW$SU#&u6|YN$y0lWiRGs}&#OqST>w-yksQI#*#Gce8ItK;I25hy zs7wtyO3DH4s0|0nNHUT>1a}*w$O!sy%qGS0Mtl!2cv!?A|MH`&8{ z8pm{<6fzGZAVxH3IiGV3ZzS+ANRyz+Qot8*$@I?qZyB+RPb0HQ6@3B8+YtU(%pX05 zsFVfn_oOlisESb}0f;#~!bv~_HY7rpP#c-eio%BDPWl3=Vm=np7XD4)4P$B&CIR?N z{D`1Qc#k^xJ>vV1#rGex_qfAU`BSwbOYvvX7qg_PE}kAqtQ`J_BTJFpiyv5+g3PF1 zxB&jyZ9!#7G^Tms=~OWTD|f~Zdm}c7!-gBE?qrJvHqIPF(Usf zDcC?p-F~9JvTyy+$NJS~!(+y^Y+7rww zy`>+SboS_TpPb15amo49GoR{R6OFjs*#+}@4{0gM@H$B$HzsxvecS!h8NrS{hmCph z6SeR~!8mgggHDKishRB`I(v*I2|EVq6W_S!hV;zT=-S6uta*5CG&PbpVcF8cqRgy} zjI7L}!mgljF3pgUI;C)F%gR?@T{->6!YQd?TUtkr-I<;}v!Z-vb~=*;AzWU;!f4k} zv}-!r6@)J?oEt{v^kUVBz4WCkH66q`TXqO%n`vmfEb_B0 z=Ns42Nyke{iu(82*{5G|QO}-5#r+WMUsO_ZoK8CQ<=59gK4^V$A*|bZiwf5b9lEZt z$P1fxg~jU!9hvhrfI}L7qQWWo1_~h}UN!~p;*0}MK%^rKk&O_~L(IadvtQ49yiO`J zxwvrc(4lJ!i<6}?>yFI*n)_@$oqW8ww6Lc4(81OHiVJ&{78m!E!o{V>=|qgSWwLbG zHQ0@{c?N0~#ZgQcC7!3_HU?uMVcZ3A>D1q54KiNF7-ZL8(Ksn>C-1{r$2due!C|lM zEFTkcNuLsI5`VYG>n!%!Eg5xlY}pgXEG^5Tf7~%+fw7>tioW#9v6qQ3efSXLw2%AO zjjT#bcZaP3mtp>dMXmXRdZZ5>oL68hA2T>T%a(5Qm-b1wZkp8AM}AFiW>t@%Imy#2 zrRVK+!}<=docPY7UPGGGS2ecpxQ~))8}9C#d$3?=K~W^t3xi%+u0ac$21R;~^am=d z#}2J91;hR-bJ$jzoK_PoS~3v_u$*iU?5ZNz>EccmBp7P-j zO|1d#-9bMTauiWn0KH^W1AatOV?3`71i>YAEFj7ha*iF?yM9egzka=MU-jUDW7oA# zejpA1Mh>0UJdb`@+jrgS2k(F8HwW(7w5Fyur*9?waaa4%$J%$Tys2Mb6yI4_3L?2h zqF_{_5e@`}7i`Nd5el1{$sO~Wrwtv+DtKUW>vhKtJh56pUe~u4)4q&wUiy`MyTXLM5-hIpNbsK$j z^~x0r(-*Y-Z|~DypMOMNBCnF;tX}do*3r{gM+HQJ%xaSSG<}yD#Dh>xhHqd4aAlj2 z(+GD+>C_w&!Wj5ZNR|Sc;1bD@P%JYoJfo^dm`N(-OKFB z?TJk$FLGOAvl7V?WsXMLstd}jqE@k;UtG}6#Yi`~dzp*Hc7Ar5c5*LLi+ljmDj{oy zVH0RVEBVH=GwH{~J@f3=voncX_!A4F|J*EU;m=8F;qMn|qa`dYanp}yo|Qk#a{XAq z!syp@`nX_0THMGG;E9(xEX5!!!igP|sbDOuE`SR`so91slcjm554I6&AXQRurvHgb)4X9%;>KGcYBVI6^ zuyxji4Y3t=6%#eVo$6kc+c;H}||4OA+PV%yl@R%XHjo~qfibXsI zfyZD1kIcbK5O@p%k3rxu2s{RX#~|<+1RjIHV-R=@0*^u9F$g@OPr#1Y51-hljCh}p ziB^eNUrl(QhB24TNf>A?YDSR!|LA8 zz47Nq{Z%}0Q-JM{ z;v^mxN7(Q#Q1-3}F)JWuO+d^Fh*<$KDGe(|e8|+cR{zTDW;}&XiGgGcQ2}-PAaBYUB8+Q@M2d z?K}UBJ#ojD$11e-TkN5Br{#h<$108(^g(PnqaqCe$a-<<+#CtQ4P#O8GDLEm{Fy%T z0+|&XeMwUmb$rZE7z9S3Yfg4CABY5F#EmUAtICaP4e@H(@*rd2#(SCZ{~Kx$set+0 zc7qDspaM6jzzr&Jg9_ZB0yn6@4JvSh3f!OqH>kj!paM6jz|Dw}N#6pX%s_%N1E9lh>18Or45gQ$^fHuQhSJMWdKpSDL+NEGy-cM0A~xfD^RBzG)>-7L8o6 zcI|?ZiwM7xyjWdXQC(e8S$)Brl8QOy)2=y1hB?F}%^@bh(v*Ou39vK)mL|Z`1X!8? zOA}ye0xV5{r3tV!0hT7f(gawVL|C#JDvB8@iWw?PnoF`kMOmPtEKpGvs3;3mlm#lv z0u^O}in2gOS)igUP*E1BC@VolS)igUGzZwZkP}LbHZ~k2vS-5~U6w0iCmrDs-n%b1 zm*kr}QG!_n(jBI;h~<|Trxyu7mm;U*FDE{Io=qY54qL9l6p}qkRKTGOMv|hMgE8< zK4vmdN(M^FKq(n0B?F~opp*=hl7UiSgc8rwcz%!PZ9L-YniL-|Nob^o@k?kh6C(3? z(%!w4b6^|;G!0Cl?$deaP{CY&Db&x0$? z^3t7oW^Wi**u^XJ5K{^`CS$gX%%anl%c)iI|E903S#{l<>+rj34Jqsl$9_dr^zX#C zm#AX(8%WdkZA+IeS+Z>Dw(a!(&am)y&*C|A==be+)9>fZDelQ)M16NVQ6qN#CVo@T zyLz2JvsT#OyYi-G^weXA>8WKmRrY2vl6m+sl8M-beJYmKU%gM@$l+EtF(E075Gjn&(mMjWa=_QpI~@k@XbyTR4I;L+ngZ+kSYZQjhqt0y%! zP4)UVJCYyV*s_*aUllU)ZuFjv9Z8?7K}HFq0PvS-!w7|~u3ymo_h>8Gp8m&!2lwKZ za>g&|?7w0wcx}hGYnUjYo&Wl(ed|7!nYX^H;GEqQH6=*>0@Sm;*e@C0_i;B;cc?aW z;?r~Q3~C=ac#-s%;U2C7oeQJIcxdyS=Zfs^QnrZ<$Dh3ayE`R z@|Smh{pZs}|3Sr4I`Nl4BX--?70b76TfSl|`SC8V@2z+G4?6wq(f458Fbi^Wz{E||eKx-%B!{t{TkGMBuyWa+iDmh^XTyk^q_4{W+-quaB4{zJ!(Jv4te zaW}QLHce=4B`1FdR^7)#{?CpFY4R@-89#AP311g*in$s` z@>{PCm@XRff@v#-CA}#L8tRhUi=2-nXoq-TDW393`)eEo0t_ZNz6@ZRD1l>HWl;%R zCW6v*(It!*{n>RM4J25jqSDf$F6Jm6^Nz~Q7&Cgzn2d}sN&fKq`r-7|J@vF;!?vxr ztb{IuAi=4;s;az;Ws1inrfKDx_Pf`tOfXF=*WBGM#{RhE#_zxV?z?ZlS+->Py}JRb z*YCYooHsJ}c3i`6irkgj$xm&)`?14!Z%y!1Tkk&nm>6Sn#l*a-VUlD>x}bglxoX68 zWe$n+r-+P26{}H?Gvc!0+C3G_D%B>sVU!zM`VGNo8#f z+4T8IYu5_i|E|5v4~S&-{J)WLUb*dZ#f*7>JzBfBscC!ljVqS5-ErHhE%$C8yQkmi zdk4S&%}Sbog&y!O&)Sxa54zl&ecq`}jgwX{o;j~AE!yt&9e;E|J700NUUcUnIh=S# z(G!y>=Y+)xCg%)ac`|4R-!q#gah|=fpfTqPjgvpYc$=8Eo$)qn5V~4xx@f=)PsC_R z*IM08O3av-t8!|bx9=@|7-KSK$AFRTgWfs!=?U;G4&&>btb!1NzPB zKmYojzZ@B}F-Lb`Px;ac>bXJ(_>3;z!Re%r(2wZr^!R&6pFKUO|2uENBj%y2fxX+< zS3q*W#y*qVT^aS{O?cF8-A^8mU6Bjuz4rVW`Sku*MRzw|PL1t(2J?$5K`;du6r~V2hWV=s5X0Mb{Z9WC#Bj}j zyM}i07FwL~h+JiN3JBGBg!93a&P&)-3g@4e-T zBipXfeEA#SitF0<-!2z90MN9!tmVW6wyLDw75TYU1q3BqDBG#1m(OHcUhKpf>lz6v z>Zz0dA2Jt28lsy?Z*B#3lDX%|T%_-i%@r2NKV?E!=))5a92R^Z6Ao~{K2;MNN^awh z9E=I1FgCPSEc+FdUCPoDp-6zOJ^792&&!2=oEv7U%Ja|Vlex5xLcfib>p{6&q;jL+ z>Unu%Y|sJjJpCj0cnxol2?x0&r)pzES-C`|sOLLan_-ApF5voQa3S~1e$vFvify6y z?~nE8o+FhV%a(P(PBiP|LWNhp31f)qk}H{32DbVlH(W)6DcM|MC07uPYd48@JRHQX z@LElDuF+{P%ru)VR@1SLoHTd+m&fCSv6WCool%WCX9&yOm?0>Esu~VX&u*C4_n*}Ags+@u)8Fk z^&z+


*Toc{%?n7Na{@W#kyM+}-t@ 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�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 eframe::Result<()> { + let options = eframe::NativeOptions{ + viewport: egui::ViewportBuilder::default() + .with_fullscreen(false) + .with_min_inner_size(egui::vec2(800.0, 600.0)) // Minimum width, height + .with_inner_size(egui::vec2(7680.0, 4320.0)), // Initial size + ..Default::default() + }; + eframe::run_native( + "Knightly", + options, + Box::new(|cc| { + let mut fonts = egui::FontDefinitions::default(); + fonts.font_data.insert( + "symbols".to_owned(), + egui::FontData::from_static(include_bytes!("../fonts/DejaVuSans.ttf")).into(), + ); + fonts + .families + .entry(egui::FontFamily::Proportional) + .or_default() + .insert(0, "symbols".to_owned()); + cc.egui_ctx.set_fonts(fonts); + Ok(Box::new(ChessApp::default())) + }), +) } + +#[derive(Clone, Copy, PartialEq, Debug)] +enum Piece { + King(char), + Queen(char), + Rook(char), + Bishop(char), + Knight(char), + Pawn(char), + Empty, +} + +impl Piece { + fn symbol(&self) -> &'static str { + match self { + Piece::King('w') => "♔", + Piece::Queen('w') => "♕", + Piece::Rook('w') => "♖", + Piece::Bishop('w') => "♗", + Piece::Knight('w') => "♘", + Piece::Pawn('w') => "♙", + Piece::King('b') => "♚", + Piece::Queen('b') => "♛", + Piece::Rook('b') => "♜", + Piece::Bishop('b') => "♝", + Piece::Knight('b') => "♞", + Piece::Pawn('b') => "♟︎", + Piece::Empty => "", + _ => "", + } + } +} + +#[derive(PartialEq, Debug)] +enum Turn { + White, + Black, +} + +enum AppState { + MainMenu, + InGame, + Settings, +} + +struct ChessApp { + fullscreen: bool, + resolutions: Vec<(u32, u32)>, + selected_resolution: usize, + state: AppState, + board: [[Piece; 8]; 8], + selected: Option<(usize, usize)>, + turn: Turn, + pending_settings: PendingSettings, + server_port: String, +} + +#[derive(Default)] +struct PendingSettings { + fullscreen: bool, + selected_resolution: usize, + server_port: String, +} + +impl Default for ChessApp { + fn default() -> Self { + Self { + fullscreen: true, + resolutions: vec![ + (1280, 720), + (1600, 900), + (1920, 1080), + (2560, 1440), + (3840, 2160), + ], + selected_resolution: 2, // Default to 1920x1080 + state: AppState::MainMenu, + board: Self::starting_board(), + selected: None, + turn: Turn::White, + pending_settings: PendingSettings::default(), + server_port: "8080".to_string(), // Default port + } + } +} + +impl ChessApp { + fn starting_board() -> [[Piece; 8]; 8] { + use Piece::*; + [ + [ + Rook('b'), + Knight('b'), + Bishop('b'), + Queen('b'), + King('b'), + Bishop('b'), + Knight('b'), + Rook('b'), + ], + [Pawn('b'); 8], + [Empty; 8], + [Empty; 8], + [Empty; 8], + [Empty; 8], + [Pawn('w'); 8], + [ + Rook('w'), + Knight('w'), + Bishop('w'), + Queen('w'), + King('w'), + Bishop('w'), + Knight('w'), + Rook('w'), + ], + ] + } + + fn handle_click(&mut self, row: usize, col: usize) { + if let Some((r, c)) = self.selected { + let piece = self.board[r][c]; + self.board[r][c] = Piece::Empty; + self.board[row][col] = piece; + self.selected = None; + self.turn = if self.turn == Turn::White { + Turn::Black + } else { + Turn::White + }; + } else { + if self.board[row][col] != Piece::Empty { + self.selected = Some((row, col)); + } + } + } + + fn apply_settings(&mut self, ctx: &egui::Context) { + self.fullscreen = self.pending_settings.fullscreen; + self.selected_resolution = self.pending_settings.selected_resolution; + self.server_port = self.pending_settings.server_port.clone(); + + if let Some(resolution) = self.resolutions.get(self.selected_resolution) { + ctx.send_viewport_cmd(egui::ViewportCommand::InnerSize( + egui::Vec2::new(resolution.0 as f32, resolution.1 as f32) + )); + } + + ctx.send_viewport_cmd(egui::ViewportCommand::Fullscreen(self.fullscreen)); + } + + fn enter_settings(&mut self) { + self.pending_settings.fullscreen = self.fullscreen; + self.pending_settings.selected_resolution = self.selected_resolution; + self.pending_settings.server_port = self.server_port.clone(); + self.state = AppState::Settings; + } +} + +impl eframe::App for ChessApp { + fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) { + match self.state { + AppState::MainMenu => { + egui::CentralPanel::default().show(ctx, |ui| { + ui.vertical_centered(|ui| { + ui.heading("♞ Knightly ♞"); + ui.add_space(30.0); + + if ui.add_sized([300.0, 60.0], egui::Button::new("Play")).clicked() { + self.state = AppState::InGame; + } + ui.add_space(8.0); + + if ui.add_sized([300.0, 60.0], egui::Button::new("Settings")).clicked() { + self.enter_settings(); + } + ui.add_space(8.0); + + if ui + .add_sized([300.0, 60.0], egui::Button::new("Quit")) + .clicked() + { + std::process::exit(0); + } + }); + }); + } + + AppState::Settings => { + egui::CentralPanel::default().show(ctx, |ui| { + ui.vertical_centered(|ui| { + ui.heading("Settings"); + ui.add_space(30.0); + + // Fullscreen toggle + ui.horizontal(|ui| { + ui.label("Fullscreen:"); + if ui.checkbox(&mut self.pending_settings.fullscreen, "").changed() { + // If enabling fullscreen, we might want to disable resolution selection + } + }); + ui.add_space(10.0); + + // Resolution dropdown + ui.horizontal(|ui| { + ui.label("Resolution:"); + egui::ComboBox::new("resolution_combo", "") + .selected_text(format!( + "{}x{}", + self.resolutions[self.pending_settings.selected_resolution].0, + self.resolutions[self.pending_settings.selected_resolution].1 + )) + .show_ui(ui, |ui| { + for (i, &(width, height)) in self.resolutions.iter().enumerate() { + ui.selectable_value( + &mut self.pending_settings.selected_resolution, + i, + format!("{}x{}", width, height), + ); + } + }); + }); + ui.add_space(10.0); + + // Server port input field + ui.horizontal(|ui| { + ui.label("Local Server Port:"); + ui.add(egui::TextEdit::singleline(&mut self.pending_settings.server_port) + .desired_width(100.0) + .hint_text("8080")); + }); + ui.add_space(30.0); + + // Apply and Cancel buttons + ui.horizontal(|ui| { + if ui.add_sized([140.0, 40.0], egui::Button::new("Apply")).clicked() { + self.apply_settings(ctx); + self.state = AppState::MainMenu; + } + + if ui.add_sized([140.0, 40.0], egui::Button::new("Cancel")).clicked() { + self.state = AppState::MainMenu; + } + }); + }); + }); + } + + AppState::InGame => { + egui::TopBottomPanel::top("menu_bar").show(ctx, |ui| { + ui.horizontal(|ui| { + if ui.button("Main Menu").clicked() { + self.state = AppState::MainMenu; + } + if ui.button("Settings").clicked() { + self.enter_settings(); + } + if ui.button("New Game").clicked() { + *self = ChessApp::default(); + self.state = AppState::InGame; + } + ui.separator(); + ui.label(format!("Turn: {:?}", self.turn)); + }); + }); + + egui::CentralPanel::default().show(ctx, |ui| { + ui.vertical_centered(|ui| { + let full_avail = ui.available_rect_before_wrap(); + let board_tile = (full_avail.width().min(full_avail.height())) / 8.0; + let board_size = board_tile * 8.0; + + // Create a child UI at the board position + let (response, painter) = ui.allocate_painter( + egui::Vec2::new(board_size, board_size), + egui::Sense::click() + ); + + let board_rect = egui::Rect::from_center_size( + full_avail.center(), + egui::vec2(board_size, board_size) + ); + + // Draw the chess board + let tile_size = board_size / 8.0; + for row in 0..8 { + for col in 0..8 { + let color = if (row + col) % 2 == 0 { + egui::Color32::from_rgb(100, 97, 97) + } else { + egui::Color32::from_rgb(217, 217, 217) + }; + + let rect = egui::Rect::from_min_size( + egui::Pos2::new( + board_rect.min.x + col as f32 * tile_size, + board_rect.min.y + row as f32 * tile_size + ), + egui::Vec2::new(tile_size, tile_size) + ); + + painter.rect_filled(rect, 0.0, color); + + // Draw piece + let piece = self.board[row][col]; + if piece != Piece::Empty { + let symbol = piece.symbol(); + let font_id = egui::FontId::proportional(tile_size * 0.75); + painter.text( + rect.center(), + egui::Align2::CENTER_CENTER, + symbol, + font_id, + if matches!(piece, Piece::King('w') | Piece::Queen('w') | Piece::Rook('w') | Piece::Bishop('w') | Piece::Knight('w') | Piece::Pawn('w')) { + egui::Color32::WHITE + } else { + egui::Color32::BLACK + } + ); + } + + // Draw selection highlight + if self.selected == Some((row, col)) { + painter.rect_stroke( + rect, + 0.0, + egui::Stroke::new(3.0, egui::Color32::RED), + egui::StrokeKind::Inside + ); + } + + // Handle clicks + if ui.ctx().input(|i| i.pointer.primary_clicked()) { + let click_pos = ui.ctx().input(|i| i.pointer.interact_pos()).unwrap(); + if rect.contains(click_pos) { + self.handle_click(row, col); + } + } + } + } + }); + }); + } + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + #[test] + fn test_initial_board_setup() { + let app = ChessApp::default(); + assert!(matches!(app.board[0][0], Piece::Rook('b'))); + assert!(matches!(app.board[7][0], Piece::Rook('w'))); + + assert!(matches!(app.board[1][0], Piece::Pawn('b'))); + assert!(matches!(app.board[6][0], Piece::Pawn('w'))); + } + + #[test] + fn test_piece_symbols() { + assert_eq!(Piece::King('w').symbol(), "♔"); + assert_eq!(Piece::King('b').symbol(), "♚"); + assert_eq!(Piece::Empty.symbol(), ""); + } + + #[test] + fn test_piece_selection() { + let mut app = ChessApp::default(); + app.handle_click(6, 0); + assert_eq!(app.selected, Some((6, 0))); + app.handle_click(6, 0); + assert_eq!(app.selected, None); + } + + #[test] + fn test_piece_movement() { + let mut app = ChessApp::default(); + // Select and move a piece + app.handle_click(6, 0); // Select white pawn + app.handle_click(5, 0); // Move to empty square + assert_eq!(app.board[6][0], Piece::Empty); + assert!(matches!(app.board[5][0], Piece::Pawn('w'))); + } + + #[test] + fn test_turn_switching() { + let mut app = ChessApp::default(); + assert_eq!(app.turn, Turn::White); + app.handle_click(6, 0); // White selects + app.handle_click(5, 0); // White moves + assert_eq!(app.turn, Turn::Black); // Should now be Black's turn + } + + #[test] + fn test_server_port_default() { + let app = ChessApp::default(); + assert_eq!(app.server_port, "8080"); + } +} \ No newline at end of file -- 2.49.1 From fc7ece9e94e8c743e4eb8a8136daf3f13a83e50c Mon Sep 17 00:00:00 2001 From: Bence <76205860+kbence04@users.noreply.github.com> Date: Sat, 15 Nov 2025 20:09:26 +0100 Subject: [PATCH 106/107] Fixed app not starting in fullscreen --- ui/src/main.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ui/src/main.rs b/ui/src/main.rs index e667ad7..cc8c7c4 100644 --- a/ui/src/main.rs +++ b/ui/src/main.rs @@ -3,7 +3,7 @@ use eframe::egui; fn main() -> eframe::Result<()> { let options = eframe::NativeOptions{ viewport: egui::ViewportBuilder::default() - .with_fullscreen(false) + .with_fullscreen(true) .with_min_inner_size(egui::vec2(800.0, 600.0)) // Minimum width, height .with_inner_size(egui::vec2(7680.0, 4320.0)), // Initial size ..Default::default() @@ -101,6 +101,7 @@ impl Default for ChessApp { (1920, 1080), (2560, 1440), (3840, 2160), + (7680, 4320), ], selected_resolution: 2, // Default to 1920x1080 state: AppState::MainMenu, @@ -427,4 +428,4 @@ mod tests { let app = ChessApp::default(); assert_eq!(app.server_port, "8080"); } -} \ No newline at end of file +} -- 2.49.1 From 10c176a0f55d7a80f710fca0dfa1324589d9e7b9 Mon Sep 17 00:00:00 2001 From: vargadavidlajos Date: Sun, 16 Nov 2025 18:39:48 +0100 Subject: [PATCH 107/107] Added point 3 to kovspec.md --- Docs/kovspec.md | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/Docs/kovspec.md b/Docs/kovspec.md index a90794f..b64f878 100644 --- a/Docs/kovspec.md +++ b/Docs/kovspec.md @@ -22,6 +22,68 @@ A vágyálom rendszer alapját egy központi szerver képezné, amely kezeli a f A platform célja a megbízható és folyamatos működés, akár nagyobb terhelés mellett is. A rendszer fejlesztése során kiemelt szempont lenne a biztonság (adatvédelem, csalás elleni védelem), a stabil hálózati kommunikáció, valamint a bővíthetőség – például ranglisták, versenyek vagy mobilalkalmazás későbbi integrálásának lehetősége. Összességében a vágyálom rendszer egy minden szempontból teljes értékű, közösségorientált sakkalkalmazás lenne, amely a mostani, helyi hálózaton működő változatból fejlődne tovább egy interneten keresztül bárhonnan elérhető platformmá. + +## 3. Igényelt funkciók + +### Alapok +- Két játékos közti sakkjátszma lebonyolítása. +- Teljes szabályrendszer megvalósítása (érvényes lépések, sakk/sakkmatt/patt felismerése). +- Új játék indítása. +- Játékosok nevének megadása a játszma elején. +- Felhasználóbarát grafikus felület (UI) – látható tábla, figurák, órák, státuszjelzések. +- Játékoslépések vizuális kiemelése (pl. kijelölt mező, lehetséges lépések megjelenítése). +- A játék állapotának kijelzése (folyamatban, sakk, matt, döntetlen). + +### LAN és hálózati funkciók +- „Szerver indítása” funkció – a játékos hostként indíthat egy helyi szervert. +- „Csatlakozás” funkció – másik játékos IP-cím alapján tud csatlakozni. +- Helyi hálózaton keresztüli valós idejű kommunikáció. +- LAN játék automatikus felfedezése (broadcast keresés). +- Játék mentése és visszatöltése hálózati módban. + +### Online vágyálom funkciók +- Felhasználói regisztráció és bejelentkezés. +- Jelszóval védett fiókok, email- vagy OAuth-alapú hitelesítés (Google, GitHub stb.). +- Profiloldal megtekintése (név, avatar, statisztikák, értékszám). +- Automatikus matchmaking rendszer. +- Kézi játékindítás – meghívó küldése barátnak. +- Játszmák mentése és visszajátszása. +- Játszmaelemzés – lépések listázása, hibák kiemelése. +- Webes felület vagy mobilalkalmazás támogatása. +- Játék előzményeinek és statisztikáinak megtekintése (győzelmek, vereségek, döntetlenek). +- Automatikus szervermentés és adatbázis szinkronizáció. + +### Felhasználói felület +- Letisztult, reszponzív, platformfüggetlen felület (asztali és webes verzió). +- Sötét/világos téma lehetősége. +- Egyéni figurakészlet vagy tábla kinézet választása. +- Animált figuramozgások. +- Egérrel és billentyűzettel is vezérelhető játék. +- Hangjelzések a lépésekhez és az idő lejártához. +- Lépéselőzmények (move list) megjelenítése oldalt. +- Tábla forgatásának lehetősége (pl. a fehér vagy fekete nézőpontból). +- Állapotjelzők (sakk, matt, döntetlen, várakozás az ellenfélre). +- Teljes képernyős mód. + +### Technikai / fejlesztői funkciók +- Kliens–szerver architektúra. +- REST API vagy WebSocket alapú kommunikáció. +- Adatbázis a felhasználói adatok és meccsek tárolására (pl. SQLite, PostgreSQL, MongoDB). +- Logolási és hibakezelési rendszer. +- Automatikus mentés és adatvisszaállítás. +- Verziókezelés (Git). +- Tesztelhető, moduláris kódszerkezet (külön modulok: logika, UI, hálózat, adat). +- Cross-platform működés (Windows, Linux, esetleg web). + +### További funkciók +- Egyszemélyes mód (ember vs. gép, AI-bot). +- Több nehézségi szintű AI. +- Oktató mód (javasolt lépések, hibák magyarázata). +- Hivatalos FEN/PGN formátum export/import. +- Beépített sakkfeladványok, kihívások. +- Érintéses vezérlés mobilon. +- Többnyelvű felület (pl. magyar, angol). + ## 4. Rendszer követelmények A rendszer célja egy kétjátékos sakkalkalmazás megvalósítása, amely alapvetően hálózati kapcsolat (LAN vagy internet) segítségével biztosítja a valós idejű játékot. A rendszer kliens–szerver architektúrán alapul, ahol az egyes komponensek jól elkülönülten, meghatározott feladatokat látnak el. -- 2.49.1