From 807549c15ba89b6d3d9be8ddd03e3e9b2a889334 Mon Sep 17 00:00:00 2001 From: Silver <71855839+shockingfargroundx@users.noreply.github.com> Date: Mon, 21 Apr 2025 08:35:52 -0700 Subject: [PATCH 1/7] Help --- .gitignore | 3 + Bonder-Graphics/CMakeLists.txt | 17 +- Bonder-Graphics/README.md | 18 + .../include/BonderGraphics/Graphics.h | 2 +- Bonder-Graphics/src/Graphics.cpp | 2 +- CMakeLists.txt | 9 +- bonder-Core/CMakeLists.txt | 5 +- bonder-Core/headers/input.h | 4 +- bonder-Core/src/input.cpp | 3 +- vendor/GLFW/lib/glfw3.dll | Bin 232448 -> 0 bytes vendor/GLFW/lib/glfw3.lib | Bin 706276 -> 0 bytes vendor/GLFW/lib/glfw3_mt.lib | Bin 706026 -> 0 bytes vendor/GLFW/lib/glfw3dll.lib | Bin 31378 -> 0 bytes vendor/glfw-3.3.2/.mailmap | 10 + .../glfw-3.3.2/CMake/GenerateMappings.cmake | 33 + .../CMake/MacOSXBundleInfo.plist.in | 38 + .../CMake/i686-w64-mingw32-clang.cmake | 13 + .../glfw-3.3.2/CMake/i686-w64-mingw32.cmake | 13 + .../CMake/modules/FindEpollShim.cmake | 17 + .../glfw-3.3.2/CMake/modules/FindOSMesa.cmake | 18 + .../CMake/modules/FindWaylandProtocols.cmake | 26 + .../CMake/modules/FindXKBCommon.cmake | 34 + .../CMake/x86_64-w64-mingw32-clang.cmake | 13 + .../glfw-3.3.2/CMake/x86_64-w64-mingw32.cmake | 13 + vendor/glfw-3.3.2/CMakeLists.txt | 374 + vendor/glfw-3.3.2/LICENSE.md | 23 + vendor/glfw-3.3.2/README.md | 344 + vendor/glfw-3.3.2/cmake_uninstall.cmake.in | 29 + vendor/glfw-3.3.2/deps/getopt.c | 230 + vendor/glfw-3.3.2/deps/getopt.h | 57 + vendor/glfw-3.3.2/deps/glad/gl.h | 3840 +++ vendor/glfw-3.3.2/deps/glad/khrplatform.h | 282 + vendor/glfw-3.3.2/deps/glad/vk_platform.h | 92 + vendor/glfw-3.3.2/deps/glad/vulkan.h | 3480 +++ vendor/glfw-3.3.2/deps/glad_gl.c | 1791 ++ vendor/glfw-3.3.2/deps/glad_vulkan.c | 593 + vendor/glfw-3.3.2/deps/linmath.h | 574 + .../glfw-3.3.2/deps/mingw/_mingw_dxhelper.h | 117 + vendor/glfw-3.3.2/deps/mingw/dinput.h | 2467 ++ vendor/glfw-3.3.2/deps/mingw/xinput.h | 239 + vendor/glfw-3.3.2/deps/nuklear.h | 25539 ++++++++++++++++ vendor/glfw-3.3.2/deps/nuklear_glfw_gl2.h | 381 + vendor/glfw-3.3.2/deps/stb_image_write.h | 1048 + vendor/glfw-3.3.2/deps/tinycthread.c | 594 + vendor/glfw-3.3.2/deps/tinycthread.h | 443 + vendor/glfw-3.3.2/deps/vs2008/stdint.h | 247 + vendor/glfw-3.3.2/docs/CMakeLists.txt | 32 + vendor/glfw-3.3.2/docs/CODEOWNERS | 10 + vendor/glfw-3.3.2/docs/CONTRIBUTING.md | 391 + vendor/glfw-3.3.2/docs/Doxyfile.in | 1848 ++ vendor/glfw-3.3.2/docs/DoxygenLayout.xml | 71 + vendor/glfw-3.3.2/docs/SUPPORT.md | 14 + vendor/glfw-3.3.2/docs/build.dox | 342 + vendor/glfw-3.3.2/docs/compat.dox | 285 + vendor/glfw-3.3.2/docs/compile.dox | 290 + vendor/glfw-3.3.2/docs/context.dox | 346 + vendor/glfw-3.3.2/docs/extra.css | 1 + vendor/glfw-3.3.2/docs/extra.less | 414 + vendor/glfw-3.3.2/docs/footer.html | 7 + vendor/glfw-3.3.2/docs/header.html | 33 + vendor/glfw-3.3.2/docs/input.dox | 945 + vendor/glfw-3.3.2/docs/internal.dox | 115 + vendor/glfw-3.3.2/docs/intro.dox | 454 + vendor/glfw-3.3.2/docs/main.dox | 46 + vendor/glfw-3.3.2/docs/monitor.dox | 268 + vendor/glfw-3.3.2/docs/moving.dox | 513 + vendor/glfw-3.3.2/docs/news.dox | 856 + vendor/glfw-3.3.2/docs/quick.dox | 362 + vendor/glfw-3.3.2/docs/spaces.svg | 877 + vendor/glfw-3.3.2/docs/vulkan.dox | 230 + vendor/glfw-3.3.2/docs/window.dox | 1434 + vendor/glfw-3.3.2/examples/CMakeLists.txt | 88 + vendor/glfw-3.3.2/examples/boing.c | 679 + vendor/glfw-3.3.2/examples/gears.c | 360 + vendor/glfw-3.3.2/examples/glfw.icns | Bin 0 -> 27988 bytes vendor/glfw-3.3.2/examples/glfw.ico | Bin 0 -> 21630 bytes vendor/glfw-3.3.2/examples/glfw.rc | 3 + vendor/glfw-3.3.2/examples/heightmap.c | 512 + vendor/glfw-3.3.2/examples/offscreen.c | 176 + vendor/glfw-3.3.2/examples/particles.c | 1073 + vendor/glfw-3.3.2/examples/sharing.c | 234 + vendor/glfw-3.3.2/examples/simple.c | 166 + vendor/glfw-3.3.2/examples/splitview.c | 546 + vendor/glfw-3.3.2/examples/wave.c | 462 + .../include/GLFW}/glfw3.h | 1115 +- .../include/GLFW}/glfw3native.h | 218 +- vendor/glfw-3.3.2/src/CMakeLists.txt | 184 + vendor/glfw-3.3.2/src/cocoa_init.m | 621 + vendor/glfw-3.3.2/src/cocoa_joystick.h | 50 + vendor/glfw-3.3.2/src/cocoa_joystick.m | 487 + vendor/glfw-3.3.2/src/cocoa_monitor.m | 612 + vendor/glfw-3.3.2/src/cocoa_platform.h | 211 + vendor/glfw-3.3.2/src/cocoa_time.c | 62 + vendor/glfw-3.3.2/src/cocoa_window.m | 1820 ++ vendor/glfw-3.3.2/src/context.c | 760 + vendor/glfw-3.3.2/src/egl_context.c | 789 + vendor/glfw-3.3.2/src/egl_context.h | 215 + vendor/glfw-3.3.2/src/glfw3.pc.in | 13 + vendor/glfw-3.3.2/src/glfw3Config.cmake.in | 1 + vendor/glfw-3.3.2/src/glfw_config.h.in | 60 + vendor/glfw-3.3.2/src/glx_context.c | 698 + vendor/glfw-3.3.2/src/glx_context.h | 181 + vendor/glfw-3.3.2/src/init.c | 340 + vendor/glfw-3.3.2/src/input.c | 1356 + vendor/glfw-3.3.2/src/internal.h | 778 + vendor/glfw-3.3.2/src/linux_joystick.c | 433 + vendor/glfw-3.3.2/src/linux_joystick.h | 62 + vendor/glfw-3.3.2/src/mappings.h | 476 + vendor/glfw-3.3.2/src/mappings.h.in | 73 + vendor/glfw-3.3.2/src/monitor.c | 544 + vendor/glfw-3.3.2/src/nsgl_context.h | 66 + vendor/glfw-3.3.2/src/nsgl_context.m | 376 + vendor/glfw-3.3.2/src/null_init.c | 52 + vendor/glfw-3.3.2/src/null_joystick.c | 44 + vendor/glfw-3.3.2/src/null_joystick.h | 31 + vendor/glfw-3.3.2/src/null_monitor.c | 77 + vendor/glfw-3.3.2/src/null_platform.h | 62 + vendor/glfw-3.3.2/src/null_window.c | 332 + vendor/glfw-3.3.2/src/osmesa_context.c | 372 + vendor/glfw-3.3.2/src/osmesa_context.h | 94 + vendor/glfw-3.3.2/src/posix_thread.c | 105 + vendor/glfw-3.3.2/src/posix_thread.h | 51 + vendor/glfw-3.3.2/src/posix_time.c | 87 + vendor/glfw-3.3.2/src/posix_time.h | 44 + vendor/glfw-3.3.2/src/vulkan.c | 332 + vendor/glfw-3.3.2/src/wgl_context.c | 796 + vendor/glfw-3.3.2/src/wgl_context.h | 164 + vendor/glfw-3.3.2/src/win32_init.c | 631 + vendor/glfw-3.3.2/src/win32_joystick.c | 755 + vendor/glfw-3.3.2/src/win32_joystick.h | 56 + vendor/glfw-3.3.2/src/win32_monitor.c | 535 + vendor/glfw-3.3.2/src/win32_platform.h | 458 + vendor/glfw-3.3.2/src/win32_thread.c | 99 + vendor/glfw-3.3.2/src/win32_time.c | 76 + vendor/glfw-3.3.2/src/win32_window.c | 2244 ++ vendor/glfw-3.3.2/src/window.c | 1101 + vendor/glfw-3.3.2/src/wl_init.c | 1324 + vendor/glfw-3.3.2/src/wl_monitor.c | 225 + vendor/glfw-3.3.2/src/wl_platform.h | 359 + vendor/glfw-3.3.2/src/wl_window.c | 1894 ++ vendor/glfw-3.3.2/src/x11_init.c | 1106 + vendor/glfw-3.3.2/src/x11_monitor.c | 614 + vendor/glfw-3.3.2/src/x11_platform.h | 450 + vendor/glfw-3.3.2/src/x11_window.c | 3166 ++ vendor/glfw-3.3.2/src/xkb_unicode.c | 942 + vendor/glfw-3.3.2/src/xkb_unicode.h | 28 + vendor/glfw-3.3.2/tests/CMakeLists.txt | 94 + vendor/glfw-3.3.2/tests/clipboard.c | 145 + vendor/glfw-3.3.2/tests/cursor.c | 493 + vendor/glfw-3.3.2/tests/empty.c | 132 + vendor/glfw-3.3.2/tests/events.c | 650 + vendor/glfw-3.3.2/tests/gamma.c | 179 + vendor/glfw-3.3.2/tests/glfwinfo.c | 920 + vendor/glfw-3.3.2/tests/icon.c | 149 + vendor/glfw-3.3.2/tests/iconify.c | 297 + vendor/glfw-3.3.2/tests/inputlag.c | 308 + vendor/glfw-3.3.2/tests/joysticks.c | 344 + vendor/glfw-3.3.2/tests/monitors.c | 260 + vendor/glfw-3.3.2/tests/msaa.c | 220 + vendor/glfw-3.3.2/tests/opacity.c | 108 + vendor/glfw-3.3.2/tests/reopen.c | 240 + vendor/glfw-3.3.2/tests/tearing.c | 250 + vendor/glfw-3.3.2/tests/threads.c | 152 + vendor/glfw-3.3.2/tests/timeout.c | 98 + vendor/glfw-3.3.2/tests/title.c | 72 + vendor/glfw-3.3.2/tests/triangle-vulkan.c | 2229 ++ vendor/glfw-3.3.2/tests/windows.c | 174 + 167 files changed, 95287 insertions(+), 1092 deletions(-) create mode 100644 Bonder-Graphics/README.md delete mode 100644 vendor/GLFW/lib/glfw3.dll delete mode 100644 vendor/GLFW/lib/glfw3.lib delete mode 100644 vendor/GLFW/lib/glfw3_mt.lib delete mode 100644 vendor/GLFW/lib/glfw3dll.lib create mode 100644 vendor/glfw-3.3.2/.mailmap create mode 100644 vendor/glfw-3.3.2/CMake/GenerateMappings.cmake create mode 100644 vendor/glfw-3.3.2/CMake/MacOSXBundleInfo.plist.in create mode 100644 vendor/glfw-3.3.2/CMake/i686-w64-mingw32-clang.cmake create mode 100644 vendor/glfw-3.3.2/CMake/i686-w64-mingw32.cmake create mode 100644 vendor/glfw-3.3.2/CMake/modules/FindEpollShim.cmake create mode 100644 vendor/glfw-3.3.2/CMake/modules/FindOSMesa.cmake create mode 100644 vendor/glfw-3.3.2/CMake/modules/FindWaylandProtocols.cmake create mode 100644 vendor/glfw-3.3.2/CMake/modules/FindXKBCommon.cmake create mode 100644 vendor/glfw-3.3.2/CMake/x86_64-w64-mingw32-clang.cmake create mode 100644 vendor/glfw-3.3.2/CMake/x86_64-w64-mingw32.cmake create mode 100644 vendor/glfw-3.3.2/CMakeLists.txt create mode 100644 vendor/glfw-3.3.2/LICENSE.md create mode 100644 vendor/glfw-3.3.2/README.md create mode 100644 vendor/glfw-3.3.2/cmake_uninstall.cmake.in create mode 100644 vendor/glfw-3.3.2/deps/getopt.c create mode 100644 vendor/glfw-3.3.2/deps/getopt.h create mode 100644 vendor/glfw-3.3.2/deps/glad/gl.h create mode 100644 vendor/glfw-3.3.2/deps/glad/khrplatform.h create mode 100644 vendor/glfw-3.3.2/deps/glad/vk_platform.h create mode 100644 vendor/glfw-3.3.2/deps/glad/vulkan.h create mode 100644 vendor/glfw-3.3.2/deps/glad_gl.c create mode 100644 vendor/glfw-3.3.2/deps/glad_vulkan.c create mode 100644 vendor/glfw-3.3.2/deps/linmath.h create mode 100644 vendor/glfw-3.3.2/deps/mingw/_mingw_dxhelper.h create mode 100644 vendor/glfw-3.3.2/deps/mingw/dinput.h create mode 100644 vendor/glfw-3.3.2/deps/mingw/xinput.h create mode 100644 vendor/glfw-3.3.2/deps/nuklear.h create mode 100644 vendor/glfw-3.3.2/deps/nuklear_glfw_gl2.h create mode 100644 vendor/glfw-3.3.2/deps/stb_image_write.h create mode 100644 vendor/glfw-3.3.2/deps/tinycthread.c create mode 100644 vendor/glfw-3.3.2/deps/tinycthread.h create mode 100644 vendor/glfw-3.3.2/deps/vs2008/stdint.h create mode 100644 vendor/glfw-3.3.2/docs/CMakeLists.txt create mode 100644 vendor/glfw-3.3.2/docs/CODEOWNERS create mode 100644 vendor/glfw-3.3.2/docs/CONTRIBUTING.md create mode 100644 vendor/glfw-3.3.2/docs/Doxyfile.in create mode 100644 vendor/glfw-3.3.2/docs/DoxygenLayout.xml create mode 100644 vendor/glfw-3.3.2/docs/SUPPORT.md create mode 100644 vendor/glfw-3.3.2/docs/build.dox create mode 100644 vendor/glfw-3.3.2/docs/compat.dox create mode 100644 vendor/glfw-3.3.2/docs/compile.dox create mode 100644 vendor/glfw-3.3.2/docs/context.dox create mode 100644 vendor/glfw-3.3.2/docs/extra.css create mode 100644 vendor/glfw-3.3.2/docs/extra.less create mode 100644 vendor/glfw-3.3.2/docs/footer.html create mode 100644 vendor/glfw-3.3.2/docs/header.html create mode 100644 vendor/glfw-3.3.2/docs/input.dox create mode 100644 vendor/glfw-3.3.2/docs/internal.dox create mode 100644 vendor/glfw-3.3.2/docs/intro.dox create mode 100644 vendor/glfw-3.3.2/docs/main.dox create mode 100644 vendor/glfw-3.3.2/docs/monitor.dox create mode 100644 vendor/glfw-3.3.2/docs/moving.dox create mode 100644 vendor/glfw-3.3.2/docs/news.dox create mode 100644 vendor/glfw-3.3.2/docs/quick.dox create mode 100644 vendor/glfw-3.3.2/docs/spaces.svg create mode 100644 vendor/glfw-3.3.2/docs/vulkan.dox create mode 100644 vendor/glfw-3.3.2/docs/window.dox create mode 100644 vendor/glfw-3.3.2/examples/CMakeLists.txt create mode 100644 vendor/glfw-3.3.2/examples/boing.c create mode 100644 vendor/glfw-3.3.2/examples/gears.c create mode 100644 vendor/glfw-3.3.2/examples/glfw.icns create mode 100644 vendor/glfw-3.3.2/examples/glfw.ico create mode 100644 vendor/glfw-3.3.2/examples/glfw.rc create mode 100644 vendor/glfw-3.3.2/examples/heightmap.c create mode 100644 vendor/glfw-3.3.2/examples/offscreen.c create mode 100644 vendor/glfw-3.3.2/examples/particles.c create mode 100644 vendor/glfw-3.3.2/examples/sharing.c create mode 100644 vendor/glfw-3.3.2/examples/simple.c create mode 100644 vendor/glfw-3.3.2/examples/splitview.c create mode 100644 vendor/glfw-3.3.2/examples/wave.c rename vendor/{GLFW/include => glfw-3.3.2/include/GLFW}/glfw3.h (83%) rename vendor/{GLFW/include => glfw-3.3.2/include/GLFW}/glfw3native.h (71%) create mode 100644 vendor/glfw-3.3.2/src/CMakeLists.txt create mode 100644 vendor/glfw-3.3.2/src/cocoa_init.m create mode 100644 vendor/glfw-3.3.2/src/cocoa_joystick.h create mode 100644 vendor/glfw-3.3.2/src/cocoa_joystick.m create mode 100644 vendor/glfw-3.3.2/src/cocoa_monitor.m create mode 100644 vendor/glfw-3.3.2/src/cocoa_platform.h create mode 100644 vendor/glfw-3.3.2/src/cocoa_time.c create mode 100644 vendor/glfw-3.3.2/src/cocoa_window.m create mode 100644 vendor/glfw-3.3.2/src/context.c create mode 100644 vendor/glfw-3.3.2/src/egl_context.c create mode 100644 vendor/glfw-3.3.2/src/egl_context.h create mode 100644 vendor/glfw-3.3.2/src/glfw3.pc.in create mode 100644 vendor/glfw-3.3.2/src/glfw3Config.cmake.in create mode 100644 vendor/glfw-3.3.2/src/glfw_config.h.in create mode 100644 vendor/glfw-3.3.2/src/glx_context.c create mode 100644 vendor/glfw-3.3.2/src/glx_context.h create mode 100644 vendor/glfw-3.3.2/src/init.c create mode 100644 vendor/glfw-3.3.2/src/input.c create mode 100644 vendor/glfw-3.3.2/src/internal.h create mode 100644 vendor/glfw-3.3.2/src/linux_joystick.c create mode 100644 vendor/glfw-3.3.2/src/linux_joystick.h create mode 100644 vendor/glfw-3.3.2/src/mappings.h create mode 100644 vendor/glfw-3.3.2/src/mappings.h.in create mode 100644 vendor/glfw-3.3.2/src/monitor.c create mode 100644 vendor/glfw-3.3.2/src/nsgl_context.h create mode 100644 vendor/glfw-3.3.2/src/nsgl_context.m create mode 100644 vendor/glfw-3.3.2/src/null_init.c create mode 100644 vendor/glfw-3.3.2/src/null_joystick.c create mode 100644 vendor/glfw-3.3.2/src/null_joystick.h create mode 100644 vendor/glfw-3.3.2/src/null_monitor.c create mode 100644 vendor/glfw-3.3.2/src/null_platform.h create mode 100644 vendor/glfw-3.3.2/src/null_window.c create mode 100644 vendor/glfw-3.3.2/src/osmesa_context.c create mode 100644 vendor/glfw-3.3.2/src/osmesa_context.h create mode 100644 vendor/glfw-3.3.2/src/posix_thread.c create mode 100644 vendor/glfw-3.3.2/src/posix_thread.h create mode 100644 vendor/glfw-3.3.2/src/posix_time.c create mode 100644 vendor/glfw-3.3.2/src/posix_time.h create mode 100644 vendor/glfw-3.3.2/src/vulkan.c create mode 100644 vendor/glfw-3.3.2/src/wgl_context.c create mode 100644 vendor/glfw-3.3.2/src/wgl_context.h create mode 100644 vendor/glfw-3.3.2/src/win32_init.c create mode 100644 vendor/glfw-3.3.2/src/win32_joystick.c create mode 100644 vendor/glfw-3.3.2/src/win32_joystick.h create mode 100644 vendor/glfw-3.3.2/src/win32_monitor.c create mode 100644 vendor/glfw-3.3.2/src/win32_platform.h create mode 100644 vendor/glfw-3.3.2/src/win32_thread.c create mode 100644 vendor/glfw-3.3.2/src/win32_time.c create mode 100644 vendor/glfw-3.3.2/src/win32_window.c create mode 100644 vendor/glfw-3.3.2/src/window.c create mode 100644 vendor/glfw-3.3.2/src/wl_init.c create mode 100644 vendor/glfw-3.3.2/src/wl_monitor.c create mode 100644 vendor/glfw-3.3.2/src/wl_platform.h create mode 100644 vendor/glfw-3.3.2/src/wl_window.c create mode 100644 vendor/glfw-3.3.2/src/x11_init.c create mode 100644 vendor/glfw-3.3.2/src/x11_monitor.c create mode 100644 vendor/glfw-3.3.2/src/x11_platform.h create mode 100644 vendor/glfw-3.3.2/src/x11_window.c create mode 100644 vendor/glfw-3.3.2/src/xkb_unicode.c create mode 100644 vendor/glfw-3.3.2/src/xkb_unicode.h create mode 100644 vendor/glfw-3.3.2/tests/CMakeLists.txt create mode 100644 vendor/glfw-3.3.2/tests/clipboard.c create mode 100644 vendor/glfw-3.3.2/tests/cursor.c create mode 100644 vendor/glfw-3.3.2/tests/empty.c create mode 100644 vendor/glfw-3.3.2/tests/events.c create mode 100644 vendor/glfw-3.3.2/tests/gamma.c create mode 100644 vendor/glfw-3.3.2/tests/glfwinfo.c create mode 100644 vendor/glfw-3.3.2/tests/icon.c create mode 100644 vendor/glfw-3.3.2/tests/iconify.c create mode 100644 vendor/glfw-3.3.2/tests/inputlag.c create mode 100644 vendor/glfw-3.3.2/tests/joysticks.c create mode 100644 vendor/glfw-3.3.2/tests/monitors.c create mode 100644 vendor/glfw-3.3.2/tests/msaa.c create mode 100644 vendor/glfw-3.3.2/tests/opacity.c create mode 100644 vendor/glfw-3.3.2/tests/reopen.c create mode 100644 vendor/glfw-3.3.2/tests/tearing.c create mode 100644 vendor/glfw-3.3.2/tests/threads.c create mode 100644 vendor/glfw-3.3.2/tests/timeout.c create mode 100644 vendor/glfw-3.3.2/tests/title.c create mode 100644 vendor/glfw-3.3.2/tests/triangle-vulkan.c create mode 100644 vendor/glfw-3.3.2/tests/windows.c diff --git a/.gitignore b/.gitignore index 2f88b18..0447975 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ /cmake-build-debug /.idea +/cmake-build-debug-visual-studio +/cmake-build-debug-visual-studio +/cmake-build-debug-visual-studio diff --git a/Bonder-Graphics/CMakeLists.txt b/Bonder-Graphics/CMakeLists.txt index 2a24da8..5c0c709 100644 --- a/Bonder-Graphics/CMakeLists.txt +++ b/Bonder-Graphics/CMakeLists.txt @@ -1,12 +1,13 @@ add_library(Bonder-Graphics src/Graphics.cpp) -# TODO: change SRC/graphics to file_recourse, -set(GLFW_DIR "${CMAKE_SOURCE_DIR}/vendor/GLFW") -target_include_directories(Bonder-Graphics PUBLIC "${GLFW_DIR}/include" "${CMAKE_CURRENT_SOURCE_DIR}/include") +target_include_directories(Bonder-Graphics PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include/BonderGraphics") +file(GLOB_RECURSE MY_SOURCES CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") -# add_executable (bonderGraphicsTest SRC/testGraphics.cpp - link to mysources) -#TODO: fix this code above to make it actively do something. Also, add Bonder-GraphicsTest in link libs FIRST - -target_link_libraries(Bonder-Graphics "${GLFW_DIR}/lib/glfw3.lib" opengl32.lib winmm.lib gdi32.lib) - +add_executable (bonderGraphicsTest ${MY_SOURCES}) +target_link_libraries(bonderGraphicsTest + glfw + opengl32.lib + winmm.lib + gdi32.lib) +#TODO: Struggle making Graphics.h link glfw so we can build the test project. \ No newline at end of file diff --git a/Bonder-Graphics/README.md b/Bonder-Graphics/README.md new file mode 100644 index 0000000..a204c59 --- /dev/null +++ b/Bonder-Graphics/README.md @@ -0,0 +1,18 @@ +
Handles all the graphics, and drawing so we don't have to for example, draw triangles by hand.
+ +{?O4Ri(+rV z=1X<0zZ-rR1b!b(G-de7GSzVi_^4|W$eV q3N~SwNpsd{}j$XzbfTqLn}^qQ7kf zOnL%GDSLnfL&Lf@#?a6Oa&WzowhUX9=P*^*T6tiJw~%;*T(elpls=RX_ Hbf`sE(iYfHdv>Uf`;9|B~TbHvn2f(E0%}?$l$X zM_peN7`BgtL;n!CRu6P)^NAhKzZqd?n4jKbKjq1O)RTt9)UjA<@LvN`4`ZoO35MQW z9OR1x^J%W-Re!*P;crvkVZosJSs)b`Tz Wu*pq*AUmR@-xwgzg-s$%lwSpxy zC%|A`iSYO@)j-S_u%+M&l}haROVo7|Ua7*10uK;}r-=hwwX~ocpN#`XZ`^@`BF3=< zc1nW=?y1^!%gMCrm54P`8BA=^q;W(|@#1#(N|sEiv{8aQT0anr^rFAFQB Dv5K zNm#l9K|b})JYQ%wj&Ge0PS1c-3mNd$kHng*Y5wUd2BYA-XO@zJ9D?A_5Dd!a#hP58 z*mSW6NRD}*Pxkjh_(mT7GJbB&2#*5gsSdmx7%gt5GF400VtyrWPc4`y&AlHI;2sxL zhZoWZ@KY+7y#gxD(}u#1K(mUebi{&GIjxi=RVo5)5q@JLGJ^RXLwS4l^FpLq@fMBzzq=+>a@bCjh z_{A)IGs0`ZAX%)rh!boy2--4&S`cglL8@5OixaFd2s8kycN++HfFMn*xs(&kHVDFu zU +V`z3PI{zE2voyjw-2%hoQm|$(Pr07EjUDvX{tkqG(A$rRJsq_E z{BG|4p}XBM#V7n2-F-}Vzt!Eo_wevly8F5A_MOi09^Jh~cVE`s!@8R}19Z6OG8wYm zi7$X}9=>XP58(^p`v<;f@x6)fU3~B3+k)?3`1az{O*PDkl^4duXJGfz?xQMF7aMhk z9~k*a>wN)md|42)D?bXe7%wt2JAMD|O${|;vi~e%8jiGca6@MVC6%LT(Dn%ZX03MO z{#Y=M(=A6h80!XbZcmz=$S-V;U>6~FECQz=m`ML{oc?U-&yEKpebypl>Bq|l4H)`% z1qJ(5g`{M^lIqwBLmA$^g%BvA$#_o+5GE_H|7jc|UxTXS&)-oyi?l;(XqPIY8D}Fg zUh?R@Fi!y<(fzUL3lpR7s;1~4p}KxY|6(-|`N18l)VREu M_= 8dgtfhkoR zX*i`{kM*j 2uv;C#f~hv(oK82?>_c zX{qnPT2zajY#7A)b`U(B;d*cdy&G9pdV+wADydzWOST*G7r{0{t^|t*8J;qIh0Lbb z4!AJ`fFlc;+r}+qV+I1T5sPt(QI-qWt4gWtx3p43d3Kt`e=*ruwvvJ6a)cu7G-k|- zo5-#JnoMN$TY$6iE0~no7iplUACcCaJhMAMM4SFFKGFJu*a3s*wmxdQT)wv(kM(ja z)@L#+B03uDMXonc7DZf&rP+Wx>dK|MQDiDH>Y`+@SRIS|IEzaL3wtLzMXK @SQLgy9{EsX k6hQ+b=juH2HH1AU>U8;M}Y?P2g|_6cYu z&*!jD)KivW6~3PCo-{CPaC>8n)1F+Ys}(Q{xjF%_-AJ5N$MMr_fXrZ0*nfdf^YD-_ zc*yxY l=FC$T0Kfk(dt@1u5VO@x4{NKChh;C z_+i#6DIq*kP(#^blYp+I0K@V+E(2F#F&T1eV<1ZbYKN}O$Ho}aKWO^;@0k_Jg~PrE zpAvO{3B7CjYy3XJ)0M3D(KN=>GNv4Y7fsTKA6q$wANuJtHvG&vD<$SFEI&9#i+Qpy z6Ze{6SEFr&96C~q)${&8$e6|KV#8xa-uLXx@cW5vXko3i!F_)Q=HLo0Y?g!_fam3~ zpvGjYfv!^^L5Z#+Lvp>3#l$zxw~Rf6OvlI9w-)Fv-56h424myv>Uc25H +)Q2DpsDoFw5af%g?dtOD4v|YQ#%h|4Ze`+As7l{hl?q z`A`*0RK-P6*Km|GCaJvb?(v^Xr&)?T1uC`OKpJXFDv;j*j9(g8cWOn@wsc*zh^-x^ z3gRQYiu<@wL@XvvJ{6g`QB;LR^(c%RdI(jFSYz!>LkMa1d$5Uy_H_=r^iP;w^742O z+rwzeIk2^|NkH=nNJ#$3*Ep>F-g{ePGXdUZirCwl^fWxi>>{K9B~Es`aB?Qy%%n!0 z3e>wWtq|-497*Fa1}}TRP8@av#*rTVL}kbh13!b&7wr4na+*BA@9S_8;5r>fVcI9_ z^ksl2= @u-A8? zh~Cuzf1yk(-n9VRu$YBfyW@5b50qZ~`m= z;Cm3@PaM<$&R|x2Z!^HzJmC`n@8qBb;3y}HmJ0AVD^;%(;O6!Wn*s0w)I9jQ0e+v( zz$}0VIG6))Ij7A7SdBeK&=vuF1bO2Pj=%7C9Z#nWL0@rjJis?NSPrlcPiHE?FFBiO z0P8W~1jpF`Q(0E3D@k#O?6 fv-EG9*DE%&wKlsmZZJ(m6IM(+E7`}T3)S}xf^?n`1BsMfgew?8O5)y>@Z zJ@=j9zJ1(>DH-K&C-<>gOUORAg~elg&>{O>+?T;A%el|ZeGl?@S={I0VYKZDp4X;Q z^;G9EUvlOY^Zm^SD #LE7ZM7He&>=2r-$twCkr zDb&khyx^g@m{mikQnUpKsp$qNY|jL}+tS-IMX}!l5Ek1maBArCSJ>VjU|&l=3j7Hm z+qDkcTd?x(Z@C2FM*-znE(LT1&}EifKtBK)U>OML5TMH~R{%NyD9@4)XfL1w*yzJ{ zD;SEFVnC;W8*K3a`W=whG6c}ifQDKmKoLMCmSKRt0d$SU2j~kxrIz7 vv7qXM=oK{4EZ@i! z1&>E}#HMQDb+8AmB*NTdAgy|ddUPMWM@R3H>>Q1QQhnxT=Fo#ByKmPYDRHw$N?xQe z+`ftH1DvQ+x8uE%(6A_ftAxE;qCZ%2Ay!n050?D72|}qdWdZM&G)_@EPlI V<1aNW`6~Pp9bRkXKLY&%W(86I1vvDAHD6$Ww)soiyYpY^qo1tCX|P?|z58(~ z{~T@f&n)1ActH9QhQV0~M)&ot 7oBA1z`PY$|-J56m;7 zCX{LYT~fx@*HZo(nw{Y$;2!NNh=CpYTd{)1qc&mtb;c@QmC1wytAQVH-556AgOpzD z_YJAO*?Uv?Vd@^Vs>g%g1^b1nRY*hLK-Gi2@ O z)qj5PLrtIrV~v@Wk{YDe5ic-FwU0!)F$C$C4Anjmxa=S`Nc#QLqr&(26@+y5lhs{S zdp8zHjWiaB=hHb4il3?mso}<+PNT+aJe|gWf9xPQ2 zRE#B;sWAEMXDG2D~bB zT5h>hSOm+gzS(f)NL*OJ&l~^o8k+Z#g?Vs{O@~KsVT(OnIt$r1T@!~FneYot@GKL2 zw+X)01Wz)-<4o`f6Fk%eUu}Y~Fu|9Y;NB* mGQqE!;O9*66DIg!6THj>FEYUkOz &=?Zo#9zApHB;_Hv^MtoP|`x@U*_)g+$gH>NgeCOl4 z7~kdiit!D{cOAYd_@?8VkM99|f5-O}zE|*V#J3&a9(-To`w`zUd`ajQ9q $`O G$>J~Iw=f3i^A*xtXPd8ZeWuS>`i7Z)!w(oy ztR$r!#juG=DtqxzRPg)RI%Sdq)xrK@QW>O?&QM^w{vpj3(?6uC4E>{z5BZLY<7gk) zoTcA93)@G+NB^|X@tPkWlE}*kfN+qh^_ZWh%>Tytb<+8DWc;iKza`*jDDr`4QRMG! zjw^DPp~!J 8hNV*i9zczLniS6iej0$m|cJ1BpD&14a zn;`E0VeVbvqb{!h@7$JzOWdHW;;pV4G#Zp>ybv*(g AdNE>Yz$1!*RDmVC;jD_~s!Bsa#WSi& z?8LCMI$=O4!5NU&<=Um{mvwFnUm{quFeTuCU4~&|JVQR|_9pJveCg_i#QkF9y8Qd( zFP$wRxDJQsOJs=YljyLu4VQrU4QIm+G#pp)jIf`IE>}0l4#q}B!hoDN69%LTHY3!~ zg~V}q9K`qTGaBxFv0L9^F?M5(AS&~{>)aE`CC!G+0-d^;IrlXaYn^)o*xC7by16g& zm~*1Xd^MM~j;^@h)VX)K!r(@1|AYaA6UN)|Cf#ZKBys=C`|6)Gz8I>*lWw}Cwx!|p ziu=u&DO)pW$0Yt_IFqIFxeH`Ti&kvrOD9>jcA6PMZ2-PIShT{@0?jyEANFe%g$I2J zJ2SUc5XaWr@qPIPJKbR`rk@se5*mlF6Zi;FWZ0(ZN2k{2nu-yA*MUw#l}Wu6%6%z3 zY|~x6><%M+?&Fxb+l3E~nVa4HqD@_XGe4`~>Q=JJGzZZ-K0%z106!>{aliiDjv3FO zsa}}gRM)$4z~BQr3-u7LV!P|mNz70kXXZR;=mA>InZd*X=k>y6-KH_;Q^)blrZ5%hyg3Sl`M3Gl%}7tmW;3+;#Ve@k zmRKKKiLJk350EjEj^*QE7g6jHzqeDJmkJz5bc*B9Yaay=gSO5fiY-qi07#|*HvFQr z7k=7=Uy}yx>%3zjvU|=ujKRzFd53qVAQAl1;q*Ij$>481-@1diPdd-KC53;(gG&tG zu^ogWzU1(K8)oBF;qH$FLGUQ x^qIag=N-#N z^gQqQp)IG5SVPV=*^I;4Y@ziyJ1#NMNjT54&?z`S9A%(Wak{1{Esa_cc)Q6oA${I4 z+q5lx-toNk&9gB#THgZed)oS#WXh%4`ruUMTWw2NVtu Ws`eN(MZd=qt9TWw+%SYJ(*@fBI$ z_pEQA^#!djXniX}CT5BCjj_Hm>pSoa6E@WN{(p7e(bKe}jNCb&3pSM3r}Zr>f0f^o zr5)JX3@2-uHIsGr8hMlkjo;-R@85n&npA!YDS>t&p@EUe9Lpm{72i^4cvN@k1Wi7Q z2(h$UXBqY!QP<(U0#lHv1d9{ex_|qnE+^>$(7^tgLT2f#k#%}I86j;#Ie^1n-R#+` zSW!qxs156AjG=x`tH_&jOc7qIqCCesnSyMCzDHTNjY~J^Ft0&qHA9ZEYv;A4YFQ4* z<9<3G{bAD#Ro^^sNY&HLPzw&QEhr_|U?$hqdA0>7sw=2^mHMn(5pvo_RoPN4vFEpH zY{;BgFVw+l(>8LXD}4WW!CTy0gmCU}xO^qGU~Zr>A?6nwRVA#9PbGFu;<4g7^L@6M zZ7}}ligo(se! +4M~nzqib2`sO^ox8H_dQ++-0 z_)fUmekXn3ekYH&-zgL9H+GHvPMv7K)34Px(m2U{ny)jTSvQ%_?3>MJ&h_Rq_eS%X zcLSf0b5^I{V4<@<6 $D4JKOl z^pk3Y*fq%(lN;_bdpng(OTZ*L*x;PGr __ KZN;go5M!ZD9ejO3_Z?vHF}uT)?h0p+djkp*?i zKN0zeG8VunB_i8+)blZD@mW;9J@Q!4hA#xu|Fs#`x_{(ZqAwxB31f`+b-bMTMpmT) zqkpNh9^YSyHxbHl0`snfNLD*UXs4-`G;|pzw(?#|Zdx^tnue~pVx>lJ9H+L&DBHyw zLrW>R7p2Z1x20KBTx6q8v7-8^Vpv7fg}}-Y6-sbPKaj{*7bv>#T#`x)Pa5SrIo|5H zg+61RskdJs3ML >VgNVj}R5Bk;v{c|LhShU^A*U1gRku9SDaj-ic$;wQ zzuMh&jK@oNEC)M1iX^%|P(;=!z1E3sbbJ>tr#|II>9xv0-gb8Lj7@TO@o*5U{MCuj zqAFaWC3`?E_pAp6teS;HpKJ5#W!e&Qj|I&ADo|GWvk-;-i(45I5=N8FCIc#3BLC9V z{)$C|Q-Pm*31Ev*a5YK8$@5a_s5M^F?n^)_&_E(-u~pSTc9VfuFXTq>2KTN@M4o3C zn?`^w{@IE(zgW$zb}kE6JGYipJ0D(^*{v9POVhSGx}9#QW1gkE0f>Kbo9HWh87ey1 z&R_Mkov7jBV$Ia@cibVcPfXI}=p0SaxSg`e(P+GZGO@Hb&v>s zhB) z?DWrFspW&3t0vTZti!iyl`6K^evR?7LuczepGn)Z&YUoBro!CGsVP3qzj#GC*o(h} z!K1#J2C)7Op2*KB?#&$6l($Y~-8qFkX$iW|r{PLooHG&U893Fj-~HS+^J3euhtl4l zY1nMMYS_g`dky>jhiX`re{Q?Ob@Z;5P5Y7hdVcX#)!(+T`*?WzntxzPlHdZWvuwT+ z6s~+d11Vrp1M zs(GQ*MO gMANpX)P0Wc7mG8)zd+*zzRoU&dN5V9@Vh_xsRb5Z z^mc|PxC@wg0_NIt#T$v`@dVN235yIR`Uvh|HSw1R$;kggLzZC(jwhyN2>f@q5a2Nd zcY;w>_4xUQueRUl_wBc4y#3Zqu-`G)*zY)xDY)D)1uzwcD}bpmY(cnqlHm)gh$V z5H6l_y-gQ0tO15*zsnoU2mizyOb~A{ySR}Aq8tnO3gx>PglR++gK+GBA@2DmZuaz( zwf@5;G#59LpFIDGO)x6#n|}r&giUBSY(g~tVunq4Qd}S`fO=h%LSv@sKJgw^cYd)( z6+#7(x}gkWH56iH@5^T}!pIZt`DOC(_Dwn6l$%6Y-A8{yj>*bDypajn5LzPs!JS2j z%)~CM&B )tB2R#4!_yo$TRx{sH8 ztaVRT+Ka9GuZlm;x@QWWk6YGn`{N;x`3mo)a4L2Z6;s%?Hmq4;qr9*|grTpqF$X=W zGF(35gwS(p_Z@+2xY34Eo+FIDQz!AlMw9AAToI!e^$sqpQ?(pdHF{I%O5qxXRu#HZ zxN6YNYWKZ{s}{YlcHaZI>d=vD_f5lf0UA`;>&G<)4XSqEBe*U#I#o$r$7a<7yGNnf z(y0pJI>Bgq31;=h&c$^FN>%6y;d&IECUl!{8pII{~dE_2Un4xBG7A*Xly$;;PBMi1@qdsYA0b z#kCaI`9@FaU_wV2{iwdUtbWw)4fJDngm_=#I>+ce{SBAZk9rGNb#`qw =9ymQvoSmE(2`;wm{tXsf*PH*T~pTuw;z8(gX4Hk1P@Zi(B zp}y|NhV2>%VBtAw{`KA+o+NS{TuNapaCiA9kbs0Q@2^_UTFn)YC7JkFc8?!e1KjMx zSz+B 6lxw;G>&i4A$$hODz8&no0>8#2#^Y_cJbDrArinPEfTvLSO6 z($|JeupzJ55XEypN8gMZjItrG*^tQ!c}pS5!p# m_&0~VC)gK6Pi%eu=g2Xr1<{g_r zW(&N`wz?*>J8Wi;+RScMW~*(;RW@Xv4Y^t&PuP%%4SCpxoUf1{D}?=r2`QXUh 6CG;vQG9o#1r>SuXfS4b`5b10{=J0>%>32y z-?+?T1Jc)Eq^fD#EQL6}Ax~1c_6aP>+|@ajL@3KlBwcmlvV!t=suMR9!9@&Q0%1tp z%2YVDa!4vwotPG6N%~+7gf(&NuA1bjPa??h^dZ>*IWNYS ;2p6B6gKq=AYJYgWu^#pXo{((b7)HbNA!jwwNHX-Td)_$4l#x3C8Ae`KVxAFF zGJ3t>FjFhz-{kr4{>DfSo-J-91F;4R&G*^j1?KxiF`EnE^SwvY3ZKxn561W;44p%V z?nDU0CQ>X8@v?Y&A}>`J#Q3CapcT*=b{{>lMwqHAIWQZ$XOJVWCli0=oaCmgtc&@p z=kGfHZsBhle~<9j%%8_^G;NzhbWmXMA3PMWybv1J$1hTsSLU{BOta$4%~1NA;mC>K zS9Oht247Hslfej=44gg2Xmx7y^}@HyKl0M<#8U1U+?+vJqMupu|^e5 z7rhDduTEbef72?p-P@!f!{`n6W~NBj fEl^Eo}k8)pJAVmE|| zmL9KVvcr!(5Q3;R#|43Au*r_u)1%DVksh@Xs**Qq%)Q?$dw=r}HAC3BsfMDW9=;?` zSXC-&@| ~vJ?5j=HAv~yW15!>%=bI<@i4e%;rPilPJc#M^7OstV<>fDdP3e# zKik25Bg*SYj2&5fvvT}2Jl^;+j}E72K7Jh=i2Uv5F9&~L{)X^3fWHhs;y{ka!7NQd zsxvj%We+4d>6hT9Hi7=*rmXQFH+2cK_om-^I2ze0oeU1y6N*6t{LM*4 U|Ns++*CV4TU{O`=ya;|`x%)L3A@p$t#lf2u6hn~-h zk}D6pG$Xd;(0ymca-I74@6}o(b@bB*(FA9wl+jzwNHc@F>7P^Rb^y+p{qkzY=k13c z(jB}59*gN`ET#eNt8K&mi)(zpS@On(c^%q$+(Slu3-9B*^L=<{#Dx5^j3n;7kCThG zPx{5bE(rNYZqh -~u#TuQ9JK2oHP4G<5bEpkhZSo!~h3Ol#}|hFlb7 z1^E_dRb@5uEum|3_zn(c6=~rq0}LhkHO#lzElckTR2>Xiz>jx4>~-t?eEly(9w|r1 zrl_*xX!Yhg-W|2~-HlfNq!H?ln>HFfoN;gQw&;}`-Dk$4#`!|zm#k#M+I8I`_%9Az zLlPU$vGIPjjAHkSXCqv1Bm8<9?D<|1$mp<4M#B|vQRElPpxiy;T^U$8Tsy_f11}r} zb90D|_wX{N-d^z@^5Q+9cwaF0xjA6l8AbjPEKg0G<6qp%d23=z zC3#y;Jk@9VRxHyz#50re_p_Z%@wGXj9jyia@Fr(%{G~kHIsWik!3%Kb3BDrCi_Y=) zzlv||b7mhb?eM(wqL;9G-uV94@eh1pPg~>HKEVi+bdmA-Aq9G*pmwJgpG$7nw3=V6 z$%8NeA;7Iw)y}kN$X{~nc7CR9O^XGt2wiTi=%uNFz5jtedq$rodH9e1$Pgz_9nX;y zbcJC-L*H8l?;5RTcji%$UJd={2?pt)T7h+0}%5aaW?on^`j7ow1mOEy%7 g4Zd>AqgmwtCQ- z=H{iF+d`Ga4Z|1*`ocWH4G)z4*Tk(`>4w_Gw9OG`Rk-5OUGRaigQ8AObXX{_VL$A> z7U1gVZ@v-yuWo7$f(_B875cE<-CBft=}Vy{d^l&AfMF$govFM)=6st9OhuX`&RB8j zr>V)hBKKdgI5xV8$rhr9Hy#7EM3poQYmw{Sx{;zh E_hE)5o-Tu2Pna~)#dVxHs`Fi&{x+0>d;xJpwP!(SCvKX^zd92&Q zvnkcm`U9Z{!jfsLbP}c5Rr`n#9rQPqM($GxI&l~%thnQddnABCnYdq837r(pOpcDn zyONDvL%(7Ea~t=h+9PWQQ!iGV2)cE5)nfd?D_Ys@A%9!+V|!(HaXLHtd>6-t-wG29 z&25kD8i1SpIdUMcGOubMWbzufS6+QhUbLKQIkkWFY;#2#9j*uGt|6lZPULl5s^lE^ zcVVw#l-w9K3Os=W$sx4#2#PgDir+b&>OYVv^6zK&=nafA&2rx-qmKI+mFW1fb6}9~ z=Xg>9p(R=tv0uzc8^J4PQL8vemDsf=IiduF(CU}frFszNwpl80b(0|@gDLpDOu>`) zQSc-RW<@-hJesC`udX_LQN!?wP1BC54mX_Pj2_^uXmg9g&a3`KYn&CKwoeAOxdq|G z7!C^ki&l{Nkz|foBFO1y5ui1033${w$^U$9wg36CQUCLiQDGb-`MKg8{v!V8@5J3O zLO;X#sSWWHsbUvhPd?+6582m|^^P+@Xxz~-qKzv4hH^qv1~uo9k_F3so_=OUnioxu z<#n|Mq^t_(M&^c{+WF)bbl(-hHYP><&AmW-soza8drzL%QlEwVMftqDWsjoKy-GA0 zZYeS+fd~yD@r||KVx+_DI@+a!>~UtE@NT#H^7y&=CPmmpf`2=OZ__FfzR=~KS=Y>h zr2S+1yfMD53d;D&! &Imn@mrGLRZ~Y%oY?A_f(PEnE}vP 5WbZOt5)-97A^5h$Q?7Ysa&L`a?{M|<2d@-w&WzAG$OZNz`+X$MSoyU3+)&TRj zylBf*qh2t8X8|nH)J^m<>zy9&a{3td2b2%0wS0?}6@#s5pl7fQ^Ow~K&w}BN)Lm+a zo%B<$jXERMf7huB2jfvu6XfaFevaOy%}R|J*m)LioVW*cp1iPMY=ATTuy|`3P-ULz zl^T9n=OGJ=Vh1|Ig8&)iEV@4Eg#}Y1iZc5cqh|ULXE)*m>ZKqviPaPSd4WQ+E0mKBd4TL=YnYbrEJd0 z?=}k^_Hg2;`dld 2_2_pq(GIA|bW>&!iQzgTOX+9wN_4VCzI?sP?8 z 7NFz;5<2=i_wjWF+4(g^czC5 BArUhtt9Lnwm%nM1#wIOKfj$_1l|$|LwxAw?-({XC!GMYGkmSg| z40lL0SZRHgU0c07kFX$G7+AESBn;KDNIBU3=t<{o%x=4KUSFXh^H@_Ug$1wThDs_h zN@6f)&9ZTfozY!;@P`carN+082{tqpxCaOfDX+vLvPuPtNWrG5a4;Ani!B47u0vTf zb sU<^PtFdrW^iaAN=dRu09xQ`+!+Q9~`|Z z(+4hd-S)x6p|%gI(pqa?ADknhQujXi=^Z`#04?q~kaQo=CH+XDJ}9Ao(|u63S5q^6 zuy^N}KImQtJ70sm5zCA%G9=%(c3x)2sw*=1@Rz?bG-0l}GU`F@f-Vu~pEP^qiJTWr z2pOXxhH@H%52-*@Q`obtGr7xB(G)Bdft$))xcLc(&caQ}9l%Z1LJx&{G^ 2byspHfTJ z!0ZEI5{C-Qa}s{lwgBWgvvh^(`;PHcm9|-fN@l||Ow~n5ujfo5c-`?Q(}nju(4z~j zC4lGEf2Q-e*h2qJZIIXNzgY2v?mc%PRfLI_@wIiQq><>z)5JD)p5ZhXzf4v&$@7co z#x=&t+X@iHiwg+b2mm{xxHcQt0C(PPnH_Fdx8FKRS +nZ}hVZQ=%&$**e@<2TnhyK56SY*ZWT&}?LjwI-Z6KJ=U#jyjvOD&l+ z)+@Dg*b&p;=kJC{#gl8uCsu49%8(*k&@5f>jF~!5W|}f$XH^VoI5_@kBi2u& Jou4AUcNc@h4w^H29IB6~vKsDc=L2$I&6^@whSIft=s+xN!9@X-@g z`yK7s{^pnEYWs{cq}jzW@yk2kN*54{f1FL;AN;`P-CR6{aGSk#TV1r`RNy+V5cSxc z9nHnhvV@bj_+01R8fQI?o^ez9{QbP-fL92}I@ifNStn7)MSUW4(q&NvYD!x%NP;-D zUsma+2H2|B9Il{kW7+A421}}~cG%0)pX&^sn>giUq}!jdF{^P3OCF+oY47x?N(1+y8q+DfJ$OdqFSbU$P- zp|1UI^SQ95aY+TPr#wkFa$pQwKJ~YNhm6XbUc*Py(Dmmh4_mLs9v}5-25Nwc)zTxX zPzBp(YYRiE6<%|n@64@Elt+fWKK)4B y| zsDZRtxbZafR`vb_gx3%q?LQ(c(${Z?WN3xVXd|_957AxB)avSC|C;`R#1+d d)K0sj?$1m+v3X5D94P7sx5`_Qpjk4o^u+Ya z@iC{sn$>A`@b>SUswyM+d1eC$W5v8oK{1C&QN8ow|5e_!+Sr$>cB;BD*K7Y@DM3%a zr g10#g3J@M3>5Av)eh!Wl;wKtV73?lEa5 $`@* z8(zat82wTabBODi_hm-e&}3w)*ImbGnl+1EnzPHjW2Z)!hb2(ea3|lO<;&lEtdeu! zSg$W3b%y;wC)io-?qN3|m0~R^ON0C{-RJS)g)yW^%(W~hKVer`cCfgFSkA>oxfl1# zy|^GT*DS}*$N_|?ACkjA&mePrR{^Iq9$VwZOs|!^4 nuXk5mr5esJo Cq+h^{RTx8Zh)34}% zCVLD|4VQshI8|877OENr1;p!N_oa0z!!^YC2P{nHyjb~bSae1_56^NjNnr<#`p1g3 z+DhJr1PGUV{tb|+q%^oJ7r>1g!#a6f_9vF)(SK8pGkWacLMjlxQ3%?~3ZLG!4S!A5 zSO*zB(#&<<7bDIxaFQ0U3p=~m&jScMTRU%ubrOGN_GbR$P(G&~{)=~LqqQ9aQl~yn zzor5%c$D6-=@vPuvJ~+$ZN|29lr?xy_e4K1iJlSinJed+SpV>s*dojZ>JuWsD{`P0 zbzX7%O;oMX4BPCURK~)!b7q(#_*Y;gWVprYsK;V`+Ihb$ZQ|uM-8(9Mi}R&yl&Jd% zPov4|99?nP#-*)fe3l@va$MZP0RCj@%Om9|36iyU%}JNHSVvNUS=2~J&>AQ05U#38 zo|9MOyjJaOtS#Nxlb`f2&Y2iWH18iZ1zu @?+2=0bohSt_kZS*9E-L_LhMoY}?m zsRlT^hmSM2c!7M*Is`UVxwFm4;1nfMcjvA}q+@JRizrlSsatGhK#+D66I2gkrV)Jl z<@ga60uEitHjABANxX8b173Es|9YHJeTd7xdgYab>8h(SKAkLK=In>x{Yh7xXtK%l zrsCWDd_D8KwkvK^<$m4stIXs#qAL#hsi#=|$Pf7h_tBcRsSlusgMXBnaC3mL{i7#? z>}A-qn?0Y|??IWG0in2P_I!x7^fi0IF>+1NPb?Mq83@mWsNybnfl7o?iNdIKv#+=> zeq{+!G3mx3QDV79pwnj{>SonR%s}8W)pmaI68W1}E#PD6h&>+*Ic*VVV+~R_XNw-* zb6%}>*0G+r|2~?Aa3^I%fyhPIV*=^r!Q&^IR-_*JmU*!y{&jEvJ&&u9@kpr(&+E-4 z^tnxwb^^%Vl=@&<76Qr6%4OO5oVF}ipCQW<`jjkd*5}A&E&3d?>~4JySQgi(-?Ewd z_?FG$V>#`Tsz%jJolR+3XjkQ=0)9;lTUT=h{9=u!dBG*{iibh)FSc_GD+BF4AQR_; zW4q$ad430P3-I?cf3NZPHh=H)=koU%e>?d5H-Ey1z3he6VZxyrdk)FK5fDIQG;B*M zu<}>hU2LQqjgIFk6>FYHdHWc4!@FT#JFfwsUMHHt8_hw YD3fW)z|)xqPN5_TOpP#hGQwCSvgqw~ z8M9+l_t73S&v#+{td 9&jsX2qu;}RW`de z^?XSxaP#%b+JrT22%?jPHHl^07$W4tB$usYCNIi_LF6_iUd&XWl`v}$Y>XOw!C{$P zQh_m$giOT6-95J$&pP*(!xdwld;DNE0@G@x^7T8}la+K1iqF8l+JOS@JXBHA*428` z5eBC_bF{#6P^62rQH^e$IQAY4L)58eDq~y_J?1IYH!asnPiRXIjM)wC4t(wnC#YH( zb80@yPi@4|**B;WutB6Y2Om$2io?GU-~f^Ps9J QC)3NIx8wy_oQ J%o1ff zkl<$(Y)IuN?H(DVXBl2S!$6b66bN+_*^=xFQpMInk*Px#>kC-O{#MI)x`uE4Lp+ z71qZcV@%hPo9_@)*=^(1jEhV%Up^p{`n%)l(W8w1iUg;d)v@6B*W53+ZARRGuSQ$l z9);gfwn$L-gRx@;^~~KFd-N7m ;6ZGbfWW{u9kY49JMM&V;_b=(P z??2dzqszo-JaM5dG=0)%?E{|pOHMdn$O~EdblTqH*C7pMAaSIy_gA!5*rn_HzX4(w z$G;q5kWp0^Zd|nz6IYTGrv1^>)~>lL7w<`!Zu?%m@^a%qX6?&QWwTHt DYl8PN0P39$FWRCq6z+AngRH8??spC5bP{%xRo(J1H z+Ns=yA6*@2)G$m3&IIezXO?TaTG7!9dnUFW$hY-?8w{p)z>LYdyE0=^r^EM+fYGjZ zk#ldYcKF=7StcJWwL_U`Ba&})c|JgssI@vddS0!wI~BO;`*zie8Uhw(d8mPCvHO 3Uw>3t6azLGiAF2%~_1-hi0zg#tik=~zw`W@7Ji22aKu5T8+y z1z QqdNVQ=xDXxFFk>dtNueynK|RGg0&r)||2X?@IV!hbT&>QU zt_S6wEpDWKX0O4w7Kv{kPEg8rZVn~#iffz+uskiFVnGZRYUgGi- 42hhTd9NG=o%&50c%)}pLyQ|cRX1UO*GDo1U;ExW;H;{#=cZ`QP0 z7rxn@N12#KcsJ(lBlXnQo40$v%Yjabomm$Dyj<87rUq>_oobd*yDd)*dIgY;=>1lW zy;$#>{|SUuCxWnt-02}~ (m{WT|BI0+S1dxcJ^k=HEjN7#=UCX*EW+2XX|FVA$L@tGWZGz%=^@GD* zMRn52#0W}vz7bd|FpW57?u4D~?(?j2v~IK)Rg#s3CRQ!#UJ-}KgKP8CbKp&lOeJvV zH6!Cn1%~301i3b!Jy HBD22+pbWv?YN+db+%A{ zZ4EH1n10n2E8$n{Gn0&ba9V~`O|iSQAR}wUKAQYO^jg|P2i1!g+8<8BIsC)BNyMsl zqCFoGL+M^8B6KLwhV7kb+!>xLSG{4KSvdbg{-4r%7Lf& ^7vn9IogI?0^!WmL5<6|5h=UjF!!V*O|j}3?FYsv zEww!ZK>^9WVcA&vOR`7>p6W`w-Ansbut(Z)UfMk+ChcF8_A-+;)|K`%FYVHvX?2xW z<*u-46G}@W${pI3_De7AojucD=B1rUT1k-9ZpL7URyW2Vy=~HpUvKk+_Dzyq!O0Jn zuGq9I?5wGXFJKBc6os5t1FDEWhCi03YXVF7Q(wA*mtPch(=L-8-8La%;<8VtqU@X| zKusy8gO*#(NU&@2C_GK88mX9J?BT~=;yjPxHVYP1=>rmXksy!0SS|F_pg)jTS0Ju* zcyF~dHK>rm?-?%oDGAs>9qN~HXU6G}k)g}2ks+8PPx^K)q$2+kG8w;JnA5KOurLUB zTouiIHF+-Lhav@A9$9*#*#j9F!%{!+9GZ=`uQ5rpdmPa~QdtxU5U1nE ON^s%=}&~92cVfkCP#Z4g6V|W4M7!M_A?V@JN03*{Vf&fMP&BM z-p;@U&c4XhR@H}_f}5UfcZ*lbe#YYmrK>LcsiyFADWG#hxAg|b&_S-TT-j8Zy_>&f zD=leC ;P6VisVa~P8@%WVZasFQ7*x7gg0+|)K} =zXJ#3qFkJXz2xLg2``#^qT*8WX$PA|70CU&?+LcoGMd3L?I*F3 zx=D6Y6ZdOAARXm&pPxjNW{!uTj5w+wJLqJof-o`Yq>UQyy>^J{{oxk(>4ByWh19`t z106@IB5A%LT>;7;ibcy>c32H}T7~bHSJ|z89y`O^+Gw1D!Z@_+Ks&CHfE=GvG}v`6 zxbT4(U4zCOmx2rNRYSoLlB6Tko?@lcicQLAY)aiX+?+}IvvkUrF~#a{ZYJhvYKElD z*BPUW?LB}h5GusMiEhamuETT_cz-cmvsfjoiA GcTLc;Ji`3I>$F+hLoMSr5+!5$FmtISE7GG+`Trj0Wa9SjTFFSy2plf0E z5m!R=4MLEj$+|t*D^kvJ9`v)B82(@M1fs$tZsrj~*m+dhYMt$vc6C12gBnfbxRf@~ zU%w*#Qk3Jf#18xnPuN*k?Ys#Gz-hyN`w_@Cj=Jwck6%$w@}l0bSJV&L^;=t2mQY%4 zib^u*0W~Ld#{!l1sb%fHFl^9D^7DB1W$ywpCH}D+u#tk1LUQsEP7ZJ4+?`SJ5^xqk zq01Ble&52oNpK1*gl#Nz&)9I;LB25I2&|ts@e&W4K(nob5V4()i7ritE`iV?9b9|= zs>WIcEO^fM;XEu+^*w%zheQ!nxk7aj=W}C87jZVm{8#wxLq#Yt91*Sfk&^gZenDm2 z6sv-S6N{Nj9S#tu_U7F6iG~e{+P9qA+e5kQ!-
z?;ENA-61 za{ho=e_qe-u{jEgZHxutcX^wm5NX!-3i-qDX0}I$2jzWB*6*+*&Ts>LDAdw^W)RTM z+W!ancV(&UW{gqW-qCSu?Q8ITPUJ0EzYQMiCp%T&Vg06!rcZ8%JhD_F2AlxJ(_I{T ztM~Us2JWiM@;ARpU&;d5dz$<(?ukh5@;Y*ZBma=UFDpj&V+(27?PT3{_&+Lw(4x#{ z5X)aqx|yB-)!ypMBibuHw!JSoEuTVJs?uo%`kr6M*5EzRT5Me^P;DChS+t$E6=V>& z_G8oXPFnsUEoX@@`%bG{5MOjOksM4g1?8^S3Fs`UnZb$lMOpA7%`7);5TdZprqeX? zrdgrqipa>0e5}I1Z2J+W*J3^z!67iH!7Udy&JlkY9Vdeh;l8b2^9GYs=(#d7;0bZN zzo@utfS###FZpv%G#s5llRjxQY&gW=pT7(L_JMgzAKVw_{T^s%)qgL`p2*gpJ_OmS zlNay#4!Y@X(sz5^e}PELbH$BxvyM;I-E24VMXWEY!fmfy8x_ZHdu@>f>0^qzmbdC` zVmI@LMa9rHr2bIoZ9uA0fj20@*_@X8o4z*6dRkTxil8}{3fw`x+3uh1jYZQsEBRmP zN&bIM7Uq>hBl(ZA+E9`=iB}UQN+pf7_=oTLmwkA^t$o?dSLHP1`Imi}-f;?h?J+`a zw*+a@X1->9NBFiy?=1z>BwC65C7-7Pg`|@V;EjEdP+zx0fsoY8PczJTQ#SU8^ZU z?;r)KQQ2kM$JePly*O?rPAbq&fR4{M>}NKfHj2*4S9AEA(<6_Mh}x~c>sh%^x-qkI z(-XVl1F9^d(&gTzm2h#5`@5%mqN^uTf@=EG=$fVjJRxI5N@=Re^yn#4^13^P%BR6O z7W8gJb35R)Na=r&eYYG%Ge;rf(Rhc;Tg7HnvB$Q Wmm{y&>q)bZrkAgw12l2t~t}Ra0+_! zt>SkknPC?TStX{Y9!%iElE(gzPyMH{|IUi}Umg40pYC()|HUS;+t~kiv)^m%&!Z0+ zPlTi|m4X4_7();(f3=h*YWNRiUHs14Q7yp;j0 G-_TKCZ3 zs*5C!K%v1R7|*D}N1NQ%x$6oQo|bnb#n=6QB BaT!ag&kB%TNj(+RiUtAb@A^ z0!p%;elcV!^8+>w{lb5Vuep!W^)X5-!4#6I@|V7-@efAcvg};b{-GV4KGpkQ?1xf; z1BIh;EZqG?u k&sDOVfU7ES8(qI65I2*@8yo)!#j7&AU%0fgWjfvnf*U? z-`oGR3Ag1rf$7am2WJaf6sIp`a2r#B;|bSA3f~DoHu8t$s4G)}znD5%X+(0=6{)}z z0Gz;CCiMu8TbF3^a4?!$kqDF+D33ZNN1x(8vsvS4Ue7Yk=(u~Nnl62IP02~3_o5T; zT$`DfRpuC$5oM43gQ-Yz`BqPNzLr@X|7AN6{Rh!$cTw`vdl_hu@Fd@rpU3k5LJeki z9v8o(UzTB25z^mLkOed&q<1@gc>BzZ-!UM|Bg2-({r3|_fO$-{Jx}Aj8?8=na%80U zZ=?b(fIC@9;9IR&-vKy~9@DdX^~sSm^;yqUjg_vW^LE?R $L93QBW<4Fyu> zoZBxG`$`*o4b%3_Tm%b=bMrcn?-6^isJW)dQ^@Dc#E5>GJ>o~F!^N_Q>I8k#Rb5DD z@TH1zDxa7cr!o*nJVek#KIHjP@Y^n@CLk3!thxt;InYNCZKTn2lQVJnQ_`)3?3jbJ z@l=4atGbFdSY9=n!)Ax84R42}Z+91_)GpE{vnb?$a!ZY~mea^1s=C>~KnEn`jL0K2 zw>EhhQoC16S2}BUZt+LgR6A{ TVr%4 z#ia{x*R_k$q6^Bd@wy 1 ze))*mMmYB)`kWjw_oyD^m;evk^j7u+_dsBgyM 5fsxxj82-;`nr- z&Ko=Wvi3O_=h>aJSQF_zbMK{WL4g*KA{xXTkF0xLq6*Q0_wi;+&Q@Scy7+9N$H%Q7mcsT z^FQg=jmfg`u(s)o9J*Q g>{%OZ)S*zB;XjIHBX@wimr--tY@p6Q2<5$Xr3 zx>XK@?6S`OT(;K*+=Or7>P}!C0QcSBh-k6sSYCX?DI{oGrQtVbD2-Bi&l|pJeDSbl zJL{BoL10VH_%ybF*LTzb`darsr!aY9eV|iWGr6GAd4i}`=mqVtE!iR@L$ vejpi9h^el(Kn+t_D&mK(# zLYE-PaeS96F$Smstl|4Qe;=g+iy|h 5y%Rx6H z2I`5J3fyhe8jY`Gdc-D{iEZj6Y2?M}sL9%=Qh^H?E9@rzm2)(yhYlpiW74DJ);w+y z^npA?L0Lu6TkfUQ)4{30r68Up(@C0DQ!!{7YK{JuMm(O>_YA^Ol@wFEH5C|)k24{z zoI@I3w#xS7UvmGJrz0b)8$6F}S6AhNte8#!*Xr%EN1Ew6ImXCDP2$Ez_w8?l`LCea zQ9zOIp*~P1Uil4rkq8LvA&Gt0(C{XaStV4#%u2YE$m~Sq2|n|ooOaVbSM`d_aT>V9 ze&g&==~rRrnt9>Ut*U9~bgscButUJ@vPiQtlE*TebG6|vLr9AiSTaUJ3}S?If)}x8 z&QqC!+*3*ge#oFX`H (b^Ie)*FMr*cDiY5%R )j8z`OVIk6C-l=4_R~DN%+PTPx24h zc-t|o>5)duEwtgTZH6Hd*8umhma=iSfiafFIfU+G @Cr-gX*r`?j6 zqSOlL*V&oMniH~AV77rkcH>jgliXhi7}dR?W^t*!F>+mPqXp6A^7(+H$!F&ALH~yu zOX1w-)HWvelSToq=7is9AL^!`C=rW=Q8|9}MBMiNthHIph8X>BowteMtzzbUcDc7C zXdx31Ww@c EEwrT4^)pOeqHw@Ws;D(K75D+Ir(WGpvVfjThM*j? zn_u>d-A}UGQ3%sXmcCAWHoaS!ts|(SN^=s`o0GcN3F 4?>}aK^^3X>Xaa^_oo7fk`=3o&Si?e zPLq;7B4;#SVs@)1s{NeFBa?*&1(u`hjK}7;jv9ISZAT%+lBPc@zc?pEnH`zom$`3d zj_ nL{l>1`f1Js^j@(&bvA@j5O8?ORgN}2wR(OTBTJ65;y#Nh9S6B!8Y5_1S zs_ap;Hx22OaQY~^nG9GDj9@PnxKh4u19gZUDCBpAr7D45l0fZjqNRtd$Y|7h0ml%K z8N548tTpLGeejy|B~aby6xyLu_iFXpd%SKSy4Sz;yVCu8-oyLsUwA0ruP&i}_8bkO zxrH37w9-;L_Mh|y)CFEtw+?8&xo?1yvbX3SL0NP{oq8b}D&537RU?^K7~10X8Tpl& za{^61D^a&3X0*f`X6<4!{qcA_@l{j0HZ4ZpAx_jPDJ_L%Vc6~^5zi7VMXHq5)(Ljr z3BdVg>HhfR8+1vfb4XTtiavJrCTVZHLPh&%4}IPSBe*n z?XS%<{tdmBS#jiwmH7J1v^Xw#M!fRZ<3Px+`zrZ6_ppl~Q{7kjBVn2QDu4Tmp)~hZ zKHQOslRk)5{IvW-0=X@oEUsZh{DgOIC6|UHmr}1r`mciK1?Dyx!Gu}#tC2+nP5aK( zRqa7sZZ^^e8g^Mn{%V6ZlAWl&PE!{tI@n@33qfHu*{RMT_?2fE%rP{{?;*J0=K#;( z_k$*q@LNHp_~<_)Uo^7P-PB9(#a#Let+)Q>*QvTl6uS}WnF5;Crs08Cf>B(A({e9H zk9v?v)G$h@Td!1;Qh|_3H8r0U^;xkYX<->Lf*IuYPNgXc?1cRLY?~nLR=Gmx$nhYi z_QZF;b()%Kgvu%?C^;PI%t3e=6%vylWcAUP=k z4JH}j6@HVdXSj9?@ zmtazh)12COJNnl{nG;5XbJ#<6 }{tLMv*-!?0G0iGepZ;&qRWVTbu$ zHs&+a*G9Y36S7B+Q4Qu7HxiuzsLz}br}v*mR iR>GSZO4A_py3<2fRQWCf4_<;Rk7X}5=aH= z**kIsUW?WEw+!Gen%VIddoAtGnEZU7HJ4PIuxbtEyC>=6xA_TBD>?Gtm2m^RS@Dyn z9{T#86b2!idu=`=J1c~Z>c{w28ynTm%B9)RnJDJSCJt-!x9D(xV*DHK`j_KspE;fU zgryzDc +P zsF^0k`qoOXHT1mN9j!R^MoQPMl=bdt&de$vZd9B;I=5c$o-~3};B+#0dBIK)Y}n&s zZyO4RJuhxIb{yJ$;e>% |njTNWn{1CbcLsR8% zc@AK>;wkaA{^lp~m@{Q98Uv{r9VRVj29M=pZaEe7y?X}_mcW_a#_Co05*~NkmwQrl zUR5Z0QMP*(9$nf?`2Ii`9b1*~{T^2*@>So@ahUvBp{h*A>4HoF (HKwNro(%nf9xtsm-rm+*v-CXU z{rV&jh%-?xvuMV5%Bxw2-ZOkSzKJ1r-kiB}`p5R$StCEv_$v$Nt>duTi1OF4N8%Qt z!8>irO_CCoX zd^42a=Qnu|LgiF^7x!7;AOe)RX+4zLX`XpGC!^K5t5aL6i6ceYO1*h@dml^(J-<*@ z`aX!Fuwo2*IREg1kMu8|sZhAs*ul=4h=1|NZSVI9HLc1jUhr)=_x;X1fyiT#Vl}1o z3J&TXtKDV)()4a+8hVtcH%|oEaDPiZRf|6_Aq*He8c# -=EHwV+^9gY8uo+lk zwz -hJ_F@ZxBqO1cYyf!J=1INL&PpZY^P-w4J3p6w1N8K@QwHGQP(F%A1+nMPWu z!_8=H4aL75(@+q4?sURBj|??^dyXOjK$e-+Sp-0DhAm-TfRcx|R*zrBQ G*eoo$fZRKwBH_?-*(mvu-U2i7`ivMtn9s)#)0Z|;*%o%Aq~DFc=_^>@>CUoih8 zEuS`&P^qGZqr{a&oL3^wD&hq_Rqyrg`SiSbzNqsU;tg&HGIM#@;rut?CxS!<`<#vL zal}%A5$B&K+eUBma-*X0TfAa pfnt_sCh<#rAZJ;z+bLPqF028Em6hQlG+ zu-&mkQP?Fgc0f}qU*Ep0|4pgBI2(M+6+6Uw>#S~ku1wp!>{wr(2+@l|yYgpr#&_q> z=&NmM9dfo4m;^DNLq~fZ4IFP49l#9ep1Pmxu6xNp3B~v1&)}`O9fQ@juWS?i_k5A( z-L&oa1Q(dgqTDGoi$6b=jsnqN*e-01Hq=I)ne~9o)`fo2wqlBHtElc&Nr5Lrzb9#- zU_VC{wF0!yR6c5(hG7odNJICUo}UfKFl^_s0yVN1^tYT%72?kuxr)E#WIQ3~#nPFg zj}X~4A!l{zOc6*?K>!=m6i}2gO%*%$7qNUrKNzC_2O`sd7}o4q6`c5^p|y!c%B5o` zKeWTJZs3Kg>27BW+wm?g4K22dnc(drz?5c7xiWCgCtQ%*g)QrjMVWZ7cEy9pi$-5r zSV=tp#f9f7`b&y_579GR>li%Uk<@UlkBU1zgAk8v9fDH})7nx~Q&`b@v_d-ucF(Bq zzB1|!r`Yj1Xys+}51i`${vQC}f+s#>DoV>6jB7fs7jYqZ_ekj(Thly(p5TZ-KbtZb zo&|W8nnzoIo3tC?dx6;bi~yV7GW?oh;X=+HfB)LXhF ~;W>(t!E(ow(| z{o-~M6L9WgB|mk*-?i=|wZF2mH_nD?uX7sqvmG;MwqZn1=KNk8!gKSq9~{8}PA)tl zlcQ_^SwlOK_8N{sEl&kLD51QPxBMlXX0CVtiZv{MiB}8Ewy1_3+N;~cDxHxt&FP~! z$#@{zQz75re%Z0dSS=byC?{UX@rgjq#}r>~aTrO3uvi%C9{8_4qHdbHlbBgl1mU;; z-nkSONlwh+{Ry}rzwCF}VjWqt eT9#jwGTr!*)!66xn)Xt@EPurn}0pid5%Zr-tai zCOT0S>7Sj2ih}yidiP;saW?19RIqB)LRp 0fX)Is}WP0bC3amMfzysn-bQEB& zTChK2CE&~k(Z1QnqSUdAFsjii+4&0x;%-`{EjA*442&V*=S_ikPRP#sWN>!Yar`y# z7ao$G^%~!%Q?s+`aeq^qot1xLcGgy47vQgDhnv+eyI)RjKl3lo$ETNdo8SC`e*JoP z^Zy^6eg2Ozz8j%$-@22tv-CInBwMGw{i^36!X4W2vs1FOehP>47yh>KcPe~PjK8yi zA6Jo`H67Rwhh}Fj0A|{ko!!s=&*4KuX=Jbb@75v%$@9_Z|4;w@w|aQ*nyJV8N`8v` z%d_7qj6n$2XM`ttX)fMwaA$Z)`KQJzic!ypi_4EX3)hG^TE$1+RXzq!;+|H)JQ;XD z6kg34L&t|;r%a((W%R$o&^g;BU)%^BVV)9cn-mN!VfJN7m9FS$BTCoK=u aP8MCJod@!mUq^%EaE8iT%b*V&6n;r?2DNcymrx6Q>fnSq;PD(~xllyh^4NKc9AY zoJG|5H0*Vp8Lxbd=vfWrlzz4vVZz15snUHEukvoi@HhXP-+1L6*0UXtVw}boX=Q6T zd0~!MDEdrA&bf!}+I<9_nM%n+J(HO+O#5gotQ2K|^I z)X5U0k5Jo#OsLY#O{WPb@I^Rs>k2#OelI`nFOp#zm84OQF(d3vDg$Z*zxGF|J}2%m zNXsC#xCXkB%qxEy%x`TN(geeu3-{+M1|?Y9bl30wkLARYl0UN1V1fG{#!@>5(!$E0 zDV5IV24_&{8}h6ilZKBGT;>KkJ_K&FH<_4ggfj^3SW5so{9JB$i!@@V0t=;joT;sm z5Y(oNaleU!*;>eSEB znB}zDd?M6=@z}Q><^9^-Z {s*NQyGSekW)4W4*_Ldu z+|(734? %Ll@0mV^(IZkhU~%TCTz&tHe{F$*`|=2ZAhyPsjwl6 z=Z>`@kK2$THe`)LhS`wVC6tr!{RI$u3P(bI5U!b{6l97)B;d^XU H#>QTx*yzYiGMgs$W7jD@%-UDRA+fGe=KCjJN<4uQpULELBzbU?&fxPa zCO&ew$8b=M(aJbkxQNK9z&r&e3tz%Rm#o0YJM0$rhJ`IMuqhVyzJ>kHz%IA2zgyUC z1{Srj&n@hFd~O3GIEvT-DB)`qWW0ssF*FI^ErMKNA^RK11VPTWkbwqrsURm<$T0>| zBgml^a;AZtB}i`z5k4n;WrFPNZAz~ +AQQ21KBLd zlR)Uvgzp1 W5SJa}8E zWzMZUy4NjCPJ5msizvw_(BEKQHEr8$aLD&39!H6mqp{c03U*@PTk3>mvQefB2s%Dx z?@$F(A(nu3F_ave4HF+pMoLnFZx3O+UU7oTc6O0&sJ}U%Yyo|M0(K ;3t}`nE?l563~? z2Q{5#xQ8Ps?skf6=#AqR9N6@BR=0;+8h=Z~&H+H{1l`Yr{-TUE7%_$8s7bO8c&0h8 zw4y!vhcYdPW~mgbcNXNWu~gt=bd|jcIryFQgv^;?CgdzJP-C!GzQLUX#kHNGJ8uIi zVp%kca>j4amA8#_kNcOuLX>&H47<|1v;#VV)Kb61ctbN$#lQT4!m`dy=6#g>L3VZW z%y!K{s7BP8rAqso-$z~)O-7KH8FEshnkG4PV-SL=z?r71{^t9UQI)qw^zdJtY%}>| zr@TewG)*sTEDF-CeI&FQwsQJEI gocHN`dd!)vZ>-}I6I!*^9!gx-Sc}gli#1G zb>)}fm7RT#*Fk%yzd4h>p?ms~d1}gc%RhMU^g}Y~PwkPuVBhHv-8=nfZ>9U=s~>i& z|Hyv(PJh(i>7UG`|8tM@Mf*;F^xo-j&ZKYXk$%9w(|>R8^g}Y~PwkO@;J(uzv3L5< z-psWBj_&P0Y~SgFd#8Uglm5>=(g*jQ{>Z)4-<(O`&?9~EzS9@)oqk9r{i!|Dm+U*e zsBw?^^w}Gk_D|J(vIHT&eI$Yjk+L_hhGNBri$LrPA4Sc3%!fxZ`Td&w((@}Zl0^wF zv}ve_zQ3i> xKz%19Mjoc`HHncyeJ3VH7VCRmVr0pVwj6XabO_VEPd#MlIDmp# z0uFmUjWR1>q&v% BkVk}S$ZR*Yz$ZTpp-Dm`H?pJSUbECV? zT4r_kS<7qGNw(5Q+L}zr<=eCh0%r`28PS^Ihh#S+DCWjVtRbniM*E{5dL_IN_NIa8 zA8eL)QO?sRi&uU@3<}ty*iS09Y$3giqm#EKeI~tj%GmbgQ)Kpmo?VeGoF*A Cb{VD;l#PNMKG{kV@ecsWWx?q0$&`f(Ahk48Uk zWw$s>2ar6wK9{o~tm5<`y8BpHFzR!rC(uLdRzG#jkx}P<6J&Y7RABWLh7r `Sm?7ESmjh(7VvGy8*jb8C#%N zGyHVV6@Ze_UMS_&89=N?(t8=)W*$kHaKWXj)YMbaYr~r8iP{ }*--p -L)5H8tfF z^U`G<>`bMVxc9$q^n6(1btl4s7e(9JiYD%C;|w{Q6Y-adI)2OyH2S(F7!Ik>d(kEO zIgm%AW8I9ny63>~b^6?c`1lvK(%O=h7-HAA0|5bd%w#v)cn4~VGrHJ|Mjuw48nmWi z*t2kn6LZ^($fUW|-@Jx|ZY3Pzk2cSOcdlBT9j`p;8amfL6WH!M5|4 u=Z8WsfM%NjkvT+j}K*oV&og9nz4b1VV5a^xmlLWOE7y-;0>iVrF{Q}9xPD> z(>94&0^yUpn{+{XMaj+l&S7{=zvx~-S=EnrJHEe=zNPi9LWx^0XY&x3dU|S2!uJ>f z?$NZ+^h_{bd59|AQ0|^i%iIqbGxyI0tlfihfM?N+mDIKT)v6zDaQ|jTXtU{8X!YZ^ z0=cTd9QL8QR~@WLR1Hk<25=%;;Jxz&dEd@WHQDWH@K*$iDgQ1#Bl%BipB%1J?%N{} z&^%ZX5yL*3*QVhEQi0F cspwpirGkarRGh*uben|wH|Fu2|-wh&B zW`mmW-3+MR7XhMT+kI!_(pa|psy&x^`ZIb%t7cY6Dckd;l9|;7cM1 Xr37dKZWJR2retj^pgp+Ql{y!~FznPaQffYy2KaSCCiE28lUZ1T++ zu {d)HeI-QX#;f69=g@vOC z<#wrQs%m+m{C$l-b|Sr6E^*v1V56h)HRv4N &nY z*f6H1bcKKM1p~OGJ&>m^{EI`q*h)3lB>Sz6CI%E&58D(Q=#2Wm*n1Z^xsK{ixO!$J z%d%z3!Zwz%;TkL~TQj1&r)M-0U^FjDW6z9+nb89W81;1Do@vz6-E{ZpVZex2VlW1U zY&KptVf8tDK(d>x<2YGE$RfZ20)*AFBtK`Dbrj-nKj+I!AuK<#A@TP=Rj2CSx_!H+ zdmfT4X?`kI-@0|{R-HPpI(6#YYlmO|< >P60wep%mcRNlIMqP75N6!) zfd}po@1b97frqP+w@9?Sna_oM ZJomO{KN(qfVR;B6>lpy$ z;Xh?A`yh}KuWWnxTYq%d=h2XO{%KIMbjCa1`_x%X)bl$~OjM6}_o%%0;a_>4Xzh_- zd $Boi}I>_Q*MTS61@47zqB6=jjIVG092r!yzH@O4;;>zCkx>g$dg) zy@om>3wxh>l-?@&{D&T*em;i5?R{810YQ8i;&}|gdv+n8B-Rf9Vzl|NJmF0{eW xCOXiJzddb)d4!nn(7wKL2GYfPeXpvsCAOPZPk@`9_X!{>W{= z^j%=%BX2x~?5}XbMxGmhSJ^Y*VtYUE)irxx|7WGYR8&c{sOCUY_ufZtJEERV2cG@q zI?rw(z4B&i00t;TS$GUPy@Q?q1D`JMec$ >51%J{cz wVwf?{V| zWoZ+c-pj@W%17vdzg zCeOe_wX)@nhgZWueft}Wl-;uG@qhd&R3hgXoQNY3odn^%>wopj ebr<5L1_NrRj2W*_s3s#Dm@?ghV%7R zAI2r-88?0ozn+3q-r0fIJTvh6XRv=oE!}bM4d;L&>t=Cx*N1O=J2IMJ7^F!5je<@$ zP}HOytJ1gw5%JX*Ha~`*zOebz^8e4s|34@HCl}EdHdo~TB DXwVe>}$f1CXO zCi(w)dG`nM|8L9xe=Pt12L69M65LS%@qgP}{{-Xb(_QQS=DYEZUHgGlfYtx^k`* zYu@&kIdBPV&X{87`TJ3FO5VgOT;EWYzx9v0GE@!3z>GW$R0VC*1Pnj2?omXb9DaDP z`0)N&corRg{#sP0mLU46CHVy08hQZuGwc7=mmmHz$}tC*<=@v}1);xZIsaSE+mfpM z7S8YHd?)Aka{hMCOPoK%`6oI5F1M$FyYYV2?yEWP;rw3C4|9H$^9MOU#rdZ>e}eO` zaDJBaAHGGk|D>z(Pjdc2&hwm)bAAu!cXNI%=jYSv`R{Z770!Q?^Plp2p5y#aIR7T+ zPjLQ8&fm{@hVy$lk8 oR_%Yr}+9Y&VT$?)$Z5$`g@!|%lTh({u9pEGTz?Gd6e^e zI3MPGn)3%ZmyV?X{%O9R (yNU7S6YEeh=qw<^0{8e~k0TIR9PFzrp!4oIlC$(RkQ5 zt@?L2=PjIH%lS>5JDlt1{yK1dny(+_{MQ5bf6Uj{rPTZWC2;>CF8?Cu8P10}Z|B_M z{L`H8 HQG{to9i@pI4c^$!B|R|nb^|CcyPdWg=)-X4+H#Xzq6@%^`{ z`}%sR`B467GM7y|sR9(d;}s`Wa+8&8A@B5#4LQ-{o1;C4 =?N*MtZeG8tY_+?u=;rqfJ4fA8ncluRyKQrpD(Ls}{bH$*$>v{d17$VsWC|rG(0b>#xRcDMo#b@ks4Kf+{@YzB9ZQzd9jU@x z5rCM^=CYL&PPW`Yn^Aw8fqoB81cs*XYq*yR)AQv@-Yu7%xkB0-U{yUg=O)W8fH|8y zn#Is~j(CKF6CM2{4o2g<9=5LO0)I2PJ#J+Pb3Wsij_T`)N-3M4k@pAlmC^~PSjb|s zOD@V?;0eKDx>Pvg=5_mezRL2+(3-M2UEc?X`j2c*Z F@Awp>+f*huU!Ij$r9zG#oyqkB zu}Y#pnO78h#C1~hr4kYQv2115Ng~Uq3&)(wY_j6aCd;5~4J(hrFnWFk_lMgnA4?XU z>G@0s^z9Tfi){^jM)j}kRvg(T@Dm6O)TB-VZfIF|n !P50ejc2Lp8TlK(W_ z+MszfpPU2eR5zzx@C3)5D}sku=qbGV_36OwpN}Y;?BP1tRq3xcmn) aGxzv#zsec=tgkmz^#p0TYlsAw)Kxtz;o79&ppLD(ZpJ%9{q@{+ZW&D_NSE zpCcq9HVh-doKsAe03pnpY)99_6wbS{l6`+4rWE)x=gt*MC-4OIuViSIgcSNPpHCi5 zW^>8uoZ;rx^)&T{*Y9 Moa-nT-BdP{O*w9 HXXg zcnXsaQ;i=^c0IhQj8~RtlSK*K>Vetg%0O7pV;($o%gz;ZE&-e+Uu71Z(?hF*pMG9- ztm2#iSxu9SUZ|M>9P|sSAu%{UzHfY|vw!ry(R~L;6>7;cIs2Y`C;W0|N!s|74%8XR zmdlVyPG&xzl6ndFep2CZfiNiA8I^yTWIQc@#MHI^zrAx{eE-0};COq^%~X!>Oh)C8 z6FZZ!_EL6cmWsO6FO aoOK8 zcv~**mUd2etLsWuw%RGLAbe*a$9GQm$jgvXde3iHgDrCd33X{&*kPd3X`qs5FISSK z3I-8tKfZH1(SBm*bY~4n1>qCj(Phm@drx1sGEi^^3NzD%yz7h<(nqqDWdN7g#kx}% z>|ZRFoVMpr^>24)bQwDJ(woC7_*CJyfsZp*x)ks{Zt%RT2|TaG52Dc>eslsqV0iU+ zMlTV7EsilTz=HS{?d}SN*NCD&uuo#7O|nknt%l wqBEf^Vz*4Y}8W`x5fYG8Gczs`}q)i6cXwqZYmeJKm_w zwh)g+^#an^lUoq2^)O2jP;fl)Xgr{QD1O7^d5P;F&GY6Ue0rjn)_g}3;q-_3URalE zg#J8y4ArB8@Qud8