From 1efa1195cf3d0b26a169f823da5e7715601f36ff Mon Sep 17 00:00:00 2001 From: Artvasil09 Date: Sat, 24 Oct 2026 19:10:49 +0300 Subject: [PATCH] feat: add static lightmap baking, dynamic lighting, player flashlight, and v5 format support --- AGENTS.md | 44 +- README.md | 16 +- docs/ENGINE_ARCHITECTURE.md | 16 +- editor/editor.exe | Bin 1311232 -> 1331712 bytes editor/imgui.ini | 8 +- editor/src/editor_app.cpp | 256 +++++++++- editor/src/editor_app.h | 28 ++ editor/src/editor_code.inl | 2 + editor/src/editor_lighting.inl | 72 +++ editor/src/editor_viewport.inl | 10 +- editor/src/level_format.h | 57 ++- editor/src/level_io.h | 15 +- editor/src/lighting_format.h | 97 ++++ editor/src/preview_protocol.h | 18 +- editor/src/project_manager.h | 11 + engine.exe | Bin 27648 -> 32256 bytes include/engine_combat.inc | 3 + include/engine_data.inc | 43 ++ include/engine_defs.inc | 42 +- include/engine_input.inc | 47 ++ include/engine_light.inc | 103 ++++ include/engine_lighting_core.inc | 817 +++++++++++++++++++++++++++++++ include/engine_map.inc | 65 ++- include/engine_preview.inc | 37 +- include/engine_raycaster.inc | 37 +- main.asm | 5 +- main.obj | Bin 44719 -> 52602 bytes tests/cutscene_editor_checks.inl | 2 +- tests/editor_regressions.cpp | 2 + tests/engine_regressions.asm | 3 + tests/lighting_editor_checks.inl | 65 +++ tests/lighting_engine_checks.inc | 103 ++++ tests/viewport_editor_checks.inl | 7 + tools/test_preview_ipc.py | 20 +- tools/test_regressions.py | 6 +- 35 files changed, 2003 insertions(+), 54 deletions(-) create mode 100644 editor/src/editor_lighting.inl create mode 100644 editor/src/lighting_format.h create mode 100644 include/engine_light.inc create mode 100644 include/engine_lighting_core.inc create mode 100644 tests/lighting_editor_checks.inl create mode 100644 tests/lighting_engine_checks.inc diff --git a/AGENTS.md b/AGENTS.md index 6fdc049..e2a4a58 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -137,7 +137,7 @@ invoke DrawNumber8x8, 120, 42, playerHealth, COLOR_WHITE The engine supports both procedural default generation and binary level loading. When `assets/map.dat` exists, `LoadMapBinary` in `include/engine_map.inc` automatically loads it: - **Header (`MapHeader`, 38 bytes, packed)**: - `magic` (uint32): `0x4E4C4245` ("EBLN") - - `version` (uint16): `4` (readers also accept v1 fixed sprite coordinates and v2/v3 raw-coordinate maps, including early v2 maps with transitions) + - `version` (uint16): `5` (readers also accept v1 fixed sprite coordinates and v2/v3/v4 raw-coordinate maps, including early v2 maps with transitions) - `mapWidth` (uint16): `32` - `mapHeight` (uint16): `32` - `playerStartX` (uint16): cell X coordinate (e.g. 2) @@ -147,16 +147,17 @@ The engine supports both procedural default generation and binary level loading. - `ceilingColor` (uint32): 00RRGGBBh - `floorColor` (uint32): 00RRGGBBh - `transitionCount` (uint16): 0..16 (v1 ignores this formerly reserved field) - - `cutsceneCount` (uint16): 0..128 commands (offset 28, v4 only) - - `cutsceneStringCount` (uint16): 0..32 strings (offset 30, v4 only) - - `cutsceneFlags` (uint16): bit 0 = autoplay on room entry (offset 32, v4 only) - - `reserved[4]` (bytes): reserved padding + - `cutsceneCount` (uint16): 0..128 commands (offset 28, v4+) + - `cutsceneStringCount` (uint16): 0..32 strings (offset 30, v4+) + - `cutsceneFlags` (uint16): bit 0 = autoplay on room entry (offset 32, v4+) + - `lightCount` (uint16): 0..13 authored sources (offset 34, v5 only) + - `lightingReserved` (uint16): zero (offset 36, v5 only) - **Grid Data**: `32 * 32 = 1024` bytes (row-major order). Cell value = texture slot (1 brick, 2 wood, 3 stone, 4 metal, 5 door, 7 pillar, 8 glass, 9 marble). - **Sprite Array**: `spriteCount * 24` bytes (`SpriteStruct`: `x`, `y` in raw world units, `textureId`, `scale` 16.16, `dist`, `flags`). - **Transition Array**: `transitionCount * 42` bytes (`LevelTransition` in both `engine_defs.inc` and `editor/src/level_format.h`). Target names are ASCII basenames, 5..31 bytes including `.dat`, with a terminating NUL inside `targetMap[32]`. Put linked maps in the same assets directory. Triggers must be unique and occupy empty, open-door or portal cells; every portal cell needs a transition. - Files are validated completely before replacing the active room. Counts above capacity, truncated/extra payload, invalid coordinates/scales, blocked spawns and invalid transition names are rejected. Black ceiling/floor colors are valid. A failed runtime transition keeps the current room; a failed startup load creates the procedural map. - **Cutscene Array (v4)**: after transitions, `cutsceneCount * 16` bytes; followed by `cutsceneStringCount * 96` bytes of NUL-terminated CP1251 strings. No serialized pointers. Earlier versions ignore the new header fields and load an empty track. -- New saves use v4 without rewriting existing map files until explicitly saved. Sprite positions must remain inside the map; scales accepted by loaders are 0..16.0 (0 keeps the legacy 1.0 behavior). +- New saves use v5 without rewriting existing map files until explicitly saved. Sprite positions must remain inside the map; scales accepted by loaders are 0..16.0 (0 keeps the legacy 1.0 behavior). Human users can design levels visually using `run_editor.bat` (`editor/editor.exe`, written in C++17 + ImGui + DirectX 11), with 1-click Playtest (F5). AI agents can directly read or write `assets/map.dat` following this specification. @@ -202,7 +203,7 @@ F6 opens EblanStudio's timeline. Author commands with buttons, drag diamonds to `examples/cutscene_demo/run_demo.bat` runs an isolated two-room example with camera waypoints, Russian subtitles, WAV, fades and a scripted transition. Regenerate it with `python tools/make_cutscene_demo.py`. ### I. Embedded Game View -The x64 editor uses a windowless x86 `engine.exe --preview:Local\EblanPreview-...` process to execute the actual `Render3DScene`, cinematic overlay and fade procedures. No duplicate raycaster. `editor/src/preview_protocol.h` and `include/engine_preview.inc` define a versioned 1,357,792-byte shared-memory mailbox: 128-byte header, 1024 cells, 32 sprites, a 96-byte CP1251 subtitle, 16 texture slots and a 320x240 DIB frame. Header state is 0 idle, 1 engine owns payload, 2 editor owns result, 3 shutdown. Publish with InterlockedExchange/xchg; never modify payload while state is 1. All fields are fixed-width; do not put pointers or size_t into the wire layout. +The x64 editor uses a windowless x86 `engine.exe --preview:Local\EblanPreview-...` process to execute the actual `Render3DScene`, cinematic overlay and fade procedures. No duplicate raycaster. `editor/src/preview_protocol.h` and `include/engine_preview.inc` define a versioned 1,362,408-byte shared-memory mailbox (protocol v2): 128-byte header, 1024 cells, 32 sprites, a 96-byte CP1251 subtitle, 16 texture slots, a 320x240 DIB frame, 13 authored light records and 1024 baked RGB cells. Header state is 0 idle, 1 engine owns payload, 2 editor owns result, 3 shutdown. Publish with InterlockedExchange/xchg; never modify payload while state is 1. All fields are fixed-width; do not put pointers or size_t into the wire layout. The renderer validates camera and sprite bounds, uploads textures only when their revision changes, and exits if its parent process ends. The editor has process-exit/timeout checks and a retry button, converts DIB padding to opaque alpha, uploads BGRA to DX11 and displays with point sampling at 4:3. Map/inspector changes appear without saving. Timeline playback/scrubbing drives the viewport camera, subtitles and fade. Free-camera inspection affects no authored data. The viewport shows the scene and cinematic overlays; normal game HUD, door interactions and room switching are tested in F5. @@ -272,3 +273,32 @@ EblanStudio has evolved from a pure level editor into a **Full Game Engine Studi - Editor toolbar 1-click genre switcher: `☮ КВЕСТ / БЕЗ ОРУЖИЯ` vs `⚔ ЭКШЕН / С ОРУЖИЕМ`. - Project settings (`project.eblanproj`) persist `GameMode`, `ShowWeapons`, and `ShowCrosshair`. +7. **Static Lightmap Baking & Realtime Dynamic Lighting (`include/engine_light.inc`)**: + - `BakeMapLighting`: precomputes 1024 RGB cells in `lightGridRGB` from active STATIC sources only, with exact supercover cell-boundary occlusion, approximate distance attenuation and an out-of-place, wall-aware cross filter. `lightGrid` is a derived grayscale view. Realtime sources are never baked or counted twice. + - Dynamic point lights (`LIGHT_TYPE_POINT`) with customizable color, radius, intensity, and organic torch flame flicker (`LIGHT_FLAG_FLICKER`). + - Dynamic burst lights (`LIGHT_TYPE_BURST`): weapon muzzle flare on pistol/shotgun shots and high-intensity fiery explosion blast on explosive barrel detonation. + - Player directional spotlight flashlight `[F]`: conical falloff (`flashlightConeAngle`), distance attenuation, and wall occlusion physics. + - Dynamic lighting mode cycle `[L]`: + - `LIGHTING_MODE_NONE (0)`: classic flat Wolf3D retro fullbright. + - `LIGHTING_MODE_BAKED (1)`: static baked lightmap shadows and ambient shading. + - `LIGHTING_MODE_DYNAMIC (2)`: full dynamic physics (point lights + player flashlight + muzzle flares + barrel blasts + lightmap). + - EblanStudio Studio & Editor Lighting Tools: + - 1-Click Toolbar Button: `💡 ЗАПЕЧЬ СВЕТ` (Bake Lightmap) for instant baking. + - Toolbar Lighting Mode Switcher: `[☀ Свет: ВЫКЛ]`, `[🕯 Свет: ЗАПЕЧЁН]`, `[⚡ Свет: ДИНАМИКА]`. + - Toolbar Flashlight Toggle: `[🔦 Фонарик: ВКЛ/ВЫКЛ]`. + - 2D Canvas Lightmap Heatmap Overlay: `[🗺 Карта: ВКЛ/ВЫКЛ]` visualizing light and shadow gradients across the level grid. + - Light Source Entities on 2D Canvas: interactive light markers with RGB tint, glow halo, radius circle, click-to-select, and real-time mouse dragging. + - Quick Spawner Palette: `+ Источник света` button. + - Scene Hierarchy: dedicated `💡 Источники света (Lights)` tree with selection and "+ Добавить свет". + - Property Inspector: position X/Y sliders, radius slider, intensity slider, RGB color picker, light type dropdown (Static, Point, Torch flicker, Pulse), wall shadow-casting toggle, and torch flicker toggle. + - Real-Time 3D Viewport synchronization via `EnginePreviewPacket` shared-memory protocol. + + +### K. Authored Lighting Format (EBLN v5) +After the v4 cutscene strings, v5 appends `LightingSettings` (32 bytes), `lightCount * 40` bytes of `LightSource`, and 1024 DWORD baked RGB cells (`00RRGGBB`, 4096 bytes). Settings are eight DWORDs: mode (0..2), ambient (0..255), flashlight (0/1), flashlight radius (32..2048), intensity (0..255), half cone angle (1..96 angle units), baked-valid (1), reserved (0). Source layouts match `EditorLightSource` and MASM `LightSource`. Counts/settings/coordinates/radii/intensities/flags/colors and exact file size are validated before committing a room. v1..v4 load no authored lights and mode NONE; the old reserved header bytes are ignored. + +Sources and baked data are map-local and travel with save/load, undo/redo, F5 and standalone exports. Static lighting is baked in the editor with BakeLightingRGB and in ASM with BakeMapLighting; all 1024 RGB cells are regression-compared. Realtime point/pulse/flicker lights use only the live source array on top of the persisted static map. Shadow flags are respected. Slot 0 belongs to the player flashlight, 1..13 to authored sources, 14 to muzzle flare, 15 to explosions; combat never overwrites authored lights. Both wall stripes and sprites receive RGB coefficients. Flat ceiling/floor colors use a camera-cell light sample, not per-pixel floor projection. + +Editor light settings are in the property inspector and toolbar. A stale-bake indicator tracks static sources, geometry and ambient, excluding realtime movement. Saving or F5 automatically rebuilds a stale static bake; runtime and preview consume persisted RGB without baking each frame. The IPC v2 header includes flashlight parameters and a deterministic light tick; sources begin at offset 1,357,792 and baked RGB at 1,358,312. Update the C++, ASM and Python layouts together. + +Lighting verification (24.10.2026): 117 editor checks and 131 ASM checks passed; all 1024 RGB bake cells match, and both lit and classic viewport framebuffers match direct ASM rendering. Project assets were verified unchanged. diff --git a/README.md b/README.md index 4b7650e..7b79c0b 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ build_editor.bat ## Переходы и проверка первых трёх этапов -Карты новых сохранений используют EBLN v4; существующие v1/v2/v3 продолжают читаться. Связанные `.dat` лежат в одной папке. В портале задаётся ASCII-имя файла до 31 символа, целевой спавн, угол и затемнение. На карту доступно до 16 переходов. Заливка учитывает этот лимит целиком; удаление клетки удаляет её триггер. Чёрный пол и потолок поддерживаются. +Карты новых сохранений используют EBLN v5; существующие v1/v2/v3/v4 продолжают читаться. Связанные `.dat` лежат в одной папке. В портале задаётся ASCII-имя файла до 31 символа, целевой спавн, угол и затемнение. На карту доступно до 16 переходов. Заливка учитывает этот лимит целиком; удаление клетки удаляет её триггер. Чёрный пол и потолок поддерживаются. Порталы имеют отдельную текстуру и не занимают слот фонаря. Первый импорт изображения создаёт недостающие папки и пакет со стандартными текстурами в остальных слотах. Повреждённый пакет не перезаписывается импортом; ошибка показывается в строке состояния. Неудачный переход сохраняет текущую комнату и показывает сообщение в игре. @@ -134,4 +134,16 @@ python tools\test_regressions.py Предпросмотр останавливается на команде перехода в другую комнату; цепочка комнат и игровой ввод проверяются через F5. F5/F6 работают при фокусе интерфейса и текстовых полей. Ошибка запуска показывается отдельным сообщением. При старте редактор открывает карту проекта относительно своего файла, поэтому запуск из другой рабочей папки не ломает пути. -Формат v4 и параметры команд описаны в [AGENTS.md](AGENTS.md) и [архитектуре движка](docs/ENGINE_ARCHITECTURE.md). Сценарии регрессии также проверяют сохранение/загрузку трека, повреждённые команды, Undo/Redo, упаковку WAV для F5, горячие клавиши при фокусе в интерфейсе, покадровое совпадение состояния C++ с ASM, передачу кадров в DX11 и точное совпадение пикселей игрового вида с движком. Перед запуском проверок соберите `engine.exe` через `build.bat`. +Формат v5 и параметры команд описаны в [AGENTS.md](AGENTS.md) и [архитектуре движка](docs/ENGINE_ARCHITECTURE.md). Сценарии регрессии также проверяют сохранение/загрузку трека, повреждённые команды, Undo/Redo, упаковку WAV для F5, горячие клавиши при фокусе в интерфейсе, покадровое совпадение состояния C++ с ASM, передачу кадров в DX11 и точное совпадение пикселей игрового вида с движком. Перед запуском проверок соберите `engine.exe` через `build.bat`. + +## Постоянный и динамический свет + +В палитре выберите «+ Источник света» и поставьте его на карте. Источники доступны также в дереве сцены. В инспекторе задайте тип, цвет, радиус, яркость, тени и мерцание; работают перемещение, копирование, удаление и Undo/Redo. + +- **Постоянный**: выберите тип «Постоянный (запекание)», затем нажмите «Запечь постоянный свет». RGB-освещение и тени сохраняются в карте. После изменения геометрии, фонового света или постоянного источника инспектор покажет, что нужно запечь заново. При сохранении и F5 это происходит автоматически. +- **Динамический**: выберите точечный или пульсирующий источник и режим «Запечённый + динамический». Перемещение, цвет, яркость и мерцание сразу влияют на игровой вид. Перезапекать постоянный свет при этом не нужно. +- **Режимы**: «Без освещения», «Только запечённый», «Запечённый + динамический». Фоновый свет и параметры фонарика настраиваются в разделе «Освещение карты» инспектора. В игре F переключает фонарик, L — режим света. + +До 13 источников карты; фонарик, вспышки оружия и взрывов используют отдельные места. Закрытые двери и стены перекрывают динамический свет. Статические тени остаются результатом последнего запекания. Цвета стен и спрайтов освещаются по RGB; освещение плоских потолка/пола берётся в точке камеры. Запечённая карта имеет разрешение 32×32 ячейки. + +Новые сохранения используют EBLN v5. Старые карты сохраняют прежний вид без освещения, пока вы не добавите источники и не включите нужный режим. Свет каждой комнаты сохраняется независимо. Перед экспортом игры сохраните карты. diff --git a/docs/ENGINE_ARCHITECTURE.md b/docs/ENGINE_ARCHITECTURE.md index 6e968b2..0d96942 100644 --- a/docs/ENGINE_ARCHITECTURE.md +++ b/docs/ENGINE_ARCHITECTURE.md @@ -95,7 +95,7 @@ ## 5. Загрузка карт и ресурсов -Новые карты сохраняются как EBLN v4: заголовок 38 байт, сетка 1024 байта, спрайты по 24 байта, переходы по 42 байта, команды кат-сцены по 16 байт и строки по 96 байт. Чтение старых v1/v2/v3 сохранено; ранние v2 с переходами поддерживаются. Загрузчики сначала проверяют весь файл во временных буферах, затем заменяют комнату. При ошибке перехода текущая комната сохраняется; при ошибке начальной загрузки создаётся процедурная карта. Значение цвета 0 — полноценный чёрный цвет. +Новые карты сохраняются как EBLN v5: заголовок 38 байт, сетка 1024 байта, спрайты по 24 байта, переходы по 42 байта, команды кат-сцены по 16 байт и строки по 96 байт. Чтение старых v1/v2/v3/v4 сохранено; ранние v2 с переходами поддерживаются. Загрузчики сначала проверяют весь файл во временных буферах, затем заменяют комнату. При ошибке перехода текущая комната сохраняется; при ошибке начальной загрузки создаётся процедурная карта. Значение цвета 0 — полноценный чёрный цвет. Файлы связанных подуровней лежат рядом друг с другом. В `targetMap[32]` хранится только ASCII-имя `.dat` с завершающим нулём. Переход после появления в его ячейке повторно активируется только после выхода из неё. Двери и взаимодействие реагируют на отдельные нажатия. @@ -142,3 +142,17 @@ WASD, стрелки и правая кнопка мыши позволяют о F5/F6 обрабатываются до признака захвата клавиатуры ImGui — иначе фокус внутри редактора блокировал запуск. Ошибки подготовки и запуска F5 выводятся отдельным диалогом. Начальный путь карты определяется относительно расположения редактора и загружается при старте, независимо от рабочей папки процесса. Проверки выполняют полный путь x86 ASM → раздел памяти → x64 редактор → текстура DX11 на устройстве WARP. Пиксели встроенного вида сравниваются с прямым вызовом обычного ASM-рендерера. Отдельный сценарий `python tools/test_preview_ipc.py` проверяет обновление стен и текстур, субтитры, затемнение и завершение без открытия окон. Для полного регрессионного набора предварительно соберите движок. + +## 9. Запекание и динамический RGB-свет (24.10.2026) + +Запечённый свет отделён от динамических источников. `lighting_format.h` выполняет запекание в редакторе; `engine_lighting_core.inc` содержит эквивалентный ASM-вариант и расчёт света при рендеринге. Постоянные источники (STATIC=0) входят в 1024 RGB-ячейки `lightGridRGB`. Точечные (POINT=1), пульсирующие (PULSE=4), мерцание, фонарик и временные вспышки прибавляются только при динамическом режиме. Это исключает повторное прибавление света. Источник цвета 0 излучает чёрный свет; белый задаётся явно как 00FFFFFFh. + +Оба запекателя используют расстояние `max(abs(dx),abs(dy)) + 3*min(abs(dx),abs(dy))/8`, затухание `(radius-distance)*intensity/radius`, RGB-цвет и насыщение каналов. `CastLightRay` проверяет точные пересечения границ клеток; при пересечении угла проверяются обе соседние клетки. Порталы и открытые двери пропускают свет. Флаг SHADOWS отключает проверку препятствий для выбранного источника. Сглаживание выполняется в отдельном буфере с весом 2 для центра и 1 для доступных соседей, без усреднения сквозь стену. + +В v5 после строк кат-сцены добавлены 32 байта настроек, lightCount записей по 40 байт и 4096 байт RGB-карты. Поля lightCount/reserved занимают смещения 34/36 прежнего 38-байтового заголовка. Настройки: режим, фон, включение фонаря, его радиус, интенсивность, полуугол, baked-valid=1, reserved=0 (все DWORD). Загрузка транзакционная, включая освещение: повреждённая комната не заменяет действующую. Старые v1..v4 сбрасывают источники и сохраняют классическое освещение. После перехода загружается свет новой комнаты; старые источники и вспышки очищаются. + +Игровой вид использует протокол EBPV v2 размером 1 362 408 байт: прежние смещения пикселей и текстур сохранены, после кадра добавлены 13 источников и RGB-карта. Источники и фонарик синхронизируются при каждом запросе; время мерцания/пульсации задаётся 60-Гц счётчиком. Перезапекания на каждом кадре нет. В игре обновление использует время симуляции, а запечённая карта читается непосредственно из файла. У стен освещение берётся у видимой грани, у спрайтов — в их позиции; фонарик проверяет и конус, и заслонение. Плоские потолок/пол используют один образец в точке камеры, без проекции света по каждому пикселю пола. + +Слоты 1..13 принадлежат источникам карты; 0 зарезервирован фонарю, 14 вспышке выстрела, 15 взрыву. Вспышки не могут перезаписать авторские источники. Режимы света, источники, RGB-данные и состояние запекания входят в Undo/Redo. Изменение постоянного света/геометрии/фона помечает результат устаревшим; динамическое движение не требует запекания. Сохранение и F5 автоматически обновляют устаревший результат. + +Регрессии проверяют цвет, заслонение стенами/дверями/углами, флаги теней, отсутствие двойного освещения, пульсацию и затухание вспышек, сохранение v5, отказ от повреждённых данных, старые карты, Undo/Redo и реальное обновление игрового вида. Все 1024 RGB-ячейки сравниваются между C++ и ASM. Кадры сцены с авторским светом из встроенного вида сравниваются с прямым рендерингом той же карты в ASM. diff --git a/editor/editor.exe b/editor/editor.exe index 6b6c17895c4cf743a872af7bf5386ed0520b0155..df68f66808d66ef61b3545b0e2eab7013f17b848 100644 GIT binary patch delta 309255 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

Pr6jnXv!CWG%Sg)z%Ww;upQ#U)|1i)hr-Xj# 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

lYV@!5p zE(yW~7qZU@j5v71#o2u0;Z;ly$X-&Ho}XY!Nw%rS#ctA!iw|8&t>EHoq#GB1BUu^w z37$BX4v35Uh?a}9y_^ItK1?d`Ahg!;PZb4m#pT(i78m_jWSd4@?4FQqT5vJ1G~4XQ z#eO6$lWK>jkzTk*%O=`Q>4e7X8SRIQL$Ap; z8*%Y*(uIqTYpJ^I`~){lq66aME;0y@!}EL`tc6dyzzJk3Cnr8nYH{)G>#S_kK;i7` zvdw6+6c535H_*A*Q4}sMx34A)e&SdOLA(i{51%0|c!GCu5_k(t^Jkk5T%19= zao6N*a}BBH!o-=xs-Ym+K-c^E#Tp~(F2K|ZeIz)x`_nVZd9?%Af8mCR$= z=IJ0a+SPom0^CZxEElsL=R~w4c-9m2AtoZRXg&wT#f!;W+zUS?>NipN+mm!^mW%7G zr)eh&>)g9v5ejDm(xmCj~Tt*g*Q? zV#SM8H!cQADK3t9iT3wX@VrFlBB~E;1Y! z$C6@PTuVyvDE#DQ`Vjk!zHHIPi`jq~N?i8}E8$|CRO8}dAJ8? z@j=pz2jL#l+BZMJ2S1`?;^L>DP<#D2Fznk(EDDm=PiZ$?bbL5$AfL*1Tq!(!L_9ROy+;d=#ln!HCxRO-j5!iRHy^a_nJ=X&<+xZ+s&H{3sl&xxB!r9S z@1v9A;w{8#r638#=?A#jLgKjiIWe@ExGm}8VZTtNYF9Xt)KZJ$7!t(A2T3C?&Lt~x z@fp&FL(9BCAx1%LBKvXiXOczRix>XNT#bw2-LM_5iWj9N^!A+RN&%Y2dH*j%>9E}#l@qO zE*24O>xHcr|I|>8t?+|xdNwYW|3x$4VhxGn;)0}$pOX%jN8yOS?frNHPxh!1*MtKaXOtUp`lii_aXMV@h!`Mk;af4^oYb#r*m8`4$Dq1k#3! zmlW75d0`{b0mR`)no_Z}VE;=#Cgz+$R_P5s&cMYPMST1&*LN(%XIQmqomjj5g!PF=&UOj|b z9GIWri+B+(t|H?GGXG2RhEhfRK9ApD7B9m&bT5$8}_co^24OZqUH;721Z+JM4GBXi6K62@b&^Sm5WcSwGMf8r}~ z@#j%A6E1#T#FgUWRikrE9QVQHr1>bC20l6_$F$<&RuaQwa7{5aad^I2Vy@A2)Dlh#7pqAY>jdCe#8;4?;MJGV-njT03F6{b(t?XS$Fg5sthKJZ>V*bToh09S$UoxOggAiHlRO;>vK*lu>iISVHu9 zaB(4tvd=KwMfw&n|4XjBmb2r^#MQ)$N8laT(E;7u7hr_=dE6E^kZN2EUr$xzV#y6T zW+^USNg}u(7T(I}a4~1V=ZJ@XCN8pWn+etg_hyRgI+>-2`#&Dt_9&!&m=1iTi zis;>n0DQfQ1do#cjlki;v#RJdcZONHs40FoPPx#b>H%K3v>Xt@)nS`bh>L%dGF&{OjtL5P!736uAwR(nAEkP6aVyz~i#z8sJK|!;V{}NK z|HbqmvnejR6pMo7M&cgK8wK!L;=#o|q!bt9q!JfP=TW_!kXW*m>czz^uhGMC@q%UC zJE%D?e4e;DmiP|w;G(sSf5uS|JBEGJ$0Jkr4-QSOlV z5DR&o^kr@r)4$~EaMAY_2gb!eNChtbN2+i!Zv)MQi$lJqnQ(ChX~D&#H_<0>7aUFW zQeT`*ta_$H$@tC8T)5~X5lxfu2abmhsU~{kN!&%EbVl)rJzOa+9-Va2MY>ro_C7k-_~bBt zOs-kU=n(V!>q%^ni!tKXlMn2Fa<1{bp%5$6-b{a$P!y>Ri(Q>iUnd~GlX z#>Ms_xn>;RKE%p3zfvftAm*LUfpKvNslh#P>`->pz)8So$v7S+#mk0K?YKCZRO12o zE76@ZdIn8%CMSf)VejGgau=L_7W=WdXG^w^U}Ic7xsa>C#j8jd_rZV9VIBH`IhUFs z`t5fdhDYX_Zk~F@Z6tm&(>dHp4&ve-;v7V$gYS9hM|cEU-}BFWRuX?XFV}={G5vhn z5O>1+h^{6G-z8I7E_z1g@&`((Avl{1$Hg^8xuzHwKO^OM6#jVu2WHwfV{%PZG26R% z{+HB|N`4?NC}F3#SaAuR4i^`aHarXuzm#>DKE-~d0T=%on`@eJvE0l0xab&9&ES6c zDv9uvCBAf}#Yz-jx-!=+A)UB5ZUR+@i><`T(~YH-SC=y_-d*M7%i-+LNm9&45f**;HC=Z-s_U-l@;DqOp26ujf z=i$w`IEl34;`Tc^AzVCS3J1r<3B++4FKXfByQw)`>?T8T$n)QHrbi0mQ!{c+DK74) zru}j8@L5~|?t*8MIKxtWi*(~+Uz*a{n|D*;d898c7LlR27j7p(_9JG_&NcO?S-d(y z@<=m3aKbO{&oyiDD14-bnqlKOtenHnaPjs!MgcCqKbPji#a;7gK3wekIDG+k!<{6G zi-*jopW))O7XLVop)KLjPf|s=_%|uU#Uq}|H6^%sE-Ax3u<<$Cm`AHHJgR}InC5fA z#iSGu!!gfOLp=F-VUX0Yt$6GLIwx*PEYhL^Tuj<=vEYSV(}jy?5W|QNe+*I8xVUg3 zCyk5Ch#L>X*I%UOn7G6pjr0#(%wEI^;ZC?=5$&(9%8gSfe%bDHUib$o=L*c?Tys6? zO-~l56E`l-CPlbdM@n(Ao>b!EA`-yGWn?}szD=6&w-;NSC509W;yMz=#ji*QE^Z~= zxY+A8nvDCsIQA{B9v81&K}W-V@FS9#|KTR0XG3up2{VO@ecq;@SrjA}k`7#afpp_y zBXKaC#NSA7T)cHfa}SAp83UFSJ7n5dSd_8G$$_ZB*SshN?Ak4p&$+> zK3qJP_;C-MP7<#J;ngknozMsGBU#Mt;uhk>#mVom4jzEd5IsGMTS*7cmEs=KeFXD= z9J%dXu97Dc@%Z(t4MiJlqn7b9r#nq$%H=pF1J4glYhc6TT2Lti& zR<`FP#0yCX_re&_bAb3?(*LuNo7Qm>tRy~04&p(W_NjdUC!9{)EEnsD2N$pVjLwCN zX>F{Ji!M@)ivzaO>2Nn}A|=#l82(Ny4L`Fj*Nh-~?(@QLiRUcta`4Y@8Ctk_+IEH( zE{-DsJkY@;^F0T_z3@w-530ssO(&BM%f)46DJ~A{;@*Kn%S@vXqaZFJ`*E?2q@B$) z3=jFqt~w`N`LlhZ5ty@&9r0ljC;a0N)?s~qg=$I;vL5b*uM>6N2>h2M9&Z1kgA;e+ z_rJ(L|I%T!@qdg062rv_qzf0`(6293EY?GFwJ-zK5>Y{{{I4S zDhwhbhCwR^rEp&qB-1Q(hBL}a9x3eZ`7yXz=wJ}65ksY?Bg)69?O2OVL$N0;~eH7>qn2X z9A^IsR3C+4KZp66RN>;0{T-$b7f&HgxOfj)i3ecD0M_9#+y!d~I!rms<8bXsR5vH# zIhm#;W#{th2VOJCz8D|0h+Cik4Lhwn6x0A?uvW{2xY6K8Lg72T@pXuHB(r zaO`<>FkKmZmgqg45KKSc?)gp_C3=(=9i!|6yI^_|J)doz@N=Sd;_!~qc1`%<`q8w% zsv=5Z(FMt>gS*E#OamLoVZRG)cf&;_(HY@u7tu7V6NZOe%rNEyC*lOs#&U5IiQ(ey zB(C-0k3`3fTgbjk>9Hd@7#up*K7bcKO|()7ZcTa&PVw671mIzpQA2F&f}@E}&I@NG zJpdy~7YAN$uj7Va5K9}xkbj5{X0C9UkH*ot*l83FAMdcg=>RSu0hWj17o=9}z`u$1 zW3F_VyGb3(18@sz#$)g|62r{|IyI5ICNTa_rr`AOY8T#6N)zB>>qKe;kHQD9vJVi1 zA(E&SxGL!pIJC@Rido+SFDF_j2=@^E&d^-rFyo1q`{8FK@%f)Pvi#cQ>;``%TFEuZ zVXh|{PJZ}C(qr%vA6Lo2e6XJA>Z5Sjb@uumcsbF2eDJQM2jIg=55i>@|L9X{%b@dm zIutt<`;oP{8{R^606+ZS4NO)ncR@eteLfE$FhaV{;~^GC%jvLu^in+IMth`q;jEh+ zrh{z*u$k!OtO)WK>E;LGf}0se>_~i*xbQeUyMm5}iz&A-mEz)&qyiU@A=S7GPA3hx zIQmu&h>P{46%WBLZlnF(6r#5|OwsLBDei^C@8s6x(|Ly^uBToK0DcA+BsHuvgI(JQb@GZUHo7Qb2wEh`lk|AFYJFe zy&ZSMD@bB}I49{r_)5~l@Y8#^Qr34>aiT;gZKgZSL=tAX4}L%r^M4dMpn_Jq*I|w( za`9#oVFR&}Y{bPGqyracCp`#Pkwj;NxijnoJK=Pas71J&bhE8!-Bhh0bV=zLE1xC}+;KJG53Gpzz?=;GwWX{0YMKJX-0F`Pn>!jJj^8;G|)#bm;AaS18I#nr@*N8k_j_U$+hFMN&z zb8$qNZm~%)CI}#_7ATH)Dp+<4>1k#F&14%pXhOZMV@h;R-hRSR9z267t z5`9&=IBYr9%YntwqzL!I%_MQ6FisME1s)rwwrB#eKk=(M;0)rW(*@w{qzA){|9Q!R z>vf(1NMdNghm#(JE0P|8nQz$ZIN=JSlZe2Z-n88hk7!QT5d1jlt?-7o?Afp!KD~mP z8)NZC0rJ_~D$oJp0iu)WhR3h8-3^x|Jq)+3N?tw8T5YcrfG@0J2ILVf1S2gDGoO8K zgoEF)Ysd}nA=-ZsUTD3`oX<)n@bLE--}oR{Lv&^0zrot@M95MK;xTLK3%Cm|B}KS6>m&OBwQwKN?*-!U z^pEWW425Gp;pW5o#qbHD3z!ePTX{UckQ>`NPLw206!vVR{VVxFuQrD{jcBJs;Wwm^ z<=fz4pW6rM1(%Z=mWSc1U)XKA6h5`yuIhT|j@kzhKTCQWocJZfk!{Q1C#2U!yrui4 zMX%prSE)E>}m3_|F#R z5}Z#XnT2FH-UxS+W{W}x^4T`~YT97Rc86(Xc^W)^hh2?*VKr%IxwwkBO8A%sERWgE zBo=&!vs^rSH%~E=Uc?Qm{}?Ljy&GcPf*xZ%r0Z!9#yQCWG39$o~$CmY#mCwx0Q&-BJu!fiQuiCPp- z$;&ebsX5;vd1m~fdB#T#iJP2O9v`XU0|?GMGvKg1Q;UnIkOo}5fGowuyGRQzE+8B6 zcKCX)yhOD(!%KVTnNF5_;mOC^%Ll<1<@BLOIL?)q=m+C0B<(o6AikCKmGHLX?d6s5 zm=kPw!Dk2LC4Ti9f+J40-2*3`l4r6mp~>LOg?Yw_hv8A@Q*+d=3qCyBUOx!GEzaZn zKbezb$czi~62B0vxHQikGL|#El<^8zBz+~Uo{(oMSuUP5G0)WCgW%k&^GqEcgxO_m zOCNH;2a;Y3f4U~mo-<(UB-d@baf^9|v>l zX>v~50q0r#lb9yqh0oYt0>38e?TydT+Z*grFz)$0vv)zBiE*$lc;5?oWy|OJST1fP&avF_pkul1Vu0x7z1Syg_bnIfXr}%9vH@cHub?gQ0kG#v zR>Gt3(-saUhkw7H$G6%sm41+CR((jj(s?7W?jzg7@T7G#CF_W1k(Ibu^I4v0!^I_^ zGsoadKDYABS_)1t@9ROw7xonofRmD54WA~ur8dFMNpFWa>+R(Z=>0m+xY&>QGD)lt zcWvSVF5@EM<(u=22OkG#k~)h*06C!^}WZxg{o2EoYYiT zW@Q=l!S0Ip=5e4E3k23_)ozPWq5Kfz?4;wz3_o-gnaPEY6<0MwBt_7r&?ae;lAu+p z>veILjViq^4yN7Yx_B>Yz1!oBTBQ82yRT2a=RWs7&)xmw-Pikk^Eu!1{e4bOPm+&y zdL4WLjgU_tJcS1DVErG(gg%+5dfA~Jo;Ugjh8kgqdUyoM{2qYU7inJwZyRS6YEuVSjW-J8U=8d+GsrUyR}~wDv9bnkLvr9& zxDWYdqZ9Kd>xCSgdV!%T*m*i!iM;qGxF5CPJK=(hCq) z-1r)}63MZeV6)|+U%kMF)HnmxCE5#@A=$wPyDT4rM^KDR8!t7~5Rz6A8WVJl?XV6> zx^Od+e1tDqz8{7s8fsu6>wg;a4jLlUlkhKwp>lZPHKw7Q^|S>1K5E0Sfd^3yz85;| zhHAo>!uODT9mh#nTw*9Y>B2Lp41XRTyv!&p$-VGOzeAU_9L_{i(ki$KNf&H}6G{zr z9xq&J`6ie|5-)ti@>y7Pxo*W`c%$X3;abc4V3+0nG0Y#z43(jDC*b-?hDzf%!go>O zS8?FR`?CR`&Va_fm5dG9V%cIDs%_@)79GNpuJLi;R4Io!>5oGv>o2|HAA&h zpgQa?C%UUNO};qUt{q6KkxU%979Q7I1Wpv>p}=up<&Wn;ks*S>P2)7oaxft zQ3Ypxos7t*8oq_fi5Y_HXK23>?m<$Sz0fg}$`Mlv{lDjrOLl<1>zRUFp$cc;pby}N zM^Pg&gYd2@LoLU9;b+y<20sGN&1T=ljBxm+x!RY(Ha9bfbYaCjoxgD2e5T+c*8dvJ zhHuhbWV8{!d$UnE_vhf-w=m7vc?f!Ibu$XDxz!qs@ao$Q)kjPvT>Nb^#W%nQzr$3- zH^a9VlE35wKd(1b7C#E3chdhd5Mp;4YW^Z!x;prQ<@4~y#rnY2aD0RAnqoK)$uA|< zz?7AqhQ<=6D+jQ{{mW_U24)J3-9<~_h1>6DeZaT*G52`&0BnQ@@8JL}tG)2Tdua)R zY;bZTea{-;gcq!2Oz^m#4fZur0b+!%Rr*{YJcgtzC#*KqYil?!5HkqxU#lzQgNKk` z{-x4~S$n^s_7W6?m-xsSZ-+0eGt^;x2L1*O5 z%x`DplP=u+Q!>Q|;7%m96vmO4^olk^Eku%D54T#r1wL>2URd`y`4A(lenQVOe+_2N z4*G8yYdD;_lhI42RdCW%)B;})pAIqC@q1y#ZdyqW3~zdxvn9S7_9OW@PT?48BVFww z4Xwco&mnnkSa@hJ{Xd-pW7H|+#tWxEqrD6M>gSY{bYXv(v4R&~+QFR0+o21|g=m46 z_rQ-(J281^-=|}Q&msBTS!SP~Wi`SHgdpKw)Q=b1W1K+b0Pxy40|_szLlc%WCg5Xe z20jRXY55E+Nzj#~JKdtn@vlYSV^?VRLuqP;Z-+UQ#|w>vY;*bS zf^E+;3rH94>ZJwlA|5{f67w713!N`h2~N|(i~fm)h;$pAh2*SQ4gH%kdWX%h3Mk1QN3>?yzXBZJ1h9U2zU_5 z;?@i6-q10^d0Fx#rUpL$JNkc=jCy~^2tCG$0WTaxQe)w;<%Q|D5HZ3#-=+{`)Bvv@ z(g&!78OsZwdxt?sOfP))1ZP-$7~cJ_h=sd*h!0q^~cJ}0ITetAU4l*6+qMtbm+ zp;mv+l*0?JKTRv)pmL(+%n!Q){zBgZDhFyVO)M;)Nrq4_`jP*4W9rs~8CKfIEr<1P0v>@Md3 zeZ292N3NnNi5Y-rku1aKp*h7=)uh|ud?e{La6gg)b;6TVOuyZTJOuFy3W ze&YtViSgcOswOmy7tWYPjq$=DvVE7Uotr2yD%@s;d#X)UMtVQYA~~>d|7_igowNO> znmETSJlSN2E+i#wg1?w+ss`B^zUZcj@fo;u9{q>+!m@8NcJNNvi{yVl8MyQov+(A` z3wNVVVq(x;YZflcgm2tRq5WLbWieB3qeiS&70`{Oq{1;IHz?HYrn(==?C`;$<%ORh z59xdiO5K4Z#`P@*+5+MjPbc8L3w41S;aBVFGA`X*(7%&EaB4$xC^!7)9^)9xZe!($UUFye=%#n zt6vDhFlv}jAztJ=i$V4I>x!)R5v4u_xLdnS{tqhOtlCVGKJeL?|P7QB&Gn(hqfduGv(^ zL)zQn9LuXsrn(jt@`T$g?|Rr&OOU_t0%kiB@7Zjshmd&tk4!Zii4Ve;ET4fNSw0UZ zJ)&b=aE0Z)@Nvrr;VYKUz>h7Te}wrz+3Er}{DI|t@L9`;;Tx9E!ZFM9kp}hmNDAlN z%3wm`(=coK92`Tv&(LKprkaK%#trW)c&`6_nBCS3X?W?6^#F0gTaoPGfe%?e0J|-p zhJUbp4qm)X$J^nJmUsTdR1YH=bOHE|<#X^tf2-cX1zS=7qm=XsQ%yyMngv+_QK1lU zgXM#;-}3Gq%x_ePf6`P{$UB#l7F>fQ-3N~%d8j!HKep2SdCZob`h_5z{S@F0*$ zEU$Jk&ykHMADnO=l1zn%Q6W=!%1Re*4Ow}@2$Fc=YnIQ#4?^_6d>a);UEI#{i5Jd5 zvV*YBN*AuQ(uFOS7d~rwVIPuwgjvfAhmqtd9JgEhal08z<<^F9w&mS$5puKi3fG9_ z-YwjXBqQN-mKPqiyzqU?3(q4dkkIk8-q#7gg}i?HNz8rL3&NjRzCg=|;mej69<#jg z_C305gpEiJ=7Y~7DQFmGEH8Wq^|EZ|;CD9c)$4y4zG!*jpHX!+pYecsRF4;Wp3x^5 z;gd+t9bxz>DxT{&RPu=u`2dcDOpKI@}$kWhp)wjj3*1_ds{Hd#F3tJ=~q|R&iV09xsbKQJe528WP^ciKc`v(VPe* zS`)!Udm@~OCDMt$L?%(0bS0~j95qKZL31<^ZH)$_?a^>F7EMR{qM7JGG#ed?=Ay&V zd~`IbVz!t)Ru*%{Dr2F_bB@U_m1o+pZ^J(CzNUS?eSG1fTF!PRF_6e6h7!5Na3Y@= zO{kDvT{RRb)!N|oD3veLwAfgUj5&llaubr+m#1YMqH7qNNvOuX^1pM ze39lzYa|$HkHjMBNMB?il8p>Sh9mjNXv7w^N6Vs>QCGAoS{wC58=_57U$oh3L#0ZT zllsOt{QXPaMOQR z`fqpJ|E;dB+(1vZXDGC6%yDzEyF|r8GtW3WZN3t|k6o!i=-^q$SH5Q3pF5C0pi;J! zJyn)+rYcjeR8^`r1l^2lsxU29NK)= zF)Q@PQ;uo2(TIvl^>>|iI4>tY)t4GzkPoLur6q$UYKGM0A54`iQ5jNfdc=pmcgC?b zwDhn1%3HpKuhfysk2>ZYYCZ3Gv}iuh;j1=+bBq|pXmK(=-SnN8ehVan$#62A%p|kP zTr!_jJ@y`FkE_Ssnp{+RFVlBRQRyQ)#@qi3ExEU9 delta 289324 zcmafc2V7Lg_W$0ytRiI>qzVE{5fKzoK(VqY=tV&xHjE8>jU_=tVgX$X>$(vg%{6(} zm_%cYVr-~U!2qqzh%8l$2~63(K#b?a}Y73 z7s_-4(wjMnfvv(%YBd@p(wqX!0(|A4Nux1Ej~JRW6tuVm{Fpp6nlQjHHdyr2bAce3 zW)nyfn=b}A#dvBoB0_(7u&rVP1Bs}Cs2V-spB~%47h{FI5S@!gvgjVgcxa?@T@^rE z%3rQ~3^Wm_!A;ldkwIf{2j<$IW0D()NgOp9K{ct=$TCw~O_{D788wD}B?fohQJ}HM zC5!7RAmDi%fGSns`X#VYhCE%~VIUUQ(-gG0o}hR&8^9Sg^t}px0$qr6(Lc#DFwD1)WW6hy?;7{SpiHHW1Fz|YOfJgz0L?U-JQC{? z@aAe&`;4in>Hv=Mst)3)DWJ^M%wDlA$Ps&0vIOiTZkB*u0DFv7$|Wr?#YXgU-BJL5 zkby1+8l)CttSuxsPc6l{Aj@BEvZ<8O5->{zc>t>PGgZEQiC(T706<+2Gz+L*_=?dr z!vD@O$<6Be7??#e7G#B~{Nss%C7`1U5_thea8d$z0V!@4od?BPk4dG^j0LVv2pD#! zd!ctUgzifBDR8aI;8HvRXrM~*2&lbwi)y8?s#4S|$ZDV#eueT`0)AG(Er2|=cI!mm zYI`Z7Tz3#4SmpZ-(3-BPt@*Hnhmsosu!%5u!1;P0@kVE69BbaOuT>;w*uWX zisH3%EN~r{hmbYBzQuJI5Y*Ef^&CJc%5`r7*lX7hsJ(VoqiWjtDaWLjwd+9nECF3q z&=o+f+);s7E|BQux=;Xn*BLWB@@i^VTFbXw<%_;M4NUDjuys_k>i`_pwh@8SY?7?H zFOd?n_{W|enu37q_*GluE-++$tb!*1szhwaL$EsM<83=7WZT<5}REPl5%+nnnS<|7%IVQPLHBSJ4y_#C$VhM0jfh&Mo&B|(Ldo^$NsHx^vV71je zTN|KS9->gWt`vZ3nFss;aCJ7jt2vHKpfeM_Tvq@P zsOY8Q+!F(JQV4RA}iBS;aUom>l^@lUv`RsAjJB5SnUYk4U`7BTS1nuTK(JIxjgq( z@O$?>RiIZo{|KU#o?ISXF(oV4?FZmXhFbl-2%?uAuS#t`OS;T|9YMm~|Lo+p&47M1_7VteEqcg&c zlC6U?>00YaCG;s~zxi;4)b6LLze`q%1TUm^?N5Bk@Y8@J!XF`A@#o**PBx&;wSvOG zybL#y5WZ9sh5-IZbQ{Gerh}ZpSR~*Ki~e?IL)^l|!8-Z=pT+)R}Fq-$R@C)Oo2#197+m^Y=I% zw(JSYm{*cBQ?lhYmdwB2kStxRDxJ~Z%6k-LtxB`9RdYhzdT0%rbnB5+>$j=avx-T} zI(kO77=a{}P50=~=%<@dv-Bc@zhwPRc_zM^z7nC%We$y*`z&8}KhMBQJmbVHJ$vHW zM!eULwea$+_kCTg%{HATi}mmd7QgDpZhCpOR%w^}ktv~-tcTSasx7HIPvr6>+NvNr z$q~7?@RWj_+0)>`&UqQc4xD-2#>B{aSPuTw#gn;t>$UnDIu`8RPuu%XXExnCLjPW0 zDngLVrH&P@b=fxWhT%PlWPJvz^#`IW*I~&&IV|M3?p0^lS>?w^&g_wQ`0$I^_rUg^ zcRa^cvI^B1(1!sBL6fYmMFd`pSgl4Z{*Q>6YQ)6(+rwh5TR5gF8m1qCKJPrXYc<7~Cp zvhHkHV1)5~WUTCoEG8t<SL4;VI7u6K4CFk z8uh>?Hh(Ld7!()L_B$Pf>*Xj}A4u~q7KLx#zvlT=`@N`O42Mdk4d)l{A#aFscfmSv)+{=tbIyik5_xGOJ%o={lh+Q z1%{U7uq?@z95$J-4DcziQ&DT(qE;+BI6n30CTDa@j=z#af?4~lz=B&+?KKT*A<0@+ z;SbYWsfX6t3%O9pnQE`tR4NTf2#_S}cO2JC?0RsEyw>O|<&31mCRmX>>om$AbEv(l zlIz99UPvl-puVx$jP<~@>My-!?<<6AuUW|kjn%6FV`-#hb!n7^0*lG1fWUdHr(+wh zRq-C0S?$mx%YZ0d(T(N~1wgB(hNoFNOp5o2)c{Tgg*0I-M9KM$E4h)Bek1TS%Z#uw z^pm|uV}uZ47j>*O#NYMvKdJB1!p10Rpj3o}3~UVXBx}zECAw!_Am?aUWGn71DFCYD ztJJ?*fNJv^(G3m5ll`U=zKkPDC||u4N?}`z+9<9f8yy_(_h{Q(H4#Fp%>PmMxp+p>CLg^9(8I3yO<|x@|3}y>cH(Z)rbmiZ%*|TAPdy_E(9>6s|y`TaI5Qw zYGfKZ2^Cy{P<3G;wL-xAG_8**UMK|VrqwVhq1+j!ih%0sYD~p0M7KA|4~IpKa(gZ0 zi8a0NObX(78WhBc`@Gq!y}DCnYxU2dB&xdFzQLXc4XNNa$NbSNzW4!>f6M%b0?>?2vuEO@Wa(#ZPlKNw{9nsEhf z>P0@Yq+(PI5?oOh4W;G$q*Bn&MPsh2&M`>Vi?9&M{HYi*ne~Wls6X+B3p#6ReM%MqnXRu7|Rc$XVKscl9hODq3{?iRFCRU0ZV9nH`L3 zp#8K`&#p#|@f`bD)TCNlrNIobo{_BID-nq3*ECcNiDEOFMvH$0v&~HdM6(Aw*)-Y^ z3X7gfK>;U~@76HKW+soh*Qhg)JuOV4>d(F9%my?|)oy&OXB(Q06bsvJ*GF#<^t*RD zYvz_rtw*L-r8ko%MzVX&y}KQsgmu>I$srL&>9@eKM%*D_NWQ$6Hw`pdjB-4Dd zZZ?-hN&B6Wb4SmdTZD=KbYU%8^k!Zyn~M7$u%GU=U^y+l#9n%4Z5i$M2)?Pp+B)AZ zV#ix{_Q<&WdYv=SszI^+wab3dv+1!-#c#W?FJd#b^%49hcDD9|@0{7}INyfve22Bb z`XJ3(CRyHbOSOJ4S*H7@V)nmzOV4)3C22*ns7>j?s>|=**h63(|H1 zJl(pH*6)U%J#HPMef*Q2`6c+regBhQQ|Ttz8h(Ybj2a$Rj)EfD9NMK?x;T=ZpEM+C z@Q}fSV91aEl}b4p#KtD9)%LpJ%v{>E)s~%C3-}ape4Aix{&hWD+$Q3UKG*daor4{_ z**qJkMm@!-lS=P6p#79~h(Q5?DArDCqEe#mMH;Edq=9Oor*BiCjRUnB)}Z}a?c8(r z$~kmss=a$wE&BvupANy=&wtdj_d3LDCjxHk;1kpPM^w&58h{uU(CY`3;Mv{g053tq zqcu&~0o4Cq(yg0RQU^aKn9QPdnawvP`+sr@%B>{TQirOKKN?*$vVOZIvfHK*Q8$d$ zOL|ir`zITj)KZ)}lzo)cS$yz_T~7)RKK31yq4}_p@B30M)2PR!mp#_NcYC8w^&GVK zFX~x~E|0WT7xdd3cl|&VM~AZAsh6}%&g$6*-6FLk&g!@C>lP}6bUZ`LFf;kohb7BIUz*SZPUtnGk}YxVXq#$Ev*tkeV6U1%>M{v^epqR6fg0)2 zc~;qTt2pNywlbry82JtRGsEO~>>NdXa*nmnj1Z-d*r-fNjQ)rfW%`Nrd$CiQLE^&| z>|SQ5*8~Tx=F}c?t|`HUDg*G#yn0RYTS3xYmP!>P^zkTZ_(jsekgG70t?m^htYBx} zh-@%dTbsQNp;Bq35qk42EpzYnw*T?}i^tjww&jgLu~22QOsr*+N~oR5Opyt_?~2Wf z+3&prM7Lt5?-Sqn$`NY#u8yg;9&Tw-Wwd22cA^@>nDCAN29pr>aW4fMz<$=c5`%}OOGVjFgMU_+<5`^gSCsm$2V>JJ(%Zr{eH z4~ln8dm*C0J4adZpxa_%5!;#-C={^+gR{cRzNrzrr*B#m+VopxJ13n@hf=2&KBHVX z#o7-Eaa{d3F-bVWMh)2%d}_=8Y~Zi9uol^^g=981`=8*G|5t;~d`=vF4zUG8Z;5Yj zW)p@5h`ly5>#$y4FN$k=zNe>MuF7KeXxKpU+LtVIcpJyJt0=Ea30pdRkGNzLOCJ#+ zzP*V}7*Q-nEN0;&dy2ciVDFA>?bzc9B~9h0JcakW0%HpX8_VyDN1h&M#`aLhDu>St{1 z*l_R1tFg3O>PohrZpoOzUj5aPMiWc#$+gsW>WH z2}x&Z`EM>}U zanveyY)Uin`yK4*lq~VuN|yO{rnqn=`|#TkR`#~P*nK6t^>(7@w33CrlP5OW&irzM z*pYX7i#xss`mWgSYsPZ^6jQb_%hY7Cx`>^fI!XMXh?%CPh+T`=f@$xGr?&D;!S6w}kbd85h!XHP$g}@36_3A((?oBEneD+d(CD zx4FbA%~!LnGaI$f!fvNBp+^5;N_Hgzc9-8N_g1~m;Tpo=(2*;(lggP@%xzYLXY!gm9$Zg_ezczH@=u7aAF%WJe&RzLyO-ZcJn=E}oZU6xybTOu zYdM}#N{A4W3XY>bX1TLFIf|bUj~~~uL$h}Uj9A14&zbd_(A;;Kx`-{G6X_Q45y^ct ziL~%p<=`52c1~oASY&(6X&FKU?zB9%;??xy*67J;*}TSS={SBZm7cPe^*5IXenWGR z++}p@;x!2zm9-05$GM%G4v_7gkqRpsawy$ENVRze*}JzL#oIjJq6-l$KQFZXK=6F6 zW4jZ9ckIItYdaRI^rUhVVX$g#XLaF2<}xqBv0ybxIBYd*Kku-3t$+#hy~U#itik+H zaqV)}aemu?9hk?J;k9jiR#{I3FY2|_w8*x&aGjA)@D9Qlv4Yb zWSQkyd0Oebf~vj>Yw0j+wK#na@$58k4muj<)%eqqw0F~x{VF!R9H5NAh_! zKFeoqJ}@?lT}I4(IPF1P@Gg6+G+4Hf3F<0vY^69 zky%;y!Vqzil}#!PcdW~ZaWG@)OMS$u?QGQ24@I}1*^8wOQXj+SPPe7pz%C@!dMw$n z>tt#a_RHTXKO%x8j3Jsty#X!vopO}YTTd5YTTYe%*0lsGcJM8h&88X3u94Z120tlQ zw|ZuFn@tiEer0`^wG+F~U~JhsG3yR%wY;@BX*!#Mkxc9YCR%Z(|t(f4Krx? ztPIo0)ngpI*^ZB6MX$B20-*5A?ScP7r@vp$;#T&mw@SpgDUsTh%d-z?ec8s9{$iWe z?C8or{8Cm`S63ED)`yZc30ueZUC=xwNr%Q?wSEuR6mK zrz^q8Sh-O7dbg-y_t!MYijP;Nxn25Fnl?xNO&T{Of;7RPlQaS#N%M?qK+-r;1}@Ef zN@?xz^e`K;Hd5>r&#Y_x#V*5H@w%{>RU+J+a5{ylyC_uML<;%%u-7FNAPFS=WEXS! zq@iG7O+I-eV(3IlQ$?-`!!|*gLs>9cV~%*il!Ub`cIO@_!3s}$q?jB zU7sYlGVA&l_}#xg(*5yi>Qif7X}IKo8Z$?f7&;7gYeQxv>iB793k+k zm4(w27^Zxe$(=+oihzStIEhZYueLypQkciieENpy>BB-kGYKwi_-8G}1>Q{lEZjZl z)XVbIY#p+_*_qGcwBsIA`SGmn=j~H>!D(LOs5%53GF&9^x(r2sye@+qj@2N;mE0N` z*34uFKW8or$5N{uqfJ+9mb58=P2bQoE*``*TNeT6f|%UoBcdem5h?!DP!hDSs$>U4 z$yUrHU3GXSySm{cam-XUZDS|Du&GF8&hs@)!=S?A4EGnGQ!Z24g^h{g$kESP%+o1vyv}z#ZO1Ewwrp0 zy+^Tyo5ET|ze6%D3xg{T=9o(?%2WI}t*p!;3Vcahzx2Tze4qWaX_&VAd#XQj+(`0A ziUA{8>6d;%+j4pR${aeX`RvZ36Yo*!pT5VQf4NFb8NoiclU0zbf_#8c7IOiGcwgb*n&ofx7az)O)z&}q z3T8Xv%*5b68wdC}6WU``K?Hz${l;Y|&7JuaEtSuw=%!?cmCvUn_UkuUF8ta9t|JWQ z7{56=grla0$pyJh(`>t9kR10Qk__&3(k-*x@aMb7r~y&=GMfc%^UsU6Gufq!16Gja zmR#_jd-?nfB*FFCr1JT_Yq2almS#DS4HRGu0Jz8E=IQ*&guBnrS3#i))~cXL1tlst z2Y|ZW07%QT98gs11C^@5xdu2ps=!SJzA7-PAVLK(Do9X)Nd=M$G5{bI5>>q{l`T2-ji#Sl{+EGYR2ozw23f8J%BS69YBK(%m-+^D8G~lS= zKrttj;1~CaJB_l;KLWIDei?oRL>~hLIH!WkD!5T+G^Z+R@PP`dRG@*?gB*@3a8rS= z3XA~BmIDz0<@1~3mxKTzh7;oKgo61Az$DvhQ(d-hyT8Zc!E^wbiv>n2S#Sqw^%zdi z8~PeOx!^z{XS2-ChTo%^zXBnMvynKK&o2U?wnSokL@_9QAe2xF%lvZydy0@m5y752 z@RD&RL0gJ3XmdJ^rC6vnt+Heao3Nvys|T((;POsg!)~2hKel{FBmF~MQUIl^(XdN* zuP-~cBgEx2NS3Z95X$?qCp&_D?mDVzvaPxbpq8#;P)D z>26YaXJ4vvnO3t`mHedQgSeOH%IVq4sEK+_%`tPIY&sABbT_n<4N>FYVW)QohW-nC z7+6<*F4Iz+r40O)TQG#4{~SxNEuelKrY{bB<4vTaQ^^EsBz|Qq{j%aksnejGbNPvI zda-f~=P+cf`6}-rJFv8{TxBBAq+%RcQqE#^&3|(qn^o*1KKzr(#SvopDpp$T>ojdda0Foogf09R0Y@I7Uj$rufPN8h;{p0jwJwR^z+&WJwl6@s zWi}B3hzLN$RLdL{EaWLIOY_u>OH34LwIpybJ4VexL}Vl)01=U21q*pf%ThJpk}Qg| zS~578EvXrZhU?ERwS(??CsMgup94wj4fn^K;a!?4s9^y$Xb5yX9h^dyP zlqAWpdv-41s3glAf~nR+huPY1R*J^HtmFRn;+zlJjQxpXu$ArKA1DS_vTOT$)gP$v zL&UwbXD737(ID38Kojx&0QS~_w&Kp-?27~4BZ_xnNLvh&t)C;;4I(au>@G_=D4?fz zD<6--bhqic|EgyV54H}e*P91Jex*Eh4Q_QXo#D8LL6Y8>HW1JHv#AH$h5o&h;=uuT zRjkkKY;CyAa%&{dzZoZV7Y{ZSzuL)!63+x#r5bUX_g}6~H6ZfqSErub=KR&GQ`seP zZ5;d2p{s<;Pd1&)|5f;-5xnqkcxL!2b#J3q0j2Tc4+~iD(iTx0#?gkggxtNDcrnU? z{+Qf&ErG*znx!%1XG9rim5zV2qSAzhM>09TRb1@4ycMu1p=Q|Ik2xHQ8+2rQZ8N;m z23u%*VAH+(3q_(0p@^svZMv`QjNssgH#0)f-Q~)q7w*^el$58HYG@2XW0XC2*z!Z+ z;*|Mp|DnbW9RK2Rx(Lppj%4eBlicr>*_G^{L+#uzeT|all}Lt^%QOmZk722Y1I2F_ zv9X7fJj4vX8NpPxZ(D`FZ2#f*&X1m{EIn@PnZuC;@!U4n@km4W3!`7QQI9do_P%WV zkvMVCHtI*Gu4L!fbX7Q}dODD~oDd;q}2_&gRL}Zt{je#$m{4JK9ow z%gjoT#*1}|Sk=);!w*A{430)LgKj=fC|i`pIdx6vS@RK`ROTnf_F~quIPqQ@D=iBU z1HIUdGB2<1SHS0@{*$craIeiUFKz{MDmRKh_hU`VTRFFN!pVF&DOP@C&4cBayJ+3+ z;fS)lt5e^Vq`!5EIA*_5-a%a4odq59b$aUtuZwamg(V&H({96|`ru>DwC+!ERCX*> z^q1N8WABP{y0NCmyNRv3vE1XvW}e;D3u5ZU0J;+JHY3&QtloxE1t6<>Kt)9=J9<3T z?Z9#>yE}J`45%nt&H_(_drEL8QYI5kW}dolD$6=Cv2~Z;h_H3fRywGNNr_VtqY_03 zx;zxHW|>p-Zj;zQC#H#QBzE_dKPx;rRNU7UXaI9Nl__>t(fm{6#6w*`Z6x|HVWFqn zIF)3o{E9Q#sM8a~-%?oKnTFbmlZEWj={Rv`Bx`b}x0p!O5b?`GwjQCQ$?Vyg&@fVy zN_P_7W+ip17#33@7`>E0&tr3$$YYwO+3&TfnKYPbAB3GTmqn|Ao{9JvdzK zOXOFtKJMle>teV6h~O0KV&lI>+Lg zmry7E^be|I7N^BjHA>}0<0Oa%JC#7T=0*1IRIvtN>ogDUc5Dia04&i>I>XHo)*z~f~SYZQ-pFL zjU+i~A5RFpGM=odMrCj~X&HNbCgjJdV!a9pRJ#u0;ew>AC%1ddU#;Py$YWO~` zUDo;|4@uVZw7bU)9a52PViPZR6uPsoE~a?@koZb6dxEk==6I=nUtj-MiZPcOD`ab} z?s{2kbLkl6KsRdf?vgSUDS$*M6F8z^Gd2XtqVJL zrJH!7?RL)}G6m6R4;y{8lehK~)(4ohleuAvB@=ULk~=$i)r-x&?kVO>WFKE|ukC`> z{1$gv;b!*na|i)KeZM&wq|#JN@y^#wKI$%y%OGBqiI<}t5`0rz@s~` z);FRJefsuOA2CkGeZ7w-u&`S#TK9apf~B8RQahp^e05GKk}Ok8@OO;rl2nrna-|n3 zAsyMGTTO*EY|pLs!fN*9R&T+Lb^oP@5YImTr3*Rh47=b&Pk%s#4{paE{1WDDB%{QH zg4c{=XDf~M_B%Ui=3>W`!>TGf)b)kotX%MA?e88DXUt*Zz4i{DztC$~&wIYD4gs;( zS-CTS25wGRHq|YG*w1Z4Lv>)-7<9C0$l;ptd5XE+_7=;=u!!67!-E#<@X<u5k<6 zBBh+e*5Mo2l*U70H^1azq7=94 zzM4XJThJ&sTD?|ODkb|yO@^A*Ei)wx%Bim$G)n7vI!(&lCpn&bAbXfb88cs}Ar$Xl z5Tjz3fYl6xW3AY(U!&7~X%No7tL`#&&qu;zNQd2X!`33JWc>pgDycY}<2b@Nqhwvv zf{aVy=0o90#Trs*pmyTa&TRLMq`J?4q!gW5^$k6^D0m#butY_y&P? zKN;qp1pnB3e4Ho4h_y^$|GL?rP67N-hJLb}zMc;|e={;_TRYnDW|J(KY9=c8{#7kG zaC>9unV%b`MN8GtaJbXXS{!U3AIK8w#q5a2a8$1u8RoTy>q4?FQtO7Xx*?9n>dLSi z#B=r$Y6N!d*Vf|c;Y?5(#FInCFn10%DDy77SHE`A9{zz|Q!#-a@eKb#D!rwXv>)*b z+4@u~L#DBwil2Bmj*VAFiPM|0i%Lszv5nQO7$q)l$|hCx7vq|;6BR*eU)H0s4-4CM z8^?OmyX##X?P|2@z5!9NGC9GEG^!Z7#++*>-#fv{j zu?fGm(r=2QI;98ET-?%v75&!KQDY(}k+5dvgax9M%N_2{aa1)C`x|dza&>uQJS(Nn$Jy?5K>!$k+N9-Tb5Q4 z$g<=!2h?m)7@u$Gp=~rgF#?&xb+2I#xS3xu>qT{S{xfl^3mRHWgts_B%LyV826BP} zCkRC7&IvkB&=8?5C)6>_iv$8be?0=R5peeLz0P7@BEN2Gy6-P8v9Lk++cfdcAbSoM z=U_%WP#h6T!#$UFH*&hBS&yaD2^G^-KSkbCEqz4=FdtBD>avC@ePOvzo;TaCewmD!0XJWF` z-!OyRlzKnV{M1q$w6C>{r}pC%$-$PXSb8`38+ICRJey9tkKzU89V4s!JtFJMxqoM# z^$K%G#d76U=KoStzhwTv&U_<{T$|3kS7rVvh>d^H!^awkgC7`c7U9VuA;)QN7E&oV z9zXY>fsgs$;&LhOe%R87M$eU(tE<(APAiBl7Mi_bEbd{7_)Zv`{;+XCr#)&ZUk75J zt0v60Cu|QL{ZM`;yIBQH#%IGcD7@h#DY6$E1D8y$Uxn5qWvKyk6 z!6B^hQGj@G7u)*CJKpC8Zag@@S5LC0`YL|lBw1ne3810{-{7trt?5ZQF^{n`|1+39 ze-z~7|8LC6C8rz+W-)(;)m;%xjQA5XFE;s4*G31;B*`o9$9h0-tF47Og{ZSiS}^2}X)&<3NSm2XT zrzofDYU`po(lZU~{$zZ_9dsW&SX=Q>^B{j&Tb@!*?^U7tEAfm(bsXRON6)T5=_>Y{ z${IiI=)C}WDoRLS+WKszy51QMpC>DP;>8M|hBpaEKKQLu&caO{0=yvQ`?8eFNStzZ zA2Mkw;XF(KUD>*w{q)pZ^x4XuKJ6rK4`A)8x`^Wgn7Jxg+!(<=uWBQ@2C$n|0pk6J zOP{qBhizu7w*dEpAxuB_RkW>s47o~ble2zv` zEn;PFGEKR312;QE*xF~lLA$FonwyU`8s{e(jS+tb5Pku;0dQHBhJF7mI4>vDZiOV1 zU3n#c58ogg=K7&NXyiwRH%sY>`6_Sn#t%C7hoQggd5&jUXakMbutT@_C7_QoG(TgQ za}DC*jJ3#%p4>d)yWsqNcE+WM`@=Bs402kJ;ccSEYBpl$YB8f1&CeUvJqNDJkUDJZ zb7NitA~aLG*z>-!mrt9Hy}X%oOtWk!LCpK;ctkS;jWY)jjgwtP!_dmNs&SpGt5FRU z2*)XjXl@C8MdnL3wbxN2J?O~6gSOd6Xq?)wM&}JUZ0ZG*&3qS4qjS%wZ7E3_PR3g5 z@GA3*Aj5*s(N^YaAgh2_EmbhJ;A5IA!fY{D2!^@8Qam9$Y7h${&jiD~@j%k7))i!( zStf*KrCN_mQC8YIr&)69hh?N5_;M5f7nuqt`_l>*eAhEC5Sa|S%>N)&>76>Izt%CI zF`CaB>9tdP97}2N2q*?7LtJ}dYJJcW$hHSe7DkA5Ds$S4DwRH7LsSvmDhK1TI!{YS zAw<;@Rch~`Qt6Q%QR!V>WnRnnI+cvx<76F?8zMmho*i;Zot7F+`#L#}lu0uJwP|Nv z3vqLT3~unBqAOsF;Pg`X13#&5lG#ix;9Kd*-K*GopyRmzV9jXiCf+{O0K92NYS0kn z<{EoNDt#{Eqybm8@#f=P^$818O&YW&UE9f^UgqysE|EeoAITnq({;Q{O174(o6oyX z1+r1Tw`|Xa5SD#2@LPGDZF>&6gV`v87K|`h2P$t4vl- z4u?uL?>8bwlM?`CglslSr<|WCYRoe;G&yx!Uac^~WV3p$9*r9zhb&$n0wUQ1ywbvD#*V8LQ+c_fN0$H-mD*~RjTqleYmv}FKOXwxG_g;QTXzHO4MPl8AQW(D$ zheRm3k)^UA2*KhHo8>S;NcQ*>H@IQl+28G?XDFQm<>`WuD0bQ`ekv0Xe}zFxEd(MkC@S{nCDUoP*$3zhna~C@BhBQcEG8^cGL-t8U=mlq$yM^;bg(Dr(gB+ zM>tZLefI%%l2tdOtK7*|Xd*O{H|vErgeh{Ovk;bNIYebAhtUiiNPSj5H>?oA(HADQ z*WvM4ZRj&jIG&yEhFdh@l5J5K^#{NCv9gKkhOjMDY1nJO=L@UPx#ncjRDeei*cdMg zyFo%g;Ah^nYU6emZH#6gk$-j;0>$=Sq*1XoD*7MD!_-hO+VVXm&)FSjrVLA~$dxZ{7c)age5ASEb1#~WJHRp5Ok>hhYPUo>!eh0>~zzukss;bl5ozKAyp?Yanvz+8E zH1Y1-p7ukGT*B$?{>W*SZmo}%PR@51n)V59i%D!_C5V#{*IJ@D^D*KUbttv8%7GjX z0~2Vbv&%%ans3xb>Ts$Bw||G~YQt{x1CXhTICPWGmew`q(XBo=nz3tXf^?5cQf z*a}X88kVdUy4OG_L36PI!(O)9D-IouTMY9|2-D(8d+0bUJ(RH8D;lx2ft#av;24j& zL;=e_N`~Ttdt(X1Xg;V0M(JcnFbV>3DgShmh9bQ4?r=^{n6KHJJ7!*q7tN zKyz926neQm#b$yuETqsVzqwb-BRz%2E;T;S1ZCF=d4;FYPFJrUX}BPrwwc~c)v`Zf zKItfXcnRtCXE@SeU!+zU8e@iDe%njvCa&!uAMg@miTx7RHE9b>&OmLbSN)OWDCkNO53woHcU3x8Nxc^%1-TCco<=L^s);C8E*stlHM+ z24~o61eQPy*BJgKAap@CU0g7(m(TbJE%fPhjB33|`{PfpJISuTSh{BDY@wMOO)R+5~wa~ zmD_xao^B*nd)x^PIr~V0AaBhOz2!~~geKy{Hu75ygiP^%wp`Kxns-(g`3C3?>$CM5 zIonV0l^gj9KAyP>KDSmnaAY4ciNBM=H z&_ZmMAh+-r`iWsfu{)pB;1P!Go9n>)+&~@>Ah;!xO@!fI@ByC#Yz3x`R9s_QN>PlgE$QiRuNzbC zPRtxi?)l!o$kBm99fU*Jb0is>ymJ}O?f48Ncx1>b1!4Lz5N7737@Bl0ew2)D;5R(3 ze>o`Yb0Iqs8%=+vmoEhgJ+=LTgd2rPj;)jGXxi=DQAb{7gela~D3=(8zJ6{rIc$B_ zj518LdeUr)`2LZhzt_d5dO0Ro2+s2*+JGmZmE$ko0lN{vvyYMtS%-=6?o$vDIDt~# zM}$Q@!oG41e}E4xeZ6wEA>PtQlqrYt5?N)Em9mBs4I%13f2dSEp&vq-;0o-sCTS1# zfXYuk7c3YY?F0y?i}H2oC+KZyil?o9zuz;hd4+KSXg} z&kH)Jga8?9Zdg|i2^G4FYkJC)LWRscevoB?ZuW?=>t^g6u;f`SHKVjSx3<(#Y9E`Z zWR_IB8|Ev`Pe_HRoY*dr!^Ahh!K+f zypa$eE0Bl8zE#{AOsftRhKHxww0Yo1Ej_B8F!Ya@)WL`0H#l5~5w}d13&VxxVtTY( z8ZLMRJ7RyCQ@2Q{n1!uTa>Bazc(`Rr#YBY5X1`ZQei|-BXalO8Ygs zK_guM;u!9F;wI=%M8pR{BV2VHm1013QmJ%9&H%Kab4FR`Oh~;rtB!1IEciC)Y9zsT zD!h`bxOoX@LgpPoKG0Z*5B%t<6D;bACfK1>dxiC;X+ztB6tuMR)lAtvLhz0p3FEG? z+UvVs>YgDzM!EGN6g*vp!Tf}T$Uu7s6nx}sjkLaUeuUs}=>O@aCkatE3@!C(YXxxhwGPFH`n4$#F0J{vd zG6&&?Bo?J=uOk_}e8)QSlqkVpTlC0DUK}Mf%9H4Y2Jh4!9OIqZi=(_#vs5bWf^`Fd z!xLgMm6;?6sETEq_kh}?-Lag8NyVyH?4t6sKkr`k3mU6<0*HJUUmPox%r6YnTHx?h zkY+#E$Y&Z0-g0VF!O%JG5%2SHs4HD(q)O0oIll?n+aL**B+w3@GcskqpYlVfSd)AZID}<1>gLzOpU+|%}Z-B zHnli^7Vvb89{qm#!c|_@OlTKB^9q%EQW^QeRa4g46&b-p{X`2nDBwCDfE3ii6hvpa zDbJtD4$;CJqIZ>?6)jBmShVKlC_{pCO6W8BYP2v(+v$OmoZeiJv`>F`l2;J28OW{X z!uz4s@bq9=x9_sm;k$1-U+Vk7YCNU{E|T+Ou&O#YLUUia>m=`LDfHIP z0pc1fqtx>(XOQNF?GS?=pA;)Z)tiH5{gg6LQ!THLg{Es8EMJO+F7MD>4vrHd zT6i>vz%`drm(wnT?AdIkyEoq3I$BMRn8g{^lw|iq!Ay+lB(IJWLOX1q zO%=D5pm~%;H>%z_GX29g1GSSKpS++BgtOtr;}_LXVSnL+9k@_iJX?MdC-{lU(XwB> z;OBCAEAMEGiixdcQ@r3M_Vbea#S2ky{?M$t`k+QrgoBRdR1!GnLr`VuG;|o2z#{e5 zZH6)wEL63)mg0Z@lB7Vv74d4%axs5Y1GoxsA)c2Lu+I~9l^iYU`Q`+{F#i;G{dhu; zoH2?qPu8~*Cb?YAw|DR;nDmxb@R+Q~mrt~U_|k0oPAj2lw{CE!Tgwf56$6?|f>hAX z_V%=ukTh4ms;S?kI4%w(`0UXONLW)To~+Y6d0=b7KdaF^xO(^)!c!5NR{Q`7YU`V1 z3__f-qh6WFj;2+cKN*2}SEu?V6=(7`^4gw96ZVV}g?_1+kB=lsw)jVR^4ZoxfH*ly zzTa9fhQB~Z)pA%8`|^JB^6c87@P2(cE&=B1Kauj#1i`!S&Ue&iM^B@U5MwU&HeZb> zlcM{=-s~>m2j-}!XvfYeRk)>9JKSEDanoHsodDA~Gg5YKBQ)rE2VF;5&nYwLS{I#% zqMjyVZ|wm8Prnje=bU!~6{VK3*`>7+L5WO~N3;>r#6>IRuiFT%#dj9Um2HF+vFSp& zWn01IJ+7xJR)!MOLdDK0;VtBXwnDY|*>Ks?PB67(vrxWaZ>0xzqZ0V%gE6nk^L^O1 z?tSD@QwP4oIjanJmH%odwD4RDwNbH;C+>~=E70&;@?=wc!PD>ZBwiL(1bS$ks%y}A zrsnd*_CkPnQi&5Bef*FYgU5~6{j0|Ey7t(hT+5S7+Y3Iua}xO|%ut-~t8?m{A`q5l zO*xiouBtl?9|G)C#N~Wem$pl9l|a$aK9|15@fKoiR1sxSG_@&K(|4W-a?=jN^m;l@ z(FMLQ7j+Q)S}$#c>O%}Pdd(Pi#Ew>p+@N+#hEmduSS-H*cHqh*SIv@zj!?vJc97#b z3Z1mxH=X47Itm|X<8L_0PKiR-H!FXl)u&3b%zRK;Z=bsQ%zS{4k--iaxFeh*yPlMWV+yA9-K-er^$Pggn+j5VQZq9=9TbPsA(yMMyWsEofpPDu+z1u~kNLjN2;XILd96Nh*~L(449A^G?E8@yb?ziMsU4@*GJ7gF*1fru7@Nvq@hLZY4GiWdD5z`Bm=|9Wn6rqE|sVhzzdGlJa zrAHBQvAaJOf+|^7$q(0xKC-ck&`NA|Mb7FXw08byiYmlsw_W9ry9l8kXF(t#Oq88C zN8gmsbrDiM_94Qsi!Qy`Y#Qncaf;lut1!Sj6^}qD2f1cy;)dRk?wRiduSgrgo#WPMn&c zQU}#g|NM~z?y6E3)KIT;YA2OiT0=d?sezmt;`OM8{52;}Ruk*qwimbZNBKgk&{%)5 zg?)Nm08%KgOBbR77m=^R-s3&KMUSiJBSz}19&gJT-GpSrdtj7w5MPCXVHqF$w!FTZ z&^%+@O;^kpdcIAXbs&YJUZmRkw!z23aOn`=nUd4dHJqqkb*`I1$kq3_)#wHE_4w` z{vg*&6Gp^;kK+zvQT`Lz#?6o@rO3{rnaW}(QViHreP13arrCtt8oHWN|#od1^4FMo3H`qfCJ z$mc0G@wiWak>BqrM2O>b@~1t8Rsr>Ip-XTr#-@vap;_};&>Lt&MV=!+?TOWWT5~xj zL+}@G=F90Bf=?$mvPdl{j%ehy)m|UtaE816Q%pFxX@-qX2L7^8LC$3QuQZ@aY8SF} zlalqF{CS3u=;i|}6$;$GUibe-ew-n63hHwPSFf&44U}vjkWV+MxIgbtuWPUml@(9q zzL`Rdf2-e7LzMc+ke5uK70n6D-P2fu3yP~w%j+_QHro0(U3Xv06l5_lcNSd$#5ZG0 za@wJm-$GrJod**Pj6wE7<@tw=p#f234O`ycv7j?p5PfJm_Cv- zoKDni0k{8jm&f%Hf}79&S*;l{Q#JIE^N=`J^ZaVh@$3h$?x{Vf#Lpg`FuZNplB$Un`a3@T}Hi63zrsG6DDx1J6-7;&(Y5KPuZG;Xc{Qgo5g7*|&}u$uBR8N6X~nSvbKom&wlk;k-yKlT-R* ze7Kd#v-%62>zzExw@8(Natmi|!+5%3Y~zQ57`tDbB)eo~SO!)!IE(Q$D}IF_N&QmR zVcfN%;d|?f?Ej_^qCNZET{gWbgf_KYcEt#wJvRnWAsUIEDI5vr?MgwV;2NzeHp1oX zbE0>|7-gp;w+r|q7`SP+D3n)HL}G)K8*6Ox^A=u??&c&GlE@#^1LoD zf#Pj_3P75yGm@P3aI6AdBQ-UvvyFGyZrS)p{H2+t*jj+G!tD8$t?#79kml43bISK zV3gS)Ayk}Sy1RIgFjf#N^>XMCA*MmaDOY^krl(`77N1eU7n1GYXS;Apo-hOh`P+l? zo*{54UA)h^bP<0$AQul6!sN)IaMyg0Ei}^xBWm(cEDH%QqdIFR-Lq5Y@23o-wfpaK zf>G`?Ob8b*eIt(>CX{-r>SR2c3afS;EL&ykFLL5=A;@duzwpsm^I=E&`rmD;J)Q$i zk>43E^vpZ4j|Q%du2oSJoGe9f_7OT9c=@Hb0dW1k4FkRKR2nX)46pUkE=E!5)+PMl zp!OsIZ!;-(YSab0XEx1>^E@RnReKJH2}9uUc3YAG#g}GtNbPLROFrZP_jAA{_+LLV z|D0%uIBatfJ6jzNeN_6a4hTubCX}K*geqmDN~KkG;BG%=7;qdO@e}Y-mx7`DYT*OVxX8%V_!5X(~hMCIH>eAh%XDVo42B zknE1OhvX5XglXa%d*mNS2|?nLQ}REfga%@?m+U)QXyY;9ynRvWgD>yX_ek27$RiLT z8mi?rqlLC@dKGhnK_EX#BLOQk(q{o4OWAbZW8{)Cf}c;w zU(jTd%^ZWu;5^hsz`ReAAC3_M^6o$9k$v!@GJS(m)R|Aj6dZ4z1L0RC4_}%fbx>FF z(yEGKgW_z*$`t{aW$FTyb?`SxVM$pGje;OD*3t9rj~Y1Mi&i{1Co}K~R1?04S|UZ^ zRJ%%eTmGq$)>~db7VhXkm?PBWP_4K!b3i^lRu~@n_fFK?GF8U*XN~H+TYzx_{#xAB zdgU1Imwob^LglBBlA zuWD;-P^P?J(;9UJwKd9>e{i9LTIg5hkwzXc9$MzWDmj0=Fvahk5vm%FK>3U9cnt9M zBV^|Z@W(WDlOrbx4gH^B2_g;~l)tMn>#3L3v&CzB$4rS(2?&a4?v^Mcy(+ zXr-67(DX{LqKTEZL;hom5ZP(%p%-wXzE8ik|LhkP%y;3?(M`H#?*KBx@Gvw;qPy!= zu^0AW+-Q`de0lKOg75ebaUBC!)tvIDchS)G(9T_uB9T(esEtWhW0Da=cNvsnY77oW zPv-A)BqcPpu5ub*&Z*QXWh(`|&)Ex_#xQR&Qt#D3`$1Q%nk(OYTL|pts%Ca0t1f8? z&3Sw?2;YeZ^B7`&FOLf}RJ8~Y*%aSl!-2#M{8tWm?a1u}P{SiM%>C!)a_&2VOVf>; zohUz?m=K%iH_V+42}r<$bd^w(Gm7U_qF2jB?+89(qkQ@JJ3>NU6mnL2*SxT^G15Xw zMS^lMPauwsh~uxbxI|EYCzS!)@SNeoo_0h(`wIOqRz%R@L(?d`Io&Xq3Z^{rYSQr# zVviF=uXrU}UQ>7#k*_gD;67x z?k-^7_x(TL=kFtX@0~f*&YU@O=FFKh6h1`@_bIT=h1MM*R8oD48Sq>TwG%Oc6w?7Q z?H%aYYOp>;Dujnpcmpj3LLX4KbU(ANDFs)n$cTcS8OcihF;An90vp8uma>A966ee2 z@ouR~y`a6%K>!Gi#vDV$`u%qPW~$QG&8NhVZ%$Pj8xvQ-f=LenbUVPr{hs_{s=|GG zy+q^klz49epEW~iVf_7Da1^_TCk5N}>?OWqhO&|M-_8fmRMxV;w(#S=NIOFel)gu@}ZiR%*m zbBd`oGbZulbCvdd)EvdP$ zII)B!ql-d|_$I5ej+jJ$k$B6_D zvqt?H`6dr-U6ikVLx96bCk`ikLOARJ+1pM68~AjzFedRO=}MPs6E{%D^4mk<`%it@M;T`_K9wNX?8pXclAxgMRc}2r2UN7qm-|iWG=6pfh^)5EQ2vl} zXfuzuVIe(Z6JKRhnz$Cyd6eVX zF}%p8^zaB>N8}-|H|UaqmjAYv_szgMWX)Q>GDAsV=C%CS3=A~=THYuVhFaIw@Ijf- zgB0iT*E5xd?IOP*g7Lv`#f&8{19dsrz!8yUNx*meAGCu>kxTf2Ola@-pW1UfQyJh^ z^Cq^YD(!*_Y%4wape*$7;gS54Ea;Cz-s3gi1!p*y!$-cW^tLX|@qy)!%k@%B=bcBv z39H!r@A(IMW@)F`{>-70YQUDQFeGM?1k19e0a&wKL>wZV#{#l!ZLz6?ZLZ7E+w&u^CSv&)p8-qP66b`VyEfy!Sj7P zn4XK}im&G?J8j*6#{JsEK(E#crIUXzgbJ#6qBat5}?%tt|>g%$4H-2-O&S+*%jToj zU`^cbCZD?onvl11_>ncrRMzKP9=R4MJ-m?5S&LosEekncs|5Kk!d=X!eD@bn91fg8 z+?*mh#_?lop+U@A$UW9U7yQLJ-e#TBn;n0Lr>s*(v1#w{)9aMR9lnH8ABzS$-Lwm@ zu)^t&<6HgfO8NhsXtAO~{vT-8a=zG?a&8?EPjZ5@uOr@}zQr+IhyRqH`0MMTL0s~b zZ(py}4Ljesf=YkK27ttG+fSS%I?ycq`+`0jG-44oGOG~J)J#H8E#7H^(!O5fOsTL! zmv%l)6IQ%D$kIUN3pOY%LtbAEa*;|qG&}*q*VFo7K2uK6jNT4$D{46ESj!)y&(i;p zQ={rpANL>0HEkvd`WAWS93Ix8Y$hjfaN+=)zcehqmyo>>fuPp!i6b0STGr-O=q5nY z&UvnUJ%(5NcDzzhp7yjCJHJctv}EZwm(zDl*5(Iz@}P~_GOdFhCom|OSgS@paHA5| zx9O+P9Pl|%>cCX`pQpXbp~bH_?X^j=JA3b0R5NMGZU~M>1%fk>{RX3w$XTvpu@2}% zq^fR}O~|1-iaD_|C{GJ2q@V|Ysxs$fZPKO&I&=rgnKXSZ(V4b#0RA&bGSAor8oO_GrKzxv*rgCD;w`C&` zcvi`Qi{M4Fyeagq7V*v>C=Hn1jSu}m>F)D-I%o|%F=Gv1|A7+ctDp&GACdagFP-1{ zKnXQ{*vcg{ZIf@1nRa`8f!9S+WNIX78@`L}&aH4c^HJeY4~sW?fgV4v@7Ai;&MNfy zT^cqjcPso2MAUe@O2mRRUc5=EGgaMBJq-uChKw&L8YYPJ9rY~b6|;K7toE;Gwmme= zh@qp!_CeA_&8XA8)g0QJ2XPU3W}AS6g9kW0mqNqJJ}A7*&pAyxA5d42=@m=k4c%El zwKZlnr`(NqcW0rYe$J6t1{;@CV!M^bVkY%0ZHROQ;3YSH;;9lETI8%a0m6C$fEG2A zs3IPKL(Hl@&yDw3#zI$IyXgBu-8j|!fD~t_8q6YsXTD0Ky$mi}3x$uCl!gK&O+wPG zc#n%HTye4_aK)NSouW3tZH39On-pwv1cBwR&7hjC3nPIEte*yBrGgdu)yK<8*gC(Q zkN6Ob{rWtf{h{(=Sl4Bw{$EH-JablWFWWO;!@}udge3o-Q=Z|h>yGe)d#Y_#UT)Uz z*#SlOJy&$sRx7$-979aWRdl^RRCKMrRdjD{Rdj8!wpsp#qC2=#(QVzW=+u3D%?YJ( z^)aYdL8lmltDNcxxK>Jq>%n+a(I0e_9C$rvgoB2S`$?DoYN<($JLujtq_~c&D%$ zKX_W18o45Yy2(BZ+CiGAR}RG|PK1J7D|?I7;ZeXax@!U-aRxfNyi7j-jMB_!<|yLr zMdFQ7{EIV~v)o$nz_ZF&|D8jhIm+76@kM)WxN)$Ag^S#we92j*A$*K6{>5444fZUY zhn!Oeu+PJJ@;T*2pDQF~zt}>Tzat}~@?T!0r`$s^!h24l)FvK~PS1u86iB{fV!zy&umCj7!Z;|~hF()X? zOg!WVr4D9l<}nsx)s9`~iu#DRtG@wRjkzwn&a4wd`5( znT6lJ3d@z8Sl;{^xWD6l-uD{hmo@M6#n-U@Ulzl!T|Zh%wpo$FWL_ z!c8-f7a&p;z-IO${%&Y)kT3T_&t_p~pdj{Q8|v4B*c;EW3#1@p{*c)y&wg3i;6f_ag1>#{p-mwH$ z7CYO}pehnY188*|jf2>qdR!}sxdBHGj)bB~UAE8`O=`64hRiffmyqMKwZ|$vOnd!gQ~h;F ziRD$Ag84;Q`ht@|UqJu|@uMrNYqoQeflz+27;~O`{;agMmW$ywuoS5lp~}+ojC3Un z7Hg}6a7G8!=$ z4b|#vE|6fv1@dLZbT;eUFtaYDQ3Vd1rch0=a1;rXpE;r-P`=YximV_(*lkQq0-=#) zMe^vxgjn?t*!H{taKmogF=p7E5*DqFNzp_}0GZVDs7NN>#G6N?*zUBh%%m{0-D*!l zUBx?N(H@6?-L*uL#jX^&|1E`PXq$)xru0+D!_DEJx5l}!mF4*S*HqZH_N-dxr zcwbOQj73ez3_*lh)l6vALsFP};A>d09x!qCXkT-dgs|9mQ4S=9Sqy!(ce{tB4BORF z`7?t0+uflG&_|Z(x#6Y~)+??b2E2L%LWTp2ZaQn%2_dGvuq@QYM^N}(3U|XzguWd_ zAmTtOQ~=fyWGnT%o~Pbaf<0xeS8O8-{x(+UEtq!yaY!qPxVZN-hrx)ko|y|Q8jKj| ze)2vjOI8w`GDmApnQ2r?tdZdf;LuAL)AnM*$k?+L7@12LsVL)Vsib8I^olG-mXnP{ z&T?{j!mmmLEA<~TrU+zA28Kp)_YAtztm5<^S<%|&h0}o)yrG0-Gh~-p#8@CNC!-q4 zRE?jkNI<73u}bv#^NotZ>$14mu>j@`l2qGj%&-`gSOQ8ERu?H2Thv&yG{6nUloW}2 zM2eQ<;AjBMFE$dyTWm1KN8=<`32IA)Vzd#Zk^PCNMQnix55~a!DGgjLeChY$hl6KdpA=SMMpERY{+4&7`jr_YYk7Z@xl z_>Xgy27Wd<&uAA1mvkjHj6cv&bhIuv*30__@uGtWx{ z3nDF+=!xBN#FdMtsHiz>zm5<@N@I*fFFLt{@lkS`N0cgoV4h>;gxfN;w{kHXZ%z!v6FRGK-Rnmcmz4}r105>vKLL_{J?#*NS&dBr z4Fe?|pS@=6?bH!=l8F9J)8^L^DoGn6vD!Od)h+g_ZDyP>6K74qY65gp;Z0<$L z?-jVG=rQ>{mRSz6DZ1#4dxneyvWhOWbGaMoRS37v|Jp18;PqBOr#k1 zghE`kD;9&E@W*9Jm^G>nT86tTsee#U>h!d!G!C>rFBaRtl(JEJq{wx?m19Fs3p0wv zcq_y1ZO8sdgeqj8)N2?fi9?(9X2&T~JsXUTWQ!_$w)Cd-!U}e61@T<|166ZDpKyLi zhIJ4hG-@zkXne6Yz-Xw5n`n+_sFNcthwN8HB|p3=khbYxwf7%5g;Neio*F^g0XMV3a$ zS$1l{ziNMsNUN$a6^Rip?p74~FwNCxZBRKU#RsA|mu*}QC7?lK9WK5HHLFHCl>|2C z8v4}znP&_cyHU8Dv22gvm1w)GD*k2|eahCi86vA9y@e(q#3-(5#x73Qw3OsJ8IG+x zCzBe5H)o}+3t_@8TjyWRmE|?aazwo72FdM=LPeGsRwPuJO?xqNQMO&Sd0ZB85R~dw zk^3`j@w+&3bL5U(jHL5vN=8M_E~I{&1fe_I>cS!lvl|JE+bc5Kjf}La|IwoYi{I3t z9OaCy!IxwBVLyI|)`*v36OQ_nivVXM%AJjf6a{4E<7@&}j-UmUY1J|r?VL*^MK5Qe z<)Sm*oLK6MLP^c48Gzc8Az+CSeMr>OLUJgCOhQ*K)jP5Idx@+_q*(SMiq+_cpwP@* z8bEJTFv`c!0eQzCL{owCNLeX+Iq~!WsxR7-EWVg85uqjgK>Gl>ufm%P6*5Hud{Y7y zFKVcGMXN!%Fj7%fm{GAfaNpIR)+!w;^H>Q?pwMCwQh}hGelUIqa!xqcOeYNqWJSg_pMdp%3Z)%w;MH91~8^VZNO;1$wdgZl0{d zRRzcaq9Br{%j!r>JLp}QgxZgIOE7j-=)z_7cz*tpt<4$3+X zBP8`NS9%o|xLNWfvsoREt87KuoB&;Fk4Y7a5{vpXG#jXgJS`;V4SPm*Bi?X%U{*&N z%Y01-sC=;GGP4>;iBnFNRf|>sMmkg4ya1T_P4X#CSB6S&5;|*M= zMR*nak@o9oq6DnC6WaLbC`roqlz|Ku-4KRGj#&gx=7x-s*fz#oh9kQ-QtBImW3+U$ zkcruDgrA~*KCNRHY^6&8cxB30_kGARu0H@o^+G?(j2jjrgHpxzL{ zdK)K^y9_M{3)U~m_ ziPm>z4qy<(dNm5Dk1#97W{%EDPHT?KeNC`JoH;}@h{?PMY|80g6Fv$$6V*5~czd?S z97*3LrfDCjzmiIZylnr5HluV@-z}f+F zUQFfOs^Q=d43BJ+ddhYz2{J&8C7O7sM3HRNNkl^nQGy0K`JIO+t}EMIOyAh0yo6_*eFpBnN!?34Z9aJ_ z$l8@lbd;636%VcNWPshCfX)!xUI!`-U*D<${R|Fp(~jCjU@0n z07u8%NH5ZbVmoAXSj-z16*pp{BK91DfF}$y9-h$F$nSXKG{Gpkzui3$eA#_&ZIjAu zB{y1`bX|3}2lWjL6vX0YAU4VNV6-9QE(*n48$(7Z-k<|W0@@QQm&)AqP-$iTQrU}C zI!q7ku!D0X&R!c@owIUiXO>X9tj*mwwGqGK*%gTHo?}j~@=kYNqD|0h_?asW2uSJ<#ut-1=Ia}pp{dRgd&we-$S3TP* z(R$xdhMi*R0kH%?qAqwD9j!JJ=3-Q=p){m9Q_X@p1f6l;NIl{st7uVkk|cIzcLBRo z2)q73uMCJMkvI^Q0(xum+YgkE0kYj%h5(n%$21OmdEWCOv{^eVG513S=FVtLu|m7! zMA*b)jVkk9vt-#dT;*7wLl!u}{4E-${K_PM1F#%=9QMZ9goc_< zzLG=aDx;n_v=lWdy1K_bE6>-%+xs*RmBs+Ll-J%^Z% z#N$F9c=)p~^5lo!z#iD*XNs{6MTj4;R&Y{M zoGrh_^D`5Km8CcvV8}dwANCSt{57&MxV(!J>Qez#gd(Sh7!nY~=hx9X0Yf!8AVj8kJGUq*d5}Bo^cLYN{Y2V_Q*Vkysz#a6rl{ z{RM>KG{?{;h-mOj5MP4!7>)<^R_m@6^x^cj;oBUl$mI~1gE!NX|06#J>PQQpPuoP7NsTsezM|Qe_V(}a*nJm zZ4gIl8t!O?4;lvLZL+JkLjg$T|3IFz%<6uP<||EMi0=P?n8H+-&Hvw~FrNiWTNn?r zg(>FU+*!N2qk^9sC@&ypFAC?Me(V+!JV_e>L_Yz5t1?hVp-<#MiCj^7F*IOD!>Yr> zkntsT(ep#ZDu>9)Sx^zqF{|;>6^j(BIpPqclbVJFFUx5L!nSRmS*`&hY3Bq#@aQE^ z#zFGNY_A_ghmoM4s3gigFhu`1QBJ?%B+8MXCEUYOBzC~nt7dmOQtC{dws^a-0r0J{U=ZA z$r@UT4oVup(pPG%V;7++t58fiF<60O$UD5Y)Yyh$20bS}rE;q1xk!6OWF!Wi_?#j` z%xZj^^YF51uSt#@|G$r6qw`dZ+~_ph}iQl#V*XzBr7I zaEd+`smm6JCDDiXBrqziWL95LR!XYgT(FSR)4wuLvqOHMep3)8W}&5K71xO% z86nfFk%r7m^qqbr&jZhw4s-9Hl)&(WN6>EIrXQLYRFAF+&gN(4f=9>Wx(~9uydB&A zPj2vLP5nlGN^~8YX4X7i|L_fOU6a-4N#3kBUv`)I_i1BTaE{tjagn#igR@c1czbG_ zIQV}vyrbfajEroB26I#a{K4&`X5e2MR9MZ#@&JCyn>FS;k`;em&4&e9dn3!TO~e!0 z1yEC9gCHI6mH9f2ZPrr(nEZ0_z-|^vpD@Na5C3f1$@?GVo3y&QAzyn3Lx<7^Muuc{ zbFE2*0j)gTPFFu=U7?mrncvJm@L_EmUacpO-jo9|&iRE%BMJ1JCX)B?+deG9x?;QB znUTvt5`D1@%#&5hJc&n@W#9#TilY%=Dp{XVw*XDF<|~n}av4~TR|?XhJUr!z5&90n zHxiMF16F~bb;i?q6_Y)uI+ZCaH0NV(s?GwexwtN?^djZDClgm&(OOH1Q=g{bisSvq z@om^+&%?v^FvPGB9x%~y4x?e=YAPG6x3}6N8P(jdXZ;C0pgc=|oQ9W~)xbVOW&~Dv zt=vlGyn$qK}Cm@5(giGaDoXh_Gp0rHp;FM!9a%^DUbEo2~9%Df#ghK(qhI=ND}cYutIQ}0Ot^5 zB?cyMg=EAx`m$)&cq{+Wm-Xs&eG7uL#B}0?#4S;O8TuJF{nd(BkD$M$2u3}+1F(iY zIfOGlMh{F%OrvR#6Ac-iG3!avbBY+qi5C9aBT0KCYmYSTk&TDznyQ>=e8@_6K`Ca{ z%RGLN`@I+=uBOebhn$H{l4LvV1SvMP)a#l`b6Q#?qvjMEaVSR3!-`VNOH(kF8F_FG z7T9Gf#Nes*q|E};>gKsdWw15Qz9gJlV$YGJ`VIIvf}*t` zNvYzz3>vNlN&1_Jsbi;7R=2`1>d9AR%5qA)20gL#Pb0xT$JPPLl)1b$h9(7VJp77x z2nEEEJ{j{nHn+qjm@{7bHMa z#oJ(VH1B#56UW_Wm=>O!cds-Bm58tK%TLr~joF62yu2n0Y0yo5=4kJzRQ{7an>`H} z5(`%FmbC!+dPAO2i*;lR{rJLKtT(Hf$WPQ_t=vK%dGjZ=*gI_7Xr57@ zmoN5b+t@obc;`ASh)u4+ht*+W%oNDy)nRQ|@kai69rkjaC;F;~cGXifHwZm%T9>u7 zzI&)jt$xdmZyg1GC$xXmvCYq zfh}nVjzxp`^QZy9{42FI%o|A}O+QjhLuRaL^h;wQ?R?gVEO&(GNC-39zY4i!yBs?n z>v~nlEx9t}q1m=?5jqj-$+c7hP!uBWL6=fhim8J`)l!O?f;3`LA<@|4umt+(Ka7ZM zaad>iI4}(RRIp;C3@z%yG$IbiaSOa%s0&HPHaiL}p=bsX^0-D!4SrFTxxM+UL>UXDOApd2xT=LE6bcDxpP-|ikvewne9kmlc5a~8moTsu@D zHgAX3&U7>exTAot~c>0SxFqn0%QQ$##|KWw0y~N|y z+%FLTO$p#o0G}7kf&#RTGHD&vgkp-Z%ob7A`OaV#X6;TPB^Rp6DmjQ!RZvdHzuNdg zRC%LgA2)c|lUq#c4cpIdsXm5b$8b{rRy$9+o^w$&9;d|VF}R*`9sK$m{89yOr@^d$ zZ$IG;C%}#l^48HtS8eP}>iyj_nU31N*qC)3A^_4pqlEP`de%mW$$1IOGdG4Pc0agA85M&(41hwBoe zaUG{TJDb^_RJ0nRj&c5GV^(X@2?ATHfz{K%2JL}->WhN&WEKhDSiR46(}~r?+_e)m zhQ$prhlQ&K&TM7PWgVwjly=cHB%5Hn(yWIFLH6b^VDH?OZ?Z zW0lqa^F3KF&m;ogS%<5QSrhi{FluLOUecKP)`+YEJwb!EI-nR5E$Ya|HkA}b`}d}o zG5KhxlPeZ)O)y`JXxtenKJoNM1!15@gw+FQ!Z7oY>a+_?fKzezkN!Ai+GHR>>1$AR z0tR^NN>31(!^=!(kQ2Pr_>tK&UmVJ6T6;*Cvl<<(1{k!nhGA#qtcon!Q1qI3PYNdA z?>{_&JRg2RyMx@W525HeT6C4*01BQ^k;*>{sa#2dD9(&HQ7hOJXS~8#(_y7LNv)tC z{4=X}&4+%)<(;=RnqAl0lblR+?B)sF&xgU3hgq#d`aYOo>UTm)6+ZFa&U;ji1Vj`UvX&wwmCD3wVJ&pr!h zNq#FaXZ3x6g9C+S^@)#V5eT^wjV-KnC0YnqqF4ouDN#LsL@lyBajMW=9y32DhF7N} zBQZVPNn=q6%|;0+mtzZQpkb7)M}Nvumek+dU$>7YP;svdRef|=B*tggVUnI2XHx5u z!Co*Ns-s=h>C3*V91p3><*>0P5nPl87g0e;FODVi5GM!ez7vMJ_RYjq$YN{&#D_9Z zXTUzF4s>D^RRA;+jSop<(ZFvV%K1k>ZFEG?yyzSqdK`uW?OmWQ;d7d?8gA3wpYg@b z*krfnPrdoQW~@3HLCHpi{a6K|dy&O(OxK5-&+-l9r`LI;w%3JA@` zx^XQq1WyTc-f|;eao%zu6e0t0-claYIN>Gn+p{j!XAw2%?ftxVbJoS})MIa+fEV8t zkEsaYQ(PX%bDFcRZt;jZ)138pb3on+X~Dug7ySZeaCZUk-+~3Y)v5N3uZ?jF<%?Ue zp0x%&0tacC?u9(!!$~+u(DCanSPTCTYmgi;U;fU*?+LNI#xoui!OYf9V7{6Upb&D5 zgT0R7ShfR;*Tek4iFSbfbZCpKws3I@i~)zxkNz>70*VcCYDqEB)tq+yc7pyU9|M){ zo#={_>@NQIp50ycOpH{g#B^@;CqPqL(2dQb?&+<-7`BasDG_8>wT#Y!$OC1RMG@$@ z`-EG9tov`srUdEtTx~+BHm!favI3KgPW%$@UQrz{SslGUC2HBnyM9GPIh<~STX@9$ zjhIl}AHlEBV|9AiJzhg*p#Mu~G#YxF+V1|nB=6B^%>cw2GD5s*GK2ZQe-DCI^6WavwEK+&iB6%kn z)6APsy>xIcg9M!rp^a$$Ra|w^xz!6TP>*InhrZ=qJ#n(wTL@p&sv*Kb&Qgx}pfOru zf0Z1=Aa7sFd+9S`x|*2bMgh;L)zmwzvqYbz}pc7riFW1tU-3t5Jz6}w0l{Tr~ zWTzH`8i*JEkv-HLZHclXy^Bt7HA1By9VR7Jfr{0<{yGI5n+g+@!?wrO=PnnY&99ti z(@`hU4Q-$*9|R{6w`zG)mv}6^=cGr}d`?Bp+oI;OnzUW0S<$0uR{e6yXIF@uE>``A z(4fBzBBPPwzvwnb3S>Dk03@p3qe%o9iBF4HGdet&i+dRC{(fIb#+xS2^#XUG28!Po zyAiFD_qWmC5w(bV?^4g}yHG(-YSNX&hKws9ezO|XBm_+))osTb$Vhz&!YpC(2{dsE-bGu&u*0spcsYuGUv9W17JYI$7Hdh7j$T4#NU*%(%5 z=&UER2<(0N?f-5=zTE`Z&w=e&?dU|nid9o(kHt|sM^V-O+P1~jUoBsi^m(qg+#hPawK3@V-kKTY z?5+Oo(OXAvYrPcZ_fxT2TOsXk+_T3_0!mi^T5T^q9o(`;ywJGuxrw>W)<(cpC5n>f> z7Hb*nuG6HR9mm`-z*8(D?p-%sbZ2Qzo6=*4qIn!U_nnM&PRvcIsJ8ocIz&sCTf3f% z_N3^VP*DjxIA;4ZVHgZw!2(v?x>w1{cT&LEC!W;)jzj;_^Q?}niS=^|Ee#-Ng&vKm z5tzxkM|bZ2tiGQvH3Ip3MgV)eL6nb%uojcmY6752$6!<0sqJ&=!%2`00tjx@J%+?6 zrTel!$s+jAIQ2dzvLXc1MAq>WyqKdNOrK@8H>eRw4y{ewasK+O=zWYwy}-iR?D~A- z3#?JSG0qhJ-6@3|BoqtIXqW%PH@twgd(vWl;02bdKLlsg#9pwhe7%rIcVa#D^D2WH z7xKlOm{}iL8T5St|FIM6qrZ8*BH`Nwxch;HS3kFzhzmoVcj1#eqmWL$`NGbumwxac z;57F6u+a4Is>d&MW~LAi1hsdF*GGY;1f*2*ls~TlVOt+~@=jfVUqN3{b?BN?k6-E% zk?3#YVTn3qkd{bk-P7@@Gi1yIq1n18(?@Cwr1dmR8i$csR%c{qFtwW_QBwAFjF$dy z$vGcR)1+i{^%Mq=s$B$^gh6JpuM1m+7z`l(Ll@TCb1hY3erIm%%K8`wq*oq(MbED1 zli-A;>9ta@3+lo-|G5@P)7BzimwI#mDAuIG@_W8ek9(+Bv2(J>y;HCJ7^r4ZPpqyO z9~#A?!lD3??@kj-Y+B`ESCT5U!>(!K@@>8=icRY1zm+-BgPGa8iT+9Ufe}Dz7~lSX4|)2yzpw60kh_eF6A$CeGk^M z?({=IPt@TQ@3;tTT|IE5zJ^yltPY)?rG7_rjQ9E`R_egC;!Jc zL6Ht@Vd){qbB31=<(M^CXrXeNKt+i^R>*e~_@*F9OVr_G3rdTih& zJz3D;fy*#W${mzA`>;MJrpH-O%j%m9+zF>ebTBR|U5jx|8x!s{y^-NXzX!fZqbq`4Z8keYZ5Sk`FBK`3`A_(eO4J`Z0|57LB(H^%RUUcNV+2`s z!un+u@ZEp|_%{T80a^y|-U{$Om=47tEPTX?QVcCwf)t4N6ZBRM+QXFJw~tPA9p|Oh z>`RLCb=C}b>yT^!mGw3pH6>kmA5E!XQlFXK9IhSg<_t68}7=5C7{mNK%Ms^)XGJt@5o>Nbp0|Tp}Hu zWQcL4e0?w0q}C%n>QzOiJEM0>3FW<*Z)gZgBbhE2Q1W(d2zBf5ULhuI)brrpEGpu= zAFGH79;7)lz673Egdf?vv_G=pHw3S?@XX$SLZKCD!I1K)iz1cW6tqyM+ z!vgA);uX4T(kjPA zEqT9KSiE#FF&M0#a{LJ2&#^1vvY8fS!B_Z-Sk~0)I0P|-V zVI2AS3L=v$H7D#~rhC%j)D)*x^`f!}@=&Gdn5G+9J>w9j2t|EHO!_hHSg zBMHEMhX!kkXZ}KRMMR_ZRSKTe5z@j^=zA(#Ji^067Bs@+5WLAl4+tfItS>~li%3Is zC~{k+J`B>{J$j*nn)Z_wLQKK0@z){SdZ=U*)p#QDWaVi8NQ9D_hUiz(y6Qd zo~pH>rr2fe`Fb;}+o1ue9(!Zf2Gx{^D{#ew zx==sQBC+Lbx?e}~w8T8L*^O#;;RMHQ+Qs_n71{R2bkM;zhYoF8RJX4ys(K;@y5O%A z`0@E$vr)W}`l;|7>IIUBT@j`%l82C_DV=^9RcPHq*<-$G@Fbu!WD;XR>`FT0fdnY+UYQ%n0Wgax*U9a8K^(SMR{hFv%DyO~anVY>-Oqa{R=vh*1+)#;9Xfsbkie$1erj zx?^E4MMvmpHaI0VrDHpZYuibuM9wZ0_3w_XM_V@ElxZ{TMc`hgT$aVN@SZkY^d&Pz zvO_<*o86Y?p;qv31yfncGI7(j`0Hm(MmG6bPJC0_$f8ltAH=iSjYeHSf0OW-EQe4s z6xqL);8yPkxE&r7Tel0ieTB7g`=->F9~r=2sk;>B24)*3oe=o#B||Pc1zx`?j~U3u z8xyTn+tYU^-!l-p^w9JC@jw>HCYA7d39K*Me~yn!U@!P(o|DW!nhFN=bym zmXrTiJAk&HExhG=RR22cKOs>civ^3ulq&KkyMr?2&EC%sv|W^J_-$Hw{Q~X?J${jx zy$2&lJrdJ-0z7!+&kO>^tt$C4!vV)KK!53L)t3O0KT+=cQ zgKi=QGOm1gIPzobVcN45Q%QbmiF~XmmyfkNEPD-pn~d`DNeDfRvA%$AiPtO}g=fj@ zgtJ!E!+XB1Gkz7PU%3Js5u+@^M(t3{b@rmR_*dQ&*Ntm_K#RnJU3~Fi*3~-nw70IT z2byVLjJ8aTMZJHZ+dSYH;;#iZD{NYe$YWLIk-c{V}=G&_HI^6OJiW#pG8?x9xA+ZjE+nvt* zwP7r>(Sy&3(v2SV$m;a&EO*Jr<>tmS#0cd8-#?6v81^|nzRs1{!y4p)6+SXt_@q0u zLGMsigDv6gU>;_!?IN~F^8Ao28SAW%S+x1|reK>@%ser5y#{8%VlodobhJeTep~PL0rwy*A8;~;KC(Qt1Q(iTGas-R; zt3?HEfDHoi^v>eLm$}bK*0J#*q`w<$7>>OaxTX;&$4MREOP!H9c7&&h__z4Dk*p=V zag;9|$;@H@H1r@0V%r#(qI)zuN_`5EF%n^xux|M6KI$lcJdy?YuXjGBX$jk{eDoj1e%#mty9Q4P(f)%DQ&WxIZ({{P0UjCO z@t4Oib92JF6C=2d{V32URESY}~8efYq!tXcJ6 zAydkpJamYsk7XNuKAl8c6{p0JhP=f~pse#Bq2so%A?4C?sd?;0RCoh-oW^J*-^;Ma z{a%*sTh!w}$M%gT6=NGdLy5!FKM|>AHHi2lwx0&A(Q?M;X_{c6XFEAT+XLxMWP1e5 znqs#VRK&hpw{^Ox(+11&_Ia5wi5+;zu%~cRuPontSt`vg;@&ds!x(mBf{iuA-bCh2 zmUHhU);yp^BnVio4WUB+8?*O%i(^si6yOZ*fPUV0wmx5lxws8$b* znkbSf#TxZ?dq;HV*=FnoVV0GWi3*ELabY!~Gqr{cnN1;oSLfSaWV_UYS4Ec;Ni(xsL#hpo6pvqq;E5NW@C~co9Xg`N?wU@i9HH4_e|%M) zQt((!r&KPQ=v_LcK)g|hOux*pO<{FCip5qK3p|{{T8*4VSwZ#&rAQT(QPg=yW)2${ zQc!{b%BHYR&TkOz_tND#^A_{j+@fZ>p4=>)cb zjXTJvO@s|(_k(=dL>AgHX%C?tjv@7vSG3UPFgoZWFDS_OaQEY- z6ET|k0p1B7%2~_-EvqfNU0Ho9-=w8NFtnI-r5r2rrHf>7YlG`%7&^=Fsg?gU36^n= z{XBRw>&6c4=VK9iCsyhR;9H(h=o zGu8z2r$BX0=Tya=@32X1?}HOR~2jU=Xk+HzK=ZqwOAzC~+eF!)0YtW#f0}4PeZNC)Qv>I!Go3F)H zTkUb)Kv>106~q!X!vxGIM*9O~Z8Eez`8G?5rkV~1?omNllnqxCprJCfL0$di>kQul z8wF8{vRZ~V`q6-$feUi9!028yE(#H**;wS;MnPH4!gnu*Wq7eCGtokdk zFe1nk-}KVt&JL?Kn{^M+f{d+v=>_Od(+am|;3?gZ#~NNg0>yMJ$&0au5!7F@2AG*I zq15#Rh#B!BP27f2XYlwD`K(__`IrnNP|M*z<1Z(T0t|i=!l0EKetZmGRmQF-vM?+hix0SfiG%fo#qF+oABvTj7iM+y znK?ntSn%N#zF``B1FqJhK@r(hu0{i-4*syZht9=5h#N;!9F(C>NYlP{?K;h>0-vEk z;!2zQ!YrTE*=XA%VmW5CU_a%HfIFZ&eD0$565&Nc4sbXK-&TmL;ea?xL`br$nc_q6 zni6Ia^DbcC-RHPE0bPo?1OT3sQBrzHkf2oGn^5$Wxk=*o-a5!EMF)TJf*{y91 z;o~-fQJ}Gv*O#=@4aGciJ7$&DfeKXL55Z_(8r68;ghEH5b6B9+&XyX&(XYcZ2?9^q z`KSys!mlOlHIb(CfF9qLjTMZ!;$}p%s;)wS392iUA8Rn?2&9jTD5UrGe{f?{rM4B< zP+>!eY+yY0gG-}g4^gG=daP&T)O)6VB>$QAI~=oQ3z}TRB9WTX(F*`l!CiX>$f(7T zVs|y)Fzg4UKTh8biix<+;qx%PT&17W^g|;dhiDSd^=ag{4R;;lzC*tpNs)%pMR=FT zz(6yW;@T#|kUabq0{oDn%>$F6&yg6lB;#0Wf0G(h>}7jUJ*AQDfj%YH_Miq#f{-!h zC^$*M%U;JtU3uEWYN;N39V2U(N9_cXpoyXL9tRx`or7H6v?wnl^l059S2dFQ_^LNqsP#51R7K}=L>y(UTKP&kK#-F>i6TA$a#ceYC?G_uDQS`%&PbPb0DC+G+KVTIQ`yfJ~sEBzA?9u^OV6XsK8xl6e5Kg2Fqd=gG5ILG$gkoDrz9vhjVa^pH zh$lggFGF|%jhSSmpl-lOM|Lopri|dc5x>~N5Eq}wMydsCu?G$IVOh?iC>q$eGyNi~_uoa#EziIV}k?bgWI4sxItREZT}M=$z#Fma0*mQdOKoV)cT|xSOnWIyCWp+Du z=+|nnhp<^shS*MpWTh0kXU#1nMWa*ACCnqLE@!*iarGcBMn@;(LMn8|-Y6>F?!OEI zy;yhgsiX86rgB&FGH>HUHtPKaTBC@W+T>ki`)9Pf@>a>b39}h`&($Mc}VJ{-W^L z8-M-rHyD4T@E8630_D>%I3T5C>x)2whUQ;|B@-#C9v(lrv?iJ!`XT8!l8FyuEMi9U zKQW6?jm>nD#{jjpVY!?q4KR=&#}-_M}OruKxZO zl40`1uxPS%pFlZFhn)J81l1@{E|E2z%sC2q;~%U}pzPA;)7R-=U<@$&;3wPUzZNva z7l5`%IbznVxc34~)>6DP18Vv04E6Z7BJ3>+t29qJOnDAiKnfbn+LYT}zI#54@WGx4 z!ivPSrMzrDo8mtG;Zq0Co6iCVJC0|qcz%GH_C^x4-T(bmy{=5J-9e4d;EWn>=ORiiXtaG_&*f6Jmt9}zrm-g$Q!WKs#0VLF_#E*!hb1p zpq*DwN0Ev5{|`mlraxEYr}%UgSxlB$m912$$OhK`T4eNM9=HHS_PO_eC^F@(=Zaj9 zPgjwLuqv-oWPRXV=wZD6Us~B#kf=AA&I{_d~S8YkWw}$FZY= zg)$lD06Bnmqo+ip8=4X`0@-SKL#Z*7sdf6#2q0vxhCF`t9cIKj;+NBxwzcUUv8iZzT1lW>=IQ9v!Pw{N6f%VXa#cu#}o?jI^PXKqV8@a($@LZhw zcRc++!pq-bK{)q{iN)+zobsAQ-AHRFd6In*n;B69{rz>c%q$)!ZHKao%SWKS@zKou z*CIMjy~d-`a?U&>;h9eiQcsX|!sn1+sYg7e*Y!q+%@D7VvhlnR{RA!Qg^2Oc3m6^x@=B3r{5MQyFwF+JW48_AX&c26ai1=53 zYY~SP0*ixR2)qBzH~5XkEYg}uxh5eyDBE(yKx9dbE*fVU3>ihB05D=Q(#P?wY40gSmkPa&0pG!1NgTS)HKv#9U3EH5S0QyeCbbowv8+fzG3JxhQo9!tGHuSx1 zp(E{aZsnA`5heF~J~<_lFftE|3V*(^oHh4F9i(HTG>gm$+2SzY?f9s|nJ>UCSgIFP z2sm$2*1o^JL8R7b+M(Dt8!ABZbt~sOIWAIcWItDuni==e< zzz-kYowaQEX%)DIfP)iVc!~<6P;?f*y@WNg=8Esu$x-STlO@M=)v*eh;2f+>h!oFO z9j5nRlEXB5Du(GoG=;gFLog6X4nw`%gEF@1OOlyev_OM`cK%BK z&k7da#0$W5k3a|lgYK^+nGHf%j@(eQ>mQ++V$62lYb9%1XP+yUc5v+a3l!IAJDxG3Jj* zq{T|y<0}aYTh6||Ux!FGr{7GFtE3od$lyUaEV%Z#!;oxgL5uPj;O6vb9|2>Dbbnkl)XOhc@DlM(JyR(8V zs2oIFAh#V+8x-nFyN$-I{SztNl8r(%byGZ?kN;Qbl?46Lzo3Krqd$F&ZWaCc4ndXr z9gsUb8L3i=KPBRRD?}1AKoGD8}0)WbT$V`L(qaNb5FTtz!to|Rhe@0a) z-6CtRt(#g>{++Hl*G&!SYc>3=XIL?zyy}Z?sua;BO~=E=7jub$DC7N^(5CmTt#o76 zs({s^JepPkds_ozKw}j!UjlQ$qSuw%U=7So1A9f9jsY(o1b3+lTuTkk{rT)<%f74v z=AnUkJP&rC5b$mluAIJueI*KLxX+1OkjDnyoE*mhNfL2xo68XTI&l9dJhG^?y$-8 zUxmby^PjpdIsabD>@Mb>c>81)@Aj){UkLgiGO&pZSmA{qHS6$L@#YQIv4);M5cK?J z+_a9>x8A|Ic5uG#FWPB}I7L&$7fomlJqWIbAs|1S)9K|skdf`A> zFNSyHThOi|J18nV#`QsiF`@5zg(U7gXNk@d%7)Vxv};wAB#a+I*0g)HqBM4WI3APW zw{|yVDfc8L&XI>xUa7YR*xj2V(5g$D>z<@bt!0VIPkABEQAmI?DCJK}L_U1yI#Pm> zCa&NRX}vU*XySLj)=XDQ+c28An}h~r!B2Nq;w+1Oa~d_$+46Wp-<#$GlpO!8aOi1R z2q_=Y4#UhL_2E@Q`udif&R}#8Bi2&7jM78fA^q|FKia+nEUKgXd-u*FDByy+f}*f0 zDvAZgf+7k6vM4Ba>?B6i*bNvH%c6j=u4{?WF|j7r#2CBSqM!z`qKPdU6*VRovF446 z1^Iqw?xkpazyJSvzUT9Cxl_)ZIn&RaIddj^O4E1j@tGG88zbIQP5GXxJUJ8Ey?J>i zi>a`n1Ao*XPXR(Z@JNA|DM-9Y31bPShNi$A{hT=t5D;x4Rf|9IMNoUGEX1$m}oMAzXR^a$h3$T@6 zYf6(T9EbTa_OG&slFAWzd&h`0-XiY?U_FG=AGY6{EyP-o1b=|t@bq`NkSy8;(?trs z&kgk+38YibI|%zYWmD~4#(NAGxP}6kxk=_ex<3(LFH7XxAT()uM;}}dfQ+B`4!Vdj zpO6etmUL&_9tcBpW@vg?M<2P~;(x6Kn+ST)H_AvJMzw3T1``XNe87Z{eu^99oqli? z7;t?Q9r8@0l53>4WIvv_TB_M)AA~XJ8LAM%mWisC6Ke>y3dJK|p)K=iIe0xrA-$Ri z)osxjG?|F&Kyui0NxOnPDb#0##lj=b+TFidtYnNRx$Ta2fiulYvuvA;6{ssG%;bH9L7sPFc6|P8Hos^jx*a z+a-OZb}atUw~~v;r-Y_4(4boAQjUP7F6lXkFZdP~oW}y7pt)@polYhfnm?_GaXE^@ zJTP0fg~K*0lVrFy!^iLd0#o)mbg~5a_4Y8seAdtwbBavM<|heJA?bLle#wf6C;n7 zz@exHV(Vi-*tb+}?dj8!ysZQkqwZz_L2ZaT#=T|7Ku@bhJ!YZ%l z_UjS$%0s{(g?i>n*wLVG{re@dX4FTN0^E~;Ybn6cUG96i zHbG8Lq{TUT#$R~6ngS_|9ynOY7x*z>^CdCzkKp~C9Qk!Bl#m7g2Bb_u>Oe@>4i*$Z zxloKe8iT-M8&Hm5f&;;>1fHOP4=c&84iCC~ zMh=nGYoa+6UDcc`uH<}-Ilbt}(P5>Z-t+d%%~4yktKSxVS!3QHZxf7>B>R-U1R&7`ma1G(K!q)k-9 zrchX;fxI=s%p;VrcnW(lK-4|9Erpnm@E>MvV2>kMJfP}4oIv``R66e>jBm7DF0~$( zBtt(1O@D&fp`r;6_#{k}B~0F$UW#Tgf#`uI%GNr43%|5es#9kO!uAIvKQJH9WsciH zO1GqjM?jYW{N^rKfgC-J9&Juy)y1D zh9S@38GO|)$yjG8JY|`kYxPcM=2*(Cv0c^DJb1g^l9O-$SqgH!e*R!Wz7dvr~_*Hh6{B2Oiu?=J;ER#rskT)Y?~Plk3bCYvVKH%cKt zOh7hJMsk^s7jV?W-F~8u43`Q1_9lqAu45xErj}Zi_10-h>l^@>GI)~7Xem}IgEQhW zJ}MJfMI|RMRAtfu0?;H@mcM)eTVPJ=$}i8EP=Y~p)&7{ckh+laJ%t;MptD?8Rk8{V zM>dj@O)&v}TLKt7EnMl;;qvO#(m}5b>xTsSnF1;1S=k9ik~hAD88T~hTN2l8PUS2^ zY9-y>#oJ{_#v!jDc9-Y(qtj7U;X0o}e#l{};+Yf%L24_F=1?eICk5f8OC97}ria}> z0)^Q{iR=$3veBae3=U}h?RLH=117=#KI?+3Tr$6vfkh%R7apC=EA5464SBBp#r^k6 zKEoH0=ZC+DE02h=3Y7qhbKW*A0`Tkir2l~2)17}U3)mt8jv^p9z4cG{&{F3(U0Le< zP=C3Q|10$Vd=eY=ZOPnkpX6To*%=`Npji3qsv@ja3}{3#PEc4vRji9(gM9=qjFaI~ z>B093)J}rxuB0@tQ^HnKm=99QM{(DHC<&ZVM#*Z#DwNoP5@mYK-72!&MF|g&KufAJ z8p9qX!jYgP&_Obhj%fj3d2-bo17mINMQ~@degBh%8x39Vl|>(Qj`s+@Fe(tMsoz% z=F@1c-@bIBr|vRAm>GVPwMUG+VI7VdtizCja{xeUaFwvZQ> zg0vG&(=AwzD+389kcp)rZ3Kul35_qeUsvRd%zDIF?NWYp(O70FdL%v2UF<$ZK>94| zGz5Tvkw5as`z3?N^ZDiUtMh1CYkh^(s_o`C;>H7#r&F`TfJ{Lj<=T11v6+-FC zLZ7{PuRx?2F<-37F4=bf{6L8eXC+N`LzVX9>XY@JZ5c_x==`h8JMDRI}rI=is$idbBm+Z7@5X*t5$(29vFAh3de~hzU z+R^)*m5)0UpU4RWNkb^7oRJ)8(NS-hp2qwaT zUHs};!e{-Jo(ZlBstV05fb0>FiL%n^krBbqaHCDmpC^cIK*b9hiDf!H<1?g=vIwjt zI0=(SSh{~$K*r~kN6JmifXLZhcz%HgOK+My9g;2VDx$5VGHArPkMj{6?EXh@a52Qg zK`@98$DaYt<38chhj4828b_=U$wx0hAT-VgI3HC576ZQ#_!Il!h>5Bu%9duV!1*Dm zb0Z2*@RXyx$T|-~DStz=G^&sj)I;wqMXOlT+$(VDu+-9=1LjD@mQYi^=Sgb!IRK@3 z>iCgDTA)*r0;gZy!P51B+{Ayws#hu)XF~a?I#uq5KX)DtizID|1l9vBMe4?DawCB$ zbs|qgwAq0w4387JSwmbbO0Nv5rgq5?_kzYS4-H~riYpl}|Eax}_NFBvO5dezsM2?p zAwpVS2|kM2ku6eGTTS_x(j^vNpjsOE%iqw0k95MIFJO>!SQn&M-~m}uy`Y7l=x=?K zES59tmM{o`7z$~eiQkLA^@DSeGN>vN!V<{>1$scxDI7A(UG#iemejIQ=MO8P>3lMw z01CxOSd?%4kG#r+Flz>lJDS;i!mJxpD)9egNgW-R5&kfJEMHTBcQ_)|cT)ofpF^lC zLQ&5-CLFc6UU2Y$x=(_GMc^r5IJXV8)oN(H6h=>20;_BV93U!KRs;J_gskyUP)3V# zfg%{cHw6Chll;XI$wT`YHyo7$&4aP(K#-S-u6qKL8b(K^?4F7BiG4=v(+ndmvX@b0 zeWUP9nx8NMU=T!SD(XhNl{7|qU8gt21bVt0DB4{GB`u^KC7_?FpihuB&pj$tAHB6C zs=FHXjHpsGL<6f>bilH%1hk$C>QOF3nz|I)>;U>*31}gnKqlHUC-LsbBzN6x7%SD3vGPqejb@5* zD|I=;MfEmfyl9PcCCd}4_?*IB9Y7}NGDdkao+Xx}VO5*pFA}^cl3~9Ba86$I6Z+Kj zDGGr1c;_mjeX&dwfiNTrIzN#+XG?YJ&OBYN^dV;%2I*TxA9|WU$(G#g`%?L0Quz36 zsYbo}Zx?1Myh>r5;3AU#7{|ZQmg?8NeySYyHK@gRu>W*Q!G5|Ouy0M~`s2W!a_p_D zdJ34O$MgHg zCGR>b(A1^fwUV~p0iP1?qh=92 zh9{kr418@4Y?(iUWx>*X_Mu2`=X3dll21p<=fo@}A3Fu#*JM|)G#{tZd}bq@it_Qt zNg?V8=+${-UyC4)9u-18LP7ixb>@~zhY82`@ zKSQ+ne7xW%qP%ekf!m72OhG|i9_S`i*h5{!@xKw{$y=jw?_3hS9MN<_1OX&QmGiFV zAn30#q)G?oPz?N}!^+-w2o>@N91xSd(I|I5t`vK}8q(jWBypqh+yIfv$dy8s95Zq9 zOYEl2c_3wBPy{_Ai2I7Xf-UtR!oC_u5eoLZ>NL=FG@o=@syY_l|Ax;%`1T5ci(5(nABb(f~-#KhYOj}B}BM)cs zb7!y}@l-UH_W;y;`m5<4dd6hH&d@l9#1kQ}hL{;k-q( zwNi`K34dG6Lt;b1O=l!0`}Tyq>2yBnSE*(zE%H_~X;6wR`IT0|_Q`v&!KwkZN$-0o znf$Ym`6N_2o<>B_qC;uzAthUWuoQ9Ts}d@cUr7pL=l38Utsu5vL5PP<Aj{9HKICL1!gw8=hvDNuNBArw9ec{tU;9iG16 zXqDz}p}@46M=;Mn6Gad(%VY5blLDhDkN*zrv#H_o3x&kql=jEZ_~VO`o3vXAGzL)M zGzDR$Br}fgAnlC+mn#PGY!#|LL77US6q#^D7Zs|90@bn-K^YV%U3P>?tH#%TL3N-O z+^&qUN=mvGcYTrW9NvqeJrTCLbh;*F{JHYL0QA-+&{#5+ZMm0z%nL6`b(+wmF#-Cw z%0xCIQ<)~Wl!TOGLPniLM*5UFulR#p$;Tu5(|2bNYo?ez{%}=hj}%f9 z#gNaF8&9X%qn3H9JWvViyNu?Ksj>&wi1PEtUO8VeaM{N@fOd;xG|K$3SDv(0nLn1v zBNZ1VA6(*$m3zWTlp`7Dk6&w+n?J(PSHX(*@S*DZ*h)k}+X}W9=n>V?^ju#t-q*o= zl;08_RdUK}UX~hm3|v+soq(+8g?#_DgdMSq$(?%Hf-cb1!k70~z6*A#{%ds9lPjB_ zar0$dRGeE`F_>fPPiMZhYJ!N%ACk0ESqzpB!XCHH8EPrmV4SX`-Edp^c3+K~iHEmg z$D>Iw2`Z zf@Wl{d>f{ffKeYDaW}?ak38{(LR4AOuXO!(nb49wK z!hw`7cOR6uz?J{Rn_rb`4||MBzHA0hK1_OR>OwJMSjmuIj%k*N9*&TLn&jGtKB7zq zW;L$uP&K67bTIsYm=4T0YJ-dcpNJa7dLZ%u5y}$WVpr+J-S0pDCPrNjPnDpTwQ7bZ z5TX#{RZ7g={R*KgOF{%Oe8y?XUb|nRWiZilcyf7Ks8guyz|K-y4*vabS~SY?)S{G@ zk!pU;OKC|(ms2XHn;OU7qQzmKU?-ca)Lg9vYU;m54Tw>xDcVs=P2KlUqb|gF98t~j z48|li&Ju(uHB&%cMKHJ9)wt0m^og2Lsadj5shb$0#yY8d-O#$N)XnfRYSN$lyKdB_ zyQl=e?62nd3Ly$LJxi%^Q{!?=LdsL~YOg}gB@a;ZWMX-0!04#doY>AZ&qYtdP2pmF z>M_KqgW|?x!4NwS?O$Rh;^2p+YjhSOG1})7?)4DPU{tA8!8+1Z8Qq8Kd5GQUzUUzkB4!FmSABoGSJ3E3YuN4V!^h-F4O%RA zNA3NYEa4IpRf#6iT|w7dK?m3YcE!C_ECj=kGef2l^8B2-MBRsmCEV3OB7R?@w-=j}$B^n>*o$k|<#zM`(+ss*6^=x}0Q0Grboz)Ec~7+#ANW{?YWK$5lF|K4b!5H6~U zSe!qC8;to;-1~K@-!@9%zeb+c4Wjt;d}*}Qwi*8`U$RM?n(`_4q?1xu*Nn~ul2$7{ zHD!d~mmIZHLIm&iK-wvNI*Z#sl)POgoxwI2$B*Iu zS>lwlI9qC3P|5nM>`i{_IWqfTq>eCy8ptFEjloDKKQsyrE|Su2KJtc%0$MdOC8s&P z;qpVNjdY_cH$IZOOY^((iH~6X>hl=>?7%{$@((Ndc)fA5-j5g~Pd~oJ8iax$a z=w`YcI;{wHf5n*z`lD(gRxu)XJh{~7u3`vN?$-cltgxPeoHQ6_ScssvLHFm$C0-vh zB_A{5`AnKA-TU_AfBh|a)cbx$iNI@_Xon+FFfRA3)Uum|^K9rkxu4XYeox5IrgOw8%fJV!CZ7wYlFV`+8;*PZB81+iAUKjB7Vb8vcMax`D~ zAH3$f6UigRBYKr0trZBhslblT5KRJUINr0v19g_f$I-SK750(PkU~DewyPysu!t+3+99 zJ?2eSXq@h&)oCH6!xcG#s(66PfLnf7@U9+c81fj8d{7DSl&~FxBOY%In{3@Hh!?~A zU@-LREljI*YSXoY5^Fl$CM>x_NG|pp<|ujx8v>Tey+qc5 zngTCj>Kz%2x7%ooS-pD^p0XHAFDxW@$40h7PE%S&+WKluvtA0_>{>9+R%r6YD0%3B zTYWHtAynjrXzDRd4kN;O?o+8*vu3z^RU)x!6i$yU^}}1HC^~71`yN53u-DHv0Vvuw z-WbV!pGmdDKewlL($ATPYADxMxUZwO)n|C)OtjTL*LT_qTU-;GqOf2vUl^*b&Xas3 zJ9A=1JU(x-L>Csc`Il;WIxrNhqK2$SNR_*eKoMS8)|!QAO$W55i^*y?|Ek)Y7C5Lm zq3DnVXL^?kXjps9Mv>Nwa!!oWtUws;z#Bc6I#+cDP`S1(lzpQ97i}A59f7vRB~EKr zr0+3m+ZNqyx`yT2_64cBqiws|oa!l!E8pvZWd{$(!e*cGeXTpUTe;S46HEQ*e`?*6 z)FaDU_qWdc!$PT<`CIh&lGa_>nXUnkk3qvm`u>cDbd@#mqtbPh!mh|>k z2B|yF#VvT0&=T#3Vd|i?xApDzhEU_?J9h~3L)3b#$-WsLu1^vq!{ezN5cQ0u1 zuSRD`U9grK-9iXy^oF~awYNLk8>9{KLwmcBs)~i$)&YZ-tReR6t`6BXFEC`6Uw*4u z-Q_)z|G%1bYV`lTS=}T5Uz>GgFu(B<&FY8q#*$|B#ZzTy)`_Lf>ZqSR2=QpvI5aEt znaVXQETN!DF?^z9(5#OC+h+Z=liI8q*w(+>tO4blwR9{8yr)??QY+2sMhHc-29z~x z0Gbt~4T+&eW(zDkVv(s}wfi0}OBa|??e3_y@NeD9Mla^6zUb04v!Y8&yu)j$RaH+U zDL0k_=H)*lxVWXXVb($C%ikZ9YXBpRv7hiK^+7CAd9qdFF~ zI|{#vk+wu9EDM;!lLZ32bd-bj_V|$^FL z*1Rkai*(ZP`ER7IRoDOWRJy1mQIw5GtvpZcNR8~m4EeM9I<17SB3V(`!{Z zu!8`j{J`C9qh`wvU&a?{S+m9o<$xvt2qj;qlsrGTe93#?=lNRZIpkM_mXtgfZc*|K zyBs*<;ijU;D@C{Te5dGFI{oj8E&-P)`jSqiMUU;QOF5uT0798JDP^vEwtSiA-Q&9$Gxn;9P^HXhV*@;B<2V%b1Erv+dc0H6njQal z1r0l+7W8sZX+akRDQ)~QBxNN9`J~N%EiY-4m4LMc*!$YJ?jvxqB|!J^j*rO}wE8q< zU3&#Sc!ef}kF#S90;j-N(zcV~rnW^fKLRAIsEH==2*j2#WUs;&8?s=InAYyT9ZKnU z?jY!QFCqz(+7M6hA`c0QmdO#pd`JaW!~EI=3pq)LwxHHECVlwL_%O@34d|PjDpP>k zM`=2lh8#dr_%f^AR5&f+YrwxxhAZ9@zAig_15pp@)G}po*|jfE-R6@Db)7)7GRF3* zV{Az-Ybi$5^Y((;u@5O*mD+3mf?67^e(15-WruIWO-}t32oN%e|w9+(c*6e{w{v;bv?;t6hGw1+^SU4 zr#&QD4K(v`!EB$|MZ?cKF<(0vOSYfF-JDocpDWnDV*g)iEqkFn1;&=BrMAgVFoH?0 zbFws(k9A^orL#5pLMJwn)k-Ylo?mI}$3K?;P7vUI{Q&q_-i5a;g*aiNav1L-&xRo- z#l29j@E^Es(JrzxUPUC#elk;CkL4HBMOc*gMEN0{RIM=pSty@7!{1GW$vzIGq1pnfdEi;;f691Clq&Yua*8 z*kzU`Kju+-)=oO!jHl^YfMjdNv-B)l>e!6CxG*niWf$JUh1GKGG?$tz7dLmx( zPHNkfA9rDcq^nK1w=1jH;wQ-P^sWr{DGmu&H%BaW9%8AxBrj`6k0ttp`R@VY3Q8k) zdB~@_vbN4En^e^7)QZCGn92{jGIy5Vvf|?0)rPwAqhO^$P(8{m(wRqa>nQ&djpnqx z6LF{c*;Tlk3sWR8l|~|Fu*F}0P_q3G#2s7JW$$>4dRw*>VLl2ms^t=F~jlgk^rS4N_*v{>`ZbO@0!ikl%>!V5IURf0$)U z0KOQm;hm$p9}nN9(-<|v+yF-BUVX-#sRU&S-w!7#iNbjh&LqWo$U28aG?wrq);T1f zv4m$w*$(mVt1vI^e15VDYtV4%ATU(6J)00~vZWGDru`+R03&hb+CSP_*<_v1-Kw%i z=J)~B!B%A|zz+1m%FhO48p)XR818sWDiz#h>w;B1njRk1XdL6|fxr~Fa62utDw`tpYs~|yvHIE% z_|R%BPFuteS7Ywx2Uu|BOdplgx-Za7#r5mI@=TV9LNXfXQ-D2vj=X|ktOyB1NF`OC zL8eo|+XRpVC>ZnO#tV41Qy8A#B3wOOtadx#vP5{n*1WO}y&(5&E!gO`n*0|PXkJE@ z4K}cvyvahzp>n(h%Kg^)+dxUAZ)LvF!0P#n`toIDi4u)=TB#4;Iijv0*FxCY(yE~8 z!){j{Zgyie&500nkmYMV}->H!2;%O@-m8ktKfQh1gOIhuc zy(aM%Uuo^N9E8v6y5+9XEuSk3GPaL;GVu) z0d(*$M_D6WWV4VKy|)(Y=x6^*1L%FVSf{KO`4=^qhjDU!wT4zvv;3=u`tla;%*|Y> zw4(k0wXuihxu#$P^=q@pSGnvB z1Rr_gpL|?R)_if(LMQv9-l(=cTHfxF)WmEqS=ZALsuCPa$1-um2ZyDjQcc#CV)&c_;#Ph zm#wEyfvcj(5nOT!9*b2ZYC{4QQI=0!Ovgjr1tX5bkmRFAElF z&g0FSXlr(wO=ty!f^l?8-c%2kr<6&XD37x27AdS^W}`vY)nr}bE|8oDlE<_kXxXR~ zM~>VJ2#|^6#8<4 zBDGxC>XuSO^E7a46oj?Xcd&jML}gSl4hKeD8O=tz zU@8fCq&P7puJB$%)4{A`u<*BNmDb=W?`wl~Q(la}e1-?}YAmkhB<&MdGRnO+)?#+4 zFkf_pog~lqV2vy8rA?4+^SKKAg$MJO;_C8dwOALUxSI3tC(&SJKYn4-fdG5{Wi3`u z!V5F|YB9VJ-j6@3#kRGi(Hye3GgXhxF!34|@NVFCTV_T#*ugZJDSl`Ew;Wl{_ZJ1U{D5IJwGg!D1>v>ql|Vx~z`t zWV?#EypeeTRRZAFfib*W9TsK2I84AU$rHi0Bz)vW*x3<}YZQE_Z4HGDxkWT#*#iDs z*NF>I!tah0T&OLNfUYPWsL`K=3nWn}Ad@IE5Lgw2!n;BsaZnPj87YXA#_4!SUDmyN zZCq|tS=GNQ5UU!Ei>krIsn*CiRF_rKx@^OivXoD4TepZ`smFY!ir2WEHyG8SHF&T$ zYPLZQKGmD`md?BLGu|w!)|~_=4IXxH60#TSyg+N%p(E@)Cdwy*dF%SDku*Pn$JJ*& ztH0V+NWY)cexNi=64J=S z;4xuxqS*|?C)k6J_hEjunr+5N`)V*)Wnp5*))z^gYfxay;Eeq~teaMHd&BJ;vkp=U z%Ls4GhH1?)jA`0POw$9ubo}<=cN)Jd_~{TAg~Dhd78^3gIcb6w;#NJk}-Lg-(1^5+%!{U*$4-ixzJ zg6Ty>F(p?D+kXy!iVe5M3Nk6A*zkkm$q}B_@PH`fNRjl9HZIAT@PIr@jX5M+TtZjs zFaNIn8|BR#;)GrLV?VS_XC^SadEx4YD8+jX&6(C0sAFNDL7%c5n2GB$%702iPkg~B zf%}|XVYTRD^SnnPjXd=f%?k6pW5^RYkP^-FCYE3Rkvur^MKVmvv6Q;_WE8`koEGz; z@a06+%LIf8o~~9{kOc?a_-E|cYzu-BBtKk9*cK?Ogr}g#@bVD4>F%~PE6r1gM#t`p z(O|N!@Xnz^%sNK%|FEO{;5BW1lQm2&VmRz?ynwxHxngy?XQoeS?trSp6PgRCWs42H z#?Tz0Pt}8|#518=Au8Eg8W}x?=Qm@ur3MqZLvz;MtzR=SGl#>3mSOfYG?gvdUe5C8 z+i1Y;g14kW$r!RX?ay>W?AT)Bc%{ z_1n8TBo}HEJ42OZ6GDp(!BFuq`5rX|rQ<|cKj$*_SK9)@AF?-EspqHvpq}$uQ9b9% zg;2K5m$uvSz!t1VBhmL~9m%t&r~EV+Y)I>awDM}vEW(Wj_p88Xv|x?2PJCkvHmypW zGAQ&ZE;Jk2R=ZT-ty;3~W)W`1b4UwlX~sl>U1)JkKx*b^kOzsda%*ywWg|hEtd10j z6H;1fqb&7GsqdpuzvMrl-p^m5-t+?0Ytbh#VN#Q-IZ^||q=nX>c}PALxTin!_N9Bd zVF4Sb;-gO?lMVoa`HNgRtB)81JXqwOBWnx!IDgi{oPa5W7%{=G!j^G(N^xR?QfekC z)KnyD!dfcS48~2_d;=x33T&t;6OamCWr0$)S$Wj^hgYX=ltw|t!G76kM3kb@6^dZd z)!Xsftyo2~xFMa;7)2vst8z~|#HG|P?n;MLLu~@@PHn+QxOSycHlcF)yQ&2h ztm3w+r86*yZd3+Uc7K(i=mx8$bG6oLyn}T?5^5PS;@+uByMDv}u-vCLoA8k+LJ001>4GD(@|bB>79o{?tmZ^FvuY(B4nQF^2~}0}VU~$L z)&;c?R#3AvD9#6=3X?ut>N4W4Bfsp&{xz0xgvhl1^ zQSs6s)`C~+z?`H#5_j*w#@5!1si;Y3Fpo|9vm2n`)EKKqpe-g<#OaTrEpydZW7YJ>A*Tk3$(mb5ZL}lJ^8R8FefdR z@|8hstn`V7J9cC}q`DeDxFag?p_5X9mv)t_!1KHK`i{)M{<_7)`6mAqfN2QThiiLO zee(edj&&QtgIJ1q>fzS1+zrLoW)JA8QGK=QjI-`nOF5)XXGat!eBhT*4 z8dv*aD`l8U+XFM>J1xr0&@fo44vvmDO zo)yX(N`0R4dldfdOWq_5ne=?gXN0j@R0+$&*dX(z7gUe7II2PnjmyRG&N?;~H6Jo8 zWN65ckio--;)%XzM{v!$cGi5V7rS5RqYt|xB+@7aZkK4}EwgAOW{USUNdWG=QS|jo zScyoiJyBkPWpSZ=$r(*7pA&!YITyvja}1u-@(uc{WHU&~X6*a2iFhZQjT=NZ6HBvc zBeIz&aL#ou;upgq4UcWcpM|qjY0*?~mkd9Lns&&bqYKS27qJ?@nlLue8^4G6rQt{Z-|(ZYLzMORe#D)|V!j7+dZrPd)s=bp ze1U$V&j``Q7w5#2Mt0gP1jHwQR>7!GouW7$;2gt`b!B1NO1xq>*0J>|beAxFM*m9D zmf?9J$uEuiqN1d(i1x# z6vf;l#v?Lmnilzf1Xq0Ww7PH(P@FJWncSV6VeN)D(5Hn8P#>*6tsPt@TQ^A_Jw$15 zAHE`rdDeJ|7J$J-`vx6wa`gZn5O`dld`H87jbe56*QtSExI9P$+9%)PpGC7){_DVY z6!?Yg^;TN%fjDJ5D_^fctyka`vKQMy>XT74?9nHW)hOb5(U^2wKIe71GlTg6A_`W9 z>>Z=Pbs+EjkiA`0eDLPuMpSWW?;C?0@?lD^EF_=C8c^2}dFGE2accS*YMh-C*GI&4 zP;l3vxXMVF?@q+##~_kdj$wC-bUk|Jo5Hwe!p89pRN8UE;%fvSexCL;gok2G#9{ykjrs)%EZ?<-EYh`Dfw6 zL$yA3CxtV@sP}QsRYLttwjROJq*-x6{^6w~y*b+n=!K*j9K~_D|5m=S7i;ad?SX@) z<+XyUDvM4Q$Ii-wZt?&0LM;z`z+3fZ;kBv)NWbT3K}8jcMwY@*RQwNL(wljCj?&WP z)){|K3*}a^p-Vzv#gOSxm;cfmv-=n4`Rm@0v%PM@TlRr`tmfZ5r4Qzhes%cXKJ1g4 zlP)-DtdAiPam2$6ep#~4TU#&!)YMqT!}~Hzqh>hFwf2ug$&BKJHp&(eEa#)^Sg#bs zn5;d5X=4~H^IZPCFRDK-mpALjy85;v<2bm}XR<~X$_>er91&AUSmZ{{iNKPC1!wu% ze%RUUJj<{3W1hAA8`CZ}%6icIiYUlD?}hZmY+`xD4gFb~v_|GFVp%=oG}vA?S?qEC z<3JC6K}6^Ww~M0eE7vaKxB9d0lCugelfC}`3O)BVPl#nEDfl8k6wA2e7R&n&U=5_z zx!gQ}tuXY&saHtg4SjL|Ivh=KvGUBL+;1RjTIthi)RlAPjhTGpK-SIp@(3#QXg;0H zpjA!2ufV>}KoQUpstu6G{>^_G$eP&CK`OaoCbt^|(a@hycqbHFofJe}Ig9T8X1;IPmHpwlqmu~Ibl z`9|dyh0@EG#ugR(^F_Cut1-Dl3*LD!`#{RS!`BaHP5I;@Y=YG74!<*mt&`T@=9Zx> zPFnkb7Yv0wtMC?YGmHgw{tB{LlSMLFA!M<12J3U=Xo;`~z0hVCQWAee?-JsmckS!| z1~$?i>Ihxkp>$xk=o;TW3=3Iib^dS|v(@~nnu{j?8SMzIGZs)q#^JFUP(Q00UlPZ> zrO<4CAdWRQx`hhkvrfscDka!Mzrv_3sL(PKIweL*^rADj`+)V8zJMy&2duHV`WduB zAq40!g&qZqGJ6if@>6{=i5lAG;7XDv7)(SSo--iDECPWFSEBwf1OXb^LcoP^VNVM% z)V}CRx=$s9LjMU61efVFLR$h;E(W!qVIFLQyST)^5q_d(^SUOt6HwzW++Tm5eC|QO& zVDa!a<`?rDA2PQZ&jX1teQG?`(nwphQD})>lJop|<>4%%QcAWn$bfx-yL{Mi_G9hC zS)iao2}-*{7ed(u6rYlH*LmZQSS#0#Z-Z=f;S)Y$hJkzAlYE)ZcJTCP^hVkJTjD*> z;bEU}>g~Dm^A^+z5VOihNSLCJ%U{Bk{}Y-}fkIOGJfQNwN02B5I!%BJzwr^&6?Pov zP9s=nZEN0R1RH6d)2@7W$K^lQVB##v>>TCy4+I0yA3!!AH&inGOOAspxuYhrjUeR1 zhsDK~3YMW@jGZe(F~(%+?m+7HLog#0R4rExPb!yG!;q~eNP4?Q^49Szq{__F@MwFQ z&-Uc;^mrCtZP-Zg^B>pOXcRFkq@kwdtXTOC_BAGJw;1{2TY$&w^R$sHtm6lBwCLH<lLW zQ2g$11qD-3Ac9O*Xd+s3O;#72*f~HhA=jV7D~@8d8hi@#m+G*G@&so0EC*|q{8`^4 zRL~NKC1`kM-fa{!OOtQ#)1#Q5^msUbGYYG$*NqIX(d?d9TIq;8no3AHY8{l2a@0P9X?LVL3_R$gR5O1lAzKl$S_%0@30aNIxx8d) zX^B3Vh!VMjFxh_zpEi*#_spjCoyLL(jm~oC-USZw_qn{)B-T&r^*f(8iPiLN^SdJk zFct!*w$Z-F{eL0Bj(q;MBh8&qiMF*OmK6}$vJ=n!gw=9+bPaJfr;Z51&9p_gdC?^7 zEA!6s?vq)qsx9xl#%6A;2M#bw{_z!j>Qad9m5%LqMb3=Y`D(j-{pTRz3leOlIL13nWN!7F-yAfjH|Zc2wbdR`hHPoO zlol0btlZ-_uAc_EcR(xNY#OUyDeHw^V{tWELL7L{9{Q?$;xty7HG8G!v!*d);{%zh zDumd$1ctikQ=6miRf>b{Ewjs~m8GlW>8r+Tc{zNARVMiu71a)qm(41K#nUc&+Durm-Q>jnE;W?qfd% zN<#VqbjMt|0nFlqPqYeCaqzc+-~)WfT*mFriC|nO-ABs>j(% zsu;QBDQ>i|_R=p|e6WSNSG}SDSX6*G`SMAg1^~Y?S?{35Zb3Yn73Cc#caIlny-HJ! zgS9ma^Jr}BL|qrhd^7__MCpKfpSX`8l6Imo?PJ@jY{)a%h4qLM{~J&gw_*gJR5BN%Kbb6SG7QqY2kn zO_mo6CvRx=wx>mrQ2*aBKlnTk)LcjXk)@>OZSI4Zck z8x5Cw&3qjoF4%NpO|8bKTQLDI-_5sMS#2ISkBwk%yB!ukIPK2!=Ak!#v5QC9AcJ3j zn15x%#^>cu{)df?Z82}B19qm+Kyo2!;;|}283~dfnul;?je`YC68Z2vb?Ul06=8J{;&3&6tGT+WXz zV5w{^M9@(SSq*8yT|ROli$M_vjmn=Ws|jqds%`n)||o@=X2m$a(T zro(TDX!938DV@PjK753mzhLq1Z7r!Zq#DB^6 zE@caAesn@?18DU9_DtF7Po&A};5Pmt$1%ej3tz*TLF#maXK)r_p2^E^GpEX)ut=Zp zOkLP!Sp5ZdOW1w~D0|INJpDzJ-&ERgmhCm~&q0bypr&lE842!DK+*;_(Lh6TqI_&o zxj<|{cOjiA96POf-vPl=ATU9--p`6VugP~^go%6Fhn)rAhA+;voa7GydAN})=B5#J zeLYT$b-4rQN0zacK|VID1=XRBCzjwgWNgVuVyQI<#~v2Ao^2vr$b@7q0hsl?X;wxX z{`@;{@f8d3sCNS`uvVByAGpyXdjzkYjAPtBsC=lJoq8>%^C5-f8M~NS|+k1tNU&(gWytfTP8bm8|fPN1y z^Y?VI=H!2|oOf7-o;6}QAH50(WbIe6e*Ez&W^{hNwOk6may45aEq=rU*Ra}d>(1bX zO$ThXER3qx5=yn({}P|DhII(tKJRt0b>8fcK7sBdJ6U|IW#-Xs+M{|e%^-x(Z|MK{ z;}6$BM)%oCUjG}Y=6`*gfB6l>Pj0>VU*E7PE?(2f5=$aj2jVe%{?5mJ%YqCop#@#S zR&|6M6!mD$4}Z(*RGAko24>$Mm4O*7d+@)%g=}$Z4sWoQMO0}H)d%GTqt3I2TbI#BcjZU$rMCH_z{RRr>1)?tR|pUorIvlcZ|a;SonU$A%T z7;lb#v7R*w{U%M+aRLsc-mc>@2zmE69%29f@i*&n2pIGWud{&-km~--r*8nOH2ylz z+`#&{O94+UK5*lN^Zyde8*b2+i#$4NOzY=mP@FkeR13OqWok%U-=ztueIY>zGGpM zdo%9&J*1X*o04UZT=~0uyzlp{N&RW}ii^?hhnWIr98PEgt!NpKvn5tTU48{ftekmr z>^;8WdkEw{Zpu%8&w{G^QiM>#y`fKqwk0aw*{vz}+6;Y_b@_bYW-P2taUynPGiwv} zubsdTY++q0)>Hkxd8Hp&hf4i^LiV`)P-7wQxrn**Q9oiCUUrc${Si2> zALLm-LXXh>BCo!cg|S}fqC>W_TFf7g>08-M>DvSR^;U>EG#7ZYZTNOPz~kt<;#dB~ zHXH(`{lPD9W9=%}x=>6f6E0N!E*H4xb~Z>moPWL@ve*AChvnxC6(9)%NiA zJ6MWT`6kcY!G<$S<09T*Cu_}m!ZCCw28t&fi+18%zQzr{dnaqoavGuUkYgzvHFmKE zUgL>*MQC%@|hpYU^F4orb*R9y}B>#ywQfxk0_T>NkM*YA>!c+OL-}vX5%u8P# zmfEn_vu%RNN!|x`WH;9CKX&kscQYfa3k_Er0z6(fBsx=J&<9g4NVSo*(&%(~SG6L3 zYByS9{ciqZH}mvJ-A${!9PJC42kvx4vgg<auy&2Q*D52kJ+^!yv(6@=Zq=q)LhoRaaMx=X*B@lz+H~Ic zAhSs)xAH#@vVM&|{1F+GOdEA_M(zV&lr=9ZP)_It)=1n2_?0Tl`ZFK?6AO}@w(@U( zV#7R6LH#Sz_aD>wH$v!pfwZk-D4Q>S;I$61L9G6kVqSD#=gn6g0yFw_3*UE$9XIEe zm2wi?rKS8x^@vjTS3RPXUC9&jEZZT$6&>d}s)dvRWPdeSCxTxgIEMODEj3sY!9@tB z^DWs<4R+P)Q-%T#;cE!|;aTpIi4D+)KcMNWia81Q3#k|r*S+0Q7oIJnJmsv?QFm@E z*HQbO<(trZYot=(zv=Zn%kwfZFNAL7j#;d^_6!fqV)d)t-+;$8t;bAO+d0rlGt=j3 zJRys9k-pu-4`#9U)tB~zvD(Z;DDhXvBnU3m+RH)yfIA&wXS9r8J;Ij7wud>9g1)KG z^b6{v2!NutJS*SnPe)_<`=Rj@f~)+AO|bCgGA-WF#WA*&SUWuMcp?NocGIBbTToqq zRE)IFNiqQ&%mdgl4l~^8+PN9MkFjlb+RSe={8 za}V@EOEs;3W`WIWXrYAGd0e|RbWZ6;&t{jk`7Kcp9zL_%{&o;Io?@;oy7dNY27Og) z4lZ9|TPHSB)K}FVo?K}m$=(2f2TJEincL$u$+?0f|LGKK z-DqyF@(3-Tx)3tUr|xpk1?3U>&*UDbSxapv-u*Od?wmUVyJKQ4^&$riqO$N!`v zH=Mx|U15?~$P>n?%bVbhJVm*kZ1_}nv)noj>d1Q0)^kb#_%lVF6wnn!AgDSPu}epNK#&Y!xMgCb*om{CpON_VY(Ve2sq-?z2I5DuYKnL zuS3SXbsk@R9Y_2_H}kyfY_)X8%4gkRPo)N&PrV85ECx>--em3U&lEc1>h0!?H#ebg zZ|d?aed*T{Ux|&wQ zs`tdbe8vy{!`!t~GcNuEeIdzr9rt(!WwpLfdAn!m$A{J`{=9$qhG&q`^jj+?M``6h z85N&1t5(|fjR2_bP00#GaIx zAaOouvO49Ue?NJ^onK=_r%&f?UgH4&;r)zdufe}a!X%~B+B5v=|)Kz3ce>UX;UGDABO!(ta(6LY|_F}mzib- zerNHsTz&f|T~Yi#_zqRw)WSuc3XVk5z+pBH!Z7Z4q z4tkUFJWT?#;m0sf@us^yVjeImA@jT+V`Ph|z_V3`i=*z4RAtIMy=s_6=`5bVW#l>Q zMrx}U&HeY7+kTY~(d%|q+FbiJt|HIVwhHDRF1k97N$`hQ=gr!b&v=B3t_h2*{hCj4 z(Y2IfQZl~Bw}Lb(SyX8E=D#Wx8fiT#``&|uDZ*+9O#XLP3(jMh){Q(KE=0XngWG#x z4&?GsH(hz34bzNrPj5P7R*+9bItSooSW`~v}Ts#_dl0$ z*j-mqlBS!L0N=CxPEFlF$==L6dFX0M-<-)9;-PC&!Q;Tx^5hA771ky+u$=Z}tgE9N zqm@?v%w6m0JnBq5;i$1XSNW7iVznG-Em?Hc3-(wI8iYjI?0TNy(e-p8P8}O!E%nWV zOxC+E|GJ(oOM2p+F~nO}RonVPLixOuIe2OoW{!WL5Mwp$eou78qZ#Y#>*m>YuR7u1 zX}2OR&4ka#|2u9P#bGAA_MW%}Ss7+u-B&uvsWPwWr)w)ca?a@Or}LAfc3pUCOI_2N zv-hJRp^glZ>fuI?;9wK#`k%mxF=anL-BQeJ;UlXBA z_WTO02dql;!7{I(fYn`JbP-raUxcrz?G+C(>8eY+pYs7GT?1*{b3V(YtLisON#hOZ z33n*ZT5vtB9fH*nq}&53PxIo#^%IT}b$0Dv@na?(wyV$i8&OPOC zB6YQ;?N52_uDaTdzIaN>C+E4w>&H+b!n}>ZW;aa)zdRPNA9)_3^~XHT7~WNPNGmPB z#p^}sQl%CDhpz8{t0H$EXY)3@Z-K|7JwydTih>kD5<#)m{h-g41Vm=Bd&h*gC@z&c)ZBv$ibNDHw8d2<^sv=GaYtGD4r3$ZtU zPpg*VS@Wg0zL!L}FHXbvRBS8SL1-(nLEE~R_D#!ex4PM6~O$676t|PERWr)T=Mr=&cIK`u`Ca%?L=3yx}GWfu4(K*JF%_C zHmLUh&Pca2z`YZWbld~hyOU@ykkhpwxig~jh9I`4vzQ=|h9UF2;?TrQg>qfR5c0OB z8r?R94ely_6o_Lc^y)4)B!wBUwL6yEo&ndpi|OT7P2e0!-Fxvy$<|Vpdn1f~SAt=9 z53!?rVlbkJ>W8IvVWRV2vTtNiNn@jB5%T}f>F~Y>&KTR$(5g&qDs*8>dWr=?(5M^8 z4sb%|5R=Mu?3qFI~a=VAY9<2_TQe z&WnP#<3&4ia2T^4C3+DDbJu^*BNc`~>=^N|!*4GChD{jEJjNoHl7rP*%Vcq>;Ly7K zzjMV8U{Z=$l@NVdsF8-*-`YUWG(^EMHmopByeyEG-C=XO*fgby!@o;c?u~4`K5AEt z2H*bxU+jipcNMJr53s;Xiz@iF;op^C?uFndC`j>Rp(A0`MA0@S=RflO-V^ifzDInn;#ZN1V1!Q6+J(NKtBV_sg7V+Pf|uu_B88C0VNJLeT?Gw9dnR)4PtGjzom zEnPF-#o+VxYBjU}<1NkjM`Wtt;r{_H(-WRe5-awp{U0zb7Uj~6>wmy@=HQhYBQ6Z+b^+NANd_G2{$h$cw5s^0f<(mt)(Eq9TxKIyKeWr`@kN7auYjdYV$n z?)LC)nplNo7qd!PVk=thto-kBE=e$T)wchDHA#R?v&8^mDBPJXzO)^OjOw3j$qxza z)*NxFK<wf%gw)9@ngy`OCuVbiX%-U#Jx{ zsZS%U$wE!~_{H?L){WFwxET#czx;#1_{u)sgu zxMsaz0aG@Mok-_bri>?R&EF#KBhy}*qK`t@l`UdEAse2X5?pJ*-tFQd^1jFvKl&RR zutOY2NQbAUg!a`zvsVNfC zG4?AT;tf4`Z)p;%7!7Srxk#JppzIS9$ioMwxAYBU$@@@>g1a>SW}wRt)o?l|xR)h;MQcz#G*XM0f8n7+Vb#D4T(6jsuX=i;b_ zck0w06=j`s)vmCvtN+y%#e0l~nx<4D>!I>3F_;t`F?I9}D;Rl8bSE22pdj1w#yWg|^bx*d~cXp;?TcW}vha4#&qBgT>ov8WElMPlp@aJh>T zaGxD)?p-7(|IOP(vtIZcjlY@r<8l7GjXyi|KoO3=bo`;S4Kt4&Q1_m=kUXBrZru}` z33eWv&?SfID%_hJF<4}`2|^!;4Xu6pe#gZvw=4;0f2?T9Ry?#LE+$p8q3T0%BY89r zZa+kg%eFkwKN6eT-beq2>V9~sdFB0{Fz693tz74^rH{mE8o>>Go{28n2}5v&P}E@v zw0tJsC0R2eun2oOe>!w3LV<7XFvutpr;^5p!2Y@DYMDO)Z%4x|@$#t6Gi{2;KNo#{ zwTt*NBdci@a#PF*1O)1>oxkf3lsK~E0w7$q4Ls4j(YiwGR3lAbhzZRR3r17xeHGb-V49Izn zQta^MQ2ZK|I@_1Q)<48<#A!L$z7gk(J$C#onPctm1o>~oS@c*Iz8sc46wA%IUsZuM z*EA0G);u*g`(;|Q1H;H$kMhSqHzxv$mfigMkIjj&qLQCD(piT5&g}YI(N83!7Xtl+ zTr?#L3Ot)g|zX`#OP*kJxR zTXHeVh*)b_Js4(t(iWQ06)a$|Rtf=^O0<#Vg;+K3jY0fzp67jodG`&1@s(&Z(q|A{ zs6_i&SRxoTnouHsa06Z+l2+S*K8J9h_cW>l%T;5mE7QpW zF&_ZF-n5_7*8aTo=@P?|rdIqkR1cs~h}TjXqS`cD3TF$dpR(EQorMER;E` z(}84f7nWL`E)~eu>df^wdRZj48upLQR`0jyCSY9ypv8@O7JM*8@) z!OrM@O0_do-D$>TRZm5&rltnIJnyN9d(^z64DVZ8K|rir4myR=-Ndamvk#}$1#-M4 zYh0f$5v;FO$9lM#VC0Y}V{p9|>~jNJmT2zSd@Ura=)7kH_4(@O4Q~j?n$bs&(<}3_MU!E}+(;`#Lkx_?Kn%S3K^@_GbNZBwieQIh z={A9!st|$up0v56gPcETRnn|DJRK8CVrg_oOk-E>*3} zGP6J6QP0fmH~1G#r}llpXOvMVR)uQ4=yxLfL)G52D_QNwX7{FT1k%)(J?}$H1fd5! z??-DAyDH$`pL!G5m(Z*~J>=+Z!P{%7=FL$ByMlX{G#c!@!F>Q-LK3|=O1FhY7Lwv1 zg_oped#fGji2bRexNHtJ2I437s0^0}(%IxZ@u>h7BWVtSbL`Ye>L3{6 zoK!mL`_f$9YVCrbG~g_}8%1;62IWJd637@Kw@7EwZ_mO^2ZApJchcFRpnsL7}}ZCFULNNq0I#H&JiNU(G8@LBm6Or z=GfSM*Zs1at%=k>t_l(F9J9^Ls^xME26bLi z{(|FP5uUzFdzp(FkTAP^E3J2;$97DKF&a)fz>x8DGrnWDA!K&?AMm zBFP5WpF$gxzOR9%($zM0U;g^AFsyH!J>;a)URAChuh1h1Vl_rTd0ywna~6trqcxS z)f(zdq;cfTA0I=sq{DreaJQ$=^v!*LdnVu4_%tkI`~IO3NY4p#O6A$+XlO) z(@3W-+sw^Q;SwP=46(#Ibu+qwP&=dpeYX|tXW+n(q;O;geMK@v*gBI2kTF}}{!AL? zTyqQdo!3RY{t!1>PVv%dyfnXr@APJLD@t3pUZvqwoKc8pOvaQ+GT?jDVo{rgSqQ&1 zvGrzivt#_UQTv~?sUt?e9(qN*If9fCr=q&Q+0vrR{)XC!qzpZWWx2W#VKTWyn zWoD*L9L$gMX6bA%fNwT!O+K853EA|p=EHX#G+03UX{KOc`vSUDIeeCjKDr}kA#Ne9 zK}M{CnG0zZ^D3)V)bgvg3XU(NHywMgc_6-wym0;P2HS__UaMRQJK_($5U&%^6G5R7OK7$Zwr2Uo~>U_!v)ghJu6;8`w3{T zXAbeJ=wcG~mVH`9dkI#Br;tM9n&PR5EPC)1^jm`*CjAt^8d`zqt24HS9uUaUSCF`l zdMWukaY&4G)+<=Ej#eaN=0pBEnnn)HgC^^dJA1qY+YPjt{pO>b<2GXou;m$_LHIc{azVERa;e)Q^~)9r%H&D68npntre-#=dPEBt?7 zFn%-K-%QJqqdVcx&D7te9hNaR#^G^}=cVjV6?zYAI~J8mD?S6mR$9G$ z@l(v*ead=dPdI8RWl~d!8Tu~I((T*=J+{&qw~5%lMN`ng(b&*lpL5@Fcp3Ec6*46Z z3nbzf>ZWah%Ufw>F%&C;+)mUP%59^4#T`#D+V2Fd4hOc;2!~*dM$|kIg~P3%xD_!2 zOAhn~!**It`S_UAlI@L2JNkC!I@1J%qzM>2UJM z2tm7$QaVnBOS|ZPvhhAl+fAn!D&EJN3fP40l~DYel$*joZt^QTPQJ)N1cff#~zgA>c5c_zB|F-zjDuD=Gvy||V+_dE34OY3^|*odv4VUCtz zwa{Ntu?J@9%ag|Oq-W^B5zXVXbb~g+#l0v%1pW>b7g#B|n=niJLdskDfrs@=MIMeq zL@Lsl!i#zM^AgdlX!b0MYo(poDQ1b$nCl^jIAdw#m^f<}J#^u28g-9&^2zlScRIMA zVw!$eXLd5x2BkisG~<3##xwOWr%D^od6BE=BC<5Y0yTqyzW^(A=OgRz;4kP{Q}MYY zzJRv>>CLal?e139^hWgn!q1-q~`PRTZr9!37W zc@bUn8}RH9t}A9;XKN1g6^YMyxP1hda~9XYCzr1ED8CjPlFm=6bj8j)_q;t`ApXnz z2A}xW@T(k|96^^yD^>JfW{z7)n3GE-sz|~wP;%sQNf>gjhgYC=9<5FuFNdjl)Zh8f z<;X0Jc&_~!4s!+Mm6eyM3D|WHmcz9?l)DZshl)pOfb!_Fj!UwZ+0gDNZAvA`H({-J7cc1v%&5po#>jh2y-o0Z8{9IE?};y_j#_bLJA(O)fLPG zc9O=Bii?1r!tYcTK`=h8-Y&#aSJA8kKjOrB79djTCq>=zu< z;l46%0hL5fJe}A8cl);ugKd{+Ci(Ly)VfR;E0c$sqXHJyF|hp-4FLTW8f5b>55HWK zwjF(t9E&mP9_6uCS8!GCc{vx;yPx7WUg9F9_6bhrI6#|La=E~?z+ILLaFs51)tRzJ zW%>TfRlI_ChpNsn+&h9Yr&Jz>T|?n)&=JVLMi-LHhgpy7)JrIvI-TPt9;?mLO+tQE z6mUr$yIF_Wnj3VhKpq@`HaDp!$vFVyZqiVad;s>}q>b$Y52*JMXDmjs)tINRszawA z4!5u?-{wH%E!xa>MUL(trqU>4PIdMB77muf z)=$2TONHb<@ZdImOrSTMx2SNFp^fzJ~A25z zDGU#2>n9yG;c=hoJkc-|Vf(*e5|@PWzbcDXq01{Ie&bF^e?=>ootmk>cg{Ng zI2-;;;WvC89D79@5wa63U!$P>a0mFlM*i}0Ei`^j`&-Od%ky6-F^tcE+}G4z7zNi} z(>KHgG3gK5o9yic0dHs+IldZ(y`e8iMo;MUmUblGJ>k$>Os}yDO5W1vOghJsK8#K*h(jZp`f?wWeg)a8~^r4glHM2zLL8qIGN|u=+v! zk|zye^beX)zT0U2O}DTY`v4EUEmd|JqJh2oLE{9+QU2fXRLSXZycII9NE2gx&`f`L zu~&dMbSR;t%EfwHo4M!bJ+#bwU>k1Cv$&LgzaCn9E=l!<*Cn);E*s$y7P;Y}bC>k- z-V-e4pxsI+drPFFqIp^t%1kI`_~*fpapnfNEKBkAW)H#7Q1yK-xLp5p8eh{qM!(u~ z&o`pDE_$VTx8YMFUK+KvS%yDHc=@=9o(n29k}5FwIq3MwCS6SCL~t$uOwlCe9YDE0rYF$@dz-E_z9?1jj~pd@6hqV|wv0aMyltt%@|4l-UaXeWa<@`#0fjBsJGYbMna2DfNK*N-m_s7O3PaH6?j{Ajwzy zjb!$LExy>&H@%^mpVW+G_lBi@k|!CeKFd?Y?-sq`iJvsea3hLiKk5t&cYEnf`uyX) zV3@xYLNa^77Jq4gs}BNjn*>!3Wij(#*o{+NpBSU_kDe@~s#FE1v^vl;Kx#}T^?)4# zhy!SC^D#hLNfK(qfZFNW1v)* z;IZD|YEl;%?(^@Uj|?!mX~*AxPTo?$H$q?m&bq5>%q&XVhk5AdC}N(Yw8z zFX=R0A*ed`!lvr1e{~6^%_BiDBUn02ss=&x-=q;_T@5((8=_iXM@Xt6`Pt--ugiYzVv&}3nAyZ(gA9ONPS4( z4!kVhInV)Uh!j9d+MCknwTBfUI0S>*bGR49o(pf!K88rR8*(WDdWItPtVn=)p*UPE z64;Ya={kzZaqLhXX&SoW@P{V#BzJPM4I5HV>MM};t=a7`sS+VUEkV;jT1cP;ENdV& zC-dFmO#`VPxfRPgL`b~^{pHH4ywafniI1+R43{FMKEbPaBF2w>R`3~LSX}nKzLRrS zY3iXbrKzfx&;J&hInatf6gH@#ggYh`E5V6IQjSfX0K^=V-f0NVP-|mgW)!lNVW`Q* z0=hAtXbp`YBE>*Jv{Zxa@qoV3(n!)8HO(mHa_3VfO(buP7n0Zk=WGQ{sbCJt&5=ml zBf&0KI!)pu;P+VRv!-(c9h57QT;OvHsbQIvm%LThh9kxNnb0T<8%|diL+h4U>8zJ9 zsU?!UcYV;cl4@3%@j^jExzv3<6dc|}o78<;+($A?(((%8%0c&5(q2+N9Ll#wT7L2Y z`nE=nwjxYL8^~=f=?Gq`UC>$@Kr-!Foi@@MG|sFGkK0N^h?fntjguOXMRj0NoYaCu z)j`8ysWo|58zSQIxwtkgjF+C6_q11s$dLRPG83d$9sx)`5yte^h;K;wJFSrG-))8m zhW4g&yyf2|J>J_+!X50whv45HQ6WwTDea{)q|-x|-CoKS$ekL{t|L-rpZl=1qg0J} z+=t5@rMG10Z*ZcMG=a2v4AGqtXWbve*v`nk;U>Ad7xgo#SvhD0n4V zkdtb}%{|h%@D2YaBh9YPX=U~ojQvF~$XC*;!=5gP)q&N~*(f&n_aGMERk9?c=6%+y zyJU`goB=Sbhcu7u(1Oxas$#KIL@~x4Ij!qGR=20L2+`diZugQNnD3@)rv!&xhm*aL zViGBQ>Me~TCwHoshV=f@3S#XIE(4`V=s!SeU_aRlQJa>|TD)&{0RkKyfbkr$4EtdA>W!fC+}Le=0CyC{n=$ci25t3L}nR;L}iPPfVs8=hGQp z$oPwEpbF4@xH~FCLXm#?A)#H*RsSofex+SZ8M&;*os`j7Q(P6VCgF~{Va6l)JPi5k z-HI$>xKvpnyIo;IA`+DB3RRP&jkQ}F0F(IuVpPR~^Si2L+or3(vYnanDT?@9;>L;o}fy7$Kb%EG+MTEm4iOzkh_{k6IBdYsga9Cd`maX6)H&4b)=$o^V5 z!jo~*H8Q3Q988w}B*$;Fobl2`fh;`)VX0DD+2Qs&v*LJlixWTR=S{_gM-z|1tyC$L zxY$FPG-MF_irK?7{vyd10@4xVui8Mjbjh3ad;wYM(sFazMjfW$$~jPDqSW1{-+p8V zd~+xgxkdujKWCdJO1Q-{P!Fdk;RnsPV#_B>y#;4K9d=RXDtlB2Vo!0spnl>glzwm^ zY<1v~Asr&EEa6dxb=8Ew!6!2q9!%-NHDGkS_{WJ?e zUc|LKJgq1W%N5taeWY|-d>^)Z1g1_Z*=LP|f`Tuu_E9rV_gm=9ni(UGhegq=IIvN; zTPNwsLJL@&Db*qEE#P)0N|l#(f#*~lr@iKoI#o(1&kKMWC3nU0BHw$U)Eokh*pc}- z85pH5D86Xn;xs9qEG~p9StvqXmZ3+Mw9~$V{C_DZ{~lDCj(jiW1{*wGvJ=Qo$|lZ` zstHx5ibNDM z9)~)HdJ1eCRx+f-5RPzefr5F;lo%SQF$DZGJ1&a2VMd=4gS{2F&6a}6Asr;lmg+hr z>v-V~9$nOh>J*HX7#3K=mf2D)(d(dOwp7(oddxr0peLL(RVxm(UopH9py3>x@bLEK zlsS^4OK_oL7KHXHTdc6g^e?Vq`emnZ@t&BB+$T-YK|v+j1}x@E_71$o*TV!1)HC#0@QVmVJPPRTb0Q(Zaa<{yJ1Gi zJxN{M)NC|Rtya}##B`tV1?!D0-FApO4=&kKE&JPl;z>_qUWkz^Pm}GiqM^AkFk2d6 z-(H2B4l!>31&PjuSJ^ma#&2WN0?Cg!3E%iv|Eiw5;`mkllsss@NU9}n`ik8&xDzhh zS1yuLiS1YLSd5eJ=mU_n7_lJZ3v691jU~r&z-I}@FMoy}OQfazRseA+%A~_S!SSWI z%sI0UJeDB=6@G+H%P>CbBOG3al-Bt?d|!sL&G~gOYdLbLF(2TM6;c&=x?J)g-xye~ zkSdUB>%eyfPSiKvL+2GJGWBAxd8H+u$(yCNB)$lK-z>E!-=9I~7HJ9@_6&}1kw#mcLI=FuMzIUNxELKSY(){F z^;3AbRhmXlK7k?Iu)8`;hmG5$>EzGHP;0xi(7Napj+d%6L0w01%g69|I|?$z)1bi) z$uGF}LA+o}@4bopqvz9;Uyvzbmse>*a5YoH0mssWIzzKy%?{}axwQ_a?Zg*`8R6tk z?BYf_An%gKkhA+)`Yv4j2?WmWmg-eoyN^qkHf=WJq=qI535M`YHGw+^+uK)Ag^9hG z2f?{~Dv>gw_8w^+`W1P+2bT@y?t#-@X$DD~0$cV? zAn6d6epw#oA3~IIz5!(qOKr%AZ7}4p)RGLl&W<0JE(m1hRhXNL1aWaQIOO4o4NHdA zc}NIP#^P>`G@m42hW$rT4VHHacV484b{1p!hv(@b5B2@H2dx`n0L$Z&(WZ#@I0Tb!NW01RgAiJX%xU**=v9c)z=(s8TPU3*dk;Xy zO{p?zgDQcWQhCzn0K0Hg!ri2wUD=o0lBYm!bYU)crI`Ymv=?^#j_8ot2?pLn{yAz7 zI`xodT8$Wu63*y+ZcBbkp|0shWYnVEVLXA5AREPWY#WtP$D_lj^2gGjsLNZ z@4E}mKafH~{4qVsnC6Jeb?!3{@7TIus+Eb#)Y%~LFC7ivkF@5#Km$Bc-WWAM#sbmvF_H=0!2%yk76SRQ4eCCTPHC!cvxK2tq_XNV zNuxEzDnjg2$&Osw3O%19#{AdNSdlW!8bqYspi|M?&K4Vl*^;E%}lI zYhmnbDavi=T1&J-n~7RUROi{GuE)S%-N*HrE!M)5*SIvRxE2h5NOj#F;MFl{s?}O5 z@*mu65^%2}H40~3EQV;Aw+52_!2Gk;z?wg#edNY!===tkC(Z*Q?~OE+d>g>3zm=K` zL>T~+-XUg~4Pe*bNm-~iSq?ovAoi7C&dPt3m_WKMg{z;ik18z%>(9~}@02At?&$~e z@x3N9iM4nZr)cPDM5gouT%&7B-PaX<|BPr=VF`2mBH7~FWHI=D#cA@wP!{u53YW+_ z+!!rE!LQ9c6Qb3b_dkfH^P4wMkynt}aq~9Io@7znyeqP&!|FJ6^!O7RcPKOu4>Qal@)5P6tejZn^Ve39i?>q0TyOFt-A z-#!<)`$*NCr*dt$N93X8cqp{g$ldsSx>qANAwjd4MwH8mHp_;TPKFWu-f?Gb7W3E2 z8H9|V%J!Mdt%%OM72fv6Mei(~e=FvwlO-bfgNt5vC+{Y)2)%q0FS4BoE;e#ivey@4 zZRA2?nGRKKWv?<1C!nLJjJarn!O;MB>5;??=O?hfw(?zpT&TjL>}9<`?xsM3LH2Ro zp2A%xUP4>#Bs3VBS-Q3+`ncQJyx?Z>u-YJxC$=fz;UG`599J0`m#S=;jGo>dL9U=|3R4Sj4})eE4s3Aq3h;-E>_R>{Giz6w z3OW|UIq^~M6<~lHxK+eKoI0Fst|)I3h+kt!aF-j9?4hvKU9P3~Kujt6W8zOdsxa7d zoeMm3N0e$A4FMi<1j!u&BRu2~(zF)r@Q`ac=0%}8Idj);Bn5mN#0SoAIy@7h@s#_K zQ-j%HPx-w-E)QfqD$9EXQf>e^d1F)d*h33%xlNTb4X`QU`gq*kPcXdV5q*3TP>v8<6FtpoxlquA4v-QN%&~EEgC)Phuo+6O?-QYttxiP6*1;T>lHe^{>fFL=5 z4D1T0gXBnZG6bxv%c;uhF32pbQy=T$^;W4I+f`jgKSIwtv8KPt#|W{k2DTw`G`SQA z9Yf^mWK$r_36TRyMj)Kz@os_eX9zN>BML05CD$Y!+riCR@=eu=}FN~ zT!9rwaFB$cuu_m%^c2&76)5-50_PEc)eCs%P?o_JA^e^D&?P<8L0)#tk3FsA1FgZ%@ro@N}Gf!==Xf&L+QrQWJdVIqq-PXt)*) zLz`f)ug7D8YOil-B6n7NO~Bx2u!+HHPyThXCJay3{Ic1xtIVex)5#h+l9#$( zsUCOK{y+Kqzp0JGSfEt@$me+jAH{+nUI$9 z7_y)~>}e@47i8A9l{}JIj4aZcyjdJBVufww3p%g8ieh%a%#0wz>iiB(r=Fix*{-#7 zFkW1Q01*M!bf&^CbeB5|<~Itl0?w4RP@^YK3R?>yzNhS2!DlSzwh74GIvCvl3iEip zp?@JP>M0NLnulwuDC0YHDb79N1?aur@tUsOKvVFl7e>_6b943tT3LpmUh)=m4@~Fq za}vDhCBGuh*WqSwd8{t#HoEY?t*Uc3Tw`7P$Ud4fVM$2y#$#&YfXk*PdWI6Vs=wS$ zAo3+B86a07tA>NmK)Ew%X$I2<%08rH2<#syH+1l;Ch9DKdR1 z6pWSe&lq_hx!V;o$6|*)He(yd%6NceTo?E@PImEogwr!`_t@@yRy`ZO?_o{Tyw?sB zP?(8ajc<#b$h%^DE;LNWhTJ&|!;RCA|B)F|TTc0M28WOdiZJmgd1DXDe-JdKIfsA+pkEh7< z$k;tFHbV|0A$!=N3>mF)8u93 z_yL%jg-?s7;4@vWOjd4#*3(gH2;at*OqX$2Wq&N(oFRLVXLq4whTMXnxpB*x@_zDl zGw5c?-lXkLR&$ozUL;>{uzB-jJbJ$AKG&Cw9J-M$>ghWHCuj3oL0lp1t_y# zS_Q!iW+U7`!>mLSjp4`IYkIoRs-Do#JvO}O&H&xh^bDR;-sxJ*`Ix4cOtp_ACzeXt?k#kHGh-_@1Yi3IZ=^tj@Ya}yv4JfxF_U&O#q_3FyeSrLinTPwuEeT2 zV@$C&QEIFqkDa0o@WKCKg_hAOppKf&@EWgPiekeL$hC#W6vIWMGV!Q&ov(!!W+nPb zA>0jNTy9XV-iFS=Bz$C>9xF_bji$#geBehOi1Q9xbm%LxSfue5yHXpx_sE8N^cXh(gpTr*RIPi1&g4br75*~vU7#9CDBdmjtuV; zuZn){#-7|lfsw3XFzc@DR-vrG8D9erT-jNj{ZaCKE_QJG7cr>`P6|C4T)K;F&P;%x zcjb!2z@XyqNKc}`8viaA2;7%s`TO!@Qr-+!-IwQ+bihOFxcn$HjkSM($W9V=!rg~B zfzJJ|W#1nnbqmee&qwk>Em`>i4!%U;@a%iAdnG?5K|9&^S8^O74_8C$H`uMouh^_N zas>^Uv;ua#m&=l=FW9;FC_a({Pr&XI@~l-)S?DMEJ0%ywq2`~+L#Bm8zdz+uWKK8) z{g5vceK^QJ<*6hnjLrFpV@U4Qfm(ugEYa5iCTJfL_c^eLXv>kxa~LDqPJ&Pd97OFk za{e}ZC2ETVAr7ufT36vW_F2+4({RI!M&?>yk`~00%(YR3+`9}%EVaK8`3iit)V3!3 z1E8r+yMWx90!2El6WKR~NmknO8v8iB9IaO`G=rI_qA>0SH!6T&8*NQRj}VMn6~G7^ zZ8PFH5l-4@XOoHPtevfPE}p0C4sYzWewChiajfce59h~YMJtVzlV-53H)4rbzTWF3 zg7S)rCqn~+cDmu1n%4&12H~J5AS_IF{?+8&NMl}*@zrW0yFwWFw0+Yh=qXnn}o z%4~*%c00i(T3A`_0ZJZJU_UBoLy&zmg_^F~1hQx>%yHGalM!QKpR2Z&Q;0J<+rvrP z+K_@FZYVL>jen?haMc)AxuSNKV0YD(CnVt9+=;$vj5pPE9}Q>Su&u|+L3wxWG4iu4 z+;`V{S-&i+HA_45278Ft_qr@NdT8sC-&|O{ht^#&A8oDHW5CgRh(XVMHT4Vzb(uUEm#g=>hOxrp`jLF;u8%W}R;zhvs>XB9 zU)4Crs@1%}+Wiev5>8l>iLA9KjzR^*h zIj|0d2WT6TEGx(i(AFm*I(9xldy+4w@qUGkzb4_l;BJ`bgf#!I-CrUDr zT$w>ivMJHcT?f7cwW3043 zeTVCu>J4rpJPy%@kSS}KOD!$Vn1zH53f1P~F&K#j)X~}y&6N_FMby(i){r~jph^R6 zI9c$G4Q!w_*O0WzFuI}koi6i}jNN(+$HsFyx&my3d3-*@0W=TS3mk<0h+Pp_r}`(b zjndX3cUz%2uMH*IPi%UW_6Yijeb1UV*50xp8YA;*t8FNdvzcsooHmsZ?+0^R#*J&ErKHnpENM6y)S_chP$Z2d!qf+5=8^Br+qe zkgYAFi&?`>B03@C$Sd+LfkoO6g!nCEJCTzK9O)4is;h`e!>#${;+fR>4|uRv>mX80gNmyy4Sa{~`D=cJfa~i| zVaRwUN|PTQnm+hjN{?`z>PU}kGHS}Jm^&@>=!~Au~ zVFO;ng>~8{IlDv zn=TNP-T6gNbQ;2pZ%WhNyQyiZn3mbd(UgdH?-t!Qr4LcloqnZ%DLQ6K@50j~qcAo7a7$d-itk!6SS5>C#cR1d#Wj`)tkFjvYUo^xFJXsp4t#G^Jb4!%*;W4 zX`NZp?^=I!x78cgJkSmy>*hn5huR;u>l=UOYBJ|kEXx&ueY!xUN7%&eCs?mX+MQNp zeG@46PWwX$2FLf>_>@2QXwAmqor3(?V6WC}ApXpl*6bNR)AyTT$M6Ee>PNI@Tkyy8 zhMq7zdH7e^Em)raEU{c0{PFq%a0pzE2S$i~ zS{zE>*iC+&@9&wRpy_Enc7Z5pt9q>VogcHeR*D3VKihL;vG%-=&tIYq zo+pUupX(H3Y~BaS-yxm3+A7Joo16yA?3Bu6P#WahDI>{#Zx(K^{3eh?DKOfgL=o_U zV+Q3CN%dm$9h4kOoK8SXC#8#ZwH8=;&a<+^%<)yat zrbLQldMvDuP}*>Jh9wb7UvjQF^ovxINz>-=JW{Dol;+^qPzfOynz23&6$hcw{Ld06 z?$sX4v0W-D_xPlyZ2l#-So^)pR>^(0M`~%F;8;_haVB@Cbv!?znXNJ+aQF<#thi#d z{z!y>d@sB=6HRxrf;;g<%P1qu#x9G}yh)^~c;z;3tOTD~1OuX!CL}oq_D3nT$)d&V zbCiNRtwR>E3XK)CyZRo>f|@AbP)id9RhwdOc|U=^O_gor&s%WE@n3>);uTVq0GzQA1UF@%3lmh*~a z(6>{v$-u|3p`8*+(4gsQJLN2~8_#yNSDK*V-GliZm8GQZeYU)#GE>mBwvt&;X9fL8 z47G#}U6dV$TS0sd-D<+ES1NAJNQ1#$u}zslu%)ZwN*djTg04zrnT1K%8!l1UMdp8X zkzrC2_;gc-kOkFXNjK#;(zO~~>xQFfUJZP^Bb9DXg@)a6^eQF7)b2_p_n*VD5+8ns ztbhKfD0EH{gY{|Sd*O{RYMizAU4UvQdlk z2CF_)sVR78qjQn{{y4HlzhUp-{u6WKqCjqxah9n;msRt*5XCL;a{t`MAr@o*RRF-bw?MBNJTWrX5R(grZ+kxD%c3Frfz z#waU;w|2l*RN_sDHlmBMBdxIo>EEyccqnK#hndG1&%|hEaJ#wxACLk3~k} zUzTadDYpgZ7G?Oi-ikC{!In9uBPElHdS;lcJS8NdJ^aW(YN_-PYGx`%vZ5WF z$W&VL{fM$tmFlEMJ7_*t2_v)}%$kaQayB)KX~=N+SrywXWH1Nfph1?>nk2>HO{9tw=^Y0wOK~mNCJv`l+*=s9;|K0Gl_XX` zjU3ug8k)wz+bqS6gv5biy5d5-;^4RGim$zSY5s@XF+Um&;-xBmVZ?N0qDfK#J(Y|*rypvD-CJT zoHd!FERZ#^-xPSZP-#ZoS3!+M%5a-zmsOsD_D`IJ=nA4y+(i7_)||s9-msU_sPqEJuwRHTG!KM7`Lt zAlQ44#vUxOca8i1&0R41zTfwMKAz{WGiT1soI7)7=1e%Q7RCrb`W#a0q9S(sP+1S;rPFQ1+}qY4Z!V%~ux63;MB7vNeahKPwcHvB=_6EaLD;7IV*|!<}IJ+OLgl{oGB^q{}4s0{*m+O3t?x!2yA1*Co2}$=!r-Q>J!30HoG=7Za=xK;yMT$1JSSY47u8SEY=zgL zIwKJRi##<-3aa6?1izL}GH&Wb=AP2M8)Jq8eWEqEB8{XxLp=N@0%LlBQC#?FJX-;Y(}w7;4bG?S`4`*KEaahvAZz)w)b}yTR{+%&+*}yYVx>nygZOGkyM>-yXjIAAT!hcaQVi zbt84$1AZ$^q`Wp10#2_eA3aexwqrXZY)Nba1~R&6EQ&9x~K1BIoaPt_#$j zKAPeWpt(AE(Vzop8ArTn+5tmTx5M~c?7ybFVjjI8HPC5aj4`-mxNHp8&vT`x2Mk5b zZIrV8prJfteNWKwLl`g@4yS2F&`-8krL9HKFD~PfRWVwh-AZav4CNb^@s-)=pLo5Gb9Eg2WtHn6Eh(#Veb8XK49c+S71i41E6DB`lgjt%&UzPW68%7noj=}O(MfXBEcH2jL;nf5Ma{b6vTtgFEJEv9)_ z4fomc0WkN8Y@|i>+aHE!Y;AuYu@V(rLu!u}(wS?9KXtzwZD_4d@S)4s4G!9_^!U1A z0n_)S+&>N8>`4#W_@`kKJK0&Od&AI*F+DbJZb3|+cB5Z!q0c(nL1}OsJx{sgogqt* zP(A}XjXPR*4I|m!_Da)xJXURMT2O*mH#*Rs5{#igcc2d?hIZ`tBx-Zt5Y4PR(ER(T z0AD>R_fg(Wtd#i=4E|as>gd2jLr3;qd-8Z>@MB5sso5hanJrpV{v)J3ryU7@L)-XG zi%ZZLjBja_kAEAMXmvHs*0lHuhN``7=+7t6^E2C!`%}Xk_Ber@o`Hqa4vL#!_9 z9}qq>9M=u~XiWp38(v5&n&C@=9}cy}Rbj$)D=(Vy!r)Z#bxUgv-jf(q9Bb@&m@jJK z?A@7`wCjbTCR@^yp1v>)WBx61>dEkcg~L4ZD}y6jA4mOO8D=mkj^4jA#Inwb6#3dv zfrTYfyVr(Lrc31UD%0B6_{J#-Wc>#D&xWq~&=!ZW^!7~%D`qQMhge$w)(|WG!a4KX zkBnzEqkrC_e)>0~D(?(g?0!70d}p}jpnnM_jU8@c#(U#oWuzgGiKZXl8z!?`QRMvr zDpl$W>hl33YWX;t_5oe;>!!5kgCWA#g~-hyN2d$9F>itb~wL&C26iJt~LM$Il-I-89>)0;>iK4&3@+o*PR(W@eji7j)P@VO9 zNTYN@5Zm*B*64(hY}W(wvJxVsY7fe?SyPV&SqWoU-hFy#B@D8;isQ`*dC$n+OQ^xp z!{`USFrC#4BTs9gzVUQjy(fHKsp)m;N*g9xR{^!Emw@9rO{Z z<0T@Yy3*AE7TDsNG)ojN*&Lnn1!Fx!Xt@N&{6i>27Q&5tYJ9=is2ZHH?(B6i-b3O% zeN&4PjNr+q3(YkO-c@zM7M|LwJhkLJJ*^G_YhRF8_#)0&4eP&p<+_C}Q?LTIRxma> zfb+4JQY#2vZ2fqeT0!`Y75h_WB_WVK_NM_3LLK8&|1bE6^{34aLJB+Lr${DYBwn)! zqDd8nIQF0&ovJ8!yA}Id_((wgb$R|U))*W<{UQ=T1K8k8_Kql(+rCPuqwp(Z&Aq9b zr*MeYx(GNVJ(`ZV2*0z*UY6`Pc+rMRLS18=*B9CAym!H2DB$r*8?YLx}abCQRJn^qQX;(4(Q1rDvM2nEvkl%+rxd+>U4QD#>b<}zmG z#@YIl1q>t6OQ^#RRHA4vVGbK#i7tBy4UA5ezToJr3$K_))V+#Og|%`~CRGt&JAY+m zdgqPW85u`WK7zM*J6K)f64OSlokY$?G*EmS4Rvz}tVo9~tn_nMMMi-z^DBJ866_SJEbXg?T76btxm!)ZR$m=Q z>Jun5W7d(hB~Yl!ZrRfxfkG`IXP;U-@(O!$2}12$v9~ag6eK_w?NW|2kfub`5OiAh ztOv!0;5(1?pnf4jTb9v-_Js%w*>;IK*A%jtuSkE^6kJ#(i9Xa6TC#NlC4>sQSYUTT zPIK6BL0MW$fQk1@o2hagp#l5FM(J2bc&s(-gyIKPGk>Gz^b3cYC{v|}5CsAWT;p4IwfL+R?pvW7^03c>2fc4gteH3Gihuk;ANx>KL@3aly&)3Sw0v?xM|VM$5Ktq8$Rt9x&H zO|K#aU)|e}dUB5v#)`2Yu)~Fc(Wli1S`{UXXOriUf3)BxML_|Z5}SC7v2#H2PhHqGs}cL#C!en+hLaBhZLlv{pvHB4c~K_eZ@lrm0X~$5uB}zHcTR z#fLnjP6-0B$T)hHAhcpnnkr2bg;`o{ExO!7SjMJ4rm-y{V!p9tY$bTJeT$Xatw7KE zMA3v?56e6MEjaggt(kq@Bj}fb4 zBo>r#aNsaJnE4(WPcM53i`mcBX?ChGx5AAJyx6+nUeNyGxGR9ic_veX-l({+3v{A4 z5`A)keESHVZ2fs^)<^h;ZJ9_*`e2wmb%jp!5w@{S0W_(vu!>zeOV#_K&CWVU6Z;80 zS-?45+ZAdu$7Uzp5h_|uyHLL=6~Un%J?q-h=2pW->&$Ie8qu~Wc9_~R@ZFc8gq z&?#lgKmkWCHlI`e9wZ#VR^ti!EloIAdErQF%?>+^*OB>ruQA3Ly+6`&mu|Xg(nwk{ zL`Y;mjieVtgw>8-)}>86)`QRDa})DXD-+Sd4@LWH?4`UJ%6rm9hpAt>aLQv+f3=(P z`K?&58LBt>eS~35zkec)!CXhEJ?*g4Awv+fE}IaH!t}%vlX1swm_6lN%_vrPJXgwV14MmNm&4`t`_BljM8IoUT9q7jg=cse`+ z6+C4KRU9eQ!ChlpYB^F!sW1(?zF_?ZICE#JE z!DJjQ)MGh=so7{WjY@dueYD{0=7bp$-+u5Yseb9B`Sk(Y40|l-^W{Bx!ytM#8nr!o z5ao;!>ax~@X!jVQgWbe|SPE!W;iEb9451j%OuR(L-Tesz&(WbEw_OO9;eXMYS*$z>*jpJ2n)1NA3BH(5}iq8~w;8U!! zgito|E!E3{RMqZFeX|5tw$XtmXQA6T-j6n9LFhO3qm%r1RzG@{CDf?Wqo1{A-vh_2 zTiTMR>u?YJsByqjx;g=ilW2w~y0WWyi))%o;t>h~-{Us6&D zFOjIe84qavc#QW!yXf+G!Bu#&iwmZm+nb$a9xqH~Rr*ri1R<4O?L*VDG4hMq5bMlT zYMhNqb4lgM@px^eTn@Ah8+!`Qfsz%so%ZBF82#-Od7`jV>-vqN*W_K#zRhwwug7G* z{ICiWuVxszY;{xU#3W%6v%W_ICJXgkT5i+xJ=F_XtWP9Aik)XQf)x-pLq? zs-%+R6v3_Tv}9{dQS2RF?mT=Vyb#B>H+UZg`vcsQSi=83<>;3W>vO7rWa>Xfa4|%K z03EyCPMR@A7{~l2Ma~tl!CQL^*-wQE`J^jFPeto){yTk`D%31DIG>kE@@u3~Tl`&V zkS93dMnHFJJ55OTrOgOL_Z_>2|91<67mo$o8YiAWJ1CR1Bc15nG$ELUbSC|DVHDeD zLs`>>@7R)#^JWMU>}^Minjy?%Jv%B_W(e5jjq5<4z8Bn#KEHA)Yr6^W5KNc7J5aTm zf**s$uB4ghQ*Wmzc{6zzI53&yAA|(vn@k;l0D(SPnfQZXt7WUT%J;JcoMim4R(Uu_ z!0KXBGQFRRS%K#o3ZEzZz)TnE^gQ9Hcfl&X#(ao>fxH;b>`&IlX}fTO3U!q3oy0$U z&?+h*p@z{4!Kj#GP8;5`9hnJ|dvv7|JRbtVX8f#-T_|94Qdo`)q{4i*bQ$egBs^mC zmeTsgLKBv{lwK|t`mq)#soN4L9VeDhx1WS~)_95X%TK~$ExWTwX|_y=!uDoUnz3AP zX49Y3+U4lAM*K)mmJ5~G`-LR^jPd{PXB7XlFp0@=boyuX)d!mrtOj>vnN4Z(3L%-b zeM&c12&2p0ov+p&pQ`B>&!@gCg%#pOj^ovJoycjGkn9kMnO2ESAq*r&JyQoo`G@(G zvr1_1l)^)fm1r!lWg(GhzJlB%hF+`^TCo1n6unxAW~tFMWwnscUOu9zHK>A^U>dLn zO?mwzn#zA071EkD!uRajT&lMg1IhMAG<~h`%DMgt?D<+$u~u<;Tf7S(&QnA7!fkeA5e-@|cnU$|UtyzZ+W1SEv|znpu6hGD<~{<-X9}8XfG9vaKtI3) zz(T;*Oxm+Sc+0-KNBO@(zpNKd*M1c$NgvVD@wNj##w(nxHsT{p;Y$2Q!2#FV?oiiF z=tCcmrBj;(2liBq*n~Vh znd)p4!dd)&%Gick$HMEhXq(WOrCg_L+aN>FCM!OQfLo(uf+#c}9q5Tals@@_wU$lF zp|tIoz8V8zAXJ#i^j9flhp>hPWaF?RW>%*rP@SE^af3Ec)jB=}khDwqO*@13?h@jx zf^bF|H{#sLZ#Q~@UE`_4ZXwty6nnp=Rm88;ExM>4+!|PomhBe01h`d$c!cS=LIiD& zzZB9S59eKRlOON4XxJC{DpYNc;O_kJ0zasb&G%fh@?k0#CJ^|_IxPEtyGN+SmRwNg z?-5LxKAxkE1rYZmfpn|@I?K_s)PEnwj>Tt{1^WaT$2xbKzC9pRV}AZL2jcOg0%n~`KL6o#K+y*vME()&tcTQ%~1+If(&|8p^ir&gs%@%#8C*)>BH3PD3qc>UdoiC7?#+% z3|e141t)|NFe*Nf%AXQ)>>fB;YhE8wwCWUeyX~t< ze;VmY2dUa=Av~yUr&s2<++E(>^dF`rd$7-*053lnmN@ZshA}>`5GRjea%hXKCZFb< z7V;hQ`}4Nl32Xg$sIG@A_Nb=IE%bWoaYoq4y!MmBSxkDbxzgdYLXz-P$}4kp-n2Eg zzbL-vgnT^ZTb^#77lMWL?O&Or@}{k;@r&Ye0cv{YkJ$gi30uBK8rdbXb7ZH^9S`6U zoI$Gu&04@=fN`~;2?7iOOa$x#Tm;+&bYCNAegd2X*sm2d;efG#1%Pva_W%Pd|9(EN zoBb%6H=8N=(%8Jyaa7~7ki<6aq)C?rGpoCVCSSnK4Pj2D zv}u@vKxWf$ATHfIZsO~7cgyyWqqXw=O+m}pip|Oow}o4~4}`e_vQx zfxW$=-0-6y=HqYd`QXZ)9=l>u}I z%l;auwDc9x)pc*BboLW5rvK$mz5T&VNPp5-6VI`Z{gkWK#4Z@)`%r^G6xyafG$~N@ zWCP3N3Yb{Tvh8SCkl2v5wNo|+iKy6RMrC(((N}A@1how6`+0@_4hCUMnUoqL)Q56( zvxewvd?cy5*iqDAvg{};jv=BMS0d{xPN8B~Eju2ijH)Fz(z5B1%J$mgDQ!6&bRTY; z)&pvP|IG^36=u`|n0JU=0C7^v z^Ji|(-%dVlMLzY!dh9|+rCU957uLf%P~`^V2sW7E#Ie|c=@`9eAl8Hpcg44%Xs^@Z zfg@_rSgfzhgkxl5vAr(VY^9uOEL!6kxi)kqQmno_X}3h1it^&!gro#aS#lR=M6%G-+L(W6(%c zRdX?~pY~W`4}QTBrZn_ zIsx;&PEWdt*kG@vgmf3Z8B;=(_C3VSS{7J?gkIuEHuMtZ^g@wFO`-L@#P;kR?5U@U z(DVPfK!)C8B=fpR3B5&Uw(%nM?u}l_(Te`+E&8&mL1fnlb#gIK>DotpXTwU4Q-?Hh zy-SC2n8!4&WiG&K|L8OPhErD<$LJ#OKSmxy#LBwS5UI!^;y{R$m$GT7SWU}1c+wxk z#7q`>k~*h@&FsUJoh~kA_8#Puf!4aGn9?%D7OYM&6=a~5mW-fJ8Db7g9YHz6#Z~Oe zAqpHJDso5>o{}?e!{SPK6E}J~0=?g^LKuS2)8BQa)+0rC_OXzLjuh9kimv1_N*v7= zR#Fy?LNCTl`;}*7#2eV8-%DpR#b+$dfevMfE!m&D6vy!*rU%0w(y$4LVzZN;Ob~x# zANJDE+2RnU*+~_1@H_sZlAFUzZu(y|eIlyyb~$P@2}S#3K8=|qwq;wBKTO%G zG@gPUxXRx>`6AXKtg>}_!T;g>Fjfn&erM|64{T4D3vScYT=9x~@?)H5;2LnL+K4Uu zFpRq~c@J>+_;-P_r;17J?sB?372<_)-!l(>-2NPqC%%`PFXIA!wq@QHUr6)0(Wl$5+1FPHn#zeXB-v6*YqZivTA8nr@;d5C9R=Oa}Y{xY&)Be=i2J z9(q;M==t|(ybr7_p8hk%Z&`0EIyqCU#F~{N#aU?XCv?UhbHxU_AUK41Vj#P|MhTlII%(~%?~Ka>9wov zrcMjQ0NsWUHZ*mCI8YZ3$NL51SlyoYHZ*FX=&4%>2VcsdoeRajIy?A$e-z_%h3{-= z=#S!Fc6&L6F2YD~cbU?8kysfP9G5EN7K;Wv8TOi{ED^t99bPMcED>Ai*_8zpxB^jT z71Q4<#OsFGCTc@&)P&Bh6fZd^LqPJD098tdH@8~yy~CoI|wd8`z!f}tq;$8)(1 z&nO0(e|27=@?o_&l(8Z_pR`UK%-TIrZmbjWAla)~q+KsgXRAtR=6Z1%`@MidH;AFm zGiD+IoY>j~l_Mc{y>~wU%?ncgqRb8A4Yu-o>i(N4L>;@gecl%FHLE<8-fj_>a3gK=x1ynjO;Pr272n&kY5BBckGP4g%cKE&(e;fS zNKFbL7LS(F(gNr-fy!$CmNHt|eNeosWkW|QD-ManwXE7k#kE+RX`MNHwy4Pm zgah<|3Ufux62QYbqUICe=O0DQjK!j67{anS9dOG4W%NxEUgkdjlc)(@Dr)lZ`wO5f z?p)wFtY0WcJUk8Wnu)D!f_Y0;xfvKl@jOtpa4 z2AQJ|>cnx}Xj;<K4unlkmunT}rNV6Ys1&{=q4uI`|y?}13De9uQ zqh>DL-vj0Xegtd){0_(ltOk_P7s9;^aC9|Qza;i#)t1tnOJZYYI6~(yiS=3SBC@|M zHemA)Q;W-Djfh5vxuB<)%S-aE#TN(6rWjzdcH(k0CjF7wnRc3t2D||w#Kl4zh{nL5 zM+N3>G3~jGR2>e}`^#cbC7++)n72DX9!rkad(T&M>u+C%bj+q>#T0c#3}V-o(~v8o zBg-kKsqj~tyBrZJ@(2yeB6LzCG%ThwJVGKKy0|LV)H+kGt711+a1cjf@LBs8DIc$j z548>p?6DA7Qu(v}3%hW!8-2JYda&(X$?ZBiif{h! zqGl`L3E&Js0?r@M1keMJ1y~FyTW^SH)3zNQyoIqWYcDOijY) z7oFpgqIjg0Dhittj(>^u7b5Ff5cAe@)tD14*9g@FL8o&ZwK$-6K|MJf9#;B z60ru0+Ck|hVk3JY_9e^==dd}uF?LRykiMG^l!(=t%|v=pBBry&+o|t;5tgmD)6Dx~ zj{G!Vr-^S+m|<-;orl)>0P|2UJ#~5@dI!6va9ym6{L%_*7LAkMneX!X)B51@vY+dA)|SgUgUPW1VJ@w-IL8bBLxa{<2sa9wuOHxI=_ zY{fKkc_elWRPrz;V?Nw?uuh#A`!2%9u+YuO=yW7yRN8%Dbg#9g6 zth~pX51|taz!e6_0*mj4#ka?r(*MQ`tuU8{Jcge0v!3X&NNk3lYCI7$JpRH*B~EYB z2QR|&o+#~wF*C+HEhcwd7H*j6FI!RJ6R|GaWTkw1BKE=!=B?E0nV1=XwN_*~X+F;+ zcgY(3l+1npPF;`7dxJ+EEaNkV-nxv8&&7W1s+Pt)hx&9}t1Ngf_GQwMwul;V12dXU z*-E)rVyK>p*-G?#F#s3Y#w%$b#8EnJ4|?zkm9}COxtPT+?ByUDZN@@CawFw}S^P(< z9YyD~(kTr0#%UZ<{|514(9EYWGqK2{5KpBn^k7$~UwPoPT{ zMe;3Hd_*MPztJCB3USKSQtOt+3bRkaM(RMk(xjIvIj`ZgxjM@m-5#Is;m>+PZS_($ zCNHJ&AY(J1&=S2=l@{6n%&am!NPx{*6_1Sk1h0X zm(VN`R4>` zV*~n;&1txeRGn>VPOI>nRPs6Aj24LZ)gL}r`?uAd9tKrx~_VuzMz+YKKkKQMJp6TTJJ~W4%4%riV|ML4Vjv z4VZp9IUA(nQXv+X`qMK>YQawTr$||v%1%qlaamf3 zCCD)9YbW`$@A}XjJE;Tv&OlG?q~+|p-ZaOa`)%o|y|kK*N~HzmrM|464Ovx?3fYUE z%Fznab*=8_P|dtMun~RCglaefn?)w6if|V~U-)To?ZsA#XGKZWvQ0Xw?kKfnU3HY{ zD0S2hrK^roATx9)gOfCiozbpdJkb6XhqCs4D>QVmyOf=-k7)_frQgKq4Myds?5_m0b}h#QKzAFXI!Whp#n{;T?*m1 z3|hKN9(G%iEL0Jz(1M4tW|LzUWx7ihS>5qO?vhWrOPPFR#6#$O`y!i;xJ&hfIy;L51ToXtbL_#oezQ(3Z%?eTX}=dKIqZ)fZ1dk zN#lJbQ-gVGa0ZMszZ}6!?K6q`EELvgp}1Hwvq1`6JLCWGu14VqI_)d@)~)qFr#}&? zWxs8o;jAw6o>hy{V9D#e+0=Uk1^Y>keyJnXPyCOh!#F3Hu*PM-!vcxfbYnOT@{?+_ zwZmzpANslLBdFL<3TBIk(>wki7{r=$qe2k zv)|TCH-Iq2m5V!udz&eAbU+SsAV1*YjhhWUS83_~qdUv*|g|d2c70jXCXMmG=w!!|AlUnpD>`Q;nAnyPXgxOXZGB zCqsY~qAgDi0?>=MNyPIhl56N26)cAj_ zdkAJ9Lj9|x@&TS;eq9+%e+ElVtT2t<1xpEj8`b;N_;hZX9cmh=T=CMcYH=O)&=pP; zgY#e-SVLOO9tKQs4gMRttm2yaCjzmSl2uM+7eBm%v0(>_I(#?$5wK z^cekVd@ZR0d)klY)#6%CKiX3ZopDY-VznhdtrrEH<*Tvi?xE!!<-;uI+WqN4T`7lOyGaX^ zdNa4@bU6%a%GPJ(Ur*}b5Yh!4Vn5YCE)VNa5$O2c`>9`6PS=mi8$TjYq<_&_*;`MV zrK>pL=?m<5*b3yi7hxD#-J&I%N z<>bz6M%uLz%)3&# zNXbj9>w(tolVXVFqEQo%;)&}}2F^hJ-3ARq$G@&DZY2csUcI{I8818dK;fXLH74nZQhR(54M z{nmkwHIbe$?LFGvRO)WHH9_v>hW}n%dp*;|{@37tdZ}AN7v16sBFAdYA#6(uecMb*VJRuJyBYek-gK{-CMHimwFMP4muj%& z7WBNi6y5X*Zi(`7BP=fa#-}3vL3nw4F4FIT3mq8xCjC)3VH3e&m^+A`6zPBZH)s=_ zMfx8CX>5YjuxT=U*~PX+`lfJTokWwXkA*Ap^*)dEUfIPScsdte-jnC*19`ysn;MPo z6gtzI@FDSkkehEHnG+=EdJ<6C^0NT+hX}b^r2i96Jao-DdI~3=htAXg1&49RUB_Wk zoN>ofCj^}jpw@|!W3ycdi5q_t9rhe|ic8*P0qfQ34PP$Rm+W2#-yIL?*8+pxat~VHLW*khsTsI8yrZti+ghlMgD*Xz`9FE+$>JO z!VorZBETp5ktr>CpA4^h6xwV`gCF zYP&j1m1~uz#u1wMfK%}Sr}Lsdo-K*XZEu^~)b(FJoWCHXa$O`m(BMKFyGZVtpN?}= zlCsSS-t!rZ{%B@KKfNuy+>L85dRNsA5dxW})ZGnkhfcPLylQtfA=!-tP58e?+r@bocET;$i187=v!6A!R`QP>%-0S z?iSZ0$J+yqn@8jy5ps+=cSC35aEzvQll;rSJIWKC=Die|bN=5QrNVAf5BrZ1Uvuj~ z^}0)5tUIE2ms~p0)qUnDkhJGv6`ikPeqWtk6Q52gV(jw-bQX5)sSsUgP>k>RnZ!T?U zFT-hnFKG|UE3ZsQmG0=OEZ&D@`E)#6FVBIi#P=rSJz+Uj;pFCtP2=`aZa=9W`?juf zu%85@BI(sh7$A8?8D%Id#+By%dfFF-W9PtW5MqxS)e!N2u7d0ITHNjjm zat^;1fo@LCgD+s@6>(*w>w!FZ0FvTKc&lM2OA<cS57mV43^tn*La2GVU{XH z1oRJ95b&O{5n83`2+2p!ZXBaQW3jxEf034qmAdE(K3J1^td!*2chd_qW>W!)d9k($ zx_xL#wx#?T%D6G01?CZ1_Op-1qHe1D+ zYiA4A{x`PJ+n06q?QC!Nl&lq%s3}s66|3$@Q>IBz zE5|H_9O+J3#tdHVUl;4V=~6SCGj~vK&5#6brBjQ!nDAkalWNOqK+6l*W~St>j!e7^ zIfmDOIxfZMwzkDXxt!boF=mIElI!R4P}7<)QwnFt9cbT7sZz+yMZD+644f}A{=3hT z%h6wN)ugJFmaQ7aW0r(-Z3~Uc*dL_sjMbIt&pA>)^O;Wz=1L7d=cm@~jk!{tuQ6Wp zq~Tv1T#qgwffy8ny<-2aa{l(?An zOW)9ppCzZtlVEiW+L&wVO!LvW>C%q?tm(}JomuYph7SHLc?ZT=XoC5+6859QCHVOR z8(+qVP-EbYC5IK#_Xe$*aeaRIC1w2zDNW1r-caRLXtB2Esm>~C9=rP5;!i$D_qacx z)W7B|>`=l#=9MMWok`vq(GYoBdfFTupj z+$ZGltF&J_4GRr;<`Se^j^oug=`tJjkalmBTvIzfw8j<3V)c?($?)!4jA&5e6M-!$ zfiJF}TO`~W!74#+cpxW-ahZfN$|{_4kA>2aQ|hye%?~r;@*d(CVD-b+xD8O-c$gY* zk}4Yhf&m9?G@W`vT{dCiYH~3ZZIZmg+W;MxCy6EPaGDF+RZp*AKe0x_BEN(f#v|CH%Jo%AI^^Cr+B) zrDZ!LFY!KZ&_BfU9P*8Q%84DkKXSN3F1w^E;^2bPkkkT-+a=v(-`yz9W3LjsTT)=i z^t$qCpY*#{`K=hOE$q;u?kZ>85wX)VmJB`bEfr5xPjN>b+ClbozsxoOI# zN74f;_FH>e^bCt`S0^dApGp2!+6aAFHW`2ovd((a#lyWkuz{Z4uPkA&r$ z1Ec7}Cn;L&2eU;PGALe%6%qhYFSK}($7k6V`L9`UED@(^}mvIV&|l_M*WZAEz;^D0HY>cx>0 zS@?AFbClf@-K%0wFd+nMFsbpzLHiRLm`og#?T&?&R6LLP9CuF7`dD%Ijl{eo@%!%A zf~gl%F;JL7xP_@f_xAJYL_;464w1c#ejFEP{B9qRK>2OQL327vH zg$LUAqaY{QtD$Vc9kJk3ZXt)D!+lk{2XMPxv$##iz13V}ygfj9nN!Wi4PGZXsQffb zh@7BO+UXto(h(=wwM#`6&vQ$b1vM;Lf2I#lB{}GQl`>9Jc+PkW$qzZF_*7HlB+ExE zbow9E-;^`Yjh!AL{3zn$(>nR=s6sK$a^uX)NXIzgXMA62fuYds8)~f3~o1_g~rrhF|t;fMYCoI2XS2D=z$Cr>_WK;S0RpfL}GG!Vk%&SseKxMUKSp!CTKZ z=%0Fi4o$g)sQM?VJmltD{e?2e?lQ-U)XdVbyfV~Ki{lslGo+(NTUwSN>@K?^m-s3L z@eQzZ)F`nbwd*e(xx?kZOeS>a)6pNw&`)_MK54786mBi9g zx8fCX-cpxwTv5bj?k66xO(_iJ3OJ( zixL7oZ$J7!EN;Y2+0Wa`9gAOWE5)ii87(t~`}H#`Q#p6J7W14)G46764;kDRz8j?H zzZQu-o1(X^%q#Qs2K^H^+UPDj*FNWFsW%kAe2KeJ1(0|7rKPgB%P%aBwepoR$KhV| zkGmY|?TWOxl;t2Aq<^icKacv>uAWe0&%pswAfxzSJ$xrJv# zBvmFXa^13YE0;OsUUbt#u26f8tA&j7ww}97c`NRzO5}FA$l_Ql|61l)+>`u0<$7#w zd+O;aC$nTX+T$q)RI22vQx~DKAN5H!W~O_4;6F6Y?C|ar$jVFZ%IdjMFE6=D=1b(0 zYD~NGIMq1pY^_w|2e;?IyfEIoia~HSI7BDNJ5FgI>I??J?0l*s9Eh6$1SI?XX7Ten z;e>AG;78n}DmvMf_oC>RClj zVJ+Iy-YRm_MqX-KX_p=&F*iN;pjBK!_wl@OTm#c17v8G`VqpXMgbOOI-%+?HtM_ZcBjh__5+3Qs_VNV%s6=~wrRL8h5NplG(z>Jxb5YM ze7JWTS)VI>_ub8dx9;!OH{wXk801zT?t{19t#w;j<_J@xq#XFNnv*-y>uU1&2AeDJ zn5bSb;5G-IgE!y(TfJj|FlHyCdO`Dd46-;{c-HPAAL7y~&~E{9m2$m#0uNJ87hX>G z>0g0v2gpms@bWxS)bG=lbTe44pezfNXK2}6I|`{TH^Pln8d4oK=wpXUIG3oB(C+H; z7MnIkUW28WykK5~9CMLEYM`Qa2Fvc&&&vU^m?IqMWw2~#UCa@~EEMiFWQnaUM?p2@ zQ0uWgz|j&griN_KV#?8s8nPeTFpTnR$W_<^N4i!+c5E;Ol4Q(2!xgRBlr%wZW;{TzV@yf>EVmngz#OJnya1 zdnX44T5u0|ql~b)O%X^CnPGt*RH`=jx+T}}!>7p^8tItCi9}Z=tgNUn-r8iSE>tTV{rUKGPYwqgP3h z+my!s9U_L|V19)F#hEn_;`1NfAJMdc3+jqJPS@Ok#!cg zS_XsQrr$zkPqy8G&WFm)t0f^@WA-YGPSzNnafwiMs&j`oT9eGfp@PX87w*K+{am|*3QMYa^QyG{HN|VT_v$J$7QfX#C10n zSJoV7+FNwDlDg2{aPGxEOs*nKu~QQ>Ew!UYVbI;W+ELdqxmBIED042MU>a>x)vkg< zEV!>UG#?92W!8{LcacW3ODM3?c#vj0w|w|Z)6g%nxIb%XD=dB<-))NO{#QdwGg6Cs zatu4&kLJ{ahIY+}Dt(?T^IyzNA|M1Q#~~1f(9jm^jYcxplbt>9GzV3wW-b2-4;NYa zP?-ZSX4b1O2e?it$3vin4Tj?@Ev!X3ix$?02S5wUDo0D|%RaibZLR3Y&~k05QUm#Q zSVtN0F+$vk%f5k|G;g)(4Y?k8F8+($Pr{?-zOBr$GM?fa%9S#crGLpx&DA(|az_i* zcDX|td1RTR1}C|laus9AesI10z`yl?DC@~tQ?Te!1n%WoiK1#028kUlETKSnQUL{M?HMcgCv_f{K-O+N8 z{M(Ap1V0_8H_`HZR_~-TD@L}q@h-ge+#H|V{07!%V?(dT<{gNf$|CFMI2HTaYtqYc z*D+t(*<3y*o#GfFvi>xuOTIKaK|WYffAhI{s!de=9N~sa&0TkVm4S(Jb>^|}`g3zE z-=02$ozlpuIwa-%wls+x=Z{FVrQFFQ_J5!%`AqdxrE07UZzX@PlL>odrNxo6o60B2 zA#A}eicOL`=>t}q%@4_@tz3()B+2EpHr(5NU81RtD;R4EamV;o(JBPkSup| zoZrc8&Q11+3Cnn!Zp`ca5|?!fO0qlAfn<4;?En4ed@ANsR*L+iJRV04OS2xNkY5M6 zhn@Yus86`3S(93RlwD|R2f3E^cjZ9`IbJLG#fD;OtadQr-bqfxGbzgVo#Y`}Z82%P z$X9BF#A9_YuemMXl`4wnH|wx#ZzypAdN2BG%|p95?HF55!O^;S61&O^nayij-Bre! z#!2+CtK7fc`4>7(3&+u167mW{&y>9S8;53EW%APW;;kWk zjgrz=ex?nLy8AEDy@w!*9QT>1I$BRm-qxqsHIB*a>D>@}ozvZJ?x%76<;E=EhxYWB zCo!k})MS9Xops(v+JSPVa{sb#kMpTCWR&b$^Ywl86O8-*kDpNSwlZ=cUTyKHa0}eI zg`SDbKZfEh*-`=qjiWy^_)%FfNWP-2?0nuFV$Srh{{3@8(;+`OM0)F*w8(h!tFzmP)^u zIPp&U&G@`yB~>5b4l1lZ;-GG1{!=bG9!Qd7rg?jyizr2k`;^dmvR0?fr`ikTY98UZ zgjL3YAG5^O|+%4 zhgxE*y$#iNhPFbrjWz%Gx%Zh2`Tjotyk3*{c|Yel&sp!e=bn4cxuOTbKEZeXq1fe! z2j6@hxLgjYKA08%z;l~zSUcz@g$TV$|2RKcE^oyujVaV=r5x(>mr0^AE9Eg2E?+a@ zds3N^g>-eL+y*_RWfex*qm8fThP9~o!Hiq&UGJ8~nR`kJz`jM^A0s!C7WvTmZ29fDDIL(mimBPuNA^k6)TWk0D<#7R z6{q;&v}b*&+0?Rs6-3phRNZ5RHP^Q%^`j-OLQ&IrE}mC+k$sKat;WSQk|FictV#87 z21Qs4DB?^pOri`3tFn>`*T^+v4ZD1>_((gF_vB9D#D^dU$XDQmCXSdio6hQPeC=|; z1ISwL*0^xTx7@aqUS5mbPlOC3JuwYq+Pi|Lt(6B`d?8c&Uqvu{!}2Zhh-9g-lm1*Q zf9})xf{CVg!n5AC&*hh;pBQCPV(uPQLb%T zqb}hXD9CWw!l~XSxnHH;LQtXY!bbhVX%5DL)sj-tV>qs4l*5R@I8gX1!j%y29I{#7 zV+>h4o5v1kFdFHMfkTqesVH2@;bh+;2h*!t~BH8ZpBRGov*0IHu;(K7@s`+N^aQh#5Sn+LyHi_ z`?(<9MLWk=Rb(MqFC;D5+qzFOxWhrj6T;vQWdBNzY+W51@4qWbG!`x#lq5#sYWPn8 zlyiJorw=9QH$LImpSr*3K8^~<0%g-1Uy%DNIm&)?D>i?05jC|6E_{>Y(A2hI@&+(9 zT+FVWSHm&OI>3|(3FgGKTK!aWYfrXN8HfosF%vtmaPHY8RoI%nUei5z9 znkkYoP?ueu=A-uiRmI!49645+|2O@VBiFXuVOFg5$2qTgfnu3q*Qb_7s^;TZcj!srCzd53Dy#)HA&X|K9cFw*fuQ-00!6A2Sx?^ARE} zT7;N$Q(S}lU5!VocP#TXTb1s}vqYdw`RI={f4dwOnDe{H2cB&p7NwH1mG*6ytHdwR zc)T2^q4pL=JnNur;zI`Ne&PxL8aQU6%}x9eBe2AG$nC>j zUut13g&Lai6nE8<1h<&3DZuRQ1zVlr53PI=z5+ zUDs}4XxPa6O8Z9uZFFLF06&k7h&dL^l7l!QH_V)cPtk~fO~i3lR(sBmGhvOraZKNGUh2E zu>2|n1NP$)E~J_;gV}-`(8aUXrVx>N;b`)`u=3bks7cRiWB|ySJ^6Ub+jBw$nt{NF zZXWy6eQ5u5RAyDw=J7wYQ2qxnS$GnDdrY=3Y40h147`&Xz!4`LqI##ofpQ<8k2cbIGyU?lJlK32QQ|u53?sOd{Jx~ucFT>WrvFjO zZn;XUFCa!AkK04MWwTHT519-=+5dq7KTadMa9>lv)jZ%jl#XLox zEydJ)6FuE6H>!9+2pYEd~ z>s(TPp8)QR-2`GXEQ<=%lcAwGPmUs#gBVss6gsBW&@ zxW_yHfZrEQXVL)w*@uh6Eh6?qHz#hg{32BEqY)K{hirfwd9(hl<*mX!p)y9alfGYG zhCd3BC|3@txL^aqJi-;df%fIfwJKRPV|_PS%5S9KbLBd3gbD@sopXn84?K7H%%rnb zMeW*!uo$)ba8`k+;g2+qjGh%44T6{K4-s-|fjxINMkPWPuFFgtY0w_@VK+hDBjBek zgLRnB-loNSFu?yfm6m)X|0Ioxq$%IZVN%8%TKTQKTRJL+<*R ziAUFCS}~g(-^oLz`RnNJcNowNTL;6l@$92E+!dNFuEWfj`H9qeuiRH!nL-(RJorKBj!W!nkwfU&i5d4Rq>7J41?von? z9 zMz+?KU%>qq-}5=uWa)mnsyK(C+J4l^%*%9UzZ@d%zDh;=<@)VfX-9(k=VLKa<)5_) zAAP5fBP8jn36F%h#aD((=}IxI&Gms^iTuV@>U%)0*7oKlY%9pr3>^JQGoUSx-q~N& zqdZ)g*LORw5xx-h6{3eQ-=(A$_!isveg^ zrE&PG+HpBLcIh`JgKFJxCgN4Fdcx~=2%cHeA4AK7_>RWmzNKG zh2slte(CZ*+v)4$a$n0ULNT*tGogWX&Q_$R^Lb~DALI-pcFlfq0TwODt*fiZaZTZWx(@&SxH1xXswX}XYRr?8Q=hB>S|0GW{8k3zDewLRQr8zz6y&IU&c+_LV zgB!As6rAn+_m+IeXq}#htUJ2w_jQX(n*Ask8^fmd-qQpGo#UW1GX5^#mX<7{KYy3& zO5+we16;C-r?TD7x^8)_QS$rR`QdHZVr(3+0|z~5k4*Tdw`Y95fFy@4cjIShWVz|kYI+( z;fEz)kx11?8G>7~zM@ut$#q`eiZ*t~9}kC9WLz^&Fqfhju+!GzlNyZ~2Gmd^?1F@! z55V;bK1l*m16>p>MD2vg(b-R^D@RQAzM{>4VLGYa4!ZM~e6(iZ4up2(JI<9@O1?5; zWxfkDWZEWxgs<>k$d3lIhSPvd~+h?TAhcn|<)~FjV(DUDnUk5gsUkDfMk_OijL^J;icJrz%3GSrGG> zVndk~;cyMg57wg!C&Qfua#s+nmK5z#zAwlCVcsGCw4Q<=%HK-vS#;r{yi)2lizYw9 z>-8$LXyYTfiS+wSy7)-0Wj#8R+v`jD;)}0(^Te*^^bas?YS}cCERW?xsr5{n|5$!Y zx;le?c`WyoKAJ(zp2(f0MQbVPi9AI5eL7uyA`h%zVU|`b)z_MEl$W@0wA^RPd)6Rj z@9F73yoLrm#Y^CJ(<$|-+|7P)15P{3FDX*@8}T}0N^K-Q2O>;dx@QC0{gCAEx?5TF zVj;^Q*S2q9J-S}5aubx3t3Y_;<2PEFg;fLKt)DKND@>(^$(n4VE}N#y#sCbi*A@$5 zYS?hWcy9>qE?BIHdj)nVNW!f?Q{csDzmQy-cnu6~|;0Z6&)Gvu{ms18we@>z89R+m@8E1o38bIBo( zm`rEN!$6DW^rXDb{iJ3Q85x{u@+KYE|iuhEY~` z=X81-ep2O?y6*Jp^hpJ!wRC?xov5Jfl={RvXIE638Ks&XoI5Hh_&oE+^qs%*qa-b& z#j+A9jaW>_WTj=`(vOiv?BpBlcci-+yUuGZCbOcvEG3SmR}|&l>YcO1TIjFEhg`*u z%2?dzwKHRSeM09HrH$nJh!j<6U3J4pV!^xEKGkOtdPhvT#$%7?M>J4X>PV;CkX=RH z@BN6@s7h6zyBISh9`~>6bKpG_eRfj`q5G<`zxt*RQJkR|6m)Tj8DLBY_ZCMXnC^|D zlV;^j=~xzp1t|3_Gms|S9KONYjXcr5FkTz-Aq@&pdYkJl7R~ygw#L51f`h5{1So9+ zuY7_^uza^rJ0hS;iDgkH`35S@Dt-z%Zj&Z=CdC9QEkkx>nhe@DIJCLl=vYcDMfm)K z*wq%cG?P9GRBB4qdePQErK%-+jE`ZDxL0D3vk-1vs+nWxa-h<|zOFiE<=gjgtbCd? zu`=#7*#Dr|+FerTc80z?9btMnwmgln1&Enw$H|Vl20t-4d;?L5<3Hx+sdL5XvcwXJ z1dAhfdSu4uK(PyM>6w;oxH4SZ@k$1Fw+LPIrFOBLbgj^&^^>ZjhBVVS!R|SuTM)Ai zonnvqX-FCEt*kVx@nes2hP@)T-l(wz$AvDL-T&2&R^6IG#vrAcG$Vsr1SwGiMOMTO zwSu;#wh(4}I4)}LYkCy!ZYVF;_q(){JUpipnC`;9*pDxE(6tk{qq-O?-9&m(Y!^kc zGcD&w(}5tRW$0lWRE1tMp;rfb9Y%>;JTzOt0nNx!RKubi^UcM1OY};2wF*76DAgK$ zjW2lia9r-;D0bX`F``~0wTNB@Ab8A3>R3e?Sw9mA7RO+8W$dFN9xq|XR#J%jOG#LB z2Xzcqs!L(r$z4UMVa~_-97xC>aZE?1<(m-{R8?v1({a9$zCS5fi4x;&-uCP;eT$c* zVlVMSEisXvTqo%!M(8F+j-X{#l@RIZJaSf5tdZl=k*LyQ8w?YkVvF(^Xrvpcp&O_< zf+_|pEv2sW^prmAN`r!t(p$r|lwJTJr9Td*1;NVOO~!N;pEBk$a=3fo^Xp0WK6B4b zsgH8*q6cZI2Wd5&%+-`7zIW3+rTl$0MUg)0LZ_=K7W1-Un*DSD>}L$42i25b_L-fL zU{qU8n0ty7L$qou5=Vz*TJ8Z{Gm6nVI^Z8Jw**!WfwJ#V&D=k_>c4$SA6w3 z#mc&((1%SEAk$`Yh3Sg+SDw?9bj`nYlMghL6WXJ{#j~2C;@Ye$R)V5kIcV&IBW7-P^(Nd>~^W^G^j96i8LV{K{2>=xLkOYdUsf31AN)@-FN@5_5 z<34bk!$$s}Q_*jw*2525i!x2wsWh*q(ps5{QCre@+pxz-=HyxQLrtYd?3-dF=kR~% z3R(87L|p2=B^ZK2Ax8H=M=LfebwJC*$Sd5V{rv+iv%#~deu%PCx|vFcLX?*)G@ge; z>0gZrn@1IDDWT>LDcXq+jcks?sMLG2DW;Y(RZ5;syK5{PEdZkso!)460n6qLI?I_PQkP#OA0r(Jz6ioxqe6hyNrRMJS9 z*z~(33`}lf7jw|r9uD8Uf4dY!8x*v3KUnc|9FzZn1%?r=v@8xGlZw?_C`?`uG&~ zP9L$l#4>#%{nA(&9XQc&zociT|I_wpiM@OlUc;8EK~0pp0U{u_nf5Mj-%Z`Ou1@T$ zl+{G3k9E*OJ&4uC1}(~OqBIXUSaJ^y{~|0s>g7mtL0qw^G6Ea15}PW+D!QNDD|ywC zb_e3?O_dwcz6q4qOz9#ePoQ!UN+%`h>AjL(nL*EbITj+t^k#(8Tmq&?DD|6a2}$W) z9OIkW$(Y{R_l{qQ<;-}aLEo1qL}*LRc_KO6u&wX^nCM%DZZucItM=>oX2<@yi7@P1S=D21PFH$4 z5-BQpkKTz?&PzStrKl*SUe%a)OEb1GG=URS7)0Zva9fkca6`M$o%Tm5-%DG@Q)`>j zp7L5Mm8Ah==|W4To)k5fzOpIJ>7`c6JZbtE+Sy8ZO=>WP%D2V{`O#>KYOO>_MI&is zYb8tiY!np>?mLF0yQ znBKK`eMyO15zohtlPH<5@7ycVN(^6+DaPplzQ=5i#Rm|kb|>XiDQO6O(+Ll8Z3oeV zP6|F^IFMR(M#YUxp#07l_u2+Jf9tH^YjQ2#rYBvLBOzno5?!S4{!Y9G*uOy%b)E*Yh-r?4K%xG&PUyG$V!;}f;s~tsp^aU{`mX>YFI2`5mVUROo zxH8-*<^DoTM<`d+EJ3bX0KeJYtRnae!;7a)nJr^u+``bB~B3 zQ=-zXQb-i4M;xIQ6h&_)Dq*$VktTzfU_NTP$}Wsn%x@oz%)^0OCn9NiBBJ{>(77iO zg&6pXS-c;g5b~yuVegnJb`tL7>qDH!CMmOx-6VM6jp8BfW@z%83is6kAY^m=BMjD%XJDAlA&{?u-Y(o?E! zrukEpp;G@!bZ3h4NOCIl`}@j3sbMujPUq8!smixfnCwhXR-%kPCHNv%-ZbTraS^_Y zt90`D{;BWo=}LK{u`Bt_P!?CTZoel!f|ubRM_zB>;CzQVyOD6V(9kV zFCOkR{GQ^M^D6x{QwfzSRu-|o&nQh7Qw+QlvU5 z==vLlk}XAPDm|-5$pVkmqm3y_j5s3l_Y@S-jYZUTw$cjdoH<(wlm>=8!Pj^E+qDb> zs%gbYWSf|WR*V+YM!-F?P0ZptCc~6bs#C`C-*~flM0HvmaH&qy0wDnXK*x~rnmA;P zPUS&$=uWEAYCv;v$0;brgy}wEHFRte092hJz5v&rk>X3e$l-gN(A8IPEL^tow*a(u zIEKT4=x!iYKKs*KwtMW0a%}V1mp({SYRA<8MKa^yi#X(-I$CTxhI9fVju@S`Yz>@J z1=i}r(a~`cA*u^6$I&|qf}2z;xzm)L6@ni5V%n_MBVSrSR~c>I@X*%~tFAfw^XO8vSz7Oy~3Y0*4og`6!C?}yJktQZYZ+xbeZQmr&iYs7q| zwLPd9S&;+9|CYY^FJ42$+Z^wOCg3`b==jdycMhh@KEeZ24sp1q|NajB44n2HV zhsgyx20kuy0w@~OCGcso$uO|KsYE^sawjlGkQo6c!@A3lN=!Q;OE+y7|66|kpR>jS z9pBA++2=rdS1UCBfiNi$FK~kC z?S;w^=|NT6w-D2K5yAB1LSOr@eZt8HKCS)p|j4NnIrqW(I;Y0T`m4XI8;ZBi-(rTJ%E9YtxiHUlojAj0= zSWMRAkoP?na(}2Scs;T&FO?IE>}DJ;ZW=awo6+z=r70B-7xOYZA)JBtDBg8;@BfU= zVUNtFrBFq+jXwC?I=hNT=+H+>SNkVBu~gF+@8Zvk)pm7-x@)UZtN=KUl><#q2zPP# zg~PY|UI(6o>g@ryh1R0O61va6TTR<_$Csuo-LVOujFMmgJ0YN!>QS2|g!kVmnlx?h zv1zSgXr9gIEm`vUDqDXDI_}{&EPi;{y%}RZX)1ng^g^ zxp9arA1fEJ><`P#?x89~WWBb~iY!Q(xQm8$P&=S-j+*h2oG` zsOusnN^<<*oW4j2Gp~i*O;;*cRd5WV*SDq82O7?W1r23YOIbVMDsut$lB=WgOJ* zv_t??XA$6GvjbBbfXQ72yE6cHnTK2DSP;$8T}U5mQfwJY4oB=*#^x`AN9`A01J8;z zY?@%$Ce)lJxH`@Eu)9C@jMJ^fm^8j|hpH{X2zKusYO@57uyZRrA1+ZoH%be>pwCFT zE%keoGM3?)YRr1tyG%JHeY%b^KgCUM);b)cqr4-HKT3YfmB=n`ERj02f7S@ zN;ya9$K^_swwJKD;?T`Co4%_i7F-C|;%Z{S1+qLaH1<%Zhns#pbaT@txrea#<$#ce z0ugodFp62BSgqxmHvkGnQx(l|c@I`)^*0T9oo24U&D!!h9b2KqRj#zwi0>Zb>EW)Z zQ+I#Mj@PL1N~MQ7sVzRqCS>XQH%+{JU~}JQ!*>} z##lvs(9`Pi=w+tqt8t_CHPbh%@i_A1C33A+W=SJA)97qvkMSj{y9Ui-)J5vQ2G0sx zpOSlx^1wKOep;*amKI&0#-C%p#&-i9|6G|QMLebU>y&oVxpg#sozhk*e;&6Ze$)M> zfex-y;;QyAh~8N4sY5RvdK;+GdS$P){wTTEE1he_VkB_~r`*Og6Am2t8`DZS@c0*F zDeZa)@LrzYT|rm1=6 zJ9jV@wdV|(HYls@hI78+ZCvxQ;`ynU6|Y+VJ*!D->k@>O|Ij6}E{TBTrY?CrMhg`U z$t7Ll)+Mo!oYEy1b%_mRoP5R3nXaGfq3p$oN3sGUq_Y5qpMR{83T^XHAqJ|F4sN$2V$M^K$J0(%_+d(7uV(#JUcKT#5I-!l*>BwGXwlruT_1K3S^3Wr+Wgi}R z78cU+eV7`2{4I6SSAhKPH$rH7 za9#7e4sd04C=tVs8*pPs&<^7sylpFS&3jT(a>R5ILLJs}bd~$hsP;uAgv->g+5Wxb93X;K28U z#GZ>glH*SLct3Y#MBFB%+BKSa3_Z)RZ|KWoN?ORwa=ML>_k;sBLf#e**a+!aj(Q(g zx=VXz(URk+<|kX}z;R`av5vFx56V}V(D~AN{RFC8`fC~`oL0t2e{ZB8PAluBYsoaJ zKzTFz4?NDf1`pBRoQ+1lPJoLI6f=S~Q7eefuxN}fst3_2b?F&poHi^zqx3d@?ELPG zQr#$Zljzb}%$5E5RHDFhnEA>*P9x9ZA!NaE`s|$YlN9bxv(95ac;DwsFDS1|ZI00! z7f^`tm1x!lrMYnxh(AiTF5=N9aSgq45jB4M2(7z_%&s{?e_m9k zNR#|%_$8&6bp0@GzocxI?oFUUmocB#Y&Cs!8Rj=1qFa}hRO#38H0Fx(QQ&tbc#?ekD2$06_kH*L7C%&5^f&tUksYoYIy zYF*Mt6yB+P6mDEK_^wwTwf{+J8@%Ov5v`iG0hf}a&n-UV{@?E@>nG(cY3=v)$4_|a zHt&1#`&nsXtm*T&MrPo1l7DxVpp*^8Yqx0FLh>61N9 zpWl>TM(NoQiu+yZRuVbMJjTeoNnOp}+rDT2{K1 zjrk;TG--`5De{5RNV>b320uVKpXf((9^i^CNu}=}D7E~XZPv;=sKl~$Gr1pNPIcYu zwD})pW0h}E7Pv@qQF%G-5K;HR^M*oY((sd(!{I4=uy0n4H{inQDeumI>9HD^M zl&UoAKlEj7H_*!el+ooc;nlCrahN*pRf4E?vGPvq315gaky<7K@C=wBO$o%Sd)J@1 z0(;{N>glFe;eowY+LkGGF1FPmys5<(w5wQY6(Z?@eE?Hth;VaD!~MRV%0I*m@;B?z zooo$857DOOHn@|P;Y+Yv*Hg!bN;PGX@SF)x$mXr5(GQh8>CifA^a$PX5R3^QDHEmN zKHvRVEJXNp<8xoB68#S5gx4T7bMuhO8SwPHukx&Rc^>g*J{~H(Fz9(7-Hkl85%#Gl z-8aa&<*95kVhLD~mV=B%dgjOrK4@ij0w zRyVkB6(ve)oHTGH9gx(ail6XnWE&>lia%LNEqqj4XUOafR6gA?W*OT48TR1eAyOr3$0-C z85@qHbfg_k*hw`^>Qu?Hj24^JMgFr%L?f=0;qOz6a_SOk?oj8ka%v5n^tQzLTY0sT z(SP@1kItu)olpJLF-Gag5*l4mJ%AGwsc|LsHEG*oXG$gYcOPluQW~SGi=}2+&JtC% z;M}@}RHd>yu}qc+_1f%4#R+p2Havq*{$qgA5vM zQ6mG|BDBp>phb$$s{EZ!pIg+u%85*rcYTyM`p~>|=lCjWvLyXDm|Vf?At^48wpCLT zq>7KoTwSeG<7f1ecdnvlP6-Frb}YfyGSE?)c0Y9XuC8u2N*T%YQi$5nS*NDzXEgSA zHVRSO8;!xvF}2jzMx`+6SqY}mqYxrMxkuY-tDP#<#U5WA_PHwsn^7OvRvTEB%Xk4+ zb_1}pwN+j1zaEN)8v+FxU{k&t!k+{rArl^Z?;m~8KvM#^hs;=nEh6H z6(a@Ja38;i_!<0ELwWoZ{4Ds@#IGKHjqq!ZUo?Il@au-(D*U$K_bqfNYWP|4 zYk*%<{95AoGJc&aQk6Dpo^)oI^HLjihf(e{7Cn=`u&MP(qIPN{pWlY?y>Cyf^Ljfq z-RM7lxYpjAU%)SUv_ ztJM{EHxa?Zr&Dp$?=ytjv{$3-8z3vOj2R}zu^0}F#Rq{9D7CoUl)-p%N`EfIp9wI= z@73fY@!DW`XgDtmFB5M?5wE^O-fwS3u!JdBn**N-dpuOcCME~toqx1f@saIK z(KI|(&GLzOYM}pO)uz=-o|Jx`05^wt{RFSnmjM#*A=e%SVuTVmKU;-%ra89D{x677+=MWOx zC*&0xzPPJygYNgjuDZ&)p8NxjGWtKe>*ih4tc%@s=CI3WX-OxwS^a!XbD*g}!+30n z6NiQAJL^tp*33Pz74yU#=0Gxz&P+X@Rt7I zu!%#;u7+ftqgOhsFobZqM5TZ*6;Cws463TSp5dO5Q0qw0{YSXMf%V;l}>F zQ9w1VBZe>D{dvEj1!(*8gbw!S)k8X=+wx1Gn)adYD`#pJu7)fT_<#22{j7%xBN67s z{dvEN0N9^*9f+3jerM1Z_UEAxJp1z+3NzShcMrPSPCP#dgrmu7NKiV3n)IeH`S^wX zd4CU({WYn%Nf#~fvD#mHcU>O1%w=260PBYdoS$M`&)|v`}8WFpl z4n%w9^wMr>NIkm{V_V-;fu3!BS5ATOw!UYlDYlzhrNWz#p)Gt=K!dxfVI6Eb9f9aw zGhPwrl}*6(6uL%zFJCoyYkT<&!Xes1130uDurLx?KnJ_2U8JvzsX}+vVGO4w-PJnA za!zM=b&*u3h<{@0Y(iPHOHxH-HIebZl^?306V z5%KC?pYw1O#jC?A?yrp?(EKBo1`SZte2Nj*tpRGNsqW&tMfjW&mOy4^Skddb`>ntC zBF7+pusS|)-Le* zMF_rbO{u=dZ_x`J>%*+>>@_q#LG5Wjw1oW}8Jg}c56{eq)ogirqTq`?oa0XOaxqQj zPV({;!H0W!vf%wZJToI7ytBKDS5PbzqP%>W;GteFcC)*KJlv6?CCGOPeJ})rQr}N$ z`49}Zik8qR@W3MI*&G=uuz?Jl-R33qYzPW9YY89`ks&`H!MfK6`%_E(7<;<+KK-rR$&4eu45z!K;-w<7K{k)g3Yp z1Bno1CX?`TAb*ms7AwdgCh>xVuv#oe!0yZ?y4q+##xYqY$llvn(4bcB)WwtR%#2G& zwmZtpwX!eGR%S-9R+L`7yw&0l=(IUddaC0rk3f|8fUT`gZ zq8?u3fxiYENC{+m& zdQo1zYPz17|8@5vnmtObtf}~VRovlP)UiS(glM}*<@|5n?CB~gLgmk;bi<>v&a0BH ztK1c|6aGoQC2*o59$h!8nB@8w0p z|B#oPh5s%u*K*#)YcEBVY?PNG7m6G`SF&1;pDWock)R-NNv8Z?RWj^AAOwqQ^me_I#}ryaKJA z_8n4!{7nT-Kg76OY2Db_RTr1EN`PgXfJ?| zYwORrvv_XiTi0nhrngCVHR5byjCN`D6NZ^ESkz|o`FzihSt`eYup<}Irj6Gn^j~h6vnvR z3jM%+y;pdaNbtJ(_sB6(tzBLu-!*eSZJ($%EU(p7pZRn{kUZFNh0GUyY~^wy6a6x& z(Ihpjd>nG%x-^g8oCK{1K{n2#d4d!QW6ASqw;-A^+dTRWhtnAp&#XKby{_<^ZMrt|HWSJ5yb*}1bSHWFGA)5#eo63MmrF~i zSnzdTu02OA_VQ?9FU`y2HT#!~?4CN*Bk(HZ3WNQ;T+8t-Z=1*w{?GM1y1zGp2_k}B zUVW?J>%80`_=8LK(i~_Cw=R|PSaHpt_wsBJVbX@uDzFOwU0#2!5%%-?7m5;H?De;b z@axh_!>0%yRmYp+cp{~DjldW?oe?P8$@l^A`YdYx0S1n~GfPV_ThzdV8KqowYwlYf?#R#z^t_kb zM6n(6@XU-N(F6|JIlLnyLHMup`X_3A+pJRmSopv0PV*>W4nY`5@^Y=phkJRRX28QU zGr~m#N#3i_D)@tRsy3&Dr^nc-l@tcs#7KwQw7Ir=C}0-kA!n$$z^4V&SK##m znkaB@0eviRRRL`mIJ1Dx2pojRO@T256krF26i{=4Pft@{f!9ydM1gxx)5ii=ou=&q zXP%}r0tX>}fib5kAO#q5nwksTyP5h5ync!%YWx&^EO6B++72{cr-Br`!8@5l_k?)n zMhch>9P|}67dQ^V1ztZ%69w))NgoSbb&|Ggd;^^kIOrtZ6F74N1sw76Vx#kq5k}Vh6p_Q1I^a( zD_W!BdfG2=+z)g^;GnByOjE1k2-s?Axa59$NbS;asqB16@206C(xKy&k*0=E82b?4 zSt}jLp&^LA77fGfPC1VIF3*xA!L8j4bgua)c>Tex?zk6toICb8K70QH(LTq0L3QRL zZSryIDDcl?G(_OZV>ElNTBB>uF)d21EvD{IaA)gWv~5I@;Ldu1C%RLf<2?N^PB&?M zx^x~2bKK`tXC6A3wDr_h@Pq%++w;^A`}zFRu3YO$4|#d4NNC#Te?0wXthkQPd%0Ek zpI^)VrR5RsPJsw*sgyS#4-wr)(5?CE80+d=9$g!rSy(wk z2-D-kT@|L%xCLrt^WK_PW(p#=rP~s1j=fsNI|lo?n(Mj=2y7DvUO5ItyFzZ!nFVUc zauv%zEpc6-;B+6MtYW3Q)f6+|8pgvBQjdl(Hg)-9BZsi7+L%6CUTsS>TSN)AQ zsZxg8sHRhXinDI?_80rQc+LvPa~851;d(-SGt~C=RvmwW?FmVhb{NHqF%>M!)#Ij? z#YCjs>U#Mm?Z{ADOP|PeCqu0!*)CH#huSvsk7LgVdo^yw4p3a?L%7OEkmD%5{kq6ZO=mGDAASJ0w#{}uM4SEi^JkLT7_&t41{ z>)HqX7g8${0gLgjbz!s(kwwidW3f-P9@Dt8^3pUkYegjs)nLieimGL*(ZN?+J|Au5 zF+Kd@mNX_4Z+Yx3>8nh&YR{1`Xo*aDlAVw9jl3n~=#!uontOYxSd;?FN4L9tGMPVA z`_}v+>iJkxW+obvD(%5-9EWg3(aaCgZ+sj@t3FhNYfODXa}OrV(O=*J%l%Fi6?~{R zlzal|@rP8Aj)euREt%p~ggk?43LX~;+F$bM6dm_@|e>vFCYtN+!CQ=IiAM!%v# zX3B3AVo_h#IBoLt*w1h$eJ?I%d5Lh37H)@W4BS{cmGml3_8ABFC*#ta+7Ir0QX-C2 zK57bqNc`b7y5>gczkWgpEH-dI-KTd)T9o1+CK{?uxL5K`ECO`Qt%UzjKWe~S;@Lf7 zWG9l9i)EbRm?hI-?AO6jOVe74B~|#0Ye-W(-HA`ST5U>Z%ur1JjzsJG!8Q6T`Y}tb zXP+*ngK;zp+MJI#mLDqvMhg*+)px|=>)G#W$13HEyad=BW}8Fe)q<~S9zVDaBx1dY zBP3F{GbLA)b?FICvL-#2)U?!I4FtoIS78rpRQ)LVV>M8E6i5p{Rzo@;{9TkmamC4P zknkf2J5sIP1=)4@AGDR^A!%!&P+}Qqh71OnPgucfvE8}k5MD|_e~RB?&0RvI=3=LF}}j+(d*q-*NbIr#Td$1k?~0z zP0w!lLw6W1G3GPwX3S<>$T*8}G~;WGofsn+t&9relW09*w;6xZ&~7lCWx;O7cQ}QK zj2VpU7}v7ihm0REj%Dn}xR3P<7~8Wvg7Lg4al~)o)6aZ~28jB$)Z8Iu`5WL(a;k#Qg6dB)p} z#f*NDm9_W{RU-9>LmAsMzQs72@dL&T#+8iQ7{6gW!T1y7eMa9XJ)U63>h0{hAe;s5 z8Q)|~V$5P($9RD8EMp<#eMaAw91&wEV=Klt8Q-(BBaLw-<2Q_F8E-P)XOvp$5d<+> z8QU`UV@zaR$hevDJ4X9icKpFulUwIs+y)*oR&1w7Sd;6{zug^HInXcEHxuV%Y`+LG3 zw;8W6o?_g`xQ%fcV*(pWVm^{Fp0Oum6k}aRh4G09FWSG04V`B^z_^1kn=y-V4&x-o zAVyD#d{?G~vdVPjS+Dwt5xYU)JHnAuN7V!cWzb_VqOR`m;e}RzO+T@^LBk@(LdHDC zg6j0zane_`83uo)$BXE|3i2skiIzEx~cycc&l=V_zSmpTDvZgTHta}8d`U{Vc zr7P590Z#(-MAXp}k==-{tWaw=d{$Phdt0BDl{@RM#7dgoU#P{B-U}fm32AynS&Z59 zbY94qyFllLbR8FD=vctGV4=?Q7-K)wc@|?{md*_y>ln94L%ShMcNmI4(LJn-b&O!l zV)XbIFfU{bU!v=K{1ccbG8UBacQH3C72%M7o8~Z-CLo!47GqHv|Ba+an8#>c_F@8Z znHMlxKh^!S7&kKJ2^8gTUjCv&IP+M>1!erRnddQ@SG*WLo_Pvm0b|5UUC+jt0L1Z2 z2E#@ccog!O7chpe(gS+@W0@x~<}vzxrt4W5BN!Jjdi-;l=YOW!wU%sHtq1fdL^HQB zrj+r|V_x8qXY1i(850;&81u^bhp%D%HQ~Brfk(iKIn47J{npZz&s7{+p^(}*unHx% z4fLhP>(ujc(Q9=JHpY0y(TvHA3mCH*a~Sg(Q4QK3C9YCu(8`wrL!IW&)EtS5H>wfN zh)wFo5DLy$vz?cYAVOzuzS_~(?h{z1Bhat-p+kmShYgvWxuE$%3)gtY%Ajbq=jyuQfu2eST<*&sI}fRdr*|& zdlQBYd2fVu{E%@Y42?L>(G~URA~;-ujkDU0vpP}7IL18297Zb_MLR1CB0L_9ewF^; zl@iX~d(H#w$vv%(3}C%DuDpZ;&b9?us!fGwurbA8a5g%tDi!S36214g-qWkfYS7J_ zi*&w`{ZsC9RX%r%6n%qvt)3qbW_5g#XYcXV+F;>f9kY+>n3$vK*$wP46l~W6dJK5( z#kod3LD`(3L{5NtsIH%w%@Kb7V)#OiIPYsc!iYmUrX1mfd?oZ7<7Tg?#E{4dDBP(l z7~a>HqwVBzQ!OZih0Hx@ z<~C%QNP)5D{&rb6o5f8qkujFj?kVwX*2^iQmsm#6s_6C#BlQCEVB*U!3P%|6Kf=8~Vp!6INmd%w(cGiK$rC4H zmVa6e=h&sRU;gQ*?IR<1wuh|!$dSLb|LDL!;(WUfBS+S!yB*DQDY=t*8P)7;4tDnI zZ1y)&Vi$9qv#^UfR-%aR=DgiD^8%ASuZ~%3+Tt=0e}&9(ap`|`b$@;8#$X6%u2nfS z;+TsWC-E209P2Q(zhvfEaH;)eGxyVJq#=g|6<8scc}3>=%*7Ot_`6h>+P-4`(Voi* zEne@8HY2z$C$*Jq9ew1EXZcu$e7ER&v=Q^#rS|R zc8h*feVOqI%MGD=Mtm9l82uT|8e&Wp#DZYPnjVFVx?wBxP{s(B$1{erys^ihF^Vyo z@nyzX#x4TIn9jz66gJqKc^qRl%lk2pXB^0wz&M<7G~;`WiHu2%$&8m^*De}t^kqG# ziy8BN)cFinOkqr8T)?=HF^h3A<1)sTjM&)HWsKR38yRyLa~bm(^BD^m zFEP68>?mgRtIsKB3}=jHv@ymp4rCn7n9R6#cxRP;Wxbx=g zW~Ejobo3o+&wZ&wWMm}$J<&YHnK;RuJJp`JN6)Aq_ZuGc^x#SCpIin#J^GCQ5#HmU zQYM_o4)^$WL)!l^;JGC%_#Xzi%Qq}!|Ex0T@n6RBm1R)3kB(;@d(>>Nm&6w49s@bd zJ@Q=Uo)Y@bqhF>3#qCA>9b*5*r?`7zd_CG=c*D8=j=55Kzls+>j}f|*bKi_3T=>sv z{@dKVoSkp=i9B}^aix-Wj}^o1kyFMGOByp_Jf2(L|MUcpVjj%=UFOluJ>?e19Ir#PztPO~M<+Ct6c*ssiT0Px zydm>k=AQa1V2`b1U=lf{Qz3Gz%uMLLBqb2QB8+*gu82 z=Th3pTzt7!{N*wa(W#+;xo7lM$lL;d5x=2`1(P{|;h~;l&ttQh`4slIGJl_W1oNrP zZOlERvv}sy*guhZ1CHO2%z|WA$YPE!C~JQknNMe)%e*G@0_HQAyO?{%mxf1rhVEQ}=f~*JXl4vz3}&qPBGxomSrA$V!=IU{QbfQj0fBmdpHoB6gSEbMY(&6d zqn+ht?;GMiGa`A|h(vLtL0J@*)2Bx~-CPlKPsd)&-17+LS6!(+N$9@rKz>^?9 z;V&*okAi=h0Imaijy(bLzR?@2hnrd7!-JT6y2*tdUepgRqu-^yS$_ue7^qn$0X8TI zKaan)jDKhugW+ZT8<+8qD8tYD@-vtxf~YbEqRa4?%kbDTyh|BwE5m!2;cG;hR^#pjvSJBKp;p3TeKVvtH zW`U>3-(&6>4<)}Cz_5V1CxKg-dpf3E=AJ6ZXYLu|USh5%2-jaR3p_;>TuIMC80RpS zx#wOxx{QAo^OsmZkGUtuh0HxA=I5{5uPgM$^&i0kao-bv3CtVm)R4v8Glb1y?&-So zn0to2mzaBc(y~3L>p6W9zri5uDe^>MW$tNY(ab$1gwMum{eox6TQ-8SJzd$3>bc9j zwHANbjv<&^wWnVwdle+h&il~;N6NR&s^}Rs>fPuv@L0{H0cU?240TPPR1-$Z>IGMF z-j5AvFFRvj2`H}QJ9*-yB#L?~Ajz5YRzN`|dtsEGLAGS@%uE-t-1SOjtpGf7zm~eb zN8Wph{#M*tMtv0rlp98Mv8!$s|BKo1#w&V&KNv6F(|OQ+9T(>720RgL`BaIe*~0>Y>>i27WNd*R z!ov;BJ$f5C#xzEcJh6*jSxJn^j58Qh7}FRR=x8@AWWi#_Y{rd@xr~Px3mC647Bb#q zbTR(HSj6~%v6%6RhT=-?s;AtS(T~y07|a;T*qG51K@{_s8M`pXF(xpMW=v*G6DZ)#hCOe!vkQdy!2~K|~K76B#!$7BX6UvOi-1qqUbVPhiYuEM&CyW`D*U zMspuc9%)F>9flmne8xh?Vn*{T{~u%D0v}az{eSko*@R?s^B@TjHW(lvge3-yfS4d+ zK!gw*3~cAx@HNsuE9~^p;6)C^zclo9T6~R-jur~9zIiNz?w8w3$~u%HG-|@<08S6 zr4UO6ThF4Eg3BblL9jIiIajbO|Krpo3~TYVS+HgFY7xvMKmWE1w#)%H3$`BE9fCtj zn&=L}){LQ3u%02{&h8Qh8=d&qE!cYE_XxJ0_`QOyDMz1R%N)=z*fM$z2)4`zgM!r@ zh#wM%g<;L=J``+Cx)Oq?s_YRR5o}E}lV`rL{+8UQSCmc7KconUrCBV(L@RNbt1h1!h{9(wn;pIHv>lDVx z2tE@6-8KP^Ffb}SX$yw}D%ztn$nhJ1YXw^wiVC(0*kQwUJm2iLF;+rBzYTK<4%;x7 zkiMU)5tRWOUV-2m8(t3_v0*M?n+-ScQ>4$vI2Cx%hPg?GMqzqVXJ8qvQB@wYVa{-^ z4Re8-ZJ0CAA$TdBLUC@x9vg!d4B9X&7`9+pom44d$!WSRp-WqVmO3iD3ms=X|-mmN22_gRV2zF^my@K6>`viLg z4+yqQ0fT}qYs+E5evwZI&d@kcL&C6Zl1ahVN_tpumMEZCb%rfFzF)BQpbrYRp6f+| zt>=13uzrl9Z7PIeJ;=j?^CZCCfJ&ZbO@d-8R`@q65J)YOmMg0DZrfmNH01@1bRfknh5j?wk867 zf~|=_zu@T-e?agI!GnS=r%I3k#bMgBDk zUasmNjHod9;m*Hi!8~a2FD96WJ^r-{=0SjeZGs~jQiot3xB1s8_$&>nOK_YY4E*aB z#zh)Zk0l_uMs|7dzN7l}O1M*SzhIZ(LBVdp72nlOqz^sfX{E#C#2=L5Us59ARXqJW zpd4HOtKt z+$Qq*f;$Bl2<{eKD7cp~w||i^`bD5v@Sxxl!3n_=1SbVg6ilz_8k;0ID7aK`NHD%6 zs(xW$wZabxqgDj)QBw7b2%aK1D)<<|F~Q}6+XPP)+$ngP;BLXw1^2!tD|~#dPyPBu z0N=h-zd^yr3Qh=~B{(T~wqXBHbq&lBTqL+kaE0J%!8JdXy@+|js273xf*S=NFSuE7 zjo?qKBs z@L7Trg4YX93cg4%4d@bICO9Z~v*3{6cEMr64mBge{Z}gtw@gv2Rjf~NM8Y!!M+FB2 z#{_2yZWA07+$lIuaJS%m#(e+x3Zqa2`URH=9uz!D@Q~nHf`!S8$f#e!(SiVGIgmq2M9G4w*#`3(gSie^b{$KyZ=ZEWs6mO9a;lUMM&s zIPQ>HW>gp%f@6XMg4+a_2<{ZTP;if6M~HhA7K?&2LJHD=;DF%68pmm&ForAz~_>Krf1pi!cRPZ6eF~RQ& zZWH{3;7-9m6x=QNfZ$%iA1aJi?H7i%LKqbMmPAMh{;}Ys-~qwb63ALZ(XVxlJRspk zf-e(nt=ZHfk9$>E1TM4$WF5^7&c9j-m(D;D!PWu3sNfg0_=q9EG8D8*I2&I0XBh(A z@N@dqAp+K#r%UiRIS@a~QeasUdL&#rBUzRM%d*fX;g9I(G$8m+!G{Gew^o%y!uWv* z3=96gU~7qEE$aLq=_>w~gj=QxpWq@1x7KKu<-#xF6%zhkd8$#3Fy0n{dcjW$ZWR2w z;AX*h32qhqqTmj}uLuSt36y z;g)Hn=qIwOw5&z`k98ZhNQ7olAX6bKlJI9Fyh5;L8VQR0I0>(j@YRAX>s5u|`j6u} z!A-*G76p?9H;RG{f{P?PTX3_4%VU>95}qUBtrC8(;10oO2(E}rgrG3GM1YOx{PRl_ z%+`>4Bz&vj3JISpxKF}c1;-?Of#3lNzfo{JEE&iZhGlL#N$_EbaGT&E!Dk8%O9EAb zhb8<@NWx_NQNz&>#&61AmQ~AKOdOWC;xACjw};oL<9;XLXm`@ zCAdOxm*5(~cL=T*{IK9g!95lh{e{-^zgYwtMIb5y;{~@$_}PNnexftHNN|UQ-y*n6 z@b?7w2;L^RPw+15`5%)6i$!2S1kMrME8$ZFAC~YY!9#*y5j-sTCxZP)bcTBc7YXiD z^$%u+Fy0h_8o@sk+$tF;5nM0f=L*JzUTq=%R&b+)zbZH;_+`Nzg5!@1qgxpF3vQDH zCkXD7@STDO1fM6k<|jG>#|b_x;nxc8mhf7^LpnV54n8WFfaaJ?ir&%zSEU9h#I7ZThk;Tr{aNrp-V zH%oX_a4qZS_OBL3s|Y+KxKr?Tf)9(r>4JMC{8GVvg0B!fAlPNa7yOCfAz-zt>=eeZ z2<#T@|Glo_y@HDb?-5)fc$wgu-{-!Nmu(4M=f+C>fKxLqpX6Dd7&{LqtK@WrO1$_(D4!Q<(-LW~;0=gV@ zG3Wx&TF_~rI?(ac;9NK>ht3791+4;|3aSO20IC8VJ1ghz&z%>Q^cLy2bUu`8$7X#D zw||?tv(lIlI4h3^(HcGf%DuC!*u-~l+$Ri4>u`aGZGOfv$Xh@D&L#V6L9B!DwdcI? znOzX6|939o<5#RQGRN=~0$RT|_-ZFuOw5VE+w3&M}7EAg5AbcGl&( z^M-73BndM(%b1kOks(O*pIpu8T%Sjg|Kt+B?4t5`PM+stKhD!!|$1v*NRVRD7$J6G)=||4_^Sr%S-K3~2q@;FnS$#YrqZ zW-W6R-E5(AP)C6HDvi|>&Ka_49Jcv66_&StX?Ywa$MsbNa)V-sQ%?rrOE{|9s|-&G zp!Ms3zZZ0vc@7qda|~-Jw5P&a>_2+}na`<3KwL%kpS=Z{&vLb(|I&i_stFN3B8Vn5 zCmddy?a!=MV4Pcu?wxF<9NTfa{D)5|ic|G$)l)kq@*&&{I*Aim7Q6~w)I@vu#6 z&}q=V0~ zqpLXj#w%*fqh3VAr^2|+dodO*wrNSgKUTRo+F0d+DmBI&kBoUz5Mfag*HHZtBf<&y)xH5zRRYj4}QrVk1;Gh))>PoL}M*P{9eS;8iO^s{{gLEJ^X1( zizji6vF?A?B1$_@k}g1e8ck&rN^5OO2jCxFcutU`ja7fFN;LOFq{wIRH`7>i=mcm6 zw0`yQkENNTjis4YiRNL>Ghob@%Ck-Lz<<%q(Zl04oZN``V>NoSEeh*zlXONu5tB;IeOvQ9 z^D|PpEVB9SvDt6WC1UGbCQioi+h~i`27g*sizoCV3uASq+6+YB#;)7i09T!w1>`mcY^7$uzV*V0+6jnH-dUp4z0lZW6HmZD zb{5MfaeR-;Lwbd=PD!E@cUCylAbj)=om)K<>H)1^EBvGGM>SG&w6O}$szh@?L$&*~oKtD$jt{uND5$HNjyVZ7j{KN;HQz zAkTpKHr+^`ZJLMwi)M~CmS$EZn)@MApMyN-r1A`C{aWE4{T$~ojy9HNRwbHiFi{== z?ADr9J=-)7!#~!;n4^uQnN?YNJ{x%sBG188o&l|2EBs?=?nkt-G_xwvJOq&eKzx`- z)$|`gPj;%wuuu zXTOPAg=lO>aT0)iS|iWF zmw%8+{{RJX&ga2`EP4|33aE8_R-6u(X3-x&D<)^rPSD4ohi7EbUqOlEvuImW77bnu z|F$gp8|Y7sIrJImOVB?+p0jf(3seZ21lj~@0bK`*gT4j27xW0|8PI;v>!1Ya4`;*R zk+~j54A7~dyFoiayFo93ehc!P0}BhN5p)5lcw-LXQ{B|frTk?kMVDf2Fd++TCZg!1 zEVMNE(|}QY&U7v0Iw$4ez9nkoOye5d08*(g zonDw`6z_6nE$l9X^#zeFUU@i-m#1MQfhA{zS2dSv=jKpyj>T)GFcMvf?yP0L(F7GR zILC5m2oKcCOPe;dY$#XOMOev*?Vgq4@P!v+XC$;ON39ksPhQhd-gt5yN30mdV`dmU z?gt`wGRxJ2hjLjwwYk`s;>B5^+KOmSSGb-d$I^JqRl=>Kc+6}Y#p9Gaz^lMjXJ)y| zOmDgz(tyFUFO9iUCDNbHQ<)h^<3*I*Ab6?LMH-PF+T31Skwz9AO6MtkN#?P^Rp+ol zDI87{Y*2!9O%C3PI^O2Rvic|G9Sdb=`pcg}9kqx)dQ6~Xx|NVRzs!+uYtPE%P2 zLoUJPTZyeLN#6)orD?+mybqgHl^d^8nA)%=d;&NoO2X!f6~=cK%neYec^?%yE^}lg zeF;y@9d(7Bks!tpcdHB!IKAaX7^9eBJU(G-5GL*%)HZ#*_k1XiV=iG*A|O2irFR33%gMs$LTr{LKKat0D13|`(fbe_{$ zPPuLextHL+M?!BQSmowWvH9j{M%hLlkxmC4MgS*f$Bux90!zFJ6bMNXm3f@xX$epg zyC5fFVIX-q3gLSHF1Gde7tBiMWe@dK%F z^P`o8@2aX@!)oPe7GM*=8MhT`o2 zzf0-DE57jCaaugW^5#e&4+&-vr71Q4e!4L~Uc1Ld=Ym2LZHYAa6>kgpvzU*HW*Iw9 zi>DLOX&|mWthm5Q-n*RPP;nMalxUO_{dD4i097GB$29nlAj;qi8v+zbz8+-P+w-Bp5<&{c}zOar+Cg98`~s}cj|gw@835<1RB(?MZ`acNT6 zJbyKsJGj9`Q$fuVp2Fsi)kf(l{qGYse1L=T5^l%E6VS)2^C|0Hf6N#4sypdZ$now> z#h38>3*-#6yIfF)zFU^w;+KSe#xDuZHkU>b*$K|aj#Xvw_#B$W14!-sT6ilX>_p*w)%FIaMpf)?aJ}Z# z*Cl*OYNmSugO8n$=*v7M^09MS+k9x~WhVh=%FFJ+t65k2^Up1OrDUGF{ErzWrPG>b z&YV?Vd2@9jT2sB?YFEvs>Q&~$YmDMJ4_fD3iHt#CzkQsiGK1cAKv4!fYe4yG z1m5pi!1Y+?))$w)Xy$&6_Ph76$bR=cr@l^g>FW}8@tQB5X;e+-%yvTUP87D{es~@S zxm6m;D)ijU2BT~V3k`z*2@AasPsS93vT>UbwL4YIIOO6|s9!Zxe}QVH{(EsTw=@{j zPGdbah^q9|!E-GrsPu?}e%0I#t)^W!ce`_{Qq=BzPOd0{`I`n~ZZ#|1#|j00vjn_RYC21F_*427S(gi@?#A8g8TSvc$z>#71N<(c1z4ntOnWR z%b?;ZHQ@PJ+W@qwTI_*>8@Ym>h36HJJD{Sl&@t6oBYjDu%2C_fNI*VM(0>OzlO(D_%@wyN?nxALVuOED#@?U_&W zeBiOyy|7X$IZS zMJR@67RakAMOSuY6GZQ9G>%`+qMH#q(*e<|;du(Ao2<;OI(3=z+Eh_?>jca6-B70Q zl-;g9P?vkQan=c}E^E4ExB#9-pe)rH>vV74uQend;VdUUP%dYD_u0m2D>!;5Voc%O z+z-#YAf20br^-#gsy6f-j)*SJmv*^0kqxe3zBkSJ>y0IASl`47=^azyxfo=q?C6`K zE&bNeTD2Yr?huuT)1&Tjhx1-s%{SH?m2uX)3#yiIM}G{SX){1+#ngF9FDBpHb^10$ zH7KNOuv^tecY#W<`*-@{@o4!aHo=4{VqQYRoGMJ|GH*Y}IDQ^aHn!@KwuUg$j(5}e zmMlEgGAU8wp!^9AYD8Ac5SGH`f6g&VPvSE5A?!tjRqTi7GmsvS8P~r(z~XR<517@cbTB6=2ai8Df2^8BrI^+^;J^Zi4-qS?5(n zt@G-Uw$7_Z+B)woZl%b(L|sIKYp+t|`x7pwS|hlnNn|`q;eL+{-5#xIzem@hSGR{> zD^jDyj`NL;i@91N#~So1SIgP(Tn^IrQbN^4yHk~=+i0T4oX$%3*)Hd|U3AFroJOx_ znw1wAC2^k9bRfQZ@Ew^%{_10>?ExpP-{qtZs4JW5r>U)3H0kI>DmXZm{0GWa*!LfD z(xV(c*-MjqGN`aCKp7pG#QaMicG8bH40=an);kiH7kKu>ijVbCNy~aFscxha$2!W4 z=%;J_EQ2257CQr;pMlC%e;!nKNarT*gq_M?COueBA9m|rv0F3IzARYgd`vx6cB>9L zgCw-fxw!YF9D0bIaZcrW*nL~MP;OokH7-&EboFcu&<^D0M0idCsR8;gQDgcnZjlyn z)XjH2JSIpF`R&dHJXR$)vD;e}ecPhveiVxC1Ha!H9s%A$?h^2GHblF76vi z)k7f80FhZRreehklz42OmwAn`=hQV;x|vSTa5lJ0z2*LiSxv@bx-{R}kY8F@UNmuH z)0D;JxU`fm9nPQ)LjgMba3-BGkVVV;#!+2QHl5IwLvuTVxV>_zwAnz9pKhMiWGq*u z8$yB9eEf5G>gF0$s0OKa&l1jnL(d=DJ$pH)n3$-G{}k1;9ey=zv}B zQ&d6Py%qP-U$UJQG_J($@L^_}z$iw~y4~x@^ju`*#W$#z){Ez1+SEK9)73M^>|VQ& zvyFUbJ_gTIAZ;*kIQ@@M!CdDC51o;TU@FEN=z;2S6u8S9b1`4@0i||&lp3MK+G1>91W30)14C>-HW<&Wm;QO!|rjYCe<~5bUI!tc3sxf@4 zOZHBE`AT1|R`tI>Th+fjPueq7{j13%9x_?_v7*QQ_JBflIr@^VFKY0L)BbTPjXKvM zw@y-PbzK{N3mM4Vt1pjv^>qnfkQQGYzQsx8bR$Q@ib2QL7x!Zs3d)m3Mn;jb78k$E zOoU*5-0xN?T4fEYzP3O3+&HBnDB01ObnoSEDT&pI+Tb3QgWyzkbJgh>mO8gqr;|oS z=xpgr&Yre7*K*E0r()+6=qkvO3|*`Ax)w*5pgnjzEpzVFmwTQ1x`a>l_HWEeUHFbH2|1ip2(@I9udZ5bD-A#1-&-_)6hpU1)j59dwp zS#fWMGy7n0qp>;vSy$n$MK_nMn0QC&#!&5)SIS@W2A`i+UNLdnn&8vZ!ZROpS5;R3 zzG}_<@|w_sGG|p!uy)bP#pSi3B_&IzEQtjxmPPAlt^9CRd1T_6Cb+k+3N_4Hx8vOM z^XEsOKeuvYNmIqecWo(;UAv`ZYhz1I>$GcEZeP}P!?T|4p}m#+E_L5nee*@mj`g?C zyrW`AsI%g(L(Y!P_bk3|QP(d#JI~)W&(mG`(BemCcpk5ObbgP={bb+Mk9l_1bo?=M zPxHPE~mgr{S+*=6BBlZ=DOJYBXJ zGg|*%cg(UU)U$4Ux+5R<98UvgxnB{T_D?X6S9;@V3~dv*d(1&LiU>EtE>v+TJljB6 zucIX0RY?qTwSnuM&NlbwQ-NcAnw5@Qu@Au&`{8^J zGO|ON~a&-}$tsr**8DcZcTjrcC#w0a|>jHlb*CWs2b}uk5 z*kTk$t~;J?cj zn9Je$5;QBja|K$apPeK-q0`_**lB~arXSBKN7e$qv}dc!{;WledaK#(RBqxe_O~g& z!>fYZGu6eRF9`&djKsOfJ&4g_zi%nW>fee5&9gD%tV&-0@gSI+@Q{0%_j0HI*H}yX$=Z%!9kUQ^1^1YF@GJr;EBrsMG$x#>F8faUnc zdYk1ID>F>@~W zju_G{F7Z<4yRsuGdxhJfVk7Ij1)e)Vs)?4j7?ahVu@4;8f-l4KI!NCck@*;jzS&|- zQs($i!LRrdj-w6&S@a$T*ZFN|3g<;GjNP(L=q1kFNuY@+CXf7fTs$j-CR9ghf}@eL zl7WQXEFXc|y~uyX+3>_bepTk^{O+oSm>`F79wj=zwkGKFGJ>y zWH6E4k3k3bBR5!RiDZ5TJhh-y<~i>^mHELcbHz4e%HrC~u+a!w2{~1O2Cu^Z0I!jG z$PkCyaVn0vXPZ%?j2j0atA^^g;W-FWt@`V2#xWDPQ~nE_3eU-S_<-C2Zigs3kU8NR zW5xo`^iuE_I8fuK!?O*fEv%S|bJyCfR|a~GUglCmTM}b|dBZivOqG5QqHIN8E1rd? z59AEcd*=RYjOl799Rg=3tN$FHi#e?@k6E3((8`4ccJb`#ZJz z{aDazY8t*luc><(xWuP!W)OuUX{+r&K0+~oy(o>|6r2tKEZ{@ zhyOo;T&I7z%Xzgk>p$7K&MbI$JA=bUu@n21&g-4||0*2k%)j4NbZbfH#LwO8^0vO* z=`NZD=Eu&`S)tA;xh{GOeZ_%qJLNUt4KGYG^S0(B#`T+lZy4Ff&_b*@Km#ay8R2Kc zdR=>k`S8-b0##eHPJ#8DA3XEm*|Q90E7koSdbK5%fjSQ!22iS-rakZpBWppXo6X_V z_DL~@YNkYRWbWYzj!eB)b7bnZOx&lY>|&Z|&-jzlnxT4u#N6*x2|F@WiVnSYZTD^E zP6guyU-rAyr7kVSI*(4#ySQ^P-WKbJb31F_FH)YZXtFp8G|$KEI=$8{%bMzESeB(S z2+iEE(9DI?Q_-GoC%F&YrZ7!$(PrlH;Bw@fIL76o zd7uu9cl1_;o50(}Jah#PPhlQ#Mr4i~5lT~pNSydcV!){knaj2tr2!k>vfU_*r!Xgq z=Nbw_C=87%jP8sd!+`VNmoH3}^opn8836eMLF_>}oC|nSEe7{G@AJItWV}in zoX%pO`@z7O-bdWm`<-P@|1_#~7Q0jDQIgQ1=8XS<$2rlNn~7)E-qbUThp+tQ7``UK znE`UE6Eszk_sn(I8&i(u@Cev7=fSxcbPdQGh~SA(TT|Ak_2sUCj*6%w}qo@pSK zo5a`Lw&Y5jM|5RjLT)%aynhe8NR{qlUQ1$Xn!i;q>FPQDS~y!kaZr{@JF3!-hPQFj z(Z_WLy#8$vfa31c@j|83eC7tDEJqapY*lN|t}uUdgHaq}<{+3A@5A{M$e*1!4hQDu zhj{-#Tx}M`jq=6#|LgQm&`}6**Gt1{84)1-Z+3bKWXYtkd2O7ZpGax*X-J7D`d7o_ zK1ikLwZ&fS6jfoT2;p~t9laBdbB`>n{1jND7fd}I_gOf79IhM6y@Iwt1r_59mgA~n z68{3Sn8dV#r*5UDe8RtYr{8qD7E(Xrapr}gF=rkJfbjp`DepzM%s8Mjjc2ZEljr5q zl`xk>N5$#zG=S73uDuQCKkzT&=`2tbTx})KQ21Q%He0--0b-m0wJ{H>?AVdxr5r4W zbEu}Sg+uXE|b@;v5K*A|Dgwg0Q)oU;XgzVY3yXi2?E9*%HPGbZWZ^F0GnCS$|K5bR9d_&({dBxuLQT@Zx3{UmPT~OQ`mg*W^}*)IXE;GcGDdap2Fte5gw1e=c3y|102qk zaWG3^&o5ncSmJPa3L_&&xWcn=gP<2Q1Sm}hKh8LOj4(&Gm$G5^$gT<`{RwZZEa;9? zunER09I9*k1-4E=4QE&x2`HR{Reuxn&?+3B!u;F}pc~@g-&pZ+(yRYX7rpXU%1~p+ z4g;0kWES3POxYO1w|KYW`@2a_hfgYU_eR0e_)r8tE*_dIrkbPkH@Ty-!zuRV@Vg?32Hu*%ZNNxd&$l# zo)(~d$E0*atK8a{cwk0{+jy%xswQIxz0`{@0lx|AV|_(1tiq_6f5bz<13t=X!Lqsm z8@AN}CG+8I_c7G35+;i=f>Vmj6&=QuO1jBS2S9z+klla=NaG3*-p# zxlu*OSy~D5WmoD5z~I^BQ-(~HC~Ca_k1m??Czy5DrdlDL2P4#ojJe}Bqi{uVCwdYn zs^Z{jW5W)ogPc)$-c>tk@IE*FFQ}7cxi_}B6#f@@U2DzHpfAvEy6F(8f32B)J8-1S zP2UD3)|!>KcvgyTrE_xNzDl#c- zesH_k2>A7nGJLYT;OK1fH_f5idtCH9XdlPnbD=GjICc?Myi@MQ@=tWJObYX`REggF zb-6Ts>OnVK%QnryE*>J-1&T{OIQ3mb`q-l$;Cs=a>gm-|N{J`jbnPBDHJqg@B^~2- z8YSc4il}zzM!>Mu_N1GpJ>?doNe~gznC4gC!og;KDDZ!bRf#s$JEHHnDEf03-dnd? z(?^4iZu;5T_6b-z&%slFs8{zXj_XH%<)ZI`RyOL4+p(iGK&91rRC-rQvM5n#K68gL zH9#M_s0Gy7Xnu4Do;K`Hg1SXP3Y#V0#*{rJ&k1mIOh@4=@M?mk2V>H40UQv!*E#xR zCl|OgAA<|uD%F_6R>}R@;-m1-@B{-z&t|<`!=re9Y%4W*kN3Dz`&8N1O~DZ zrRG=PHm30CSh@p+O#ItL{|EY)N(}S%5p1sCVU%p5FI=?kZ!W4{FD-$apYeO3rOZQD zNyn%Nd5WdQ<$^HZt`Bij*!*Y*R+H3%*(IpYN)IC{~Ep|;1on2KOJQtdOZ`VK6S;kVs%H7H_5YRFRfM)0B* zuPKul?*O$}JY<6Ly`T=}p?v9>DXX7yVz1e?=3 zjhV~3pT-UK3=RgJD<#5^%=p$`+#Ae8qUji=$BrYRo2BBK_jTgFV*_0;;#47D6+eXM z*z<4}C%|Tr{rYrNonM)4>ak#ja2gNGOiIn5O z;dJ#bgEkU3A;KfjtPav#&ap41GV{T^jS0$}+69hUp6-UH2c(v#zqs2tv!wGCCnbLD zq<)u>8|X(+ ztLHh`9R}V7I>mqYMXu{wyBGVx9K@8er^}f%tR|p!T~MAJnlXtSM9f!Z?qk-p1sjL>ptv6@{JQk zK*gnS{s%M@N6`2<3!KUjoONOL)v_xVP5oZg5#pLX|qhyAYx{+@M;GdN&)ocRNV9%oU1iN`r{pmd%ybY#j5 zXZeTIPIOj$I1@!v4U5@B62}iSZ2K^FTzp(6O|7n`sg9XcoE)Dh7|iR34I-Ko(YHs# zh1iASo9nzK@I3(1N33^iYj>Hx>~<=P@@{Pf-mUG(gK9IZOoQF-4`9hnm`1HSBzXji z*09>Yz%#dr&(!lETBp_R7elnxTBo(vX=Xxc-7kWy6%S$TDwx~4j3sJ--VSw69-wc5 z=eM8|r5i{7I0-RPw`&`CyB@XM^|_^XZKf9swL@M6Y1f+_4sE=5c=mFV4v$BT&kj$; z?R2@*xyl{(&vTl`-*23v2Bq4IIu-#`Q3fLalAV3x(lJ7pt&j@ zgXhN}eZn*XAq*;2L2OgiITs;@d#6#cgnQwq5UThR4qePv*aYv}CgC^@_sDdv_W|69 zAnUQ1!seEp7@Y>!5&Z*H0Tp@y;8*zAv+%DBnTH&4xE-g(;Q;^>2Es%j#Wz3N$)`Ea zCE5z=QhLx7unDB|Y<2`J|ELwve3|)d@yLlpSAb}u3^O)tH<0f`YSACUan6_R zer;3aCK&{~;(a&?4$op6cGTTSD^U0}d+acRmATl_47nyJ9t7s+?{gfud>0z$azXM;_{0_cdCpDOkIo>E4HNb;+ zC#apavn zm@DuEK#kKTG+PFoAPA540dws`#<7*PokV*<6T#&=PshksgWtw8pMD6&w9ao4y$WiU zIO$l-0S&leFt1DtQ*9Q&HaXFBkbeTF$!Uz{AtN>!eZ(oxGOwDeA2vJ}a+&fkLzyPQ zIUQtVcj6!upK<#CIpPFs%r?q!1{;j?oI!inZ-y$>ZLhq{eBohZ#=_p)h&}?fAb@Kq z9pm=qxxvAdna~z)erKgoP||%f(K{gPCF2xUFB#8EVVnq4=ZbQ0t_Wv~Z0Cw0G> z;j9KZvy*epd%KOv>Ud2H2VD>6W)2F351Frb8`F6i_eHm{SZ&28S>zvZe3xSs4a6|c z)>dPfJ#Du!H=ekJXmK+pZwTY^rDL=vpJBw(goiGBnA&eZ?~wh5s2*C;8MokF4bW!M zXUFnxcM>*Z)iKM;{pLS+8@UUTmty?ggkvQVDIKGdF|Ll79C4?l!p&um7*p0KE6L>fjRuvjD+f74{SOTq{>xQpl$kTwP4c`|~{SD}A?unDR`+eLpmmP%^Tm6QrI zKl-jQ<@n%cqBB4Tt+;7eZWk=o`1xX!H6Q3Uiq*#3$}6OW*Ir>>@F?bI(OZe`0!0zP zO_q+K5jDiG5AzL}7N!ORQW)Jl??4u1w`7_Ruf(@$LLC^b zK~}d;Vb!gxQW%-cc2hR&eq7aI-t+`nRh`1-*2iE=>s^Zx2{dA_L(?-J1a-u8fk)$1 z9P^{cjM5VB;WvYi3K}@!n-#IshsMw~TiU zy1aNZ%17>2zvBNIVbvVQ54NNE#Q3s$FEua^?VgU2WyB}MXPqN)d4L^@cVOZKO3MHg zrm*?h_jm`t!$W6*^n3xzvC!i0EU>*MJq(GD$;ZRTro+MewOgGrRc9Da!dH7~9jN{) z6o?md*lgqT&&)gLYHyq(98l?{%A;PIaReO*hp7=j7lE2MOfAkhW4=**lp4xJk=BC( z+7m3E;(>X88P-UiD9!<@byCcMN!0iNEZ<8g?@0J$$~m}{G7p>ryZz}DEcDPK&_PZZ z@4N(uipY<1lgv94^yyV*)f2{)73_Zoi?Cn|XAu8?Hw`0Wh?k1PGAICebmV08x>IcF zm=8f;JS|=5OT+4!nn7)C9_j@Z@w{ZZm!{)(oq)Xu4~7EfKL;A*{HOuXukf694;_&_ za(D`(HTkKA_=r0p6`A`I0#b>Y>-QK{Ymzs6Xu&NWYPwn%I1O`xO&HlO_0l4c>PqUC z$x!%e@ODW&4%gWHXb{2go|8n8N0I#4G9D;HBSzA{>wJ z%@J(wKzLV+Xhs_ha)*ogHPdJ@IIAv zINXlE7N-R}dCNWY73fLXe@J0-%TpLP!X6Jj25M?WI&8)~l0!KMvQh4FioXY8F%IKA zG`om#*o(4QyrX`4+vlMIzlR2xhw`V%0JHuPJ-nBJGze)>)41dC^ut~<1XxIAf_v`Q zco+{xWX$SPiRC}F=mVwlu7RDfl zJEj7+Qo#Yt%uxY6z;Sp3=m@97@eX2C2hQH^pR}C+bD=r%JV^% zo)k7Kd$Gpq&G68hAS>LCZQC2MGR_;%4jQokTH>R-LFZn_dE-IcH;RY++GOlg_kDY&W?8*lqAANhf`AaBPr@fDYQSom$8P}`X zJU%8;yO?dy{%(9*`dOD7MsSrVMz}CW<`p2zdYZ!KlD$S{Y2Usr53sx1AM()$pf--fEpo)KZ~=_vcPKqH3hTa? z77v{&4XYW8?q0ncz4UL8Jx?}XT-|6k2HwlnA2}#H-c84&<9kpeGzBlUgY21Pd74)_&sANcvqM`l>Yj#Kf>P0yieqCfG_yaO1vEIkMDpujwjd3B(e z=oyXe@f_p)={7VhFI6*F`zUnKL&t-7F`!R^tfTRcmDW*H^RLet8I##kpVcm3dnkaX z4CD^EZ$LUHv(?~t!y_pJ#TD{cTV!r z4?y-_p3cK^$0n1T@1=aqnevhQ{3^XyGV4a%_4DA=g525Nuzgkb!*QSPa^H_`U~j5M zh^VI8z_K$hWE+q^S0J}txYS2yg6tVe=i$+4ld&t`$I4%ZGr-E#!PrVv&?_(Cxu3)^ zkT1>n7cm(y{LRws`t3voWY_91eF%p<{(UdKqND zMbmkBwAf{Aag*bHbRvcnd)#y$3N}7&6UxUfvLxJAfb$3-d*pN;c027dwpt<7N(m@! zNB}+q6uMd03WqBkR}2{wz#NH)=1)^(EypqL45FF;HmWP6^RT3~$=JKXTS!m!vqSKB z@d=B;9~$`!*)n$&j0)}~|K^Z+E@uTy#Q3R`)>Y{ztwXm!mJjyMxW%0OqET=hD_CkV zPlw07$ytNQqhI}NMvzMW%3I7!UX=HQ?%{|J!g=IYgl30U;XVno6JaODPA5CP>9PMDntJ27@T+396xkewtu!3dl%I}vtb>~ylz8{yBG4YD`MPVfvkVRj4FBy|&aP^me6SX)S&Z(e4c7iq0 zS~wwgYT1ddHBbDJF+nMAhLlo#BlJBYh1=40^qOPr-@rN%o_dfwo7N%s;dSQXmyIbZ_c5?lXZ=QpdBw}d)Dqq?t>>KL)Q}qoiX$Ij zVhZZ)FrR)IPb~JgfF4D}GPU%8N#r1#MlkPe%2l$daD*L^aAi^&ONJNQS|*j2E~OpI zn%6w_6{8>?+3lfqp!(Y&$Q$0Rgte4I@%{pSg!w20%h+*RJeiyJ{u#&EL27Z%vvJsY zJh105??0d(*2S{0`!HVpDQq)8k_3bym`9%xp%IxhMaYyrL49yN1BPT6lW}m}>K|la zP5_#9yCiZmbdF_u4e6H#HUUEDM6T|K1^FKDGtYLpXsE3uZ zS*?1!!YiNhQa|(fuvs6PqYGBA4%A3f9?YoYm5z~kD1c4x%zmR}N%C1QIrn1z_bup9 zHHeQsV>QaWw?MVbN4(KE70c-Fp{$5@;9eU?XQMUaDxu zPypWV@AlF@r5iUu8b*y)my$iMW15eqwPM>CXMb`WcmTv?JjD^2WZX;B+F&;8L>hb( zHv6f)9W~kR#eV@{Cb~sR$UOfwW9G#X+>N_In>m~(Fz|bj0Q34mt(Gzj!i?Xz4aP&! zH5#YIL0T!@=4Y=NrM!8T{Zpf=BzdEkns4&bkd>zqY_9*Qaeh3s4P!9qo;#5zZXrA; z88=?zp+}hq-J|i>;^5Y$=e+bF$l9;4V>M-3lRjmdbr+sk^X>}Z6dHWaY&_)aerB9h zLirwA4~l}zX{WHc^JlOrc4uIp0(6grr?C0X&v<7So5z(oJ{pj4J64b6t=^SFYN@SPQ%)H=8FTmAwL+vza#6O@1++&hwnE3Ghh^MV*g8^Bb*t| z-~oKAANV)NdufnvLtK~ z{1l|eXxzPD;~{aIjH40%yI{a;-t>lXLRD~vm)<-UQ=og1i6VT6r8N_`aF*g7n&qV~ z<|97KXl#D=1|DQ>$9d@|pdkrQ!>TY&x&U`W^E`}i_puIS43oMP&s_DUF>`TeAsT)> zc8yqu;|-C*KLRhR;(Z;b;+W5~j$k$nuAp9)=OO4wuEKBPExJL`!QpnCier|(WfWG% z9A5eu#GfTmc|`|E=V3uPB4ciR3&*y4akTZzBo4oul5SH_;jN$J?qDA3jl)xz8)uXZ zml-2X#oxSi=9idXNW9TFEv=PaTGwWcVXYiij$3~qNJd{S zW%L-N_z3IlGT(XID4f;`|1QvzEUO-Dm3VO`j0fpl#lQDoUK;2!1Mk4FoF>b6-Y|xp zA(;M~3vGJ247gJzjPp2>7w%Y)Pv_Csu)S;!oG@NKkUf zMhQ=0^FM>e#?)uFxH{44W7m7=!8q(_yR^PE%yW|#EO~G;zVj3>?FCsU0PR?1e{1^V z^8oZ!u#xX=c-)7bPq^@kL%GLnY*=E1Wp z){6Z+khZDe&L6?%{CBZW7}@5hW{~xbkQ6qzylWIL>&0B=B~bH&C@jCri*pYFtikvN zEane_S~v{(8jVwN%{Sh~b3BAku|5DgAo6zX80VsKkKlmVpiJwl1K2n8Q4&NCL4Q6B zk4HS%ufqqYTG(!!p~AjIcov7N^7@H!*=MjqF%Nm-_#&h2aA`{M>fbEP+1bk7c8#BQ zg6zh}bRM4hb{VPQepKFJTLs#&{w9%iND&5%A>^v!b2t+o#*w$I{t$ZO{0Oi7qwK`k zX=A6Goql!_>&&u)#&~5Cs6i}c(5QRZJoTV)X*_zij~)kgAV76(JLWgDT2VMG5R&Kk zX#Tk=IXhPGVmh$fpV0rTLv4iMD?dDP)JA>O1^SfruME&i3^m91;T0i_AO?np$?79aLwXqZMHUh1QaP1u6!hBDq~7(z2$h}8=+SkF8(R|=cAAHviy zO&7vb88TlvWEAq0_`O5M%#twlo(Jj^Jt=IKyoZxgom+hL8&LjkosJzB=Q+szD$>U7 zg##C)@FR@Pt?yxF*g4NfuYh7!+!1Wd^GV9ov+b2O&9WJOY4ST8l{Wd*7|S^$w#dmpL--0U5pc; z4$(Opr{b6&{1RW@>0O5o0y=2vIEu3fz<)T)M@K}*Xq<{;E;!65jz9O&`=ILYA|L#m zJeZ5;WHDB`;}w4xVJkU|$51Rr83(_>Hb3(+-IUpbw~5eMnO6jAV?I9*!5@p47N4AW zO%Q^dfsuqzS)*}UCix+Zjz=v;l*Z>ugvqD&OCN0pS^uNOjvcf8G`pF(KcajZ^8Gr61zK9NFNfKY)t9r{z=FyzxV0N>%cBKh3Q1({>J59jjd7ec;_; z@tS54<3E9VzGuG2@!0=&(2rO~0;+$in-A>M4&k$v1rTU65W-V+gci2iL~Nk=ihS`5U8v3;Nk_P{7!AxE(=* z(9H!*VRK5tn7OLk3Cpevx8wH_zB)jw4}0k30WTfbhw~LZe#+>A^%vn!gQ{5uI!5D^ z4s&P1SW^-W`e`rd9+6LB)B7=AU>y9pkNymzC!uelpB4_dXhM&Ni~}&vHB3}tcMf7o z!{JDeWm6c#K?mZtVx`=iL20^pIFqn+J}jB3G|iVjHcpI(5*VmK>bw;avEy9)kHX0v z__!zL;Q5$?=fG}a|Eyy8DYV!LaC**DyB23*iV}ol-+*gCu-dyh4<2{9-d;HdpG0kS zQem^}7|LpbAs-XGV2Ph*fYg~JWF&>nouA;zTI=&u9CXi9<_Dh`Q)aUNe7~O_g&ANl+0xRFsS8e9e*^o$$#`)4A@DWy1RQK=652W!sfCg z=m@1KnT%MxISBzGI zU9lDpw|Z8#nx}@&Iu30g<_=KHPL!QCIQED)bHs1Mxf_I!m!4(b|2x^8+s8q?!}oHp z`IFxnWy_MCJ~HmaT<|K?rhzp+PN)SAVgid3a?F1PG=NCl@}qGot~vAf#!eL%pJeSyeM&(kH+7PK~m(?FzdwLSmZ$;T@A8cyh&m6 zv)>z46MU zGO!2psy-8}W=t*k&p6dV{QC(X-3998IBJoE2gXr9WgQHV8`cvJdl|G#bf#mBB#>3_ zksS<7CjNFxx&ZPzl7LwO?iIIM98{qzLrAnWAs>mJ43*fLJ>o&`U_e9pu{K4XQim@{+IAwM0JOpL~?Y$PHo zIF*38{?Ay(C9m_-s_mFTKCcUr!sbJN#?D9hSD593o|NzuHvh!o!4Lg(66lD8r?5Hy zQw$4(_xkBKAhpxLwT+J$FfO~#Pb**0X^zIJIOfhzjU^?65BO;aWSMnR*!=sa#+s_$ z2mSOKNWCe-kL4CvvtSNN=VNX(B4=Lv7vo}{wtVszW7@{V9zXpPr2m^EKk`vgtqwf$ zos=HNk9-}L&d1;l`E(uzlM%hQ6*w-@FCRdi{zl1V z6nn-`J3#$EH2?G&HW1io_{ylulrE2jE{R z{?t#)KqK#5reWwoo!Vs_eA1xWYrgbXW9s7WC;jyJQ-11uQ4}7@RQMzC-eMl=jKl3X z6~`=18VgE-?;vqd(MwuBh0U!=bb{FH_`dm@e%dVIDQv!j`0=(l=8tWD8jx^1E}r70 zyfyeDYAh?7840LwvQ;2YYSN1xU_NEoiTUSCpou@y>DzJfWd8I=HU-zDUg_s?PU+wZ zJTPto1qU%J0G%reQrLXta~v7x2;H10A18w~$K5oQ=nr`Kg7$G7p7B?gD}4MA9-N|w z!|gaN4)=EGqEWgWQ(QEqnaDi_#+6Af%5>lh>R;gfd35=Uzc3b;)IQ>)EuhHDy0j^5 zzQWXYykHVglTCw1q&KDzQgSQK7Ce6E33jlTh21@ll)4!7e}9CO>>jLMSm zJy^E3je42~qJ=aAr*e_&))mYoDcB4s74eHfx%^^~mfeSTIVCWsvD~oSusn4c-(ybB zi`pa=W}M$(xQ9a&_vzdb>NAl+xgoQ85MMTW(c7fTmQMIB;+88;BZ5mAg&R<9B92QO zg+D?Y5^20(?+=un7w38Xw5-W`U|-M8X6-FHJLiFiF`l^RdoiA&1MzG`pLVMm&y$QUir%0BM=RddLpN7Pe_ zPbNaNChwLlrIv{lc?ZOJFahw%2Rn)$imAcor=I(JDUJUh$+KIN=)6L{G z^l;*SZp)~DrO1AEU(sPB6{u^MYig8`HaIw}OuQAGSq>uGs%xM>~xnf=@=4xgQCu13x&u(LmLtBvrT zs9t$^Whwj$+L4Ic;f8k+x7RC6%ag+?>(B@(`4Xn=j!lK@w3r8h0$p;=>4?E$Uv_}e zqQHCb1P1FxXU>T@8Pc14$FzZie)ugrX7K0hGk0M6i0TR`$9jrVan>+)fkaw9aZ`Bi@LaP-an#}9aLPI? zS6PjD>jx53D$s%NF%ISp;`C)pp6<|B{Ys9_HDgfXF{9*gTC+6M>EKz4NxKHLuf35A*MNl${r0#tS>& zP|}3A`S+sfq42&ObHsj5XG!4nBOgke9qmkNJfkQ%ovw>G9nG4@k1ow;gd+E}mHs9^ zHIAt%IgPf8)(D)**g2C6{EjEuxBXGn`8abjlQ>%WhTG=JVdwKYF2afi^BLU2{D8Z= za5HUot{F5Z*SzJelN4Un%sQ+?cy6wF5}7yMJd?t!js%C2B zL@G;znRp9TI_t7wEK7}J=1N*Wtqrf~##g2Z~MA*Ysl0RUQN_HC(o=*WXdVD!oyM2%kV~wCl-zwzN@(w-QI)kD%SpVoTE4?^Usek$iqU$wVjSnLd+v*{%xFth{H06COw0 z@72}quu_i1}s;zxlmUUFV|D-ZE6avj3T79oiu&!pR{i zY+KpZ;i2g0JoEh+UR3uk^;SbLx#cpkDeiYPQSs`5t!}vE*gP{c5x0?FXD0l1DGip0 z+mi2u_Y=2Naa2>wlfy~txX(+dpvH_@A*FC_XHq58^hxdy&a1Zr&V3pXCDwi9_)m%6)fR&}tGd96JCpb|UdBq398Ox#{)X8z6j{Z9LVL7= z246#0C%o_$ZnOT2IOo)iH!o~1F^c;h^-IK8S5qDoPFauTD$mP* z3M=R<0E|hlgUxEDWX|z*Y)Yw^E)@P0$9GtoDsO+5V|AKb?_*zWnP+x-HAxBc9Aj&) zPFm{9WiXG{t;jR~M2Qb+n!@(@T&sVmq>vGW${O6QN(nosa(N~kVSYf);+;gofq{P^_y<~%c$I&qQH!fDE;2>bV3t92;K`yKb7ocF1eR^ra3!Us@s zB5pcA2SoVDPE;%r$2Z{>J`s&d#8tL%!a?E!iqjb$aeSpeb$zqWsWKB#>9r4uNHY*9=$5xe1sC0cgf+F?i)sVA!vwC9X{X)a47$V zqwGRIkIMEh)xQA$(kru*Kd>t!iSvQoiAvjp??X>D4`%0vgyGy*kB(g8hY(sNM zu7R8!PUG{iuJ%p&R)zWj{Pc5)|=0}UTPhoN1 z^I?&FV}aGRg95jsDsPRXu>EF%b?Bg^2=_szy}V1JIFDlsedVo`8ZNYNe7~rbJ*v5t zlb^JO=(A;WeFK=%7QmXck=2qAI;I2Hg3Ds>avj0UyNP&N$&0E>J z4pd_=Z*o@L8kB`j5^x>yFDeWm-Y!18aRw_~B{! zW{H=HmM4dk*0EpkS>t9`%;d-1PUdF|w1V1wdJiXj?5unfR~(Pc_g$OAlhoXgsLnHr z--e2}yR|$xoRptEyQS4BKRM#6mO7-K!TWL1a^=uD+jQp0)|MliPP7$&>b!hYqh+cM z&yp$p0@|F2+tbzwe??r(tA&;)hf~&}x0CYqxl>nDCG4?9oRx+BdFEp@N@0`uhAAIP~G{mp2Gj`m~R>s=Zw@WC;Sa@aW5k+ zPY$Q7L*0||wZ~f4=nmn|tlTBvO!?HSYE#&@Eo(@Jx?y>y-3SihUV@~s{guVG)Q!wD zV@L70Um`(M*zR6z9iLy?Jl||Aq=?Uo>`<}QX{-Wop~}xxCZ{Ca-8K9kyjiOU-MQJd zXMnRpQyOEEGx@mKIwe$kUcR{p^@w>bw4<*Reww&piMTy|jKVLXvP4{Yu@ioaxL_i# z$}$RXMU{$kE=h`<@R!6@C*oGOGz#xNFF#~z5|QjFM3`StT_SEvp%dn%HD+@nZYx_z zI2UbA#O*9_!rYrTyApAGxh5yv0h!Oe%4}@mgr_fJXHlH#VNxR6b>=yw_0I3jL=%rP zae+3gwKcg!Ul!iLO6{47dq0PH1Gz7NNXy`EtsQM`we4T`5ECkLALt?J;7pSm$LMKH zV`sOqdg&6de;aFHzVBjANYSV-itKaSaKKE8aQ2X-uzgn>ewa^Z0};k!*KV1n8>h87 zgS(jEG%l~u+Ar8ZoeFb$tW#mdWlU#>QM~pAPK6cjfVL}+d=3t$ti$r;yweJ@>_Kg* zM5Hp$e1eAkn@rl|aJPX6Z5#4Kn`;FyOwA|U@GK|6<7jxR8I5Ivsto$0+ zVR>>H&RvY@JnP9L7cJh)w_j^(4LPKqbMRivxNGTT$hrAy-7n&+xtohk(lWbyI}-bD z$Tjm&za1()HF451JEX+1JGr-f7k9uDiFL!p%Q$X2_(MKZK?VQuimqagBYfsZY^dUB#?&xXQ3*SFUt80<_5~fS!}60O z-t1rvZz>k7E``ut3z|6@v zzoR8z7uhSi(66RhzBvTd5b;_U&JB_yzUyMO8Whjst?=2L7pVyCzB{;`LAWc*{Kkvh z)7%O7BChQ>MfMRT*2(Q_ujTlJoS$Q7@HK_)2TQE>=aeqXHw(}PWm3Xxv32L05B(H( zDT*pyC%(j|#&H}=URRZx&i8Ao^UVXu{ShP{GHndo{kvN2=LaJB=4mu+7x`)kZMK~7 zTf|LKobqArQuywh^35E@QSX$nQx<3a*XNu6AomT$bZukUex$24zJ1A!`DQFiJX_Qh zw)47Ky*l`p=9`C5@waXnNn!iwZr0&rE56DzFQ9o!ph7oiJK>%?xryYhq~*!sq;>3P zyIEaN@Y9+npv{R)xR0RlQncO65)u#8tI)!kvdwdBr&w2!%%B z8N)eEiF#x)PqA6u}m8mX}fhiBiMNOjJ;3fvR+4XflPbM4J@nwV1*WpnAozAy+N?i9g$_gg zespt539BTUCj1b`Xq0H0q_BNeZ|krLk>@x+c%IHvCfeM!{3I3O^cVQx&B>VBaEg_Z zj@l%J?H{SlS-$#Qa{@Y`mGr^sMh?$prnoT5%rla^}Jfg9^sS1N1JM$6t*ur zl+ogQk&m2_Q|qn#b`+R9DFL*giz$C#E@mrSHv}FwF*_H{P>K*ucCE{ICfNp-$Bttg&FP&e}ozmaSV5b zKSMhcaSV4SOx%G)+}cT5W+xH-H*!|>v)2NQcZHXs9*WbkhzwIIL#rf(?E$^HW{JMR zh`(?(mSn1Q!3&vv{R8f*zxhM!v8=A6z9wYSx&f)INvW`9DT0vlc+}`ZcDlo zeu21QileeA`8ziUXc^XZu8XR851rx4EG3b*FLrvCj8TP?k(x6rC7tu|dpU3P_<|O3 zD#`PoZ}V%!Xp`3I#B;}M(@mRdZVpy)@v{1$im)sKh2ypQCBy1Rk4ZOlW#iR%PGfRwF(BhBbiezSK zN@U-7n0Hk@MY;6iEi??-R_q5l?vy;jZ3whlx#`N98CbKm;&!7AiBgD9jpGt7B@KrZ z!il`n+Oq$C(K60+sP*~LT)TUJtEX-XOzm&A&-cHUZ!SR-e=V{v=x=rEtH5!u^RdIP zZciT^PF~@u{#IAzw5`9@c|z$cJo|=rYDHZe@YtjtcT}8>_IMc{98Ox#9y!2j*SGPb zYW3Wn)+W}#dCCV=ai3eGq_7=g1?M(JMWS1n{Yu~EzRY{v5b{_gwC-;&q^51>&*ke_ z?Mz|XVB@`sfZzDhiHE)0Z}m|Zwm;nJCXPAWnk-&@xaGWt=>Eg4{&Q5HXrh5DOH5#Y zzWEYuIpEeKHLU$0HI4h?!~&CdbGGv(B>!*Tr%=OxE3*9qtsY}kLOCVy76g;WjhDRj zq$Ex+ZFGOk!2QuyJFajdAKWl+C4o=9HOvA`US>So%H46@n>67eD8?ng1Q z5tHA>9H%nQ?-2fmY5oTr$vfS$ME6GsTc_uwJHI!|4O-hb*lIg1*r~vri`tUNnWUz3 z*iDMd)xOGps^6+t4am^+=vrX&9EQ`o*`s5P*EX=#C(jS@S1YMAZd7H(6V z{qs<(b0|8l!1NqXIq7bmDPiZ@l~++NDlqS$#CMpI!|n7P%!OUzonjs8+eO<{v<|lN zYx_7rnZ4ptj^sMgJL=t%om}^>=q6c z-i;ocZEsV$U}rvVRtD$u4TTFBJY*kC@%fx(Rzb+@o5hP}r+Rx8Q#6rD zag2oIu(x9UZ1$`$E<` z`FN#1@slcc;Yh3XEdNOb=2~QUzn_LeYM2A(=0nK0H+k|@Tyk3VT4lB=xrhTYYP{dp z7`87TX^klgbZOx<%(SJ~}_5?Hl7e|D89%BI5Urv<4O>8nx%u1!f>xbBaA? zl-0j6er`2GA8k6tzI>F``kX}i1H|38tiXKe?W^umR5;h&4YF=5Fo&YTx%SY}R_Dh0{&+KQ zFJHlKKi8f=n(a%pM?G=>Mr_}MqumpXcSc+NhbETKvkT1iXpL8ob~^1H%;m_mf{H|% zT`b?{q_GE%v1T=vx%-X+^DCl_?i^!v8=Bbu^n0iaO5Og{Hd=EZ^E)b?YyUjPJ<(}B z)|%fr#uOGQY-vtljQqi$z9cc^CB_YZAH8hfHr5)blcRUWT0=)D?M5$c*Vo)MM{g-` z*88h|*+zLg5cM5XYK;liHWZju?=xQV8I#_Xj>4@!EHFzHN0|qQQ`XTW%GHnIDkwFc zN%)|+G(K?d$cOD6x#nyYw_+{pTiE+ct)sLtlgDvz^q<(=RGrkEpD6KmkjAim^*C#q z(rp`OT`SHXZ;clp9B;L6A2_SI`2y88ch_qQ+n2`;7@!w}JAPplG4;WFvR7L0dDNG)?iGMm4S1d7{&R0(RXgMQv5nb0%6-#V1K6ZkuTF>P%9HN$tMtp4*I^0u@j5IlGAFxCwVOH z-q8Q6F3qZGZhWMfnMmV3mX#QaceCt4wA@?n)NEm1Agx`V{nR9@YvWjM^+a=1f@aRO zzn;W=lE~oq=bD=~&o?)9bL|n6t@fcr{3PNk(W{A!HGT%B2imoOJc(U9ls8a~ZOLZv ztB)@=cgAEpz2lN6vs>Pr7tnHFsk{9C7x~1Szg*?Px`{GQi#9ipqV1Hi57Gb~xI#|d zk$SSAKceEhCu>lXagdCi8&O``w4!w9@%5IxeJTHR4vVCzCe5CA+=BnAWtY9#+^j&2 zEvp+_2bKK_%m0~_hSTJZCUd;LJK@g8`|6vUw099(2kqC6v<`FLtzAJx%VJ)TPoJ~N z6>hEV!YQ0pBsTx3_nVuO(f?M1*IEAA|Bt#(ZyeA+>~3x@ z{Ep{}Pj%<=#3fE5kFUR{rG98`x}9pjdX&|taSmTVoQ-l%wbQ3s;~UTWf8E#IjNRYd zjP&wL%Skgibnjnv=N-Q_H@~2fr`lIeO*;M!$tg4o(TS8f)#_HHIdx{BrFoNW*WWe9 z-Z#~qpW7epU7#MFwEl&y3e8%yfP9a(PH(L9*X;|8BN%x#+pXfY8+}yH8?yG0XZo%kBG* zwT@LI{(P)8rgH^xBTuK{M|h{c%;`;W_O#=yKJ6>c;ML>v3(cJNZsRnC?OTqs22L|) z7n;Ww6qM<=fF_ClA_-G^ug4S7SbQ`+)m(hgkvl znU^a)J{Yh%Pu4b(gSn%s&`i6e(0t%+^W*q8lfr*Bcz?L4(BxlS$j)UK9&gPZ6TP<3 zOunu#NWN+m&y6*6pHSjH5&iy-m+x-!)i}sI!7ZoH z3D&?u&7S_p-Gj+#kK5;*U=3B8dsx=K{@FtF(56DOsk1u{n!@((6Wkqg#B?{$8Ply1 zjR(GS|5a#aHxz0zx@S6*QKB6`d$-W^de4dfbUNoPW^19@hjw*w^KS~a_Y=kjnh><_Jkc6ITO0M4T49Xg-gk(aN;S*`J(54Ytn($(`4nuGrm zWyVydeZ{zzR%owV+QBJJ{4cWfz4WJKrtQo>Z*K6_Kc`C+UEbYI@1?Mh9$1vyB0}Uw zRDzsMZ#TR2pnSP_G$pV7Ip6ZXNEdza&*>87n;w?^-C%yE+~3182bH_x`}9tOB7c!# z-Cu0D?*q4xszios|2o4V(StJ7IduHx|6ap5`M8~Pj5ieils0hIU{Vy&cDd1?!*6{)5fNpwx;IfoAu{9h5wg2mGnw%W>2r%52`%7 zhPR8%Y)pDg1(vG+De17kC_V7MZAW94q5A)lW%*xZ89&{<5LNl%!oAfelo4S!dAbOQW)CMjFR`B+7NB_0QRJl3PLkbh+(+;pWLhkESc zG0)?H;ZC}c+2tCu)#DbAPkOBNxZLCA9?LyW^Elq4-(!i#LXQWAxfT1`d*M=#0gtD9tnzq+ z$J;!v_4vHU29IBR-0LxCkmZzbS`Tsy?%{Ea$5|fBJznbZT8}jz`S3>DVV?2$md8&$ z{@^i_r*iez)?@pTAvdD87cs`;43Cu_BOcdye90r9p*R`FJpSM@bBI@v#~vPsdYs{L zLC7;pJ=S=9#^ZY)zwr2j$Mm6Y0mU9mJdW@<-D8EvRZtJwD=bwa1{B zQKc82?{TKbsU8P=?B=o1;{mOICY!O-%c#NQOCHyIto0c2c%{dM9*aFDT4d8fEfhKI zsY_3{E-$=gq2&wJ4K}4|q^$So8{&pJT8-`h%+4{QNi$hWqra{9v~bez^_X+78*b~d zx5r@~r+A#{vBG26Wj_<~BG!7`=&|18PLF0y3p>)csOM9$g;pSYkonRr*Y7dlvBG1- zW7Ol`FI(7WTw*=kVWwB{@?CBQwO%;9r^Qo!FSR-8;9S-5?W-nr+$Ee3G9uv#!Uv#&yZnN*H%a&M&rH59IZ0T%sWT?xVy|7M# za=dmCDvq(7bny%R|6$1eJ3UnCWxU7B`2Q>G%iId}r;<|QqAamNX?9nCk!9C}*xF+) zjmS`?HPHx{b>mtpn<2$vuj;;OZWSg_ynR#OqJDO~bIY8k zO0KXTOK%r&mqk3*dkh@^)Yn&8S7&9E{_e9EEwg$$=JsXQVUBq-5%Xihbhy?_Ga+Hl zO_&wedTYIWtu@+NJ>xphOu$T_2&eC;p7Ym#?6?`D7Myn8>GMuIb@&h| zXA|b%%e@M9zur2=sp6u9c{yRM8@xqlB+TPCSd*N@`)}}y=zF7QW+%*bH(EoSG%qL2 z{)8D6@oG3bVXlgJt3RHI`8Z)RZt@llx+$^NOIweuN zcJ`*5tv22M@7A>IZn8!;tyQ+ds%#2vUtyIwp}s5K$~-lDrS))HX#1H(CdOTW3wScB z?DQgjKE3HFDLpM!hdS;rau~%A#>b(rgZm_vcnsRgV?E;E(Js6gL#93X!xKA_5Ai{G z719g+A+L-hFpq%vC91;5;n+?Tf)`_`1TX#v4aSSR&_tz&ojddBFkZZ%3m?AW#l>hN zUc3x#!H3~y)T3Rf$mmu_L5W*C-5x3Pd>F3xd=zd)rEEbAPU`BWuYl`O58|V6U^h3u z6wXI_tfT_I?)iH7^C51$;ikkxp+l)PiQ>@LhtIz8VppV<{csAJi5IU%^YG$Ls0ts2 z4-KZ3+Ojb)n^{{;&EeaO^?WG|BmJb8_~1~EWgUu4s1EZjDh?JoY;^=%gBJ&&VR%10 z3+V?yD_}crMy|w{z&}P%LDHC!yo&{GnONi!za75?_8Gxd zCNP>lLn=Ug0xdbK$l<&AmG~GO%_+!MzTGNz8%w`lP~>n7{w=&X5pBl@;I>k}uE|!$ z;PUaL8Chf^u+Ky{-aj$Ki-IP*3w*G6it9_@u&I32?`(cj8y<2rd%}fm0sN}Wm>PT> z?l^`mUVw*-_~@shg64%6oIrZwE8r_AN_z1PRF4<`aU$!72-IQLBfY6stVh*kB-YH} zBRRZShc@8FchF{~fxn{O^NSqzJ&B6r#m`U~Ui<+C@#0=offqx+^Dj(5pJ*L|^ra?o zF^ZnUZUZNr%$DKBqtH&gc$^m>fJ0}|uWWItIGa32(^{~2j_XU{LbRH)#5+#mTP*W= z7+U6Dw1oxY186(G4t{(p50j8-43-8NALmm5y!tfu7QDC|^}~xdqfz);m_Lt}WL+OT zA1xtXe3;Yf<#_S&GwJ`e1Rf{wG}?%d!fj`fDT62m$CR@b=P|h8M`yEjc=0n-iWk2` z0el?xJ%=vCi@%*qx8cQ%1yl$x=Aszh7s4Em8Yoyi@_YsbUOWaFDj}YLeE1*?p#`ig zzKWLM#Sc&fAA^@vumR&3jBxlu`W#;hdoAYuuk1m7cq|I(9ceQCFJiFZ#X+bXUkV?* z1g}8{{g=6uMiBN3^Cb}muOEJVB^AQQVBuBFrg-t1rR>po@p?20FRnmk_}ZoH|L+jc zye*bpO-r0x}8ycq>)2{E^tk&G8xpyhb66{^9Pz+;i}7i*Vs^OSh; ze&nlQ{+C&YO0<>mQ&dU8;#JqNm3VO(T7wsFL>urC_!25-j}Y5l&y9D-FuXV#O~IGK^{69- ziHmQd+wkIAG!ZX8f~Mm`G8?=FQ8?#jntf`K!*(kOlc_irRp7+{3gg8YUVIQ{uVjmf z7q_7`c(LUwHV7}aL2u#3POIpDEhr%nzr~%C#lvr7Bx^E(i%}IVBwmTC@nQtk;KkLb z4lho=otY6|2kVjE4=x^7!x&;-5lc~9e0>f3{}%-GPi%=6;7j1RyO<4` z(E@Pr8tx0Qaw$CSKALm{@$l69T_1!e{eyy!X28O(575H2s2>(RME-Nh6ZT(6c_F4- zKgN25-2-0&2R`byL@7L`&fVn#aM5G#I0(b1k&f|Ec*1)2Z^lOu#*yO1UpFx(x{&61 z#>5NkS*3Wm=|#F=7#@b2zr=vj$pS1xT3H`hG<(^Lhx)u>30o;%w3!NxWnzJMzCt{Q z?^<~Lt86`9pWf6UmWzea%^zV+$L#Ykm^VdWNP)#1$lF-+0x?t&6H0cqs``~@wc z8O7oc_c3TPvz67Vh0*TcBy&0CxYycKd2`3a0g zT0vZla+os3%M`Dv6uvJ{8uKnT_~8Ab3F@ExRr>tXu4uJ^$Kp7%rB^R;lxzv!A0(!=xyFFhQ9 zLdwXGInG;90hc1}5#r})2Q#DC>wQK(-VaNW(umh6OuQIHGx6dMw1&Rdhh1ezWd&de z4a0{&VEvO*kQ`Jp=|BCy|9*ZW}^QVWTnE1nT9euswPydUF zG3z^bp76n?$af5thM95Km%?+AGce)pp09-sNcqHIhwoj_FUB!*q0Q{yLHIIS$!t{* z^M7y?`QRd?_%J+x_HsxyKXSH%oG}D%Ln@#azUjr+!|y$B_V7}3q%;Be@E-bKfjR=; zAypy{%YS7C>`$}9*gjSmK&|1?`wfS^B8QJ2pfB;_sNWbP_)>U&Mw+Rf!@6)S56x^~ zrmKTHvs@pCy?LFj;{DA+Y35=cjZz>C7w4s!rDPO_Bbuj~%C2Mzzwo7*w}wzT_LHID*a2O|4^rHVl4ta+(>%M#g8Qu`8aEW|sG)VEDqRYym68;qKGe0=7O5FFq^Hl=fg{_|7?L zX4Bz}5BU8ewyZl_UzujUx|DphF6?$$n$xX*_~PYhW*(D|_&_+#RN?F3kSm-tAybO^ z)JHA3| z(V`{r%{M8S8y)qq@*Tzk8yto&HH2t(EoewH_ODc8Ak7GG-N)9`M73~qM!H$Tfu|Hs z%}F;qC?Ehw@eTf+8gy`P^K=uYg-ju7kq%Dc1L!R(AvU0xx)_E!uzoKpArl{vZl)hX z)4_6np(MtF3OIdSx(P5?f^f|=3Zwt(;7_yCO;v9So1Jdz%hSy~KN|pRFG)9*bd9*| zhIF%u_z3)MRl1qU9%ODwHy7QW&aOqla8?Z!sqS0kn1}A95WINyU95~3FTOk7Y{!c) zpuKqU8;7j0}NCnr!JNSam^m%Lzd;!&V zrX}F!v<$NjFHX$JFj2f%hPL9xwP+{44*r2OW17qi^L~hb3dG>-EY}BN8ILt-a0TGE zg&C$d%^ru>bj&a@23iDm?3!VMWLg4Op_xZ=Q2|Z246^_)4nfs;aUQC{i@Uq?RbqTd zrdbcRf`HfyHQ>emUc5LI?Id127VX80#0uY=bdnqj7tvX!uJUz&Oxm(%bU6vd03`%zK6I0x;(2Nj2$qZ~Zz zFxOYWA%|1Bk&G4iG}0AS^zcxIIccC92tqRm&uO@L2-5q_#naJ5y!Zr~i7y#UGmfC( zu~c*<&56{N;zyp3!TF;|PkaQvg0_@#F9`M+&G-lrkU1Ug!iyIpa}0wH4jJQS8W@{l zZYgE!D6AG%kMlh2F@f$lhrI*7Gm$B4cF? z%?>-vpzn2c1z$cX!>lBIJzO)B{;wNNpUuoL|Cp6wwvWfd3ukATDh5j(%$(yETnf!8 z?3%=jB}lhx#YJcxT@!}ePyio;6X#~|nJK$5T!!?*kqCU<^YtOj=SX`&9Gak8n79OK zK!su2X|DIdo=686F^DSh;+?1(Ukh8D?xy#{aY*?G;Ax((fLEZ97DO=n&tN2T`eo*^ zUn0eem1p8A7O@XH=*3^BH_dw^q$rq(S=8`C9lpa?TUWY2CBkGBSIC_Eg0 zVTL&lsTG58F`9`NZ$k%$hl(7tmVl3~iNg1h5{dgz3GrgiLIxea1dc{drtmJL4XA~m zBDGu$4qD{KN8nLBl^Uak0`Qi_s zKx}shgOPagcr+LB6HKTkx}5 z`aenlW4^tcSqU%Z-^0NMUjlRQb(_uyzek$e&6*5zE>btuLH~X36fT~JO6U&p`uo|( z@!|@!886<7w&LUW({x9!rRGc~LAXS|1Ltn=2DBP4wtbNO8!vW3oAF{V)PNTUq8<2B zI0vZ`;`yi_UhKP$nGrAg(aaD5nc=7$FHS;L_yAmj^b2(2>nMm9|AVUVak%7RDoFY; zy!BC9j*Y2>XVtl_5`ps`%W&R}Rsr8c8c#788n@oIOLe+TiCx(X5heIQ5Y}I zf1SaC7u&x{7vROIXfr+vpMT382jYmgDe(9rhqvMD@wIUFJMKgjgu#EZ*D#R9OWvjb zeKTpgcQedmXgVv1E#9Na@Zz)vniwyhiz0Y2_yH3RUc44<2^2ZZ`jEke7cbbBVfNs~ zWhjUAVidK-M?;vIAJYZO2;Pfy$5PynrsGAko$-MeD^Ub5#!)R^{O~jS7%%>WcHqT~ z7?r?_eNb;&&JUyiL;qK?KxV+#^fw`Jc(KhlOe}cu5EQ`s;X~iLyP|J5Cn;#b zbWSqi<0y<5-#{zz^>F@oZu$zC9rxCav;U9s0;O<)=PTe%NH>_ow%>D5!i&ApQoK0C z^QG_)q|f@y56qrFGFiN!6RnLG%g};Z%>Od8(GnJjSE7}8@kz86ABB(n z%w%#L6At|3H(G_lV(<@ifF>2Y{=s-6z1R))!299*hF@A}M|#*ZJ=4VKZa+LFl#%Hi zB7^Y$Ox}h?rggAiR;H;rw#ebF_>Fimkj*;^@#0Jr!;5#JI9_~+7h)MID!z}};$v_! zzcHvv1YpZTx7<)2=G<0%+m0r!fbIDr;xK#(T-b$7si|07LZ;K$onTg1(&NQLyHi=b zI2M)S#R?R_i(Anay!eU2c=3zwnLOi50Ap_GLje>Vf&0(`;>FT_yloCIE9_{!Fu+{Z)MWaJCvR zb{3H#HRE`%zolea(RRqL|D1r~b{%2AVadjXZji_fCibmo7V>lZQ5SRnq03YcUJ@AoM~8`*`# zS!gp}JR5Drixp@WUc4F^Dk`o-#dz`Ns!Y=xUklAuv@T_do39E{0GC~x2?VdE|5zZt zh^F90b4{k1qZMGNn%!?CTMs)eW6L<2i65XSUOf3)Du)+4T$gF~;Ki)vbQ!y-n1@R6 zc_A6(Cm`Orl0L(WTTnS({1sK>&8keZ1LHZa`st6b`JR04h-n zYwpN2OWAs{>OR8wFigMS9pJwE+5hh(P{smr(OQ}sFW!wR@pW)7n#istKKTG?@Ztw( ziFP@7>4S`L_9n5}Ix2@3yQ45(oQfiN@j@q_`9F;5^)S;ZQ=@nxT1O)Bb`-_eLi-U$ zwLI+gD1&qk>EYFNYzm$l*0c5O(^>FT)W9eeBPfm+ zFMph-)1ZS5Naz1Cc*q8~8T~Np2@2-+ybnH!^mtAbu6mmB#Q?8`A0p=<1g&RWACfr? z?d5b^oP-KkAplQ&i9}qdg<<#2w8|;W2k;~mB#k%+Ex?O06vm62U!f9saT{8zc(@vJE z3{~?_iS#pkZ=f~W0=UzQkHeuES!Ov~PzvA8%rXId4ED?-9hLCI`_Q~9&iUbkr~)tg zv$M=ny!a%l#fxt@%Q73PnEz#3%hV7r{(&~&eJyE4q%`6_bUtdNP6vSo|u8~FCbEVJV}1|Yn8lG{%aIOr&v{bE*z`;ZPW z;vG{Nyo?XA;Akp`_rVUwP`R7f&EWiF-Bzi9&m+B&OYC$Ut$s1PO$p`%w3G$nduSy- z2ColfIUmJE;MK=x@q`f-g`Z5LRXUIc9&-Zm*YlVb{1o}{;xp6P0DKfqKhfQoAp8%~ zaU>2$hGsC5H5%chlh`k{^>F*iS!N>r6oXICW(#g7Bly4^w)hgZ@{}xd^jtC`UOekm zniMbIjdtS0r}2_tqyt+Vu0MkfQ~bOvbI6(OP0T$ZKjzB$6v*Tgfd`Ow58qi?=40gC zN{0)}-HHa!X16-WjW30toy+7il8VA+3rNFxfcOY1qqW4RQ4k+Kk8VUW*#NQR0{Xw4 z0LBbMOYo)eKd1~JtbiA?^%t@$!n8{IOrsaJTTGWR@=GqtGBeOh`dgfNF|C3ZC-J78 zO?Yt{s>h3Gq8PrSDwJhzAfQ*^iLao7JGeg&?MtX3z7{sSjLNZs4<3QuVtkas$w;p> z7pJ2gR9Y-tLZ$KIcc>%#y4dw^%mH|D94ZYFkU0Yd@D=b5Dpgj)sD|575HEHJv#;Yz z;KfK?6NYt2_kYAEP(8buIN%B@gcl30Vvw?ziBF6>~rmccR|-I2`eJb~)A+AHAB2;>C&AFq7h=@MomKUQ(T9PC}f>@cAF6?s{sv zkS&1z8`wu_QgIq8!HYA|Fnkbx6`{W`Dsp(nO<86wUJTw$f8)g)kO~tES5Q&9OzeV6 z@nLx8Dw=h=2Er-|x{ckBvlMY)O_m8WV#R%E4PNYZ2WjwP&Yc{z@M3GE_!5|RH{FI0 zz!_-DG6p9676tI)qI)^k;1`83H==3+;;m>kzG6+5`5tMa2;R>wgyyjCikbglWxV)3 zT8fXX%`))^+zk-xAEZ?|OpDh(#8iy0gFBG!C&uBRb@aaik%u{PK+eJAku0+qEoFr; z{14KFW*naUs2d-In~-zS3CGvD6%D{WNcV%yV~p_i?C%w<`#1x01LNQlD)a=Ed6JD} zW{f?_{(t{dYz@s-2mfaygNqUFdz#q_4ZfVG7~$t=D=UaUp*UW=;28$d4P*poZQ{sD zO9Wx&b8aR4&u5v_P`@jR9G;CIh8NFAWmho&%S?WO!NY<89P}d16lVX1>yb_@qj2p@ zWK6uc0TtuLK`%47@Zuy?iWiSZ0elb+*-ZX;aU80^i_sAOmJ*1<_fQR9{1mOj$6%i= z^yh6{$HPu(v?W##?)t-vyr+f0^7Xn`chbdG=GF-etVDp zR3-jJQzLzXQPRLnhja^0ycX4yCIaWaPao1+LD*+2yCU8X$9=?puU3R-pfctL@f$P~ zFYZDW_`o*G`JDduRg>u#6!s?!bfuWc@79RZ#Ev>S?VgKJtKr5JCoTDN6diVzlg~;pCN5!MOwD`9O{wW4#_sJB5jR0qj$C$wTdYg-h~2qG3`*-iv?&N@jmz_KcH8M7vJv}$~LPB zyx%X|%snjIMDgMe{%o@qA0Cu#UPe3d;;Fpl>;PUYAHt6kQaSNos01%g8A|iw#algJ z3!g$;*#Plbv;+Ta2=mzyG$R4={o(ZGN-6}WjLbIu@ZybVB3_&^D%;G#i_4MX#ZyYN zO%-1JU>tpp7ta{ahT+Aw6Q~5f1Rje*I|<0lL~*=$`b7GYtrV}EL|@{?YSa%Of$NcO zT!=N3`OOWcZSihYgRg^|Q4bF5;wNY@UOaaS;|mW%rr%NgdJh5dony!dFJ{inHY@R> zbxO8bhZoXlLq+Koo(}LNim}82Vi+bS2drxEB=vV{4L;;=u%aokX zXuOzaftR96d>#A^=^!K?b4Iq=g%=m1Ox6`wp|<#1_!-iV>&9Ted8DCR#Tm$l7bB<# zUW|qKH;OefbjYY>3`?wbYZsn2Iu8+e1L2X$1*kdsR5buXGkk0MJ z*(iV)&qVX^qJHvr30_=-R^!E@OK3&B*cNTZm%zUvopFVsjRGN#;m1o5Jw;_L8YHj3hX@N?9bGom=`6=vp(aIy+dK_z(ciYpk@crj%2 zZwi50_|=uv4j+f*S22k2Vuxxn;w)L5fF|Mt@NTq#G-4E0;l($W(It5C-D_zXytor> z#EWsXCBpnKW3FRXVu5%T>ch!=mqG28g@V*3cqR7RkEB-?aBLA=--Rp9;bzMHd67+(its0J_oX9Wi&yf}9i zdkbEyLpzlo&b1l&_#m`V4V4qStfu?$T|$@*x6*tB#P`v5y!Z)<1m_v3`~>D|nFA=!s200D$-I3teFoF`HBMD7@i4FH?BIzgU+ptAOnr+;J0z+uo-YNgspbwsF8=tOQ^MiV!bW zZlnL#5Ww(c10xwPjzZh<;=ezod+_3IpSkhkepJGhvUtwtR6yRHW#?VB(IQdt)5+8t}+xW+GI7aNXk3v>(z<@8ITD-W` z^D#JSKf4Vpi*r#G-XT7MuYxsb9bQ~@fO#G-t}@NcPI-7)Rx^`%EAzk1OU;^@ez#H> zoSf6lOu>uKq99((&TVEY@nSJriZ6jRNCUPOzJgY=>xwVtu?#Q1j5gxy;mG`E&g51K zpD5tRkhEV$`BjDL=I(+B?BAl9*}@9qo4#gdJKiCF4?YH~Tk<>EGF#_kB`HXEj+hhgCWdPG=~M^8>j*=HZNuwUL1~A(buM#SwJFj7+Q)K=cCp5 z3K&OD!Ekh2cU>`p){;ith@yCLCu+dQ;iz_QdKfax2~4D5u@23_i|?Wed<BSu({%s(z1Ad3L;N#Hhr7k8iq_#NFs&CK@% z!URlrGD1#9@OV_h)`+XoFueE z$b5jN;KhHVIe62vnF*j>R8G7b?Zwx@dA-=3?xd;VlHL^XFc%f@h(q00DTV(Tz^+!u zEa`7%&O|z;tAO>Wn0PU?W*}R67n#CO&_ptd!KVkYb!+KAxF2b55PJ=#z(+Yoz$;M% zFRn&w@Zw!)173UrZNW$3@*&=g378(_FM$h(GobKc_$-Rz z#jjC4UR*tz7Q&0ijb$tE;qVO?ji=IhF@~n##ga+vQFyWcB>KOcfS9Iq z9!3c6`NL_WzPoX|B2S2YeR==*!X|acCEb#P84ny!g^-RIZkD z1z2(hyAWQ?E2j{=c-q;VH{iwXs1h&coU^3D zFD^xyR4xKPL&bP;Xhk#A8!t{mrT74R8R-^nJ$&mzcO&cJISXB10nU^}#i zT~55IlA|GB`~$s(uUpJ<;UcfKU^Q~?p1^-pF{3d)>fp1e{0{aMSdS|4;&GR-4qiM9 zt-*(6mY@v;!th?C^FeVtT1}?nSEvpjhk;Akg%}6o>qrwzJsf(OH_5=AsGjuVrX_SG zUfhlf9%66$8%M~$(f|599%ELaH5)iNgwLUk_$b_S1*7?KR=ASUy_BZzz~LAUy_(q# zUkaNqWBwqG4+gJeufU5ZE@xme(*@xVNN36Bdb;UGT7~$)jqLwd5h!K_aYuwfg%`g? zW%xKOx{1NHh|_BLJlev_V(HCnDPEk8G9Tjr2DhPNd0UhIxGgb4UC z*P-``01D#$u<}->TYMPa ziF#137>eD-K21QJaXVXq7cW5Nc<~}sg%87UR;>DS0 zEj|b@LmTnp<&TmlUc3hJ9c~U>&CFAe(*H}I;GR5z^>y?UUVIMK;-m0{$K2g42t!EE ziHQ5r9L9&3wVvk1``{>~rzFMW9%rv1A8`)aj1R(-o@4_U;K2}P$Wzp44qFD_N6sZT zY`zgsrs6P^!wTXe)DbUMAwOQ+gi7&I*!yXBSM2gEcQOR_IHyxQDqN8Vk|MPPMI7r-aFHkR<&$7*@iOrBQOyuoOPe*SW6mN`*ws614{cs&gO-gV# zF)e)a5k47b^1;Q`pHN#Z%>R;o#Lo+&>r>hi7cU^SxOgRr;C}ecXY2q^z(0sSo)-h3 z^Gv`=hz+C+kHU+-W_rfUVGGg8#b8b#VLh+8;RvD+o5cB@3>yw0E+mKWDBQG@_8vrY zz+vCh<7qPS95NI4!mEf5Al8x*tQY?##kko8$!bPZKr*U}s%Alai1gs%HsWO1h%LL> zDK2gy!|^!$Xb(51(Kt*J^CE2weua50wzaj|_rZ&Yyclx|KI7jGajTzr|d<6?|-;jwPUe+LUaEQsg+ zO6TIa&kJXgQl9(7cZr+z;yyA0H@~qHQiO}+dMJ;J8%YK3KEPB>QlI(5`F}94us#fb zJ;;d$STKkBm}NvWU=)7)CzHbhsuAw^ixZK#a{v@NV5rMTEbDsXWC{}ZxqIrG0{3~A*BaSB6YhU2wc33lvTEWGqNfHmkd8e~a zIsBaDEavTA06Ev=Fa<1#7ZEQmUU#O$OvJ_4Ni{D1<1BWDi|a;FTe!HJ^x)zi;#k5} z!jlUfrV1BVlUiK-kpvo9ko-p4aPi?W4im@4OV4+hL%6u~GTM~~QE|=X4wH|I?-Cy_ zZYO?R{DG9?N!T!jlUhXW!m-yo%tqXIy(3_Dv5?CF#QFcCig58uG80e0yKZ%)X2u|# zIg8=iodR&Zq;%m>#H{RE_V*le1H^4tuv7`?7!5Kt_#KokDjw7zrdOQX@?sZ*YjF>}lc=_W@HwK7aKvLP zxk$KNDES3Z!m$t5f3^{0vE>-CpRP?oKQm#evOlRgmFv~tsEG> z_cRA&eH?y6^ck=?{GoE9nyBdcdK2I}o zusG}@`pF0J=J|9$%8N0Qz{Nf<(9x)N7i=UIY#W8|6a89_SpOmy8sG)VVp4*Ojs?tI zxC>qrW^@c>HiQq7>96xf1=cNQr?~huiQ-{+^%ADxGRnip8fi*SCwqw$KC|KdF)rToGUeHk7$#m^{Dk;$@n|B!Kym&2n!Vglks#rHSS zKX5T^Gdsgwu!!X1;?G++I4-8e8BHn!r^u=GDFLMP6Njl}L7YQs@gSVv&W&U?R|cEp zJiCc2NdgxKedaLTxOo2OG!vsqyqx6YVvvl`D1$Llgr~TT_MgXs4>|EmYl`*2Ye)<0 z#l0kki-&LLByblzpLF8lM_p^@IaQ9i;8qK)m-)h8-@x_7^>Q18>=&=WnhI7jGmH9&n^ zuRASZDp)|wgJeD~28MEQT&y@g&1}TQPe>;&mgI8)TE(SX6`vL&D60VK13pT0;ZjuW=60h7u-YCF_ZArQ_@lokRG^;=pK=T zgNCP>^>i-r0@8tti^v{a>~lIN_YS`y0q;GFS_-frd64*V@d;9nhu~Tg#Kn!I78lz| z7#Fva)wpOGnO_9|gG;bLSwSB#6lkT@>pP2hxZH$0E%hnK~!%h?wvBp&NakymlnlR4{&X?*0KX1o;g!Y?MX!65#u0vvdCnki;|iltnEcJ$9Q zb2q7DA`+{o&@{OC7-_>pFny}kZ(Q)KGMbb1X9bY7YiTDI#A8Vkcf(mE^~MptO3X+6 z&IXKL&oINqR#J$^;04p@L+W&}`Uct<7mvA-lf%VPq!AZONT8JkA2Ofl$yLm}iB88! zxZwLlw@dMin{n2Q#iR@u-yr3941PjfG=aFCE?@w{l?I1^e7aA6m!!??S#H z9%d*pt(-!*=phxjcts6O!-@Lg-9(Sx;u~Zh^Sro@wBT_#>=7>DJ3gL)>mFlUTulET zHPp#*;q(AshO;moI-aCW@D%4VTj4&qft2jzQxZ7w8Ab#yZl6c9;R$%=bMysVOuU$8 zy0sn_E@0HKA94FangJL65#|XzAbE>)vLL>{h!bIBF}j2*#l@?d8N0Y2t|fWDFeyRr zQr6?*98!!2VJA@;(ceN7?`KdC09#Vnx%b{jE(FutOGV@oqjWYf(SV?bZ!3V2I?|sa4 zu$tuH;wDmniydSPF76;cTs(di2f@W4sl>&XNG&dY{xTPXi@%W70Tv{OuclgY@hIEH zOGpRneXxq8P7YR+Qm#haLT2J(2MOZhx1FhD}oqWE7j4;R;w7F^s+Vz{`KwExQdFZqUa@j{CDA-oHo z*2++!?Zrn(J}xF-r)T40uQiMgTy)tk{)6~g?}c}e?YOvrbm8KXHMIXB7M8FOC9dD; z?eJBSkBe`ULR`#vgM;DXAmYcxd{T~!=e$X^;t58wwzfx9A{Lqj=cc zjA>kq#OM=vig*XU7JhBJnE4JfBI{l7UZVYoHScl|dcK(RJ|}^TBS;JvCy;;^B>y4p zco426`b%}Za2LEv&H=8+E7mEq#dFKByQ43IKB2-}JCdmhE$ja#{5T-^F4 zZH$ZV?My_tIEqx`Vol&H+M9(MSWnt<@$s*%LLt~mbO5n3L4VoB_j};aJD7-YapZSg zB`%I9eq4O9lWlNu8HwUz!%nMAAd0xYXW<8`3x2tqw!y`ndzg~(B=r4cl@W*Trv9T$(zNH<-$_#ElM!|-R)ww0!Vn=;c) z92W;>Q66{0gQO(T&c`jt0#~}3j*D-SYCH~|ec9ksem)qkJ}TWLaj}iKC=-K6^-DK1 zzTlhF@Oe^+i$9ThxHvF}tH#A4{kZ^K3~W3m-8edUQvnZ>JY3v6fGWkshXa`|46}LuAUdfX`~Vt2OgJh zLbw}VPv&pqXFA|5qy-mmCox=H?dHmG(L0oy!^K*np9dGeB^~TD35OmZ;3~PAp~t72 zh54KvF8)DEadSetS$<-=Df^lG0yG6wHILh3KT?5|dB}@^Nt@8H0<>qy&$` zW6w!9;jj5w68PWIG#M@~BMCeT&mTkkCs~l3a4uKJ*@+WK9`1v!MDLJdaNl{X|CsNR z!oNrnF6Nz2ZQ52P(7K=TI-8*dTS)L{9xmW3qz(@~z#LJNZVqWU z!84xVAneo&-y+&)4Bi!@+I2Aa3em6TiJM6sv*+dzVH zMuGSM>14h5BjMFLCrql17r*yf)UdF36FGe)-&n+4k7coWFHxh zix<^Xt+*JT$ANKi)U)(_Ts)ryadA8e;o_|4*#;MXBWrPS>U{bH?uQQ%z10^3EBO*; zIuxINfhiOh!(=_4geSeo23)-d`fX1vpjU^fxpP<#=MoopKQUt=ui;_=Da6H+mzeW$ zaXy*8iTPg=Ar-tJzCx<;7(Bj#TPN-3f%8cRF0LWnxcJHNcgFD~vR zK3pta%0=LQxO6G)zn&dMS!g5r;7J_X!olc_;$*T17pK}T`iW7mhGpM!U!aU1dOEow zF*?Mn$l9NHScTPOJ1!2}$vp!f7C^?4-g}w3;GHA~7X#l@jktK+E^ECTPAB^2QaOBE z%j`%zp^N^3i$DKBpTNb#f24+S(MeY0E;yM4boGAZ<=ymlZZY(iwEHof6(4#oCMrP%6OO*pFBvlyzn!oH31j~rl z`{C<>zgfXO`*k?@unbd;i?@;pEur;?UoJ zjv-mcb3i(dIDjXl zm7uEOgQSL`9)cf}5T1a6C1+-sc`QVsIg4sx4iLu?&4xbs9}@YQzkmksCvCX6fW&ce z@JLPw7bl<1zLLzCu%6`L;>yv~94;1)$>2}_GXG1u&!>HOLHvAdhVkR#aTjKoa$KBL z#1-Iv_;1p~uoQnK=1ab*45wd2GvVU>WH>HXlQDP*4!)QRW4|9&$wQhzGf18aynT?mf4EyI*?1zz|P$)_ia zuaiPte20|a;zr`f#ST(|i#tgTF774saq)K&O;9Zo{s5p^%L`%}>A=OK$R1oANDTLQ zapGMx87@9?FISI?FILgf@Gv~$Kh})tg8hk}4aK3Pl_^}jHo%vSEL;m8A$xG~8)6tv zVkgPL#k1~Xr?}WmM&RPBqy&$_Y&!KJp83UQ;$YSjZw_V{H!cpjpQ#!TNXC*<7Q{Qq z3|zdARN_JSI!V0`gwH>~$(3=H@Ll3!ZWjkUNT0yPmBfR`;8voiXK`RP7s+#_IINoX zH_Tif7M7A6o=n7P4^gGK_$evE6Yz!_&U!b)2{sY^xh`?YBW$~ep#{$%1-KW^B&#Ve z-a}%zIQ~(Z7$5&A)e>SM$%0rmDJVFAq>HlEoxRA#n@o%@xOCQOG)g557(cDI;zq#kjce zNk$4T7Cl9IT=bJ_T%56x+QQ3W7n#WZlQ8g)m#pFEh4+%w@PmUII6x0~Ie2!2o#Eo0 zqyiV~NDUrqW|CP(d*dP4cRADZ0G{>WS~8FI;$E^E7iX_xGU{Rem%K{4ctPAv4&kEn zWpaRN7)~I%z4~C!YU@PJD;efelKQnRIO;9RP~Hn`-(@`>g8PU%uX&FrD58t>!u#H% z{k0He;oSEbPHf8J0dqd*V5}EE zBGYlv@dXFNeXy3O7Nc+vN&WxFBr>XlF`dVOVHHU|$-p+-W3bOwtBea?ZMz=^iQbTi zVcW&`Y>&hJwwrC#5K(#WHpc&zEa?06;$vhZXDZf_PCN{E5S>sG9{HtJz2a!nO&QTk zoCoRQFzp-WfJ5{f_`wc3-CRafC(nI58M;@qA9#2d&3TCV--V3$F~e+U9F3DWas-BW}HM24*Z4Y_>&OK3G>L7mjL?5Rq)|J6+ zB=zT&;6)Cn^#exGmF7(S6qQ&)bYMTcDBWo)+13X$GpsTmxSXgaq8S0F$#yzZP2hq% zNvi7L30Y1PVPg-xG28NTxRazhBmBwbG^=$1a6(@$fQ~HIlXljN3rH6(E+aiE4^KIY z<7)o*Ag3SAmHmao3Zesq;1@*wBLN5Yx7-b1CMpwyR~$nPv8^9IL{i(rH*AkVlWVOP zZ?U}`2C|N|UU0*6Nos0@M+|hDa(3#1l_Yl{Cj^(18rDbQmqZ6kz)5*dQ>&AJYshLm z20tYUJOTIH?i%DY*Amy?sn7pudlqv4=G`uA7)%r3qQmVpV{jK-M|7|_OpsKqzyr3M zA=KPZr}0rf2%jP<6Nkf&cc#8)=!H)ct&hTteA-{_?a6nVpNVEb*9o)@Q6WEkiKIFU z{Ka>xTh*NILuo2YycK1H;jFkEGO3~sPJ9zgaI{gj&ME1>GwsdyvV zh?m1Aq60+XKTmR+?X361D9P{DFGX{*lmD>VkAG`S)t%MZ#&)3+;A-+s<~HnN+D5J%^pCdg0BZohF2r z!?`5YuJA+KCIMsG>30cnu zVhh=hi*JxUxcH9kad?2FI^$TUxs0eY`rzv%Rg3V13#i@0`k8=aG09;;e2Wy|F?iC2 z)&?G!TjWgrime-(i>duc+)CB4K^(5Q zgBuARg@ekiGJg0UQp2p)N_EoawJ#m(S8%bjo}(E$qKG~3JJUfYv!K+xK$8x|9lkHK&5=SD=INI>(T)68f8 zIq(jm8Y+jc5tWYzkVmSS^C?sdCq2aY#%IE{L{}r8_b|hqPcZ(ke2VJgg^BP^qMcU2 zW9K?e5$p5d6+{P^2!AHEtWUxp>#Vli13!P-s_G6{{)}}1F{9pcCw!K4v+aD?XCBRw z#{BO3Sr!KG5bYk!!&MS@PDKN55eIJ81J}v z?n34g+zY=YUc3_y3B1H@k%fGi(O_MT6ON5A*R#F|PFrME<8;_Y608>wkb;bU<`9f5 zwwg&SZNgbEPF>0qRC+&C2CrLYxgXxJ!ty{na$l4k@V2O8B?nq%c_Uo=GFQ*Wp4D^~ zG7*o#v8~p|MR3&{mam4R-?W-<41Dh`%h$p~@6qYlR=j0BO@Md7u^-X?jVu&>J!!Q#4R)#`ze6GlYG1f=6!6{qIlbGQ)48JX4}CV_!L*_o+1*^!fJmXoqf zZZL52(UzCOyg`|!g7xBt!I`EO-w00|l4) z|D;Tf2)_S|Ja=-Y8P1O8!*fr`G;Z7rciG+rA2~HM)vmShmeVs$5oKn=w~6{hz9-Y{ zKEv`o@Psq1gB8H*ZJ!PYjLbA4Y9$ZeJ1Rg`uuwHB(^O5&G;8IsU{Yr44@`St<<*&H zBJ0H&|I9Qqaj}gA@$xAgV5)WC>F|LvPL#>28vbH?H*CHp(>OWl7I?kh7XR;KA@eL2jyiyiR2A`kqHr~`@{ zD>6;*Ecyh@nN6p|#S+`a7}48%@!C07-}2AN4Di2uXnQsgZ?2+U@fq;S`zVCFXrlB7 zGflZ1j;_fx^KdUb@QBrU&7+*eW0oi3zn)@LKzSOZ0gA-oNG)Xr0!4HTY#n!`17g$~jAC^<52A&*dSTcVMhoOa;rbY*b2Z%1< z5M1+;brNmx+$GcyWxTMFRO0;pccvNF$XH~d1deQ`-I%!w;ieX}W((<|OdS47bj3Yzz#7Z*;Q2(`df^SW*T56nGE;ZO zg0?`W8T)3YarEWJ06!&pcoLrY7Hx@p;3LF`&xd_t)DUyH1A0jZ>qYYpLkkzbBlGZ1 z*!NxQgmPddsbYN#>>{bpf4Y&CYpJfIc<6wA-?uk_Pp+f7*q{#f`M?_M4mij5O8Dq{ z>uPFY^M_VHXn{YGG3+x5n>Sc}r3J1ds+ILHu)|*HgvWhkz2Js7kl}1R6D}b$@J9F@ zsl_|tQ=2#;ZmD&!X|v^R@NeRyOu-g8>MK2Nkk z6z;UW3-61m=EX)rvTQ=!$)?)?P2R5$#7jVEZAM_>}gKvqAFHOf#^Z6?i@z z{u%9qi?@=3e$)hPB6WBR+(%0AZg|z_Tq!;g4*7zsU(O8)7Li=mi)VLmW5dV5eMC2{ zZsuPzb*ps+WpFmpnO4FzL`~2JOSUmdv9Y+s_C~mesJxi$gl+l<9J2TBE-&2ivJM`?bu136vXh&7> z+%9T}GG5q8ytwNJ9zKX>Mlt6{t9J9?gG9Ab4KsGD4D-Je`HN^rW>2P>Ms!P^4l7Bj zIpA@7Eq6no?c!6m*TK(-4$uJ~{h4W*eb&OwMC;>lQ<9qy>*KH^u#ZO}y#a;&eqq+* zg&a7M=p@8ul4SjQxN<*LeKbu2Xa8n3M zwkQ*rh#Y;07qkJ461_JQ|MRDHfFR8Hi>9HB6TU#E<6(H#;aR2~9|1@A&N7bv^l*6f z5tf(2jYnpg0@jPu`>>wZVOYDboNIU|ctyty(sI5R7C?{~vvva(DG8|T6> zQ8kLUW@lNQ5#HQ4i%-INZh-YUS*8)62VXrp%lPqDc+3Fyul>N01G7vAUN|t2Wp=Tk z&e8=R$g|F_77iO^xd+}&bl@s@;oz)P(-gt`iT+bkHT>CLpM(>R%QC%>VIqRx4b3uM zyc2dEPfg(BhbLt5_rF=#h%6kImFj>IxbH*`z_i*8FFuKypiD8m_T;S8J;Dz!I+bew zh##+oJ*RO2lo884S*bgl*zXMM0!m=oSy`rrGETUH=whNU@H=1hEtMX)>>pVsLZLXk zbR<=Z`{1vmXhYl-W|<>N5*Gt!b8uW-MRId_R|Nke9$d^Gon?w}F_)C#qKC}P<@sN7 z5vk$@@fuQ#i?c`=55YA=-xG?#4d-R?M};|2_y^H?bAFaNi>QZt;j`W>6QxWH7LMft zf?4n7NYh=1XuswF<$!;;hsYuov#N zJqfGES?hyvCf>6)@{T{{+ipqK}@>da>;a zoi$eg+lj7H{E^IH{q!rd%v_@Nb?`mg*TVg_cf;C=+7CY`4yz{7gnGoTM(!)6eFiXx z!`V~ly?7=3=hQ5-mIIW*ZP##cd^?UX1OffFbw7nc2b`u?k_2MB?g^QQn%$UY~u$-vL#E|Xc zNi*m}l<`0xQ5o?U()K$&-`tXAR?eg!P)OWP*5ab?c9wMjcw2dvF$4KL0M?QmJOnq9 zF?byQZM(TM%UnS`toOru+r#ijlF$0yv#9>SU9=wyL0CMS;Nll^xC*=jy8lfl!o>+h z&;R9ci8@yj-t~y(LAd%+YezA7@nh^~5`S6+t|v3ukGPKnaj|!;;);n*LOkb5Iu|<~0~ZoqO$5%GOMe>F z&s4yDM3Y-LtgW-ki1$CkJ}FcE3{|v$9_`9PH*9&98v{EPozGbZ6ANq?lk=%|%7{kdc-1O19X7m9howvePFZ7> zDTC*{!8FYJI9%Gski*3}Z_-BwGyhATB3-<&9{x^rcXGbP8NW?U9LLqbU*4fJQl=YL zzGu~n`1v}ThcXG+Yds?f?+yP=G!fOpl|=n!HGKC&YoBYOe?!3PX#NfK{7u$Q#g{i* zx6v4!w1wG@od)52Qi*rK$#H9Rl)|}0%~1!>{@B{*7+6c9lov;QLha&ZaNwuxi^smA z0P;XPLxLBo;d!4i{Fsux@D-x7j>|u{9#UH2bzfLbW;(e0kv(iHwr-`paq&x%>!wy< z-)+`@+%Q7)=NzIieLL;1Dsm!Q$aFS{!?|D47w|fmlb~bb;)y$`I^J>@z#oXdKePw- z>7)rLx#t(|77e_ zCj2*@ktA`k!epC6xELp{A-qHCm2Emn>SI>;AdiB62g=4H=?I0_t0$P8Jf+{|FeLY zWd+s?ahM=}){8TSTkC_+b*jBF++{oeqr)_k8irF0o_IP}#;2fO_$Kk-ad_q#oE#&o z9DYQq$8kbu1hP&4GqcSYH}7!a#kNP`CfnoiC)*QeQGSF~-V5j09vqo%nuzujg3_r9zbY8Z3 zi)cSFxYzdR`Pt?xqV+B>`y{Dj!9dzr`vrKm?MZm-1=e~$eBAZ~OuNu756`yU3vaPK z2$$O)gm`!53K@yWs@eeegcpL&e$r;DKFc zTsHqJ+;Shhozz~#h=9-7>!a}VakPJ`Dp*Ln)ZQ50OVmL^@O68A4E|ty5*~Y*T^^3J z-3RZsJqVj@50zw_-6YlN;AP`2_XUtSL?;o3J*1YOSSX*EZRQfK4^7H8FB5qTerLOx z%y=eRAH6!;d`eQ~OBoSlhJH*7ZYNrwfTRD(+)&6o0k0(iz2HZFv0pG#7>Xp9;TMIs zPPM!o))E&#`4ECDiMAC-l-WClHxjKE_uK2uHH;df_2SvKd#_>qPi8@XjY_=Rb}>S< zf!JoR7r(IAi`}-1S=UoZ5JomF3u!6A@M zY$rNc0%l!rZwo!Pi!-{f>>pd6ejH!2Dl2gl%`kNpdf>?NcI3Df@C&FFfWVk16 z7P2y&ZK^}X6hb~Pp&dm2rXt0}k1-Bi%z zX)0{;HkCJ3HU*n%nnF$Un!-)7ru9wnrjDkbCe!R_b~WcVyPFG|J@qg1apK5Cb60b+ znd3yW%|x(%QG8LyqQs)EMae}yi_BujV%Or_#qPxgi#>}A7kd{MFZL}iU0gr-vYcV3 zni!SLHZ#KI;mU9@Y*;E|xnQ|xdEs*J^5W&b<)zF0%V#VvUtU?isVL`s{-UVMbWx-} zIzA`2{>q}9SXN?1*NWtdo)yOJGL@!&&ZRlNUWN7VUz&5AYAEV5KG3toG&&k{8{Lfs zjfIWg#^Oe+UMf>H^MBWiRV%6!hg~PCk>aM(CV$h6CKGcRH~VuhDOloJ;#*R>#J^<5 zlJX^$OM**kmV}m=go~fPGiKiM#^tT`|0&KH-aF~yKat&kS&JJkk-Nkhd?>4VNB{{Xf0Ju`qX`dtt#s&%(lm z-i5^reG6wStgQdy(ws}`2V9ynAmD1qZE!afG) zOI~Ah_4mO9H!_Cp=SaZBNq29gJwbZ@Tv(&rP zx75G1d}(lLXlZz9bZKm9d}(4Sr;_Yz@(cutscene.events.size()); h.cutsceneStringCount = static_cast(cutscene.strings.size()); h.cutsceneFlags = cutscene.flags; + if(!ValidateLighting(GetLightingSettings(),lightSources.data(),lightSources.size(),error)) {statusMessage=error;return false;} + if(LightingNeedsBake()) BakeLighting(); + h.lightCount=static_cast(lightSources.size()); + level.lighting.settings=GetLightingSettings();level.lighting.lights=lightSources;level.lighting.rgb=bakedLightRGB; bool success = AtomicWrite(filepath, [&](std::ofstream& out) { out.write(reinterpret_cast(&h), sizeof(h)); out.write(reinterpret_cast(level.cells.data()), level.cells.size()); @@ -183,6 +188,9 @@ bool EditorApp::SaveLevelToFile(const std::string& filepath, bool updateCurrentP std::memcpy(bytes, encoded.data(), encoded.size()); out.write(bytes, sizeof(bytes)); } + out.write(reinterpret_cast(&level.lighting.settings),sizeof(LightingSettings)); + if(!lightSources.empty()) out.write(reinterpret_cast(lightSources.data()),lightSources.size()*sizeof(EditorLightSource)); + out.write(reinterpret_cast(bakedLightRGB.data()),4096); }); if (!success) { statusMessage = "Не удалось сохранить карту: " + filepath; return false; } if (updateCurrentPath) currentFilePath = filepath; @@ -201,6 +209,14 @@ bool EditorApp::LoadLevel(const std::string& filepath) { ceilingColor = h.ceilingColor & 0xFFFFFF; floorColor = h.floorColor & 0xFFFFFF; sprites = std::move(candidate.sprites); transitions = std::move(candidate.transitions); cutscene = std::move(candidate.cutscene); + lightSources=std::move(candidate.lighting.lights); + const auto& ls=candidate.lighting.settings; + lightingMode=ls.mode;ambientLightLevel=ls.ambient;isFlashlightOn=ls.flashlight!=0; + flashlightRadius=ls.flashlightRadius;flashlightIntensity=ls.flashlightIntensity;flashlightCone=ls.flashlightCone; + bakedLightRGB=candidate.lighting.rgb; + for(int i=0;i<1024;++i) {auto c=bakedLightRGB[i];bakedLightmap[i]=(((c>>16)&255)+((c>>8)&255)+(c&255))/3;} + bakedLightingSignature=LightingBakeSignature(&map[0][0],lightSources,ambientLightLevel); + selectedLightIdx=draggingLightIdx=-1; selectedCutsceneEvent = -1; cutsceneCursor = 0; placeCameraPoint = false; ScrubCutscene(0); currentFilePath = filepath; @@ -346,6 +362,42 @@ void EditorApp::CheckPlaytestProcess() { // ----------------------------------------------------------------------------- // Undo / Redo // ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// Lighting Subsystem: Static Lightmap Baking & Raytraced Shadowing +// ----------------------------------------------------------------------------- +bool EditorApp::CastLightRay(int x1,int y1,int x2,int y2) const { + return LightingVisible(&map[0][0],x1,y1,x2,y2); +} + +LightingSettings EditorApp::GetLightingSettings() const { + LightingSettings s; + s.mode=lightingMode;s.ambient=ambientLightLevel;s.flashlight=isFlashlightOn; + s.flashlightRadius=flashlightRadius;s.flashlightIntensity=flashlightIntensity;s.flashlightCone=flashlightCone; + return s; +} + +bool EditorApp::LightingNeedsBake() const { + return bakedLightingSignature!=LightingBakeSignature(&map[0][0],lightSources,ambientLightLevel); +} + +void EditorApp::BakeLighting() { + bakedLightRGB=BakeLightingRGB(&map[0][0],lightSources,ambientLightLevel); + for(int i=0;i<1024;++i) { + uint32_t c=bakedLightRGB[i]; + bakedLightmap[i]=static_cast((((c>>16)&255)+((c>>8)&255)+(c&255))/3); + } + bakedLightingSignature=LightingBakeSignature(&map[0][0],lightSources,ambientLightLevel); + statusMessage="Постоянный свет запечён. Динамические источники рассчитываются отдельно."; +} + +void EditorApp::InitDefaultLights() { + lightSources.clear(); + lightingMode=LIGHTING_MODE_DYNAMIC;ambientLightLevel=40;isFlashlightOn=true; + flashlightRadius=384;flashlightIntensity=240;flashlightCone=45; + selectedLightIdx=draggingLightIdx=-1; + BakeLighting(); +} + LevelSnapshot EditorApp::CaptureSnapshot() const { LevelSnapshot s; std::memcpy(s.map, map, sizeof(map)); @@ -357,6 +409,8 @@ LevelSnapshot EditorApp::CaptureSnapshot() const { s.sprites = sprites; s.transitions = transitions; s.cutscene = cutscene; + s.lightSources = lightSources; + s.lightingSettings=GetLightingSettings();s.bakedRGB=bakedLightRGB;s.bakedSignature=bakedLightingSignature; return s; } @@ -371,6 +425,13 @@ void EditorApp::RestoreSnapshot(const LevelSnapshot& s) { StopCutscenePreview(); transitions = s.transitions; cutscene = s.cutscene; + lightSources = s.lightSources; + lightingMode=s.lightingSettings.mode;ambientLightLevel=s.lightingSettings.ambient;isFlashlightOn=s.lightingSettings.flashlight!=0; + flashlightRadius=s.lightingSettings.flashlightRadius;flashlightIntensity=s.lightingSettings.flashlightIntensity;flashlightCone=s.lightingSettings.flashlightCone; + bakedLightRGB=s.bakedRGB;bakedLightingSignature=s.bakedSignature; + for(int i=0;i<1024;++i) {auto c=bakedLightRGB[i];bakedLightmap[i]=(((c>>16)&255)+((c>>8)&255)+(c&255))/3;} + selectedLightIdx = -1; + draggingLightIdx = -1; selectedCutsceneEvent = -1; placeCameraPoint = false; ScrubCutscene(cutsceneCursor); selectedSpriteIdx = -1; @@ -1276,6 +1337,21 @@ void EditorApp::ApplyTool(int gx, int gy) { if (SetCell(gx, gy, CELL_EMPTY)) { playerStartX = gx; playerStartY = gy; } break; case TOOL_SPRITE_SPAWN: + if (pendingSpawnArchetype == 99) { + if (lightSources.size() < MAX_EDITOR_LIGHTS) { + if(lightingMode==0)lightingMode=2; + EditorLightSource nl; + nl.x = gx * 64 + 32; nl.y = gy * 64 + 32; + lightSources.push_back(nl); + selectedLightIdx = static_cast(lightSources.size()) - 1; + selectedSpriteIdx = -1; selectedTransitionIdx = -1; + BakeLighting(); + statusMessage = "Источник света создан на карте."; + } else { + statusMessage = "Лимит источников света карты: 13."; + } + break; + } if (sprites.size() < MAX_LEVEL_SPRITES) { SpriteEntry sprite{}; sprite.x = gx * 64 + 32; sprite.y = gy * 64 + 32; @@ -1303,7 +1379,7 @@ void EditorApp::ApplyTool(int gx, int gy) { SetSpriteEntityData(sprite, ENTITY_ARCHETYPE_PROP, 100, 0, 0); } sprites.push_back(sprite); - selectedSpriteIdx = static_cast(sprites.size()) - 1; + selectedSpriteIdx = static_cast(sprites.size()) - 1; selectedLightIdx=-1; selectedTransitionIdx = -1; } break; @@ -1339,6 +1415,11 @@ void EditorApp::FloodFill(int startX, int startY, uint8_t targetType, uint8_t fi } void EditorApp::DuplicateSelectedEntity() { + if(selectedLightIdx>=0 && selectedLightIdx(lightSources.size())) { + if(lightSources.size()>=MAX_EDITOR_LIGHTS){statusMessage="Лимит: 13 источников карты.";return;} + auto copy=lightSources[selectedLightIdx];copy.x=(std::min)(2047,copy.x+32);copy.y=(std::min)(2047,copy.y+32); + PushUndo();lightSources.push_back(copy);selectedLightIdx=static_cast(lightSources.size())-1;return; + } if (selectedSpriteIdx >= 0 && selectedSpriteIdx < static_cast(sprites.size())) { if (sprites.size() >= MAX_LEVEL_SPRITES) { statusMessage = "Лимит спрайтов на карте достигнут (макс. 32)."; @@ -1355,6 +1436,9 @@ void EditorApp::DuplicateSelectedEntity() { } void EditorApp::DeleteSelectedEntity() { + if(selectedLightIdx>=0 && selectedLightIdx(lightSources.size())) { + PushUndo();lightSources.erase(lightSources.begin()+selectedLightIdx);selectedLightIdx=draggingLightIdx=-1;return; + } if (selectedSpriteIdx >= 0 && selectedSpriteIdx < static_cast(sprites.size())) { PushUndo(); sprites.erase(sprites.begin() + selectedSpriteIdx); @@ -1370,6 +1454,10 @@ void EditorApp::DeleteSelectedEntity() { } void EditorApp::FocusSelectedEntity() { + if(selectedLightIdx>=0 && selectedLightIdx(lightSources.size())) { + canvasPanX=150.0f-lightSources[selectedLightIdx].x/64.0f*canvasZoom; + canvasPanY=150.0f-lightSources[selectedLightIdx].y/64.0f*canvasZoom;return; + } if (selectedSpriteIdx >= 0 && selectedSpriteIdx < static_cast(sprites.size())) { int gx = sprites[selectedSpriteIdx].x / 64; int gy = sprites[selectedSpriteIdx].y / 64; @@ -1768,6 +1856,51 @@ void EditorApp::RenderToolbar() { ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); ImGui::SameLine(); + // Lighting Controls in Toolbar + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.80f, 0.50f, 0.05f, 1.0f)); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(0.95f, 0.65f, 0.10f, 1.0f)); + if (ImGui::Button(" 💡 ЗАПЕЧЬ СВЕТ ")) { + PushUndo(); BakeLighting(); + } + ImGui::PopStyleColor(2); + if (ImGui::IsItemHovered()) ImGui::SetTooltip("Запечь постоянное освещение (Lightmap) для всей карты с учетом стен и препятствий"); + + ImGui::SameLine(); + const char* lModeBtn = (lightingMode == 0) ? " ☀ Свет: ВЫКЛ " : + (lightingMode == 1) ? " 🕯 Свет: ЗАПЕЧЁН " : + " ⚡ Свет: ДИНАМИКА "; + if (ImGui::Button(lModeBtn)) { + PushUndo(); lightingMode = (lightingMode + 1) % 3; + statusMessage = (lightingMode == 0) ? "Режим света: ВЫКЛ (Wolf3D flat)" : + (lightingMode == 1) ? "Режим света: ЗАПЕЧЁННЫЙ (Lightmap)" : + "Режим света: ДИНАМИЧЕСКИЙ (Point lights + Flashlight)"; + } + if (ImGui::IsItemHovered()) ImGui::SetTooltip("Переключение режима освещения (Без света / Запечённый / Динамический)"); + + ImGui::SameLine(); + if (isFlashlightOn) { + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.18f, 0.55f, 0.70f, 1.0f)); + if (ImGui::Button(" 🔦 Фонарик: ВКЛ ")) {PushUndo();isFlashlightOn = false;} + ImGui::PopStyleColor(); + } else { + if (ImGui::Button(" 🔦 Фонарик: ВЫКЛ ")) {PushUndo();isFlashlightOn = true;} + } + if (ImGui::IsItemHovered()) ImGui::SetTooltip("Переключить фонарик игрока [F]"); + + ImGui::SameLine(); + if (showLightHeatmap) { + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0.70f, 0.40f, 0.10f, 1.0f)); + if (ImGui::Button(" 🗺 Карта: ВКЛ ")) showLightHeatmap = false; + ImGui::PopStyleColor(); + } else { + if (ImGui::Button(" 🗺 Карта: ВЫКЛ ")) showLightHeatmap = true; + } + if (ImGui::IsItemHovered()) ImGui::SetTooltip("Отображать световую карту (Heatmap) на 2D сетке"); + + ImGui::SameLine(); + ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical); + ImGui::SameLine(); + // Tools auto ToolButton = [&](const char* label, ToolMode mode) { bool active = (currentTool == mode); @@ -1889,6 +2022,16 @@ void EditorApp::RenderGridCanvas() { ImU32 col = GetCellColor(map[y][x]); drawList->AddRectFilled(tileP0, tileP1, col); + + if (showLightHeatmap) { + uint8_t l = bakedLightmap[y * MAP_GRID_W + x]; + ImU32 lightTint = (l < 50) ? IM_COL32(10, 15, 30, 160) : + (l < 100) ? IM_COL32(30, 30, 20, 100) : + (l < 180) ? IM_COL32(200, 160, 30, static_cast((l - 100) * 0.7f)) : + IM_COL32(255, 220, 80, static_cast(60 + (l - 180) * 0.6f)); + drawList->AddRectFilled(tileP0, tileP1, lightTint); + } + drawList->AddRect(tileP0, tileP1, IM_COL32(50, 50, 55, 120), 0.0f, 0, 1.0f); if (map[y][x] == CELL_PORTAL) { @@ -1963,6 +2106,41 @@ void EditorApp::RenderGridCanvas() { ); } + // 2b. Draw Light Sources on Map Canvas + int hoveredLight = -1; + for (size_t i = 0; i < lightSources.size(); ++i) { + float lx = lightSources[i].x / 64.0f; + float ly = lightSources[i].y / 64.0f; + ImVec2 lcPos = ImVec2(gridOrigin.x + lx * tileSize, gridOrigin.y + ly * tileSize); + + float dx = mousePos.x - lcPos.x; + float dy = mousePos.y - lcPos.y; + float r = tileSize * 0.45f; + if (std::sqrt(dx * dx + dy * dy) < r) { + hoveredLight = static_cast(i); + } + + if (static_cast(i) == selectedLightIdx || static_cast(i) == hoveredLight) { + float radPix = (lightSources[i].radius / 64.0f) * tileSize; + drawList->AddCircle(lcPos, radPix, IM_COL32(255, 210, 40, 160), 48, 1.5f); + drawList->AddCircleFilled(lcPos, radPix, IM_COL32(255, 210, 40, 18)); + } + + uint32_t c = lightSources[i].color; + ImU32 lightCol = IM_COL32((c >> 16) & 0xFF, (c >> 8) & 0xFF, c & 0xFF, 255); + ImU32 haloCol = IM_COL32((c >> 16) & 0xFF, (c >> 8) & 0xFF, c & 0xFF, 70); + + drawList->AddCircleFilled(lcPos, tileSize * 0.38f, haloCol); + drawList->AddCircleFilled(lcPos, tileSize * 0.22f, lightCol); + drawList->AddCircleFilled(lcPos, tileSize * 0.08f, IM_COL32(255, 255, 255, 255)); + + if (static_cast(i) == selectedLightIdx) { + drawList->AddCircle(lcPos, tileSize * 0.42f, IM_COL32(255, 255, 0, 255), 24, 2.0f); + } else if (static_cast(i) == hoveredLight) { + drawList->AddCircle(lcPos, tileSize * 0.42f, IM_COL32(255, 255, 200, 200), 24, 1.5f); + } + } + // 3. Draw Player Spawn Point & Direction Cone { ImVec2 pPos = ImVec2(gridOrigin.x + (playerStartX + 0.5f) * tileSize, @@ -2010,12 +2188,18 @@ void EditorApp::RenderGridCanvas() { drawList->PopClipRect(); return; } if (placeCameraPoint) { drawList->PopClipRect(); return; } - // Left Click: start action (drag sprite OR paint) + // Left Click: start action (drag light OR drag sprite OR paint) if (ImGui::IsMouseClicked(ImGuiMouseButton_Left)) { - if (currentTool == TOOL_SPRITE_SPAWN && hoveredSprite >= 0) { + if (hoveredLight >= 0) { + draggingLightIdx = hoveredLight; + selectedLightIdx = hoveredLight; + selectedSpriteIdx = -1; + selectedTransitionIdx = -1; + PushUndo(); + } else if (currentTool == TOOL_SPRITE_SPAWN && hoveredSprite >= 0) { // Start dragging existing sprite draggingSpriteIdx = hoveredSprite; - selectedSpriteIdx = hoveredSprite; + selectedSpriteIdx = hoveredSprite; selectedLightIdx=-1; selectedTransitionIdx = -1; PushUndo(); } else if (inGrid) { @@ -2023,7 +2207,7 @@ void EditorApp::RenderGridCanvas() { if (map[hoverGy][hoverGx] == CELL_PORTAL) { for (size_t i = 0; i < transitions.size(); ++i) { if (transitions[i].triggerCellX == hoverGx && transitions[i].triggerCellY == hoverGy) { - selectedTransitionIdx = static_cast(i); + selectedTransitionIdx = static_cast(i); selectedLightIdx=-1; selectedSpriteIdx = -1; break; } @@ -2035,9 +2219,14 @@ void EditorApp::RenderGridCanvas() { } } - // Left Drag: continue painting OR move sprite + // Left Drag: continue painting OR move light OR move sprite if (ImGui::IsMouseDown(ImGuiMouseButton_Left)) { - if (draggingSpriteIdx >= 0) { + if (draggingLightIdx >= 0) { + float wx = (mousePos.x - gridOrigin.x) / tileSize; + float wy = (mousePos.y - gridOrigin.y) / tileSize; + lightSources[draggingLightIdx].x = std::clamp(static_cast(wx * 64.0f), 32, (MAP_GRID_W - 1) * 64); + lightSources[draggingLightIdx].y = std::clamp(static_cast(wy * 64.0f), 32, (MAP_GRID_H - 1) * 64); + } else if (draggingSpriteIdx >= 0) { float wx = (mousePos.x - gridOrigin.x) / tileSize; float wy = (mousePos.y - gridOrigin.y) / tileSize; sprites[draggingSpriteIdx].x = static_cast(wx * 64.0f); @@ -2049,6 +2238,10 @@ void EditorApp::RenderGridCanvas() { // Left Release: end drag / stroke if (ImGui::IsMouseReleased(ImGuiMouseButton_Left)) { + if (draggingLightIdx >= 0) { + draggingLightIdx = -1; + BakeLighting(); + } draggingSpriteIdx = -1; strokeSnapshotTaken = false; } @@ -2164,6 +2357,7 @@ void EditorApp::RenderTilePalette() { SpawnerBtn("+ Переключатель [E]", ENTITY_ARCHETYPE_SWITCH, ImVec4(0.70f, 0.40f, 0.10f, 1.0f)); SpawnerBtn("+ Бочка (Взрывная)", ENTITY_ARCHETYPE_BARREL, ImVec4(0.70f, 0.25f, 0.10f, 1.0f)); SpawnerBtn("+ Декорация (Проп)", ENTITY_ARCHETYPE_PROP, ImVec4(0.35f, 0.35f, 0.40f, 1.0f)); + SpawnerBtn("+ Источник света", 99, ImVec4(0.85f, 0.60f, 0.10f, 1.0f)); } void EditorApp::RenderHierarchy() { @@ -2195,7 +2389,7 @@ void EditorApp::RenderHierarchy() { spr.textureId = defaultTex; SetSpriteEntityData(spr, archetype, (archetype == ENTITY_ARCHETYPE_GUARD ? 60 : 100), (archetype == ENTITY_ARCHETYPE_GUARD ? 2 : 0), (archetype == ENTITY_ARCHETYPE_GUARD ? 6 : 0)); sprites.push_back(spr); - selectedSpriteIdx = static_cast(sprites.size()) - 1; + selectedSpriteIdx = static_cast(sprites.size()) - 1; selectedLightIdx=-1; selectedTransitionIdx = -1; statusMessage = "Сущность создана на сцене."; } else { @@ -2210,6 +2404,19 @@ void EditorApp::RenderHierarchy() { AddEntityItem("🕹 Рычаг / Переключатель", ENTITY_ARCHETYPE_SWITCH); AddEntityItem("💥 Взрывная бочка", ENTITY_ARCHETYPE_BARREL); AddEntityItem("🏺 Декорация / Проп", ENTITY_ARCHETYPE_PROP); + if (ImGui::MenuItem("💡 Источник света")) { + if (lightSources.size() < MAX_EDITOR_LIGHTS) { + PushUndo(); + if(lightingMode==0)lightingMode=2; + EditorLightSource nl; + nl.x = (playerStartX + 1) * 64 + 32; nl.y = (playerStartY + 1) * 64 + 32; + lightSources.push_back(nl); + selectedLightIdx = static_cast(lightSources.size()) - 1; + selectedSpriteIdx = -1; selectedTransitionIdx = -1; + BakeLighting(); + statusMessage = "Источник света создан на сцене."; + } + } ImGui::EndPopup(); } @@ -2228,7 +2435,7 @@ void EditorApp::RenderHierarchy() { char playerLabel[96]; snprintf(playerLabel, sizeof(playerLabel), "👤 Игрок [Spawn: (%d, %d)]", playerStartX, playerStartY); if (MatchesSearch(playerLabel) || MatchesSearch("player") || MatchesSearch("игрок")) { - bool isPlayerSelected = (selectedSpriteIdx == -1 && selectedTransitionIdx == -1); + bool isPlayerSelected = (selectedSpriteIdx == -1 && selectedTransitionIdx == -1 && selectedLightIdx == -1); if (ImGui::Selectable(playerLabel, isPlayerSelected)) { selectedSpriteIdx = -1; selectedTransitionIdx = -1; @@ -2269,25 +2476,25 @@ void EditorApp::RenderHierarchy() { bool isSel = (selectedSpriteIdx == static_cast(i)); if (ImGui::Selectable(label, isSel)) { - selectedSpriteIdx = static_cast(i); + selectedSpriteIdx = static_cast(i); selectedLightIdx=-1; selectedTransitionIdx = -1; } if (ImGui::IsItemHovered() && ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left)) { - selectedSpriteIdx = static_cast(i); + selectedSpriteIdx = static_cast(i); selectedLightIdx=-1; FocusSelectedEntity(); } if (ImGui::BeginPopupContextItem()) { if (ImGui::MenuItem("📋 Дублировать", "Ctrl+D")) { - selectedSpriteIdx = static_cast(i); + selectedSpriteIdx = static_cast(i); selectedLightIdx=-1; DuplicateSelectedEntity(); } if (ImGui::MenuItem("🎯 Сфокусировать", "F")) { - selectedSpriteIdx = static_cast(i); + selectedSpriteIdx = static_cast(i); selectedLightIdx=-1; FocusSelectedEntity(); } ImGui::Separator(); if (ImGui::MenuItem("🗑 Удалить", "Del")) { - selectedSpriteIdx = static_cast(i); + selectedSpriteIdx = static_cast(i); selectedLightIdx=-1; DeleteSelectedEntity(); } ImGui::EndPopup(); @@ -2326,6 +2533,15 @@ void EditorApp::RenderHierarchy() { ImGui::TreePop(); } + if(ImGui::TreeNodeEx("Источники света",ImGuiTreeNodeFlags_DefaultOpen)) { + for(int i=0;i(lightSources.size());++i) { + char label[100];snprintf(label,sizeof(label),"Свет #%d: %s##light_%d",i+1, + lightSources[i].lightType==LIGHT_TYPE_STATIC?"постоянный":"динамический",i); + if(ImGui::Selectable(label,selectedLightIdx==i)){selectedLightIdx=i;selectedSpriteIdx=selectedTransitionIdx=-1;} + } + if(ImGui::SmallButton("+ Добавить свет")) {pendingSpawnArchetype=99;currentTool=TOOL_SPRITE_SPAWN;statusMessage="Выберите место источника на карте.";} + ImGui::TreePop(); + } // 3. Sublevel Transitions Category char transHdr[64]; snprintf(transHdr, sizeof(transHdr), "🌀 Порталы перехода (%zu)", transitions.size()); @@ -2340,18 +2556,18 @@ void EditorApp::RenderHierarchy() { bool isSel = (selectedTransitionIdx == static_cast(i)); if (ImGui::Selectable(label, isSel)) { - selectedTransitionIdx = static_cast(i); + selectedTransitionIdx = static_cast(i); selectedLightIdx=-1; selectedSpriteIdx = -1; } if (ImGui::BeginPopupContextItem()) { if (ImGui::MenuItem("🎯 Сфокусировать", "F")) { - selectedTransitionIdx = static_cast(i); + selectedTransitionIdx = static_cast(i); selectedLightIdx=-1; canvasPanX = 150.0f - (transitions[i].triggerCellX * canvasZoom); canvasPanY = 150.0f - (transitions[i].triggerCellY * canvasZoom); } ImGui::Separator(); if (ImGui::MenuItem("🗑 Удалить портал", "Del")) { - selectedTransitionIdx = static_cast(i); + selectedTransitionIdx = static_cast(i); selectedLightIdx=-1; DeleteSelectedEntity(); } ImGui::EndPopup(); @@ -2370,6 +2586,10 @@ void EditorApp::RenderInspector() { ImGui::TextColored(ImVec4(0.2f, 0.8f, 1.0f, 1.0f), "ИНСПЕКТОР СВОЙСТВ (INSPECTOR)"); ImGui::Separator(); + if(selectedLightIdx>=0 && selectedLightIdx(lightSources.size())) {RenderLightingInspector();return;} + RenderLightingSettings(); + ImGui::Separator(); + // Case 1: Sprite Entity Selected if (selectedSpriteIdx >= 0 && selectedSpriteIdx < static_cast(sprites.size())) { auto& spr = sprites[selectedSpriteIdx]; @@ -2807,3 +3027,5 @@ void EditorApp::RenderExportGameModal() { } } + +#include "editor_lighting.inl" diff --git a/editor/src/editor_app.h b/editor/src/editor_app.h index a9f1f26..8ca338c 100644 --- a/editor/src/editor_app.h +++ b/editor/src/editor_app.h @@ -9,6 +9,7 @@ #include "level_format.h" #include "cutscene_preview.h" #include "preview_protocol.h" +#include "lighting_format.h" #include #include #include @@ -33,6 +34,10 @@ struct LevelSnapshot { std::vector sprites; std::vector transitions; CutsceneTrack cutscene; + std::vector lightSources; + LightingSettings lightingSettings; + std::array bakedRGB; + uint64_t bakedSignature=0; }; class EditorApp { @@ -107,10 +112,31 @@ public: uint8_t pendingSpawnArchetype = ENTITY_ARCHETYPE_PROP; int selectedSpriteIdx = -1; int selectedTransitionIdx = -1; + int selectedLightIdx = -1; + int draggingLightIdx = -1; bool isEngineRunning = false; std::string statusMessage = "Готов к работе. EblanStudio v1.2"; std::string currentFilePath = "..\\assets\\map.dat"; + // Lighting Subsystem State & Light Sources + int lightingMode = 2; // 0 = None, 1 = Baked, 2 = Dynamic + int ambientLightLevel = 40; + bool isFlashlightOn = true; + int flashlightRadius = 384; + int flashlightIntensity = 240; + int flashlightCone = 45; + bool showLightHeatmap = false; + uint8_t bakedLightmap[MAP_TOTAL_CELLS] = { 0 }; + std::array bakedLightRGB{}; + uint64_t bakedLightingSignature = 0; + std::vector lightSources; + + void BakeLighting(); + void InitDefaultLights(); + bool CastLightRay(int x1, int y1, int x2, int y2) const; + bool LightingNeedsBake() const; + LightingSettings GetLightingSettings() const; + // Viewport pan & zoom float canvasZoom = 20.0f; // pixels per tile float canvasPanX = 20.0f; @@ -121,6 +147,8 @@ public: struct ID3D11ShaderResourceView* textureSRVs[16] = { nullptr }; private: + void RenderLightingInspector(); + void RenderLightingSettings(); bool EnsureEnginePreview(); void StopEnginePreview(); void UpdateEnginePreview(); diff --git a/editor/src/editor_code.inl b/editor/src/editor_code.inl index b1c10b6..a3e5c03 100644 --- a/editor/src/editor_code.inl +++ b/editor/src/editor_code.inl @@ -18,6 +18,8 @@ struct CodeFileEntry { }; static const CodeFileEntry g_ProjectCodeFiles[] = { + { "engine_light.inc (Light Sources & Bursts)", "include/engine_light.inc" }, + { "engine_lighting_core.inc (Static RGB Bake & Dynamic Lighting)", "include/engine_lighting_core.inc" }, { "engine_gameplay.inc (Events, Hooks & Dialogs)", "include/engine_gameplay.inc" }, { "engine_combat.inc (Weapons & Combat)", "include/engine_combat.inc" }, { "engine_entity.inc (Entities & AI)", "include/engine_entity.inc" }, diff --git a/editor/src/editor_lighting.inl b/editor/src/editor_lighting.inl new file mode 100644 index 0000000..6e3c935 --- /dev/null +++ b/editor/src/editor_lighting.inl @@ -0,0 +1,72 @@ +void EditorApp::RenderLightingSettings() { + if(!ImGui::CollapsingHeader("Освещение карты",ImGuiTreeNodeFlags_DefaultOpen)) return; + auto edited=GetLightingSettings(); bool changed=false,activated=false; + auto undoItem=[&](){activated|=ImGui::IsItemActivated();}; + const char* modes[]={"Без освещения","Только запечённый","Запечённый + динамический"}; + int mode=edited.mode; + changed|=ImGui::Combo("Режим света",&mode,modes,3);undoItem();edited.mode=mode; + int ambient=edited.ambient; + changed|=ImGui::SliderInt("Фоновый свет",&ambient,0,255);undoItem();edited.ambient=ambient; + bool flash=edited.flashlight!=0; + changed|=ImGui::Checkbox("Фонарик игрока",&flash);undoItem();edited.flashlight=flash; + if(flash) { + int radius=edited.flashlightRadius,intensity=edited.flashlightIntensity,cone=edited.flashlightCone; + changed|=ImGui::SliderInt("Дальность фонаря",&radius,32,2048);undoItem(); + changed|=ImGui::SliderInt("Яркость фонаря",&intensity,0,255);undoItem(); + changed|=ImGui::SliderInt("Полуугол фонаря",&cone,1,96);undoItem(); + edited.flashlightRadius=radius;edited.flashlightIntensity=intensity;edited.flashlightCone=cone; + } + if(activated)PushUndo(); + if(changed) { + lightingMode=edited.mode;ambientLightLevel=edited.ambient;isFlashlightOn=edited.flashlight!=0; + flashlightRadius=edited.flashlightRadius;flashlightIntensity=edited.flashlightIntensity;flashlightCone=edited.flashlightCone; + } + if(ImGui::Button("Запечь постоянный свет",ImVec2(-1,0))) {PushUndo();BakeLighting();} + if(LightingNeedsBake()) ImGui::TextWrapped("Геометрия или постоянный свет изменены: нужно запечь. При сохранении и F5 запекание выполняется автоматически."); + else ImGui::TextDisabled("Постоянный свет запечён"); + ImGui::Checkbox("Карта запечённого света",&showLightHeatmap); + ImGui::TextWrapped("Постоянные источники входят в запекание. Точечные, мерцающие и пульсирующие работают в динамическом режиме."); +} + +void EditorApp::RenderLightingInspector() { + auto& light=lightSources[selectedLightIdx]; + ImGui::Text("Источник света #%d / %d",selectedLightIdx+1,MAX_EDITOR_LIGHTS); + if(ImGui::Button("Удалить источник")) { + PushUndo();lightSources.erase(lightSources.begin()+selectedLightIdx);selectedLightIdx=-1;return; + } + ImGui::SameLine(); + if(ImGui::Button("Копировать")) { + if(lightSources.size()(lightSources.size())-1; + } else statusMessage="Лимит: 13 источников карты; фонарик и вспышки имеют отдельные места."; + return; + } + EditorLightSource edited=light;bool changed=false,activated=false; + auto undoItem=[&](){activated|=ImGui::IsItemActivated();}; + bool active=(edited.flags&LIGHT_FLAG_ACTIVE)!=0; + changed|=ImGui::Checkbox("Включён",&active);undoItem(); + edited.flags=(edited.flags&~LIGHT_FLAG_ACTIVE)|(active?LIGHT_FLAG_ACTIVE:0); + float x=edited.x/64.0f,y=edited.y/64.0f; + if(ImGui::SliderFloat("Позиция X",&x,0,31.98f,"%.2f")){edited.x=static_cast(x*64);changed=true;}undoItem(); + if(ImGui::SliderFloat("Позиция Y",&y,0,31.98f,"%.2f")){edited.y=static_cast(y*64);changed=true;}undoItem(); + changed|=ImGui::SliderInt("Радиус",&edited.radius,32,2048);undoItem(); + changed|=ImGui::SliderInt("Интенсивность",&edited.intensity,0,255);undoItem();edited.curIntensity=edited.intensity; + float color[]={((edited.color>>16)&255)/255.f,((edited.color>>8)&255)/255.f,(edited.color&255)/255.f}; + if(ImGui::ColorEdit3("Цвет света",color)) { + edited.color=(uint32_t(color[0]*255)<<16)|(uint32_t(color[1]*255)<<8)|uint32_t(color[2]*255);changed=true; + }undoItem(); + const char* types[]={"Постоянный (запекание)","Точечный (динамический)","Пульсирующий (динамический)"}; + int type=edited.lightType==LIGHT_TYPE_STATIC?0:edited.lightType==LIGHT_TYPE_PULSE?2:1; + if(ImGui::Combo("Тип света",&type,types,3)){edited.lightType=type==0?LIGHT_TYPE_STATIC:type==1?LIGHT_TYPE_POINT:LIGHT_TYPE_PULSE;changed=true;}undoItem(); + bool shadows=(edited.flags&LIGHT_FLAG_SHADOWS)!=0,flicker=(edited.flags&LIGHT_FLAG_FLICKER)!=0; + changed|=ImGui::Checkbox("Тени от стен и дверей",&shadows);undoItem(); + edited.flags=(edited.flags&~LIGHT_FLAG_SHADOWS)|(shadows?LIGHT_FLAG_SHADOWS:0); + if(edited.lightType!=LIGHT_TYPE_STATIC) { + changed|=ImGui::Checkbox("Мерцание факела",&flicker);undoItem(); + edited.flags=(edited.flags&~LIGHT_FLAG_FLICKER)|(flicker?LIGHT_FLAG_FLICKER:0); + } + if(activated)PushUndo(); + if(changed)light=edited; + RenderLightingSettings(); +} diff --git a/editor/src/editor_viewport.inl b/editor/src/editor_viewport.inl index fa356df..817f092 100644 --- a/editor/src/editor_viewport.inl +++ b/editor/src/editor_viewport.inl @@ -41,7 +41,7 @@ bool EditorApp::EnsureEnginePreview() { if (!previewPacket) return fail("Не удалось открыть буфер игрового вида."); // Initialize in place: no large packet on the thread's stack. memset(previewPacket, 0, sizeof(*previewPacket)); - previewPacket->magic = 0x56504245; previewPacket->version = 1; previewPacket->parentPid = GetCurrentProcessId(); + previewPacket->magic = 0x56504245; previewPacket->version = 2; previewPacket->parentPid = GetCurrentProcessId(); std::string command = "\"" + engine + "\" \"--preview:" + name + "\""; STARTUPINFOA si{}; si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; if (!CreateProcessA(engine.c_str(), command.data(), nullptr, nullptr, FALSE, CREATE_NO_WINDOW, nullptr, @@ -105,6 +105,14 @@ void EditorApp::UpdateEnginePreview() { if (!sprites.empty()) memcpy(previewPacket->sprites,sprites.data(),previewPacket->spriteCount*sizeof(SpriteEntry)); previewPacket->cinematic = scene && cutscenePreview.active; previewPacket->fade = scene ? cutscenePreview.fade : 0; + previewPacket->lightingMode = static_cast(lightingMode); + previewPacket->ambientLight = static_cast(ambientLightLevel); + previewPacket->flashlight = isFlashlightOn ? 1 : 0; + previewPacket->lightCount = static_cast((std::min)(lightSources.size(), size_t(MAX_EDITOR_LIGHTS))); + previewPacket->flashlightRadius=flashlightRadius;previewPacket->flashlightIntensity=flashlightIntensity;previewPacket->flashlightCone=flashlightCone; + if(!lightSources.empty()) memcpy(previewPacket->lights,lightSources.data(),previewPacket->lightCount*sizeof(EditorLightSource)); + memcpy(previewPacket->bakedRGB,bakedLightRGB.data(),4096); + previewPacket->lightTick=static_cast(GetTickCount64()*60/1000); memset(previewPacket->subtitle,0,96); if (scene && cutscenePreview.subtitle >= 0 && cutscenePreview.subtitle < static_cast(cutscene.strings.size())) { std::string encoded; diff --git a/editor/src/level_format.h b/editor/src/level_format.h index b28592c..4612250 100644 --- a/editor/src/level_format.h +++ b/editor/src/level_format.h @@ -6,7 +6,7 @@ // ============================================================================== constexpr uint32_t MAP_MAGIC = 0x4E4C4245; // 'EBLN' -constexpr uint16_t MAP_FORMAT_VERSION = 4; // v4 adds a cutscene track and CP1251 string pool +constexpr uint16_t MAP_FORMAT_VERSION = 5; // v5 adds authored lighting and baked RGB cells constexpr int MAP_GRID_W = 32; constexpr int MAP_GRID_H = 32; constexpr int MAP_TOTAL_CELLS = MAP_GRID_W * MAP_GRID_H; // 1024 bytes @@ -66,7 +66,7 @@ struct LevelTransition { struct MapHeader { uint32_t magic; // 'EBLN' - uint16_t version; // Current writer: 4; reader also accepts v1/v2/v3 + uint16_t version; // Current writer: 5; reader also accepts v1/v2/v3/v4 uint16_t mapWidth; // 32 uint16_t mapHeight; // 32 uint16_t playerStartX; // Cell coordinate (0..31) @@ -79,7 +79,8 @@ struct MapHeader { uint16_t cutsceneCount; // v4 only; old versions ignore the remaining header fields uint16_t cutsceneStringCount; uint16_t cutsceneFlags; // bit 0 = start automatically after entering this map - uint8_t reserved[4]; // Total header remains 38 bytes + uint16_t lightCount; // v5 only, authored lights (slots 1..13 in engine) + uint16_t lightingReserved; // must be zero in v5; header remains 38 bytes }; struct CutsceneEvent { @@ -135,3 +136,53 @@ static_assert(sizeof(MapHeader) == 38, "EBLN header layout changed"); static_assert(sizeof(SpriteEntry) == 24, "EBLN sprite layout changed"); static_assert(sizeof(LevelTransition) == 42, "EBLN transition layout changed"); static_assert(sizeof(CutsceneEvent) == 16, "EBLN cutscene event layout changed"); + +// Lighting Modes & Types (mirrors include/engine_defs.inc) +enum LightingMode : uint32_t { + LIGHTING_MODE_NONE = 0, + LIGHTING_MODE_BAKED = 1, + LIGHTING_MODE_DYNAMIC = 2 +}; + +enum LightType : uint32_t { + LIGHT_TYPE_STATIC = 0, + LIGHT_TYPE_POINT = 1, + LIGHT_TYPE_FLASHLIGHT = 2, + LIGHT_TYPE_BURST = 3, + LIGHT_TYPE_PULSE = 4 +}; + +constexpr uint32_t LIGHT_FLAG_INACTIVE = 0; +constexpr uint32_t LIGHT_FLAG_ACTIVE = 1; +constexpr uint32_t LIGHT_FLAG_SHADOWS = 2; +constexpr uint32_t LIGHT_FLAG_FLICKER = 4; + +constexpr int MAX_EDITOR_LIGHTS = 13; // engine slots 0 / 14 / 15 are flashlight / muzzle / explosion + +#pragma pack(push, 1) +struct EditorLightSource { + int32_t x = 0; // raw world units (cell * 64 + 32) + int32_t y = 0; + int32_t radius = 240; // radius in raw world units + int32_t intensity = 220; // 0..255 base intensity + int32_t curIntensity = 220;// 0..255 current intensity + int32_t lightType = LIGHT_TYPE_POINT; + uint32_t flags = LIGHT_FLAG_ACTIVE | LIGHT_FLAG_SHADOWS | LIGHT_FLAG_FLICKER; + uint32_t color = 0x00FFB040;// 00RRGGBBh tint (warm torch) + int32_t decaySpeed = 0; + int32_t flickerPhase = 0; +}; +#pragma pack(pop) +static_assert(sizeof(EditorLightSource) == 40, "EditorLightSource size mismatch with MASM LightSource"); + +struct LightingSettings { + uint32_t mode = LIGHTING_MODE_NONE; + uint32_t ambient = 40; + uint32_t flashlight = 1; + uint32_t flashlightRadius = 384; + uint32_t flashlightIntensity = 240; + uint32_t flashlightCone = 45; + uint32_t baked = 1; + uint32_t reserved = 0; +}; +static_assert(sizeof(LightingSettings) == 32, "Lighting settings wire layout changed"); diff --git a/editor/src/level_io.h b/editor/src/level_io.h index 3f53229..55b3314 100644 --- a/editor/src/level_io.h +++ b/editor/src/level_io.h @@ -1,6 +1,7 @@ #pragma once #include "level_format.h" #include "cutscene_format.h" +#include "lighting_format.h" #include #include #include @@ -14,6 +15,7 @@ struct BinaryLevel { std::vector sprites; std::vector transitions; CutsceneTrack cutscene; + LevelLighting lighting; }; inline bool IsMapFilename(const char* name) { @@ -63,6 +65,8 @@ inline bool ValidateLevel(const BinaryLevel& level, std::string& error) { } for (size_t i = 0; i < level.cells.size(); ++i) if (level.cells[i] == CELL_PORTAL && !triggers[i]) return fail("Портал не имеет настроенного перехода"); + if(!ValidateLighting(level.lighting.settings,level.lighting.lights.data(),level.lighting.lights.size(),error)) return false; + for(auto c:level.lighting.rgb) if(c&0xFF000000) {error="Неверный цвет запечённого света";return false;} return ValidateCutscene(level.cutscene, level.cells.data(), level.transitions.size(), error); } @@ -85,9 +89,12 @@ inline bool ReadLevelFile(const std::string& path, BinaryLevel& result, std::str if (eventCount > MAX_CUTSCENE_EVENTS || stringCount > MAX_CUTSCENE_STRINGS) { error = "Превышен лимит событий или строк кат-сцены"; return false; } + const size_t lightCount=h.version>=5?h.lightCount:0; + if(lightCount>MAX_EDITOR_LIGHTS || (h.version>=5&&h.lightingReserved)) {error="Неверный заголовок освещения";return false;} const size_t expected = sizeof(MapHeader) + MAP_TOTAL_CELLS + h.spriteCount * sizeof(SpriteEntry) + transitionCount * sizeof(LevelTransition) + - eventCount * sizeof(CutsceneEvent) + stringCount * CUTSCENE_STRING_BYTES; + eventCount * sizeof(CutsceneEvent) + stringCount * CUTSCENE_STRING_BYTES + + (h.version>=5?sizeof(LightingSettings)+lightCount*sizeof(EditorLightSource)+4096:0); if (fileSize != static_cast(expected)) { error = "Размер файла не соответствует заголовку карты"; return false; } @@ -108,6 +115,12 @@ inline bool ReadLevelFile(const std::string& path, BinaryLevel& result, std::str if (!end) { error = "Строка кат-сцены не имеет завершающего нуля"; return false; } candidate.cutscene.strings.push_back(CutsceneDecode(bytes, static_cast(end - bytes))); } + if(h.version>=5) { + in.read(reinterpret_cast(&candidate.lighting.settings),sizeof(LightingSettings)); + candidate.lighting.lights.resize(lightCount); + if(lightCount)in.read(reinterpret_cast(candidate.lighting.lights.data()),lightCount*sizeof(EditorLightSource)); + in.read(reinterpret_cast(candidate.lighting.rgb.data()),4096); + } if (!in) { error = "Не удалось прочитать карту целиком"; return false; } if (h.version == 1) for (auto& sprite : candidate.sprites) { sprite.x >>= 16; sprite.y >>= 16; } if (!ValidateLevel(candidate, error)) return false; diff --git a/editor/src/lighting_format.h b/editor/src/lighting_format.h new file mode 100644 index 0000000..2fce96c --- /dev/null +++ b/editor/src/lighting_format.h @@ -0,0 +1,97 @@ +#pragma once +#include "level_format.h" +#include +#include +#include +#include +#include + +struct LevelLighting { + LightingSettings settings; + std::vector lights; + std::array rgb{}; // 00RRGGBB, baked static contribution + ambient + LevelLighting() { rgb.fill(0x282828); } +}; + +inline bool ValidateLighting(const LightingSettings& s, const EditorLightSource* lights, size_t count, std::string& error) { + if (s.mode>2 || s.ambient>255 || s.flashlight>1 || s.flashlightRadius<32 || s.flashlightRadius>2048 || + s.flashlightIntensity>255 || s.flashlightCone<1 || s.flashlightCone>96 || s.baked!=1 || s.reserved || count>MAX_EDITOR_LIGHTS) { + error="Неверные параметры освещения"; return false; + } + for(size_t i=0;i=2048 || l.y<0 || l.y>=2048 || l.radius<1 || l.radius>2048 || l.intensity<0 || l.intensity>255 || + l.curIntensity<0 || l.curIntensity>255 || (l.lightType!=LIGHT_TYPE_STATIC && l.lightType!=LIGHT_TYPE_POINT && l.lightType!=LIGHT_TYPE_PULSE) || (l.flags&~7u) || (l.color&0xFF000000)) { + error="Неверные координаты, цвет или параметры источника света"; return false; + } + } + return true; +} + +inline bool LightingWalkable(uint8_t cell) { return cell==0 || cell==6 || cell==10; } + +// Exact supercover grid traversal; corner crossings cannot leak diagonally through walls. +inline bool LightingVisible(const uint8_t* cells,int x1,int y1,int x2,int y2) { + if(x1<0||x1>=2048||y1<0||y1>=2048||x2<0||x2>=2048||y2<0||y2>=2048) return false; + int cx=x1/64,cy=y1/64,ex=x2/64,ey=y2/64; + const int dx=std::abs(x2-x1),dy=std::abs(y2-y1),sx=x2>=x1?1:-1,sy=y2>=y1?1:-1; + int nx=sx>0?(cx+1)*64-x1:x1-cx*64,ny=sy>0?(cy+1)*64-y1:y1-cy*64; + auto free=[&](int x,int y){return x>=0&&x<32&&y>=0&&y<32&&LightingWalkable(cells[y*32+x]);}; + // A wall-mounted source may start in a wall; every subsequent cell is tested. + for(int steps=0;steps<65;++steps) { + if(cx==ex&&cy==ey) return free(cx,cy); + const int a=dx?nx*dy:0x3FFFFFFF,b=dy?ny*dx:0x3FFFFFFF; + if(a==b) { + if(!free(cx+sx,cy)||!free(cx,cy+sy)) return false; + cx+=sx;cy+=sy;nx+=64;ny+=64; + } else if(a BakeLightingRGB(const uint8_t* cells,const std::vector& lights,int ambient) { + std::array rgb; + const uint32_t base=ambient*0x010101u;rgb.fill(base); + for(int i=0;i<1024;++i) { + if(!LightingWalkable(cells[i])) continue; + int x=(i%32)*64+32,y=(i/32)*64+32,r=ambient,g=ambient,b=ambient; + for(const auto& l:lights) { + if(!(l.flags&LIGHT_FLAG_ACTIVE)||l.lightType!=LIGHT_TYPE_STATIC||l.radius<=0) continue; + int d=LightDistance(x-l.x,y-l.y);if(d>=l.radius) continue; + if((l.flags&LIGHT_FLAG_SHADOWS)&&!LightingVisible(cells,l.x,l.y,x,y)) continue; + int a=(l.radius-d)*l.intensity/l.radius; + r=(std::min)(255,r+a*int((l.color>>16)&255)/255); + g=(std::min)(255,g+a*int((l.color>>8)&255)/255); + b=(std::min)(255,b+a*int(l.color&255)/255); + } + rgb[i]=(r<<16)|(g<<8)|b; + } + auto smooth=rgb; + for(int y=0;y<32;++y)for(int x=0;x<32;++x) { + int i=y*32+x;if(!LightingWalkable(cells[i])) continue; + int r=((rgb[i]>>16)&255)*2,g=((rgb[i]>>8)&255)*2,b=(rgb[i]&255)*2,n=2; + for(auto delta: {std::pair{-1,0},{1,0},{0,-1},{0,1}}) { + int xx=x+delta.first,yy=y+delta.second; + if(xx<0||xx>=32||yy<0||yy>=32||!LightingWalkable(cells[yy*32+xx])) continue; + uint32_t c=rgb[yy*32+xx];r+=(c>>16)&255;g+=(c>>8)&255;b+=c&255;++n; + } + smooth[i]=((r/n)<<16)|((g/n)<<8)|(b/n); + } + return smooth; +} + +inline uint64_t LightingBakeSignature(const uint8_t* cells,const std::vector& lights,int ambient) { + uint64_t hash=1469598103934665603ull; + auto add=[&](uint32_t v){hash^=v;hash*=1099511628211ull;}; + for(int i=0;i<1024;++i)add(cells[i]);add(ambient); + for(const auto& l:lights)if(l.lightType==LIGHT_TYPE_STATIC) { + add(l.x);add(l.y);add(l.radius);add(l.intensity);add(l.flags&3);add(l.color); + } + return hash; +} diff --git a/editor/src/preview_protocol.h b/editor/src/preview_protocol.h index ce474c3..70fec11 100644 --- a/editor/src/preview_protocol.h +++ b/editor/src/preview_protocol.h @@ -8,21 +8,33 @@ // Never modify payload while state == 1. All fields have fixed wire widths. struct EnginePreviewPacket { uint32_t magic = 0x56504245; // EBPV - uint32_t version = 1; + uint32_t version = 2; volatile long state = 0; uint32_t parentPid = 0; int32_t x = 160, y = 160, angle = 0; uint32_t ceiling = 0, floor = 0, spriteCount = 0; uint32_t cinematic = 0, fade = 0, textureRevision = 0; - uint32_t reserved[19]{}; + uint32_t lightingMode = 2; // offset 52: 0=None, 1=Baked, 2=Dynamic + uint32_t ambientLight = 40; // offset 56: base shadow level + uint32_t flashlight = 1; // offset 60: 1=flashlight active + uint32_t lightCount = 0; // offset 64: count of active lights + uint32_t flashlightRadius = 384; // 68 + uint32_t flashlightIntensity = 240; // 72 + uint32_t flashlightCone = 45; // 76 + uint32_t lightingRevision = 0; // 80 + uint32_t lightTick = 0; // 84, deterministic 60 Hz time + uint32_t reserved[10]{}; uint8_t cells[1024]{}; SpriteEntry sprites[32]{}; char subtitle[96]{}; uint32_t textures[16*128*128]{}; uint32_t pixels[320*240]{}; + EditorLightSource lights[MAX_EDITOR_LIGHTS]{}; + uint32_t bakedRGB[1024]{}; }; static_assert(sizeof(long) == 4, "Preview protocol requires Windows LONG"); static_assert(offsetof(EnginePreviewPacket, cells) == 128, "Preview header mismatch"); static_assert(offsetof(EnginePreviewPacket, textures) == 2016, "Preview texture offset mismatch"); static_assert(offsetof(EnginePreviewPacket, pixels) == 1050592, "Preview framebuffer offset mismatch"); -static_assert(sizeof(EnginePreviewPacket) == 1357792, "Preview mapping size mismatch"); +static_assert(offsetof(EnginePreviewPacket,lights)==1357792,"Light payload offset changed"); +static_assert(sizeof(EnginePreviewPacket) == 1362408, "Preview mapping size mismatch"); diff --git a/editor/src/project_manager.h b/editor/src/project_manager.h index 70b2ba5..e1334ef 100644 --- a/editor/src/project_manager.h +++ b/editor/src/project_manager.h @@ -19,6 +19,9 @@ struct EblanProject { int gameMode = 1; // 0 = Adventure (No weapons / Peaceful), 1 = Action (Weapons) bool showWeapons = true; bool showCrosshair = true; + int lightingMode = 2; // 0 = None, 1 = Baked, 2 = Dynamic + int ambientLight = 40; + bool flashlight = true; bool Save(const std::string& path) const { HANDLE hFile = CreateFileA(path.c_str(), GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); @@ -38,6 +41,11 @@ struct EblanProject { content += std::string("GameMode=") + numBuf + "\r\n"; content += std::string("ShowWeapons=") + (showWeapons ? "1" : "0") + "\r\n"; content += std::string("ShowCrosshair=") + (showCrosshair ? "1" : "0") + "\r\n"; + snprintf(numBuf, sizeof(numBuf), "%d", lightingMode); + content += std::string("LightingMode=") + numBuf + "\r\n"; + snprintf(numBuf, sizeof(numBuf), "%d", ambientLight); + content += std::string("AmbientLight=") + numBuf + "\r\n"; + content += std::string("Flashlight=") + (flashlight ? "1" : "0") + "\r\n"; DWORD written = 0; WriteFile(hFile, content.data(), static_cast(content.size()), &written, nullptr); CloseHandle(hFile); @@ -75,6 +83,9 @@ struct EblanProject { else if (key == "GameMode") gameMode = std::atoi(val.c_str()); else if (key == "ShowWeapons") showWeapons = (val == "1" || val == "true"); else if (key == "ShowCrosshair") showCrosshair = (val == "1" || val == "true"); + else if (key == "LightingMode") lightingMode = std::atoi(val.c_str()); + else if (key == "AmbientLight") ambientLight = std::atoi(val.c_str()); + else if (key == "Flashlight") flashlight = (val == "1" || val == "true"); } } diff --git a/engine.exe b/engine.exe index 979ec243df063a53d62dc01cf4c94fb6a31d3ca7..61e03d41e6c14660a92da560e6faf83adf0457e6 100644 GIT binary patch literal 32256 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 diff --git a/include/engine_combat.inc b/include/engine_combat.inc index 92a3f2f..4c3d768 100644 --- a/include/engine_combat.inc +++ b/include/engine_combat.inc @@ -85,6 +85,7 @@ setup_shotgun: mov hitTolerance, 40 mov playerAttackCooldown, 22 mov playerFlashTimer, 7 + invoke SpawnMuzzleFlashLight, playerX, playerY jmp fire_hitscan setup_pistol: @@ -97,6 +98,7 @@ setup_pistol: mov hitTolerance, 22 mov playerAttackCooldown, 12 mov playerFlashTimer, 5 + invoke SpawnMuzzleFlashLight, playerX, playerY fire_hitscan: ; 3. Hitscan check against enemies & destructible barrels in crosshair @@ -288,6 +290,7 @@ explode_barrel: push edi mov esi, [ebx].SpriteStruct.x mov edi, [ebx].SpriteStruct.y + invoke SpawnExplosionLight, esi, edi mov i, 0 aoe_loop: diff --git a/include/engine_data.inc b/include/engine_data.inc index a36f881..c1bd8a4 100644 --- a/include/engine_data.inc +++ b/include/engine_data.inc @@ -71,8 +71,20 @@ keyPause db 0 keyPauseHeld db 0 keyHudStyleHeld db 0 keyMenuHeld db 0 +keyFlashlight db 0 +keyFlashlightHeld db 0 +keyLightMode db 0 +keyLightModeHeld db 0 isGamePaused dd 0 +; Lighting Configuration & Dynamic State +lightingMode dd LIGHTING_MODE_NONE ; 0 = None, 1 = Baked, 2 = Dynamic+Baked (InitLightingSystem enables DYNAMIC) +ambientLightLevel dd 40 ; Base shadow level (40/256 = ~15% darkness) +isFlashlightOn dd 1 ; 1 = Player flashlight active +flashlightRadius dd 384 ; 6 cells distance +flashlightIntensity dd 240 ; Bright focused beam +flashlightConeAngle dd 45 ; Half-angle of beam (~32 degrees in 512-angle circle) + ; Game Mode & HUD Configuration gameMode dd GAME_MODE_ACTION ; 0 = Adventure (No weapons), 1 = Action / Combat hudStyle dd HUD_STYLE_CLEAN ; 0 = Clean / Immersive, 1 = Debug / Classic @@ -250,6 +262,11 @@ entityTimer dd MAX_SPRITES dup(?) entitySpeed dd MAX_SPRITES dup(?) entityAggro dd MAX_SPRITES dup(?) +ALIGN 4 +lightGrid db MAP_SIZE dup(?) ; 1024 bytes: baked light level (0..255) per cell +ALIGN 4 +lightSources db MAX_LIGHTS * (sizeof LightSource) dup(?) + ; Gameplay Variables & Built-in Toast Strings (CP1251) .data ALIGN 4 @@ -275,6 +292,12 @@ szWeaponsEnabledToast db "РЕЖИМ: ОРУЖИЕ ВКЛЮЧЕНО", 0 szWeaponsDisabledToast db "РЕЖИМ: БЕЗ ОРУЖИЯ (КВЕСТ)", 0 szHudCleanToast db "ИНТЕРФЕЙС: ЧИСТЫЙ ВИД", 0 szHudDebugToast db "ИНТЕРФЕЙС: РЕЖИМ ОТЛАДКИ", 0 +szFlashlightOn db 0D4h,0CEh,0CDh,0C0h,0D0h,0C8h,0CAh,03Ah,020h,0C2h,0CAh,0CBh,020h,05Bh,046h,05Dh,0 ; ФОНАРИК: ВКЛ [F] (CP1251) +szFlashlightOff db 0D4h,0CEh,0CDh,0C0h,0D0h,0C8h,0CAh,03Ah,020h,0C2h,0DBh,0CAh,0CBh,020h,05Bh,046h,05Dh,0 ; ФОНАРИК: ВЫКЛ [F] (CP1251) +szLightMode0 db 0D1h,0C2h,0C5h,0D2h,03Ah,020h,0C2h,0DBh,0CAh,0CBh,0DEh,0D7h,0C5h,0CDh,020h,028h,057h,06Fh,06Ch,066h,033h,044h,029h,0 ; СВЕТ: ВЫКЛЮЧЕН (Wolf3D) (CP1251) +szLightMode1 db 0D1h,0C2h,0C5h,0D2h,03Ah,020h,0C7h,0C0h,0CFh,0C5h,0D7h,0A8h,0CDh,0CDh,0DBh,0C9h,020h,028h,04Ch,069h,067h,068h,074h,06Dh,061h,070h,029h,0 ; СВЕТ: ЗАПЕЧЁННЫЙ (Lightmap) (CP1251) +szLightMode2 db 0D1h,0C2h,0C5h,0D2h,03Ah,020h,0C4h,0C8h,0CDh,0C0h,0CCh,0C8h,0D7h,0C5h,0D1h,0CAh,0C8h,0C9h,020h,0D1h,020h,0D4h,0C8h,0C7h,0C8h,0CAh,0CEh,0C9h,0 ; СВЕТ: ДИНАМИЧЕСКИЙ С ФИЗИКОЙ (CP1251) +szBakeDoneToast db 0D1h,0C2h,0C5h,0D2h,020h,0C7h,0C0h,0CFh,0C5h,0D7h,0A8h,0CDh,03Ah,020h,031h,030h,032h,034h,020h,0DFh,0D7h,0C5h,0C9h,0CAh,0C8h,0 ; СВЕТ ЗАПЕЧЁН: 1024 ЯЧЕЙКИ (CP1251) szProjectFile db "project.eblanproj", 0 szProjGameMode0 db "GameMode=0", 0 szProjGameMode1 db "GameMode=1", 0 @@ -285,3 +308,23 @@ szFlagAction db "action", 0 szFlagDebugHud db "debug-hud", 0 szFlagCleanHud db "clean-hud", 0 previewPrefix db "--preview:", 0 + +; Persistent and staged lighting buffers (declared before the map loader). +.data +lightingTick dd 0 +authoredLightCount dd 0 +legacyLightingSettings dd 0,40,1,384,240,45,1,0 +lightRed dd 256 +lightGreen dd 256 +lightBlue dd 256 +lightAccumR dd 0 +lightAccumG dd 0 +lightAccumB dd 0 +lightWeight dd 0 +.data? +ALIGN 4 +lightGridRGB dd MAP_SIZE dup(?) +lightSmoothRGB dd MAP_SIZE dup(?) +stagedLightSettings dd 8 dup(?) +stagedLightSources db 13*40 dup(?) +stagedLightRGB dd MAP_SIZE dup(?) diff --git a/include/engine_defs.inc b/include/engine_defs.inc index 9081565..ac2b60b 100644 --- a/include/engine_defs.inc +++ b/include/engine_defs.inc @@ -74,6 +74,27 @@ VK_KEY_4 equ 34h VK_KEY_5 equ 35h VK_KEY_F1 equ 70h VK_KEY_H equ 48h +VK_KEY_F equ 46h ; Flashlight toggle +VK_KEY_L equ 4Ch ; Lighting mode cycle + +; Lighting Modes +LIGHTING_MODE_NONE equ 0 ; Fullbright (classic retro Wolf3D flat lighting) +LIGHTING_MODE_BAKED equ 1 ; Static Baked Lightmap (raytraced shadow-casting) +LIGHTING_MODE_DYNAMIC equ 2 ; Dynamic Point Lights + Realtime Physics + Flashlight + +; Light Source Archetypes & Flags +LIGHT_TYPE_STATIC equ 0 ; Static baked light +LIGHT_TYPE_POINT equ 1 ; Realtime dynamic point light (torch, lamp) +LIGHT_TYPE_FLASHLIGHT equ 2 ; Player spotlight cone +LIGHT_TYPE_BURST equ 3 ; Decaying light flare (muzzle flash, explosion) +LIGHT_TYPE_PULSE equ 4 ; Flickering / pulsing light + +LIGHT_FLAG_INACTIVE equ 0 +LIGHT_FLAG_ACTIVE equ 1 +LIGHT_FLAG_SHADOWS equ 2 ; Raycast wall occlusion (shadow casting) +LIGHT_FLAG_FLICKER equ 4 ; Organic torch flicker + +MAX_LIGHTS equ 16 ; Game Modes GAME_MODE_ADVENTURE equ 0 ; Exploration / Quest / Horror / Puzzle (No weapons, clean view) @@ -136,7 +157,7 @@ CELL_COUNT equ 11 ; Sector Transition Portals MAX_TRANSITIONS equ 16 MAX_PATH_BYTES equ 260 -MAP_FORMAT_VERSION equ 4 +MAP_FORMAT_VERSION equ 5 LevelTransition STRUCT ; sizeof = 42 bytes (packed) triggerCellX db 0 ; 1 byte @@ -161,6 +182,20 @@ SpriteStruct STRUCT flags dd 0 SpriteStruct ENDS +; Light Source Struct (sizeof = 40 bytes) +LightSource STRUCT + x dd 0 ; raw world units (0..2047) + y dd 0 ; raw world units (0..2047) + radius dd 0 ; radius in raw world units + intensity dd 0 ; 0..255 base intensity + curIntensity dd 0 ; 0..255 current intensity (after flicker/decay) + lightType dd 0 ; LIGHT_TYPE_* + flags dd 0 ; LIGHT_FLAG_* + color dd 0 ; 00RRGGBBh tint (0 = neutral white/ambient) + decaySpeed dd 0 ; decay per tick for BURST lights + flickerPhase dd 0 ; flicker oscillation phase +LightSource ENDS + ; Texture Pack (assets/textures/texturepack.bin): ; dd magic 'EBTX', dw version (1), dw slotCount, then slotCount * 65536 bytes TEXPACK_MAGIC equ 58544245h ; 'EBTX' @@ -177,7 +212,7 @@ MAP_MAGIC equ 4E4C4245h ; 'EBLN' MapHeader STRUCT ; sizeof = 38 bytes (packed) magic dd 0 ; 'EBLN' - version dw 0 ; 1 = fixed coords, 2/3 = transitions, 4 = cutscenes + version dw 0 ; 1 = fixed coords, 2/3 = transitions, 4 = cutscenes, 5 = lighting mapWidth dw 0 ; 32 mapHeight dw 0 ; 32 playerStartX dw 0 ; cell X @@ -190,7 +225,8 @@ MapHeader STRUCT ; sizeof = 38 bytes (packed) cutsceneCount dw 0 cutsceneStringCount dw 0 cutsceneFlags dw 0 - reserved db 4 dup(0) + lightCount dw 0 + lightingReserved dw 0 MapHeader ENDS MAX_CUTSCENE_EVENTS equ 128 diff --git a/include/engine_input.inc b/include/engine_input.inc index ca93aef..4998059 100644 --- a/include/engine_input.inc +++ b/include/engine_input.inc @@ -203,6 +203,53 @@ hud_key_released: mov keyHudStyleHeld, 0 hud_key_sampled: + ; F: Toggle Flashlight + invoke GetAsyncKeyState, VK_KEY_F + test ax, 8000h + jz flash_key_released + cmp keyFlashlightHeld, 0 + jne flash_key_sampled + xor isFlashlightOn, 1 + mov keyFlashlightHeld, 1 + cmp isFlashlightOn, 1 + je toast_flash_on + invoke ShowGameToast, OFFSET szFlashlightOff, 60, 00808080h + jmp flash_key_sampled +toast_flash_on: + invoke ShowGameToast, OFFSET szFlashlightOn, 60, COLOR_CYAN + jmp flash_key_sampled +flash_key_released: + mov keyFlashlightHeld, 0 +flash_key_sampled: + + ; L: Cycle Lighting Mode (0: Off -> 1: Baked -> 2: Dynamic) + invoke GetAsyncKeyState, VK_KEY_L + test ax, 8000h + jz light_key_released + cmp keyLightModeHeld, 0 + jne light_key_sampled + inc lightingMode + cmp lightingMode, 3 + jl @F + mov lightingMode, 0 +@@: + mov keyLightModeHeld, 1 + cmp lightingMode, LIGHTING_MODE_NONE + je toast_light_none + cmp lightingMode, LIGHTING_MODE_BAKED + je toast_light_baked + invoke ShowGameToast, OFFSET szLightMode2, 60, COLOR_YELLOW + jmp light_key_sampled +toast_light_none: + invoke ShowGameToast, OFFSET szLightMode0, 60, 00808080h + jmp light_key_sampled +toast_light_baked: + invoke ShowGameToast, OFFSET szLightMode1, 60, COLOR_CYAN + jmp light_key_sampled +light_key_released: + mov keyLightModeHeld, 0 +light_key_sampled: + ; Weapon Selection Keys: 1, 2, 3 (only in Action mode with weapons enabled) cmp gameMode, GAME_MODE_ACTION jne skip_weapon_select diff --git a/include/engine_light.inc b/include/engine_light.inc new file mode 100644 index 0000000..e84a82e --- /dev/null +++ b/include/engine_light.inc @@ -0,0 +1,103 @@ +include include/engine_lighting_core.inc +AddLightSource PROC uses ebx ecx edx x:DWORD, y:DWORD, radius:DWORD, intensity:DWORD, lightType:DWORD, flags:DWORD, color:DWORD + cmp x,2048 + jae no_slot_avail + cmp y,2048 + jae no_slot_avail + cmp radius,1 + jb no_slot_avail + cmp radius,2048 + ja no_slot_avail + cmp intensity,255 + ja no_slot_avail + cmp lightType,4 + ja no_slot_avail + mov eax,flags + and eax,0FFFFFFF8h + jnz no_slot_avail + test color,0FF000000h + jnz no_slot_avail + mov ecx, 1 ; Slot 0 is reserved for player flashlight +find_slot: + cmp ecx, 14 + jge no_slot_avail + + mov ebx, ecx + imul ebx, sizeof LightSource + add ebx, OFFSET lightSources + + test [ebx].LightSource.flags, LIGHT_FLAG_ACTIVE + jz slot_found + + inc ecx + jmp find_slot + +slot_found: + mov eax, x + mov [ebx].LightSource.x, eax + mov eax, y + mov [ebx].LightSource.y, eax + mov eax, radius + mov [ebx].LightSource.radius, eax + mov eax, intensity + mov [ebx].LightSource.intensity, eax + mov [ebx].LightSource.curIntensity, eax + mov eax, lightType + mov [ebx].LightSource.lightType, eax + mov eax, flags + or eax, LIGHT_FLAG_ACTIVE + mov [ebx].LightSource.flags, eax + mov eax, color + mov [ebx].LightSource.color, eax + mov [ebx].LightSource.decaySpeed, 0 + mov [ebx].LightSource.flickerPhase, 0 + + mov eax, ecx + ret + +no_slot_avail: + mov eax, -1 + ret +AddLightSource ENDP + +; ------------------------------------------------------------------------------ +; SpawnExplosionLight: Triggers high-intensity fiery explosion light burst +; ------------------------------------------------------------------------------ +SpawnExplosionLight PROC uses ebx x:DWORD, y:DWORD + mov ebx, 15 * (sizeof LightSource) + add ebx, OFFSET lightSources + + mov eax, x + mov [ebx].LightSource.x, eax + mov eax, y + mov [ebx].LightSource.y, eax + mov [ebx].LightSource.radius, 450 + mov [ebx].LightSource.intensity, 255 + mov [ebx].LightSource.curIntensity, 255 + mov [ebx].LightSource.lightType, LIGHT_TYPE_BURST + mov [ebx].LightSource.flags, LIGHT_FLAG_ACTIVE or LIGHT_FLAG_SHADOWS + mov [ebx].LightSource.decaySpeed, 12 + mov [ebx].LightSource.color, 00FFAA33h ; Warm fire tint + ret +SpawnExplosionLight ENDP + +; ------------------------------------------------------------------------------ +; SpawnMuzzleFlashLight: Triggers momentary bright gunshot flash +; ------------------------------------------------------------------------------ +SpawnMuzzleFlashLight PROC uses ebx x:DWORD, y:DWORD + mov ebx, 14 * (sizeof LightSource) + add ebx, OFFSET lightSources + + mov eax, x + mov [ebx].LightSource.x, eax + mov eax, y + mov [ebx].LightSource.y, eax + mov [ebx].LightSource.radius, 350 + mov [ebx].LightSource.intensity, 240 + mov [ebx].LightSource.curIntensity, 240 + mov [ebx].LightSource.lightType, LIGHT_TYPE_BURST + mov [ebx].LightSource.flags, LIGHT_FLAG_ACTIVE or LIGHT_FLAG_SHADOWS + mov [ebx].LightSource.decaySpeed, 60 + mov [ebx].LightSource.color, 00FFFFEEh ; White/yellow flare + ret +SpawnMuzzleFlashLight ENDP diff --git a/include/engine_lighting_core.inc b/include/engine_lighting_core.inc new file mode 100644 index 0000000..be498c9 --- /dev/null +++ b/include/engine_lighting_core.inc @@ -0,0 +1,817 @@ +; Versioned authored lighting, RGB shading and exact occlusion traversal. +.code +InitLightingSystem PROTO +BakeMapLighting PROTO +UpdateDynamicLights PROTO +AddLightSource PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +SpawnExplosionLight PROTO :DWORD,:DWORD +SpawnMuzzleFlashLight PROTO :DWORD,:DWORD +CastLightRay PROTO :DWORD,:DWORD,:DWORD,:DWORD +ComputeWallLightLevel PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD +ComputeSpriteLight PROTO :DWORD,:DWORD,:DWORD +SamplePointLighting PROTO :DWORD,:DWORD,:DWORD,:DWORD +LightCellFree PROTO :DWORD,:DWORD +RefreshLightGrid PROTO + +ValidateLightingData PROC uses ebx ecx edx esi, settings:DWORD,sources:DWORD,count:DWORD + mov esi,settings + cmp DWORD PTR [esi],2 + ja vl_invalid + cmp DWORD PTR [esi+4],255 + ja vl_invalid + cmp DWORD PTR [esi+8],1 + ja vl_invalid + cmp DWORD PTR [esi+12],32 + jb vl_invalid + cmp DWORD PTR [esi+12],2048 + ja vl_invalid + cmp DWORD PTR [esi+16],255 + ja vl_invalid + cmp DWORD PTR [esi+20],1 + jb vl_invalid + cmp DWORD PTR [esi+20],96 + ja vl_invalid + cmp DWORD PTR [esi+24],1 + jne vl_invalid + cmp DWORD PTR [esi+28],0 + jne vl_invalid + cmp count,13 + ja vl_invalid + mov ecx,count + mov esi,sources +vl_source: + test ecx,ecx + jz vl_valid + cmp [esi].LightSource.x,2048 + jae vl_invalid + cmp [esi].LightSource.y,2048 + jae vl_invalid + cmp [esi].LightSource.radius,1 + jb vl_invalid + cmp [esi].LightSource.radius,2048 + ja vl_invalid + cmp [esi].LightSource.intensity,255 + ja vl_invalid + cmp [esi].LightSource.curIntensity,255 + ja vl_invalid + cmp [esi].LightSource.lightType,1 + jbe vl_type_ok + cmp [esi].LightSource.lightType,4 + jne vl_invalid +vl_type_ok: + mov eax,[esi].LightSource.flags + and eax,0FFFFFFF8h + jnz vl_invalid + test [esi].LightSource.color,0FF000000h + jnz vl_invalid + add esi,40 + dec ecx + jmp vl_source +vl_valid: + mov eax,1 + ret +vl_invalid: + xor eax,eax + ret +ValidateLightingData ENDP + +InitLightingSystem PROC uses eax ecx edi + mov lightingMode,0 + mov ambientLightLevel,40 + mov isFlashlightOn,1 + mov flashlightRadius,384 + mov flashlightIntensity,240 + mov flashlightConeAngle,45 + mov authoredLightCount,0 + mov lightingTick,0 + mov edi,OFFSET lightSources + mov ecx,MAX_LIGHTS*10 + xor eax,eax + rep stosd + mov edi,OFFSET lightGridRGB + mov ecx,MAP_SIZE + mov eax,00282828h + rep stosd + call RefreshLightGrid + ret +InitLightingSystem ENDP + +CommitLightingData PROC uses eax ecx esi edi,settings:DWORD,sources:DWORD,count:DWORD,rgb:DWORD + call InitLightingSystem + mov esi,settings + lodsd + mov lightingMode,eax + lodsd + mov ambientLightLevel,eax + lodsd + mov isFlashlightOn,eax + lodsd + mov flashlightRadius,eax + lodsd + mov flashlightIntensity,eax + lodsd + mov flashlightConeAngle,eax + mov esi,sources + mov edi,OFFSET lightSources+40 + mov ecx,count + mov authoredLightCount,ecx + imul ecx,10 + rep movsd + mov esi,rgb + mov edi,OFFSET lightGridRGB + mov ecx,MAP_SIZE + rep movsd + call RefreshLightGrid + ret +CommitLightingData ENDP + +LightCellFree PROC uses edx,x:DWORD,y:DWORD + cmp x,32 + jae lcf_no + cmp y,32 + jae lcf_no + mov eax,y + shl eax,5 + add eax,x + movzx eax,BYTE PTR [gameMap+eax] + cmp eax,0 + je lcf_yes + cmp eax,6 + je lcf_yes + cmp eax,10 + je lcf_yes +lcf_no: + xor eax,eax + ret +lcf_yes: + mov eax,1 + ret +LightCellFree ENDP + +; Supercover traversal: test both sides when crossing an exact grid corner. +CastLightRay PROC uses ebx ecx edx esi edi,x1:DWORD,y1:DWORD,x2:DWORD,y2:DWORD + LOCAL cellX:DWORD,cellY:DWORD,ex:DWORD,ey:DWORD,deltaX:DWORD,deltaY:DWORD,sx:DWORD,sy:DWORD,nx:DWORD,ny:DWORD,axv:DWORD + mov eax,x1 + or eax,y1 + or eax,x2 + or eax,y2 + test eax,0FFFFF800h + jnz lr_blocked + mov eax,x1 + shr eax,6 + mov cellX,eax + mov eax,y1 + shr eax,6 + mov cellY,eax + mov eax,x2 + shr eax,6 + mov ex,eax + mov eax,y2 + shr eax,6 + mov ey,eax + mov sx,1 + mov eax,x2 + sub eax,x1 + jns lr_dx + neg eax + mov sx,-1 +lr_dx: + mov deltaX,eax + mov sy,1 + mov eax,y2 + sub eax,y1 + jns lr_dy + neg eax + mov sy,-1 +lr_dy: + mov deltaY,eax + mov eax,cellX + shl eax,6 + cmp sx,1 + jne lr_nx_neg + add eax,64 + sub eax,x1 + jmp lr_nx +lr_nx_neg: + neg eax + add eax,x1 +lr_nx: + mov nx,eax + mov eax,cellY + shl eax,6 + cmp sy,1 + jne lr_ny_neg + add eax,64 + sub eax,y1 + jmp lr_ny +lr_ny_neg: + neg eax + add eax,y1 +lr_ny: + mov ny,eax + mov edi,65 +lr_step: + mov eax,cellX + cmp eax,ex + jne lr_cross + mov eax,cellY + cmp eax,ey + je lr_end +lr_cross: + mov eax,3FFFFFFFh + cmp deltaX,0 + je lr_a + mov eax,nx + imul eax,deltaY +lr_a: + mov axv,eax + mov eax,3FFFFFFFh + cmp deltaY,0 + je lr_b + mov eax,ny + imul eax,deltaX +lr_b: + cmp axv,eax + jb lr_x + ja lr_y + mov eax,cellX + add eax,sx + invoke LightCellFree,eax,cellY + test eax,eax + jz lr_blocked + mov eax,cellY + add eax,sy + invoke LightCellFree,cellX,eax + test eax,eax + jz lr_blocked + mov eax,sx + add cellX,eax + add nx,64 +lr_y: + mov eax,sy + add cellY,eax + add ny,64 + jmp lr_test +lr_x: + mov eax,sx + add cellX,eax + add nx,64 +lr_test: + invoke LightCellFree,cellX,cellY + test eax,eax + jz lr_blocked + dec edi + jnz lr_step +lr_blocked: + xor eax,eax + ret +lr_end: + invoke LightCellFree,cellX,cellY + ret +CastLightRay ENDP + +LightDistance PROC uses ebx edx,deltaX:DWORD,deltaY:DWORD + mov eax,deltaX + cdq + xor eax,edx + sub eax,edx + mov ebx,eax + mov eax,deltaY + cdq + xor eax,edx + sub eax,edx + cmp eax,ebx + jae ld_max + xchg eax,ebx +ld_max: + lea ebx,[ebx+ebx*2] + shr ebx,3 + add eax,ebx + ret +LightDistance ENDP + +AddLightColor PROC uses eax ebx ecx edx,color:DWORD,amount:DWORD + mov ebx,255 + mov eax,color + and eax,255 + imul eax,amount + xor edx,edx + div ebx + add lightAccumB,eax + mov eax,color + shr eax,8 + and eax,255 + imul eax,amount + xor edx,edx + div ebx + add lightAccumG,eax + mov eax,color + shr eax,16 + and eax,255 + imul eax,amount + xor edx,edx + div ebx + add lightAccumR,eax + ret +AddLightColor ENDP + +PointLightAmount PROC uses ebx ecx edx esi,source:DWORD,x:DWORD,y:DWORD + LOCAL distance:DWORD + mov esi,source + mov eax,x + sub eax,[esi].LightSource.x + mov ecx,y + sub ecx,[esi].LightSource.y + invoke LightDistance,eax,ecx + mov distance,eax + cmp eax,[esi].LightSource.radius + jae pla_zero + test [esi].LightSource.flags,LIGHT_FLAG_SHADOWS + jz pla_visible + invoke CastLightRay,[esi].LightSource.x,[esi].LightSource.y,x,y + test eax,eax + jz pla_zero +pla_visible: + mov eax,[esi].LightSource.radius + sub eax,distance + imul eax,[esi].LightSource.curIntensity + xor edx,edx + div [esi].LightSource.radius + ret +pla_zero: + xor eax,eax + ret +PointLightAmount ENDP + +RefreshLightGrid PROC uses eax ebx ecx edx esi edi + mov esi,OFFSET lightGridRGB + mov edi,OFFSET lightGrid + mov ecx,MAP_SIZE +rlg_loop: + lodsd + mov edx,eax + and eax,255 + mov ebx,edx + shr ebx,8 + and ebx,255 + add eax,ebx + shr edx,16 + and edx,255 + add eax,edx + xor edx,edx + mov ebx,3 + div ebx + stosb + loop rlg_loop + ret +RefreshLightGrid ENDP + +PackBakedRGB PROC uses ebx edx + mov eax,lightAccumR + cmp eax,255 + jbe @F + mov eax,255 +@@: + shl eax,16 + mov ebx,eax + mov eax,lightAccumG + cmp eax,255 + jbe @F + mov eax,255 +@@: + shl eax,8 + or ebx,eax + mov eax,lightAccumB + cmp eax,255 + jbe @F + mov eax,255 +@@: + or eax,ebx + ret +PackBakedRGB ENDP + +AccumulateBakedCell PROC uses eax ebx ecx edx,x:DWORD,y:DWORD,weight:DWORD + invoke LightCellFree,x,y + test eax,eax + jz abc_done + mov eax,y + shl eax,5 + add eax,x + mov edx,[lightGridRGB+eax*4] + mov eax,edx + and eax,255 + imul eax,weight + add lightAccumB,eax + mov eax,edx + shr eax,8 + and eax,255 + imul eax,weight + add lightAccumG,eax + shr edx,16 + imul edx,weight + add lightAccumR,edx + mov eax,weight + add lightWeight,eax +abc_done: + ret +AccumulateBakedCell ENDP + +BakeMapLighting PROC uses ebx ecx edx esi edi + LOCAL index:DWORD,x:DWORD,y:DWORD + mov index,0 +bl_cell: + mov eax,index + and eax,31 + mov x,eax + mov eax,index + shr eax,5 + mov y,eax + mov eax,ambientLightLevel + mov lightAccumR,eax + mov lightAccumG,eax + mov lightAccumB,eax + invoke LightCellFree,x,y + test eax,eax + jz bl_store + mov eax,x + shl eax,6 + add eax,32 + mov x,eax + mov eax,y + shl eax,6 + add eax,32 + mov y,eax + mov esi,OFFSET lightSources+40 + mov edi,13 +bl_source: + test [esi].LightSource.flags,LIGHT_FLAG_ACTIVE + jz bl_next_source + cmp [esi].LightSource.lightType,LIGHT_TYPE_STATIC + jne bl_next_source + mov eax,[esi].LightSource.intensity + push [esi].LightSource.curIntensity + mov [esi].LightSource.curIntensity,eax + invoke PointLightAmount,esi,x,y + pop [esi].LightSource.curIntensity + invoke AddLightColor,[esi].LightSource.color,eax +bl_next_source: + add esi,40 + dec edi + jnz bl_source +bl_store: + call PackBakedRGB + mov ebx,index + mov [lightGridRGB+ebx*4],eax + inc index + cmp index,MAP_SIZE + jb bl_cell + ; Smooth out of place, without averaging through wall cells. + mov index,0 +bl_smooth: + mov ebx,index + mov eax,[lightGridRGB+ebx*4] + mov [lightSmoothRGB+ebx*4],eax + mov eax,ebx + and eax,31 + mov x,eax + shr ebx,5 + mov y,ebx + invoke LightCellFree,x,y + test eax,eax + jz bl_next_smooth + mov lightAccumR,0 + mov lightAccumG,0 + mov lightAccumB,0 + mov lightWeight,0 + invoke AccumulateBakedCell,x,y,2 + mov eax,x + dec eax + invoke AccumulateBakedCell,eax,y,1 + mov eax,x + inc eax + invoke AccumulateBakedCell,eax,y,1 + mov eax,y + dec eax + invoke AccumulateBakedCell,x,eax,1 + mov eax,y + inc eax + invoke AccumulateBakedCell,x,eax,1 + mov eax,lightAccumR + xor edx,edx + div lightWeight + mov lightAccumR,eax + mov eax,lightAccumG + xor edx,edx + div lightWeight + mov lightAccumG,eax + mov eax,lightAccumB + xor edx,edx + div lightWeight + mov lightAccumB,eax + call PackBakedRGB + mov ebx,index + mov [lightSmoothRGB+ebx*4],eax +bl_next_smooth: + inc index + cmp index,MAP_SIZE + jb bl_smooth + mov esi,OFFSET lightSmoothRGB + mov edi,OFFSET lightGridRGB + mov ecx,MAP_SIZE + rep movsd + call RefreshLightGrid + ret +BakeMapLighting ENDP + +UpdateDynamicLights PROC uses eax ebx ecx edx esi + inc lightingTick + mov esi,OFFSET lightSources+40 + mov ecx,1 +udl_next: + test [esi].LightSource.flags,LIGHT_FLAG_ACTIVE + jz udl_skip + cmp [esi].LightSource.lightType,LIGHT_TYPE_BURST + je udl_burst + mov eax,[esi].LightSource.intensity + cmp [esi].LightSource.lightType,LIGHT_TYPE_STATIC + je udl_store + cmp [esi].LightSource.lightType,LIGHT_TYPE_PULSE + jne udl_flicker + mov edx,lightingTick + shl edx,2 + add edx,ecx + and edx,511 + mov ebx,[tableSin+edx*4] + sar ebx,1 + add ebx,98304 + imul eax,ebx + sar eax,17 +udl_flicker: + test [esi].LightSource.flags,LIGHT_FLAG_FLICKER + jz udl_store + mov edx,lightingTick + shr edx,2 + imul edx,1103515245 + imul ebx,ecx,12345 + add edx,ebx + shr edx,16 + and edx,15 + sub edx,7 + add eax,edx + cmp eax,0 + jge @F + xor eax,eax +@@: + cmp eax,255 + jle udl_store + mov eax,255 + jmp udl_store +udl_burst: + mov eax,[esi].LightSource.curIntensity + sub eax,[esi].LightSource.decaySpeed + jg udl_store + xor eax,eax + mov [esi].LightSource.flags,0 +udl_store: + mov [esi].LightSource.curIntensity,eax +udl_skip: + add esi,40 + inc ecx + cmp ecx,16 + jb udl_next + ret +UpdateDynamicLights ENDP + +SamplePointLighting PROC uses ebx ecx edx esi edi,x:DWORD,y:DWORD,distance:DWORD,side:DWORD + LOCAL forward:DWORD,lateral:DWORD,beam:DWORD,atten:DWORD,fog:DWORD + mov eax,256 + mov lightRed,eax + mov lightGreen,eax + mov lightBlue,eax + cmp lightingMode,0 + je spl_done + mov eax,x + sar eax,6 + and eax,31 + mov edx,y + sar edx,6 + and edx,31 + shl edx,5 + add eax,edx + mov eax,[lightGridRGB+eax*4] + mov edx,eax + and eax,255 + mov lightAccumB,eax + mov eax,edx + shr eax,8 + and eax,255 + mov lightAccumG,eax + shr edx,16 + mov lightAccumR,edx + cmp lightingMode,2 + jne spl_fog + mov esi,OFFSET lightSources+40 + mov edi,15 +spl_source: + test [esi].LightSource.flags,LIGHT_FLAG_ACTIVE + jz spl_next + cmp [esi].LightSource.lightType,LIGHT_TYPE_STATIC + je spl_next + cmp [esi].LightSource.radius,0 + jle spl_next + invoke PointLightAmount,esi,x,y + invoke AddLightColor,[esi].LightSource.color,eax +spl_next: + add esi,40 + dec edi + jnz spl_source + cmp isFlashlightOn,0 + je spl_fog + mov eax,x + sub eax,playerX + mov ebx,y + sub ebx,playerY + invoke LightDistance,eax,ebx + cmp eax,flashlightRadius + jae spl_fog + mov edx,flashlightRadius + sub edx,eax + mov eax,edx + imul eax,flashlightIntensity + xor edx,edx + div flashlightRadius + mov atten,eax + mov ecx,playerAngle + and ecx,511 + mov eax,x + sub eax,playerX + imul [tableCos+ecx*4] + shrd eax,edx,16 + mov forward,eax + mov eax,y + sub eax,playerY + imul [tableSin+ecx*4] + shrd eax,edx,16 + add forward,eax + cmp forward,0 + jle spl_fog + mov eax,y + sub eax,playerY + imul [tableCos+ecx*4] + shrd eax,edx,16 + mov lateral,eax + mov eax,x + sub eax,playerX + imul [tableSin+ecx*4] + shrd eax,edx,16 + sub lateral,eax + mov ecx,flashlightConeAngle + mov eax,forward + imul [tableSin+ecx*4] + idiv DWORD PTR [tableCos+ecx*4] + mov beam,eax + test eax,eax + jle spl_fog + mov eax,lateral + cdq + xor eax,edx + sub eax,edx + cmp eax,beam + jae spl_fog + mov ebx,beam + sub ebx,eax + mov eax,ebx + imul eax,atten + xor edx,edx + div beam + mov atten,eax + invoke CastLightRay,playerX,playerY,x,y + test eax,eax + jz spl_fog + invoke AddLightColor,00FFFFFFh,atten +spl_fog: + mov fog,256 + mov eax,distance + cmp eax,280 + jle spl_side + cmp eax,720 + jb spl_partial + mov fog,32 + jmp spl_side +spl_partial: + sub eax,280 + imul eax,224 + xor edx,edx + mov ebx,440 + div ebx + sub fog,eax +spl_side: + cmp side,1 + jne spl_coeff + mov eax,fog + imul eax,192 + shr eax,8 + mov fog,eax +spl_coeff: + mov eax,lightAccumR + cmp eax,256 + jbe @F + mov eax,256 +@@: + imul eax,fog + shr eax,8 + mov lightRed,eax + mov eax,lightAccumG + cmp eax,256 + jbe @F + mov eax,256 +@@: + imul eax,fog + shr eax,8 + mov lightGreen,eax + mov eax,lightAccumB + cmp eax,256 + jbe @F + mov eax,256 +@@: + imul eax,fog + shr eax,8 + mov lightBlue,eax +spl_done: + mov eax,lightRed + cmp eax,lightGreen + jae @F + mov eax,lightGreen +@@: + cmp eax,lightBlue + jae @F + mov eax,lightBlue +@@: + ret +SamplePointLighting ENDP + +ComputeWallLightLevel PROC uses ebx ecx edx,screenX:DWORD,mapX:DWORD,mapY:DWORD,sideHit:DWORD,stepX:DWORD,stepY:DWORD,rawDist:DWORD,perpWallDist:DWORD,rayAngle:DWORD,rayDirX:DWORD,rayDirY:DWORD + LOCAL x:DWORD,y:DWORD + mov eax,rawDist + imul rayDirX + shrd eax,edx,24 + add eax,playerX + mov x,eax + mov eax,rawDist + imul rayDirY + shrd eax,edx,24 + add eax,playerY + mov y,eax + cmp sideHit,0 + jne cwl_y + mov eax,mapX + shl eax,6 + cmp stepX,0 + jg @F + add eax,64 +@@: + sub eax,stepX + mov x,eax + jmp cwl_ready +cwl_y: + mov eax,mapY + shl eax,6 + cmp stepY,0 + jg @F + add eax,64 +@@: + sub eax,stepY + mov y,eax +cwl_ready: + invoke SamplePointLighting,x,y,perpWallDist,sideHit + ret +ComputeWallLightLevel ENDP + +ComputeSpriteLight PROC sprX:DWORD,sprY:DWORD,sprDist:DWORD + invoke SamplePointLighting,sprX,sprY,sprDist,0 + ret +ComputeSpriteLight ENDP + +ShadeLightPixel PROC uses eax ebx + mov eax,edx + and eax,255 + imul eax,lightBlue + shr eax,8 + mov ebx,eax + mov eax,edx + shr eax,8 + and eax,255 + imul eax,lightGreen + shr eax,8 + shl eax,8 + or ebx,eax + mov eax,edx + shr eax,16 + and eax,255 + imul eax,lightRed + shr eax,8 + shl eax,16 + or eax,ebx + mov edx,eax + ret +ShadeLightPixel ENDP diff --git a/include/engine_map.inc b/include/engine_map.inc index c1e3f2d..61cad6a 100644 --- a/include/engine_map.inc +++ b/include/engine_map.inc @@ -14,6 +14,10 @@ ValidateStagedCutscene PROTO :DWORD, :DWORD, :DWORD, :DWORD, :DWORD CheckPortalTriggers PROTO InitEntities PROTO ShowGameToast PROTO :DWORD, :DWORD, :DWORD +BakeMapLighting PROTO +InitLightingSystem PROTO +ValidateLightingData PROTO :DWORD,:DWORD,:DWORD +CommitLightingData PROTO :DWORD,:DWORD,:DWORD,:DWORD ; ------------------------------------------------------------------------------ ; InitMap: Creates a rich test level with rooms, hallways, pillars & doors @@ -101,6 +105,7 @@ loop_wall2: mov portalLatchCell, -1 mov mapCeilingColor, COLOR_CEILING mov mapFloorColor, COLOR_FLOOR + call InitLightingSystem ret InitMap ENDP @@ -526,7 +531,7 @@ ApplyScreenFade ENDP LoadSublevelBinary PROC uses ebx ecx edx esi edi, pszPath:DWORD, spawnX:DWORD, spawnY:DWORD, spawnAngle:DWORD LOCAL hFile:DWORD, bytesRead:DWORD, header:MapHeader LOCAL numSprites:DWORD, numTransitions:DWORD, index:DWORD - LOCAL numEvents:DWORD, numStrings:DWORD, sceneFlags:DWORD + LOCAL numEvents:DWORD, numStrings:DWORD, sceneFlags:DWORD, numLights:DWORD LOCAL resolvedPath[MAX_PATH_BYTES]:BYTE LOCAL stagedMap[MAP_SIZE]:BYTE LOCAL stagedSprites[MAX_SPRITES * (sizeof SpriteStruct)]:BYTE @@ -647,6 +652,16 @@ old_map_no_transitions: movzx eax, header.cutsceneFlags mov sceneFlags, eax old_map_no_cutscene: + mov numLights,0 + cmp header.version,5 + jb old_map_no_lighting + cmp header.lightingReserved,0 + jne close_load_failed + movzx eax,header.lightCount + cmp eax,13 + ja close_load_failed + mov numLights,eax +old_map_no_lighting: mov eax, numTransitions imul eax, sizeof LevelTransition mov ebx, eax @@ -660,6 +675,13 @@ old_map_no_cutscene: mov eax, numStrings imul eax, CUTSCENE_STRING_BYTES add ebx, eax + cmp header.version,5 + jb map_lighting_size_ready + mov eax,numLights + imul eax,40 + add ebx,eax + add ebx,32+4096 +map_lighting_size_ready: invoke GetFileSize, hFile, 0 cmp eax, ebx jne close_load_failed @@ -700,6 +722,44 @@ old_map_no_cutscene: jz close_load_failed cmp bytesRead, ebx jne close_load_failed + mov esi,OFFSET legacyLightingSettings + mov edi,OFFSET stagedLightSettings + mov ecx,8 + rep movsd + mov edi,OFFSET stagedLightRGB + mov ecx,MAP_SIZE + mov eax,00282828h + rep stosd + cmp header.version,5 + jb staged_lighting_ready + invoke ReadFile,hFile,OFFSET stagedLightSettings,32,ADDR bytesRead,0 + test eax,eax + jz close_load_failed + cmp bytesRead,32 + jne close_load_failed + mov ebx,numLights + imul ebx,40 + invoke ReadFile,hFile,OFFSET stagedLightSources,ebx,ADDR bytesRead,0 + test eax,eax + jz close_load_failed + cmp bytesRead,ebx + jne close_load_failed + invoke ReadFile,hFile,OFFSET stagedLightRGB,4096,ADDR bytesRead,0 + test eax,eax + jz close_load_failed + cmp bytesRead,4096 + jne close_load_failed + invoke ValidateLightingData,OFFSET stagedLightSettings,OFFSET stagedLightSources,numLights + test eax,eax + jz close_load_failed + mov esi,OFFSET stagedLightRGB + mov ecx,MAP_SIZE +map_check_light_rgb: + lodsd + test eax,0FF000000h + jnz close_load_failed + loop map_check_light_rgb +staged_lighting_ready: invoke ValidateStagedCutscene, numEvents, numStrings, sceneFlags, ADDR stagedMap, numTransitions test eax, eax jz close_load_failed @@ -903,6 +963,7 @@ commit_level: mov eax, newAngle mov playerAngle, eax mov mapErrorFrames, 0 + invoke CommitLightingData,OFFSET stagedLightSettings,OFFSET stagedLightSources,numLights,OFFSET stagedLightRGB mov eax, 1 ret close_load_failed: @@ -971,6 +1032,8 @@ load_startup_map: jnz startup_map_ready call InitMap startup_map_ready: + push eax call InitEntities + pop eax ret LoadMapBinary ENDP diff --git a/include/engine_preview.inc b/include/engine_preview.inc index b5d6579..cfd9ec3 100644 --- a/include/engine_preview.inc +++ b/include/engine_preview.inc @@ -16,14 +16,14 @@ TryEnginePreview PROC uses ebx ecx edx esi edi test eax, eax jz preview_exit_error mov previewHandle, eax - invoke MapViewOfFile, eax, 6, 0, 0, 1357792 + invoke MapViewOfFile, eax, 6, 0, 0, 1362408 test eax, eax jz preview_exit_error mov previewMemory, eax mov ebx, eax cmp DWORD PTR [ebx], 56504245h jne preview_exit_error - cmp DWORD PTR [ebx+4], 1 + cmp DWORD PTR [ebx+4], 2 jne preview_exit_error invoke OpenProcess, 00100000h, 0, DWORD PTR [ebx+12] ; SYNCHRONIZE test eax, eax @@ -106,6 +106,39 @@ preview_textures: mov ecx, MAX_TEXTURES*TEX_SIZE_BYTES/4 rep movsd preview_scene: + mov eax,[ebx+52] + mov stagedLightSettings,eax + mov eax,[ebx+56] + mov stagedLightSettings[4],eax + mov eax,[ebx+60] + mov stagedLightSettings[8],eax + mov eax,[ebx+68] + mov stagedLightSettings[12],eax + mov eax,[ebx+72] + mov stagedLightSettings[16],eax + mov eax,[ebx+76] + mov stagedLightSettings[20],eax + mov stagedLightSettings[24],1 + mov stagedLightSettings[28],0 + lea esi,[ebx+1357792] + invoke ValidateLightingData,OFFSET stagedLightSettings,esi,DWORD PTR [ebx+64] + test eax,eax + jz preview_exit_error + lea esi,[ebx+1358312] + mov edi,MAP_SIZE +preview_check_light_rgb: + lodsd + test eax,0FF000000h + jnz preview_exit_error + dec edi + jnz preview_check_light_rgb + lea esi,[ebx+1357792] + lea edi,[ebx+1358312] + invoke CommitLightingData,OFFSET stagedLightSettings,esi,DWORD PTR [ebx+64],edi + mov eax,[ebx+84] + dec eax + mov lightingTick,eax + call UpdateDynamicLights call Render3DScene mov ebx, previewMemory cmp DWORD PTR [ebx+40], 0 diff --git a/include/engine_raycaster.inc b/include/engine_raycaster.inc index 5432736..e12bd6a 100644 --- a/include/engine_raycaster.inc +++ b/include/engine_raycaster.inc @@ -36,12 +36,18 @@ Render3DScene PROC uses ebx ecx edx esi edi LOCAL glassLineHeight:DWORD LOCAL glassDrawStart:DWORD, glassDrawEnd:DWORD LOCAL glassTexX:DWORD, glassSideHit:DWORD + LOCAL colLightLevel:DWORD ; -------------------------------------------------------------------------- ; 1. Fast Background Clear: Ceiling (Top Half) and Floor (Bottom Half) ; -------------------------------------------------------------------------- + invoke SamplePointLighting,playerX,playerY,0,0 mov edi, OFFSET screenBuffer - mov eax, mapCeilingColor + mov edx,mapCeilingColor + call ShadeLightPixel + mov eax,edx + cmp lightingMode,0 + jne @F cmp playerFlashTimer, 0 je @F add eax, 00202020h ; Dynamic Muzzle Flash ambient lighting boost @@ -49,7 +55,11 @@ Render3DScene PROC uses ebx ecx edx esi edi mov ecx, (SCREEN_W * SCREEN_HALF_H) rep stosd - mov eax, mapFloorColor + mov edx,mapFloorColor + call ShadeLightPixel + mov eax,edx + cmp lightingMode,0 + jne @F cmp playerFlashTimer, 0 je @F add eax, 00202020h ; Dynamic Muzzle Flash ambient lighting boost @@ -473,6 +483,11 @@ wall_texture_ready: imul eax, texStep mov texPos, eax + ; Compute wall lighting (baked lightmap + dynamic point lights + flashlight) + invoke ComputeWallLightLevel, screenX, mapX, mapY, sideHit, stepX, stepY,\ + rawDist, perpWallDist, rayAngle, rayDirX, rayDirY + mov colLightLevel, eax + ; -------------------------------------------------------------------------- ; Draw Vertical Wall Stripe ; -------------------------------------------------------------------------- @@ -501,6 +516,9 @@ wall_pixel_loop: add eax, texPtr mov edx, [eax] ; Sampled Color (BGRA) + cmp lightingMode, LIGHTING_MODE_NONE + jne apply_col_light + ; Wall shading: Y-facing walls darkened 50% for 3D depth perception cmp sideHit, 1 jne apply_distance_fog @@ -521,6 +539,10 @@ apply_distance_fog: make_pitch_black: mov edx, 00111111h + jmp write_wall_pixel + +apply_col_light: + call ShadeLightPixel write_wall_pixel: mov eax, pScreenPixel @@ -599,6 +621,7 @@ RenderSprites PROC uses ebx ecx edx esi edi passFilter:DWORD LOCAL texPtr:DWORD, pPixel:DWORD LOCAL camCos:DWORD, camSin:DWORD LOCAL keyIdx:DWORD, keyDist:DWORD + LOCAL sprLightLevel:DWORD mov eax, spriteCount test eax, eax @@ -844,6 +867,9 @@ sprite_loop: mov texStepY, eax ; Render vertical stripes + invoke ComputeSpriteLight, spriteX, spriteY, transY + mov sprLightLevel, eax + mov eax, drawStartX mov stripe, eax @@ -924,6 +950,9 @@ sprite_pixel_y: cmp edx, COLOR_CHROMA_KEY je skip_sprite_pixel + cmp lightingMode, LIGHTING_MODE_NONE + jne apply_spr_lighting + ; Distance fog (same thresholds as walls) mov eax, transY cmp eax, 350 @@ -935,6 +964,10 @@ sprite_pixel_y: jmp write_sprite_pixel sprite_pixel_dark: mov edx, 00111111h + jmp write_sprite_pixel + +apply_spr_lighting: + call ShadeLightPixel write_sprite_pixel: mov eax, pPixel diff --git a/main.asm b/main.asm index cd16f2d..046be79 100644 --- a/main.asm +++ b/main.asm @@ -112,6 +112,7 @@ include include/engine_textures.inc include include/engine_input.inc include include/engine_physics.inc include include/engine_entity.inc +include include/engine_light.inc include include/engine_raycaster.inc include include/engine_render2d.inc include include/engine_combat.inc @@ -158,7 +159,8 @@ Engine_Init PROC uses ebx esi edi call InitMathTables call GenerateDefaultTextures ; Procedural baseline (always valid) call LoadTexturePack ; Optional: override from assets\textures\texturepack.bin - call LoadMapBinary ; Loads assets/map.dat (falls back to InitMap if missing) + call InitLightingSystem + call LoadMapBinary ; Each room commits its own validated lighting ; 2. Register Window Class invoke GetModuleHandleA, 0 @@ -289,6 +291,7 @@ no_error_tick: call UpdatePlayer call UpdateEntities call UpdateCombat + call UpdateDynamicLights skip_movement_in_dialog: call Game_OnTick @@: diff --git a/main.obj b/main.obj index f31e5e42ed55505c076f6752c7af99b4a79560c1..99f30a11f5f235c49d7a2fb48b668e0afc31f5ee 100644 GIT binary patch literal 52602 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 Ax&QzG delta 18074 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 Ss7bkTM?W{_E Bytes(const fs::path& path) { } #include "cutscene_editor_checks.inl" +#include "lighting_editor_checks.inl" #include "viewport_editor_checks.inl" int main(int argc, char** argv) { @@ -138,6 +139,7 @@ int main(int argc, char** argv) { app.LaunchPlaytest(); Check(!app.isEngineRunning && app.playtestDirectory.empty() && Bytes("../assets/map.dat") == originalMain, "missing linked map aborts F5 without data loss"); + RunLightingChecks(app); RunCutsceneChecks(app); if (argc > 1) { Check(ReadLevelFile(std::string(argv[1]) + "/map.dat", preview, error), "existing project main map remains compatible"); diff --git a/tests/engine_regressions.asm b/tests/engine_regressions.asm index f64d95a..575db0a 100644 --- a/tests/engine_regressions.asm +++ b/tests/engine_regressions.asm @@ -17,6 +17,7 @@ include include/engine_textures.inc include include/engine_input.inc include include/engine_physics.inc include include/engine_entity.inc +include include/engine_light.inc include include/engine_raycaster.inc include include/engine_render2d.inc include include/engine_combat.inc @@ -127,6 +128,7 @@ state_changed: StateUnchanged ENDP include tests/cutscene_engine_checks.inc +include tests/lighting_engine_checks.inc AuditMain PROC call InitMathTables @@ -363,6 +365,7 @@ flat_depth_ok: call Render3DScene invoke Dump, OFFSET projectFramePath, OFFSET screenBuffer, FRAME_BUFFER_SIZE + call RunLightingChecks call RunCutsceneChecks mov eax, resultCount inc eax diff --git a/tests/lighting_editor_checks.inl b/tests/lighting_editor_checks.inl new file mode 100644 index 0000000..e1893f6 --- /dev/null +++ b/tests/lighting_editor_checks.inl @@ -0,0 +1,65 @@ +static void RunLightingChecks(EditorApp& app) { + app.InitDefaultLevel();app.sprites.clear();app.transitions.clear();app.lightSources.clear(); + memset(app.map,0,sizeof(app.map)); + for(int i=0;i<32;++i){app.map[0][i]=app.map[31][i]=app.map[i][0]=app.map[i][31]=1;app.map[i][10]=1;} + app.playerStartX=2;app.playerStartY=5;app.playerStartAngle=0; + app.lightingMode=2;app.ambientLightLevel=10;app.isFlashlightOn=false; + EditorLightSource fixed;fixed.x=352;fixed.y=352;fixed.radius=900;fixed.intensity=220;fixed.curIntensity=220; + fixed.lightType=LIGHT_TYPE_STATIC;fixed.flags=LIGHT_FLAG_ACTIVE|LIGHT_FLAG_SHADOWS;fixed.color=0xFF0000; + app.lightSources.push_back(fixed);app.BakeLighting(); + auto red=app.bakedLightRGB[5*32+5]; + Check(((red>>16)&255)>100 && (red&0xFFFF)==0x0A0A,"static bake preserves RGB light color"); + Check(app.bakedLightRGB[5*32+14]==0x0A0A0A,"baked light cannot cross a wall or smooth through it"); + auto before=app.bakedLightRGB; + EditorLightSource moving=fixed;moving.x=480;moving.lightType=LIGHT_TYPE_POINT;moving.color=0x0000FF; + app.lightSources.push_back(moving);app.BakeLighting(); + Check(app.bakedLightRGB==before,"dynamic lights never enter the static bake"); + app.map[5][7]=CELL_DOOR; + Check(!app.CastLightRay(352,352,608,352),"closed door blocks editor light rays"); + app.map[5][7]=CELL_DOOR_OPEN; + Check(app.CastLightRay(352,352,608,352),"open door transmits editor light rays"); + app.map[5][7]=0;app.map[5][6]=1; + Check(!app.CastLightRay(352,352,416,416),"diagonal light cannot leak through a blocked corner"); + app.map[5][6]=0; + app.lightSources[0].flags=LIGHT_FLAG_ACTIVE;app.BakeLighting(); + Check(((app.bakedLightRGB[5*32+14]>>16)&255)>10,"disabling shadows permits light across walls"); + app.lightSources[0].flags|=LIGHT_FLAG_SHADOWS;app.BakeLighting(); + app.PushUndo();app.lightSources[0].color=0x00FF00;app.ambientLightLevel=25;app.lightingMode=1;app.BakeLighting(); + app.Undo(); + Check(app.lightSources[0].color==0xFF0000 && app.ambientLightLevel==10 && app.lightingMode==2 && app.bakedLightRGB==before, + "undo restores sources, settings and the exact baked RGB data"); + app.Redo();Check(app.lightSources[0].color==0x00FF00 && app.ambientLightLevel==25,"redo restores authored lighting"); + app.Undo(); + app.lightSources[0].x+=1; + Check(app.LightingNeedsBake(),"editing static lights marks the bake out of date"); + app.lightSources[0].x-=1;app.lightSources[1].x+=64; + Check(!app.LightingNeedsBake(),"moving a realtime source does not invalidate static lighting"); + app.lightSources[1].x-=64; + Check(app.SaveLevel("../assets/lit.dat"),"save v5 authored lights and persistent RGB bake"); + std::ofstream reference("../assets/lighting_reference.bin",std::ios::binary); + reference.write(reinterpret_cast(app.bakedLightRGB.data()),4096);reference.close(); + auto valid=Bytes("../assets/lit.dat"); + BinaryLevel loaded;std::string error; + Check(ReadLevelFile("../assets/lit.dat",loaded,error) && loaded.header.version==5 && loaded.lighting.lights.size()==2 && + loaded.lighting.settings.flashlight==0 && loaded.lighting.rgb==app.bakedLightRGB,"v5 lighting round trip is lossless"); + app.lightSources[0].radius=0; + Check(!app.SaveLevel("../assets/lit.dat") && Bytes("../assets/lit.dat")==valid,"invalid light cannot overwrite an existing level"); + app.lightSources[0].radius=900; + app.lightSources[0].lightType=LIGHT_TYPE_BURST; + Check(!app.SaveLevel("../assets/lit.dat") && Bytes("../assets/lit.dat")==valid,"internal burst slots cannot be serialized as authored lights"); + app.lightSources[0].lightType=LIGHT_TYPE_STATIC; + auto bad=valid;bad[34]=14; + {std::ofstream out("../assets/lit_badcount.dat",std::ios::binary);out.write(reinterpret_cast(bad.data()),bad.size());} + bad=valid;uint32_t invalidRadius=0; // settings start after header and grid; no sprites, transitions or script + memcpy(bad.data()+38+1024+32+8,&invalidRadius,4); + {std::ofstream out("../assets/lit_badradius.dat",std::ios::binary);out.write(reinterpret_cast(bad.data()),bad.size());} + bad=valid;bad.back()=255; + {std::ofstream out("../assets/lit_badrgb.dat",std::ios::binary);out.write(reinterpret_cast(bad.data()),bad.size());} + Check(!app.LoadLevel("../assets/lit_badcount.dat") && app.lightSources.size()==2,"malformed lighting count preserves the editor scene"); + Check(!app.LoadLevel("../assets/lit_badradius.dat"),"malformed light radius rejected before scene replacement"); + Check(!app.LoadLevel("../assets/lit_badrgb.dat"),"invalid baked RGB padding rejected before scene replacement"); + std::string start,engine; + Check(app.PreparePlaytest(start,engine),"F5 packages v5 lighting with the current unsaved map");app.CleanupPlaytest(); + app.LoadLevel("../assets/map.dat"); + Check(app.lightSources.empty() && app.lightingMode==0,"legacy maps clear old lights and retain classic rendering"); +} diff --git a/tests/lighting_engine_checks.inc b/tests/lighting_engine_checks.inc new file mode 100644 index 0000000..5bd6a1e --- /dev/null +++ b/tests/lighting_engine_checks.inc @@ -0,0 +1,103 @@ +.data +lightFile db 'lit.dat',0 +lightBadCount db 'lit_badcount.dat',0 +lightBadRadius db 'lit_badradius.dat',0 +lightBadRGB db 'lit_badrgb.dat',0 +lightBakeDump db 'lighting_bake.bin',0 +lightFrameDump db 'lighting_frame.bin',0 +lightSavedRed dd 0 +lightSavedBlue dd 0 +lightSavedPulse dd 0 +.code +RunLightingChecks PROC uses ebx ecx edx esi edi + invoke LoadSublevelBinary,OFFSET lightFile,-1,-1,0 + CHECK eax,1 ; v5 authored lighting loads in ASM + CHECK authoredLightCount,2 ; all authored lights reach runtime slots + CHECK lightingMode,2 ; map lighting mode loads without a startup override + CHECK isFlashlightOn,0 ; saved flashlight toggle reaches the game + CHECK DWORD PTR [lightSources+40+LightSource.color],00FF0000h ; static light color retained on load + call Render3DScene + invoke Dump,OFFSET lightFrameDump,OFFSET screenBuffer,FRAME_BUFFER_SIZE + call BakeMapLighting + invoke Dump,OFFSET lightBakeDump,OFFSET lightGridRGB,4096 + CHECK DWORD PTR [lightGridRGB+(5*32+14)*4],000A0A0Ah ; static light cannot leak through a wall + mov lightingMode,1 + invoke SamplePointLighting,480,352,0,0 + mov eax,lightRed + mov lightSavedRed,eax + mov eax,lightBlue + mov lightSavedBlue,eax + mov lightingMode,2 + call UpdateDynamicLights + invoke SamplePointLighting,480,352,0,0 + CHECK lightRed,lightSavedRed ; dynamic mode does not count static light twice + xor eax,eax + mov ebx,lightBlue + cmp ebx,lightSavedBlue + seta al + CHECK eax,1 ; realtime blue light contributes beyond the baked map + mov DWORD PTR [lightSources+80+LightSource.x],928 + invoke SamplePointLighting,480,352,0,0 + CHECK lightBlue,10 ; dynamic source is occluded by a separating wall + mov DWORD PTR [lightSources+80+LightSource.flags],LIGHT_FLAG_ACTIVE + invoke SamplePointLighting,480,352,0,0 + xor eax,eax + cmp lightBlue,10 + seta al + CHECK eax,1 ; disabling dynamic shadows allows unoccluded contribution + mov DWORD PTR [lightSources+80+LightSource.lightType],LIGHT_TYPE_PULSE + mov lightingTick,0 + call UpdateDynamicLights + mov eax,DWORD PTR [lightSources+80+LightSource.curIntensity] + mov lightSavedPulse,eax + mov lightingTick,31 + call UpdateDynamicLights + mov eax,DWORD PTR [lightSources+80+LightSource.curIntensity] + cmp eax,lightSavedPulse + setne al + movzx eax,al + CHECK eax,1 ; pulse light changes intensity with the simulation clock + mov DWORD PTR [lightSources+13*40+LightSource.intensity],77 + invoke SpawnMuzzleFlashLight,160,160 + invoke SpawnExplosionLight,160,160 + CHECK DWORD PTR [lightSources+13*40+LightSource.intensity],77 ; combat bursts cannot overwrite authored light slots + call UpdateDynamicLights + CHECK DWORD PTR [lightSources+14*40+LightSource.curIntensity],180 ; muzzle light decays in its reserved slot + call InitLightingSystem + mov lightingMode,2 + mov edi,OFFSET lightGridRGB + mov ecx,1024 + mov eax,000A0A0Ah + rep stosd + mov playerX,160 + mov playerY,160 + mov playerAngle,0 + invoke SamplePointLighting,288,160,0,0 + xor eax,eax + cmp lightRed,10 + seta al + CHECK eax,1 ; flashlight illuminates points inside its forward cone + invoke SamplePointLighting,160,288,0,0 + CHECK lightRed,10 ; flashlight cannot illuminate sprites outside its cone + mov BYTE PTR [gameMap+2*32+3],CELL_DOOR + invoke SamplePointLighting,288,160,0,0 + CHECK lightRed,10 ; a closed door blocks the player flashlight + mov BYTE PTR [gameMap+2*32+3],CELL_DOOR_OPEN + invoke CastLightRay,160,160,288,160 + CHECK eax,1 ; an open door transmits dynamic light + mov BYTE PTR [gameMap+5*32+6],CELL_BRICK + invoke CastLightRay,352,352,416,416 + CHECK eax,0 ; ASM light rays reject diagonal corner leaks + invoke LoadSublevelBinary,OFFSET lightFile,-1,-1,0 + invoke LoadSublevelBinary,OFFSET lightBadCount,-1,-1,0 + CHECK eax,0 ; excessive lighting count rejected before committing a room + CHECK authoredLightCount,2 ; malformed lighting preserves current authored lights + invoke LoadSublevelBinary,OFFSET lightBadRadius,-1,-1,0 + CHECK eax,0 ; zero radius rejected without a divide by zero + invoke LoadSublevelBinary,OFFSET lightBadRGB,-1,-1,0 + CHECK eax,0 ; malformed baked RGB cannot replace current lighting + invoke LoadSublevelBinary,OFFSET mainPath,-1,-1,0 + CHECK authoredLightCount,0 ; loading a legacy room clears stale dynamic sources + CHECK lightingMode,0 ; legacy room restores classic lighting mode + ret +RunLightingChecks ENDP diff --git a/tests/viewport_editor_checks.inl b/tests/viewport_editor_checks.inl index 9df81ff..80ac259 100644 --- a/tests/viewport_editor_checks.inl +++ b/tests/viewport_editor_checks.inl @@ -49,6 +49,13 @@ static void RunViewportChecks(EditorApp& app, const char* actualEngine) { Check(equal,"DX11 texture pixels match the ASM framebuffer with opaque alpha"); context->Release(); } + app.LoadLevel("../assets/lit.dat");app.showCutsceneTimeline=false;app.lightingMode=1; + Check(pump(),"saved static lighting arrives in the live viewport"); + auto bakedFrame=app.previewPixels;app.lightingMode=2; + Check(pump() && app.previewPixels!=bakedFrame && app.previewPacket->lightCount==2, + "authored dynamic lights visibly affect the embedded game view"); + auto dynamicFrame=app.previewPixels;app.lightSources[1].x+=256; + Check(pump() && app.previewPixels!=dynamicFrame,"moving a dynamic light updates the image without rebaking"); app.StopEnginePreview(); Check(!app.previewProcess.hProcess && !app.previewPacket && !app.previewMapping,"closing viewport releases renderer process and mapping"); app.ShutdownD3D();device->Release();app.showCutsceneTimeline=false; diff --git a/tools/test_preview_ipc.py b/tools/test_preview_ipc.py index ae14de1..06521cc 100644 --- a/tools/test_preview_ipc.py +++ b/tools/test_preview_ipc.py @@ -9,16 +9,18 @@ import subprocess import time ROOT = Path(__file__).resolve().parents[1] -SIZE, TEXTURES, PIXELS = 1357792, 2016, 1050592 +SIZE, TEXTURES, PIXELS = 1362408, 2016, 1050592 -def check_preview(engine, expected=None, output=None): +def check_preview(engine, expected=None, output=None, level_path=None): name = f"Local\\EblanPreview-test-{os.getpid()}-{time.monotonic_ns()}" with mmap.mmap(-1, SIZE, tagname=name) as packet: base = C.addressof(C.c_char.from_buffer(packet)) state = C.cast(base+8, C.POINTER(C.c_long)) - struct.pack_into("<4I3i6I", packet, 0, 0x56504245, 1, 0, os.getpid(), 160, 1024, 0, + struct.pack_into("<4I3i6I", packet, 0, 0x56504245, 2, 0, os.getpid(), 160, 1024, 0, 0x383838, 0x222222, 0, 0, 0, 1) + struct.pack_into("<8I",packet,52,0,40,0,0,384,240,45,0) + packet[1358312:1358312+4096]=struct.pack(">16,y>>16) packet[1152:1152+len(sprites)]=sprites + if version>=5: + transitions,events,strings=struct.unpack_from("<3H",data,26) + lights=struct.unpack_from("